diff options
Diffstat (limited to 'Source/FieldSolver/WarpXPushFieldsEM.cpp')
-rw-r--r-- | Source/FieldSolver/WarpXPushFieldsEM.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/Source/FieldSolver/WarpXPushFieldsEM.cpp b/Source/FieldSolver/WarpXPushFieldsEM.cpp index 1925bd883..a6487cf13 100644 --- a/Source/FieldSolver/WarpXPushFieldsEM.cpp +++ b/Source/FieldSolver/WarpXPushFieldsEM.cpp @@ -36,10 +36,12 @@ namespace { #endif std::array<std::unique_ptr<amrex::MultiFab>,3>& Efield, std::array<std::unique_ptr<amrex::MultiFab>,3>& Bfield, + std::array<std::unique_ptr<amrex::MultiFab>,3>& Efield_avg, + std::array<std::unique_ptr<amrex::MultiFab>,3>& Bfield_avg, std::array<std::unique_ptr<amrex::MultiFab>,3>& current, std::unique_ptr<amrex::MultiFab>& rho ) { - using Idx = SpectralFieldIndex; + using Idx = SpectralAvgFieldIndex; // Perform forward Fourier transform #ifdef WARPX_DIM_RZ @@ -87,6 +89,18 @@ namespace { solver.BackwardTransform(*Bfield[1], Idx::By); #endif solver.BackwardTransform(*Bfield[2], Idx::Bz); + +#ifndef WARPX_DIM_RZ + if (solver.fft_do_time_averaging){ + solver.BackwardTransform(*Efield_avg[0], Idx::Ex_avg); + solver.BackwardTransform(*Efield_avg[1], Idx::Ey_avg); + solver.BackwardTransform(*Efield_avg[2], Idx::Ez_avg); + + solver.BackwardTransform(*Bfield_avg[0], Idx::Bx_avg); + solver.BackwardTransform(*Bfield_avg[1], Idx::By_avg); + solver.BackwardTransform(*Bfield_avg[2], Idx::Bz_avg); + } +#endif } } @@ -109,10 +123,10 @@ WarpX::PushPSATD (int lev, amrex::Real /* dt */) { // Update the fields on the fine and coarse patch PushPSATDSinglePatch( *spectral_solver_fp[lev], - Efield_fp[lev], Bfield_fp[lev], current_fp[lev], rho_fp[lev] ); + Efield_fp[lev], Bfield_fp[lev], Efield_avg_fp[lev], Bfield_avg_fp[lev], current_fp[lev], rho_fp[lev] ); if (spectral_solver_cp[lev]) { PushPSATDSinglePatch( *spectral_solver_cp[lev], - Efield_cp[lev], Bfield_cp[lev], current_cp[lev], rho_cp[lev] ); + Efield_cp[lev], Bfield_cp[lev], Efield_avg_cp[lev], Bfield_avg_cp[lev], current_cp[lev], rho_cp[lev] ); } } #endif |