aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/WarpXPushFieldsEM.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/FieldSolver/WarpXPushFieldsEM.cpp')
-rw-r--r--Source/FieldSolver/WarpXPushFieldsEM.cpp20
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