diff options
Diffstat (limited to 'Source/FieldSolver/WarpXPushFieldsEM.cpp')
-rw-r--r-- | Source/FieldSolver/WarpXPushFieldsEM.cpp | 32 |
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); |