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.cpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/Source/FieldSolver/WarpXPushFieldsEM.cpp b/Source/FieldSolver/WarpXPushFieldsEM.cpp
index 101aa007f..6bf412b3c 100644
--- a/Source/FieldSolver/WarpXPushFieldsEM.cpp
+++ b/Source/FieldSolver/WarpXPushFieldsEM.cpp
@@ -29,7 +29,11 @@ using namespace amrex;
namespace {
void
PushPSATDSinglePatch (
+#ifdef WARPX_DIM_RZ
+ SpectralSolverRZ& solver,
+#else
SpectralSolver& solver,
+#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>& current,
@@ -38,25 +42,50 @@ namespace {
using Idx = SpectralFieldIndex;
// Perform forward Fourier transform
+#ifdef WARPX_DIM_RZ
+ solver.ForwardTransform(*Efield[0], Idx::Ex,
+ *Efield[1], Idx::Ey);
+#else
solver.ForwardTransform(*Efield[0], Idx::Ex);
solver.ForwardTransform(*Efield[1], Idx::Ey);
+#endif
solver.ForwardTransform(*Efield[2], Idx::Ez);
+#ifdef WARPX_DIM_RZ
+ solver.ForwardTransform(*Bfield[0], Idx::Bx,
+ *Bfield[1], Idx::By);
+#else
solver.ForwardTransform(*Bfield[0], Idx::Bx);
solver.ForwardTransform(*Bfield[1], Idx::By);
+#endif
solver.ForwardTransform(*Bfield[2], Idx::Bz);
+#ifdef WARPX_DIM_RZ
+ solver.ForwardTransform(*current[0], Idx::Jx,
+ *current[1], Idx::Jy);
+#else
solver.ForwardTransform(*current[0], Idx::Jx);
solver.ForwardTransform(*current[1], Idx::Jy);
+#endif
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
+#ifdef WARPX_DIM_RZ
+ solver.BackwardTransform(*Efield[0], Idx::Ex,
+ *Efield[1], Idx::Ey);
+#else
solver.BackwardTransform(*Efield[0], Idx::Ex);
solver.BackwardTransform(*Efield[1], Idx::Ey);
+#endif
solver.BackwardTransform(*Efield[2], Idx::Ez);
+#ifdef WARPX_DIM_RZ
+ solver.BackwardTransform(*Bfield[0], Idx::Bx,
+ *Bfield[1], Idx::By);
+#else
solver.BackwardTransform(*Bfield[0], Idx::Bx);
solver.BackwardTransform(*Bfield[1], Idx::By);
+#endif
solver.BackwardTransform(*Bfield[2], Idx::Bz);
}
}
@@ -471,7 +500,6 @@ WarpX::ApplyInverseVolumeScalingToCurrentDensity (MultiFab* Jx, MultiFab* Jy, Mu
AMREX_ALWAYS_ASSERT_WITH_MESSAGE(Jx->ixType().toIntVect()[0] != NODE,
"Jr should never node-centered in r");
- Box tilebox;
for ( MFIter mfi(*Jx, TilingIfNotGPU()); mfi.isValid(); ++mfi )
{
@@ -480,7 +508,7 @@ WarpX::ApplyInverseVolumeScalingToCurrentDensity (MultiFab* Jx, MultiFab* Jy, Mu
Array4<Real> const& Jt_arr = Jy->array(mfi);
Array4<Real> const& Jz_arr = Jz->array(mfi);
- tilebox = mfi.tilebox();
+ Box const & tilebox = mfi.tilebox();
Box tbr = convert(tilebox, WarpX::jx_nodal_flag);
Box tbt = convert(tilebox, WarpX::jy_nodal_flag);
Box tbz = convert(tilebox, WarpX::jz_nodal_flag);