aboutsummaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/FieldSolver/WarpXPushFieldsEM.cpp67
1 files changed, 34 insertions, 33 deletions
diff --git a/Source/FieldSolver/WarpXPushFieldsEM.cpp b/Source/FieldSolver/WarpXPushFieldsEM.cpp
index 95e3e78b3..475f7a1dd 100644
--- a/Source/FieldSolver/WarpXPushFieldsEM.cpp
+++ b/Source/FieldSolver/WarpXPushFieldsEM.cpp
@@ -18,6 +18,40 @@
using namespace amrex;
#ifdef WARPX_USE_PSATD
+namespace {
+ void
+ PushPSATDSinglePatch (
+ SpectralSolver& solver,
+ 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>& current,
+ std::unique_ptr<amrex::MultiFab>& rho ) {
+
+ using Idx = SpectralFieldIndex;
+
+ // Perform forward Fourier transform
+ solver.ForwardTransform(*Efield[0], Idx::Ex);
+ solver.ForwardTransform(*Efield[1], Idx::Ey);
+ solver.ForwardTransform(*Efield[2], Idx::Ez);
+ solver.ForwardTransform(*Bfield[0], Idx::Bx);
+ solver.ForwardTransform(*Bfield[1], Idx::By);
+ solver.ForwardTransform(*Bfield[2], Idx::Bz);
+ solver.ForwardTransform(*current[0], Idx::Jx);
+ solver.ForwardTransform(*current[1], Idx::Jy);
+ solver.ForwardTransform(*current[2], Idx::Jz);
+ solver.ForwardTransform(*rho, Idx::rho_old, 0);
+ solver.ForwardTransform(*rho, Idx::rho_new, 1);
+ // Advance fields in spectral space
+ solver.pushSpectralFields();
+ // Perform backward Fourier Transform
+ solver.BackwardTransform(*Efield[0], Idx::Ex);
+ solver.BackwardTransform(*Efield[1], Idx::Ey);
+ solver.BackwardTransform(*Efield[2], Idx::Ez);
+ solver.BackwardTransform(*Bfield[0], Idx::Bx);
+ solver.BackwardTransform(*Bfield[1], Idx::By);
+ solver.BackwardTransform(*Bfield[2], Idx::Bz);
+ }
+}
void
WarpX::PushPSATD (amrex::Real a_dt)
@@ -35,39 +69,6 @@ WarpX::PushPSATD (amrex::Real a_dt)
}
void
-PushPSATDSinglePatch (
- SpectralSolver& solver,
- 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>& current,
- std::unique_ptr<amrex::MultiFab>& rho ) {
-
- using Idx = SpectralFieldIndex;
-
- // Perform forward Fourier transform
- solver.ForwardTransform(*Efield[0], Idx::Ex);
- solver.ForwardTransform(*Efield[1], Idx::Ey);
- solver.ForwardTransform(*Efield[2], Idx::Ez);
- solver.ForwardTransform(*Bfield[0], Idx::Bx);
- solver.ForwardTransform(*Bfield[1], Idx::By);
- solver.ForwardTransform(*Bfield[2], Idx::Bz);
- solver.ForwardTransform(*current[0], Idx::Jx);
- solver.ForwardTransform(*current[1], Idx::Jy);
- solver.ForwardTransform(*current[2], Idx::Jz);
- solver.ForwardTransform(*rho, Idx::rho_old, 0);
- solver.ForwardTransform(*rho, Idx::rho_new, 1);
- // Advance fields in spectral space
- solver.pushSpectralFields();
- // Perform backward Fourier Transform
- solver.BackwardTransform(*Efield[0], Idx::Ex);
- solver.BackwardTransform(*Efield[1], Idx::Ey);
- solver.BackwardTransform(*Efield[2], Idx::Ez);
- solver.BackwardTransform(*Bfield[0], Idx::Bx);
- solver.BackwardTransform(*Bfield[1], Idx::By);
- solver.BackwardTransform(*Bfield[2], Idx::Bz);
-}
-
-void
WarpX::PushPSATD_localFFT (int lev, amrex::Real /* dt */)
{
// Update the fields on the fine and coarse patch