diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/Evolve/WarpXEvolve.cpp | 7 | ||||
-rw-r--r-- | Source/FieldSolver/WarpXPushFieldsEM.cpp | 9 |
2 files changed, 14 insertions, 2 deletions
diff --git a/Source/Evolve/WarpXEvolve.cpp b/Source/Evolve/WarpXEvolve.cpp index 42042b7c7..5c3883007 100644 --- a/Source/Evolve/WarpXEvolve.cpp +++ b/Source/Evolve/WarpXEvolve.cpp @@ -501,6 +501,13 @@ void WarpX::SyncCurrentAndRho () SyncCurrent(current_fp, current_cp); SyncRho(); } + + if (current_deposition_algo == CurrentDepositionAlgo::Vay) + { + // TODO This works only without mesh refinement + const int lev = 0; + if (use_filter) ApplyFilterJ(current_fp_vay, lev); + } } } else // FDTD diff --git a/Source/FieldSolver/WarpXPushFieldsEM.cpp b/Source/FieldSolver/WarpXPushFieldsEM.cpp index a3a882962..3d68e8e52 100644 --- a/Source/FieldSolver/WarpXPushFieldsEM.cpp +++ b/Source/FieldSolver/WarpXPushFieldsEM.cpp @@ -724,8 +724,13 @@ WarpX::PushPSATD () PSATDBackwardTransformJ(current_fp, current_cp); PSATDSubtractCurrentPartialSumsAvg(); - // Synchronize J and rho (if used) - SyncCurrent(current_fp, current_cp); + // Synchronize J and rho (if used). + // Here we call SumBoundaryJ instead of SyncCurrent, because + // filtering has been already applied to D in OneStep_nosub, + // by calling SyncCurrentAndRho (see Evolve/WarpXEvolve.cpp). + // TODO This works only without mesh refinement + const int lev = 0; + SumBoundaryJ(current_fp, lev, Geom(lev).periodicity()); SyncRho(); } |