diff options
author | 2022-08-12 14:04:54 -0700 | |
---|---|---|
committer | 2022-08-12 14:04:54 -0700 | |
commit | 1ed58acbee55bfa93918e89d7dd618177fb314e8 (patch) | |
tree | cb4a0c7d3eed6780a1ec6a810e7c1a87c2181f5c /Source/FieldSolver | |
parent | 7545b3c28acfa9d5ea8d3b8c600020a5bf4f3008 (diff) | |
download | WarpX-1ed58acbee55bfa93918e89d7dd618177fb314e8.tar.gz WarpX-1ed58acbee55bfa93918e89d7dd618177fb314e8.tar.zst WarpX-1ed58acbee55bfa93918e89d7dd618177fb314e8.zip |
Fill Guard Cells of Fields and Currents Independently (#3302)
* Fill Guard Cells of Fields and Currents Independently
* Fill Guard Cells of Averaged Fields as Regular Fields
Diffstat (limited to 'Source/FieldSolver')
15 files changed, 62 insertions, 51 deletions
diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.H b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.H index 9139fa433..dd9c6a7fd 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.H +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.H @@ -38,7 +38,6 @@ class PsatdAlgorithm : public SpectralBaseAlgorithm * \param[in] norder_y order of the spectral solver along y * \param[in] norder_z order of the spectral solver along z * \param[in] nodal whether the E and B fields are defined on a fully nodal grid or a Yee grid - * \param[in] fill_guards Update the guard cells (in addition to the valid cells) when pushing the fields in time * \param[in] v_galilean Galilean velocity (three-dimensional array) * \param[in] dt time step of the simulation * \param[in] update_with_rho whether the update equation for E uses rho or not @@ -54,7 +53,6 @@ class PsatdAlgorithm : public SpectralBaseAlgorithm const int norder_y, const int norder_z, const bool nodal, - const amrex::IntVect& fill_guards, const amrex::Vector<amrex::Real>& v_galilean, const amrex::Real dt, const bool update_with_rho, diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.cpp b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.cpp index 6d9d684f5..1cbc27f0b 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.cpp @@ -35,7 +35,6 @@ PsatdAlgorithm::PsatdAlgorithm( const int norder_y, const int norder_z, const bool nodal, - const amrex::IntVect& fill_guards, const amrex::Vector<amrex::Real>& v_galilean, const amrex::Real dt, const bool update_with_rho, @@ -43,7 +42,7 @@ PsatdAlgorithm::PsatdAlgorithm( const bool dive_cleaning, const bool divb_cleaning) // Initializer list - : SpectralBaseAlgorithm(spectral_kspace, dm, spectral_index, norder_x, norder_y, norder_z, nodal, fill_guards), + : SpectralBaseAlgorithm(spectral_kspace, dm, spectral_index, norder_x, norder_y, norder_z, nodal), m_spectral_index(spectral_index), // Initialize the centered finite-order modified k vectors: // these are computed always with the assumption of centered grids diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmComoving.H b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmComoving.H index 6f8497f8f..bc7dc7699 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmComoving.H +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmComoving.H @@ -33,7 +33,6 @@ class PsatdAlgorithmComoving : public SpectralBaseAlgorithm const int norder_y, const int norder_z, const bool nodal, - const amrex::IntVect& fill_guards, const amrex::Vector<amrex::Real>& v_comoving, const amrex::Real dt, const bool update_with_rho); diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmComoving.cpp b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmComoving.cpp index 30a37345f..1d6248f8d 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmComoving.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmComoving.cpp @@ -26,12 +26,11 @@ PsatdAlgorithmComoving::PsatdAlgorithmComoving (const SpectralKSpace& spectral_k const SpectralFieldIndex& spectral_index, const int norder_x, const int norder_y, const int norder_z, const bool nodal, - const amrex::IntVect& fill_guards, const amrex::Vector<amrex::Real>& v_comoving, const amrex::Real dt, const bool update_with_rho) // Members initialization - : SpectralBaseAlgorithm(spectral_kspace, dm, spectral_index, norder_x, norder_y, norder_z, nodal, fill_guards), + : SpectralBaseAlgorithm(spectral_kspace, dm, spectral_index, norder_x, norder_y, norder_z, nodal), m_spectral_index(spectral_index), // Initialize the infinite-order k vectors (the argument n_order = -1 selects // the infinite order option, the argument nodal = false is then irrelevant) diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmJLinearInTime.H b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmJLinearInTime.H index 0689a7e49..e0eded5f5 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmJLinearInTime.H +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmJLinearInTime.H @@ -41,7 +41,6 @@ class PsatdAlgorithmJLinearInTime : public SpectralBaseAlgorithm * \param[in] norder_y order of the spectral solver along y * \param[in] norder_z order of the spectral solver along z * \param[in] nodal whether the E and B fields are defined on a fully nodal grid or a Yee grid - * \param[in] fill_guards Update the guard cells (in addition to the valid cells) when pushing the fields in time * \param[in] dt time step of the simulation * \param[in] time_averaging whether to use time averaging for large time steps * \param[in] dive_cleaning Update F as part of the field update, so that errors in divE=rho propagate away at the speed of light @@ -55,7 +54,6 @@ class PsatdAlgorithmJLinearInTime : public SpectralBaseAlgorithm const int norder_y, const int norder_z, const bool nodal, - const amrex::IntVect& fill_guards, const amrex::Real dt, const bool time_averaging, const bool dive_cleaning, diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmJLinearInTime.cpp b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmJLinearInTime.cpp index 30cc90549..bd9df977e 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmJLinearInTime.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmJLinearInTime.cpp @@ -35,13 +35,12 @@ PsatdAlgorithmJLinearInTime::PsatdAlgorithmJLinearInTime( const int norder_y, const int norder_z, const bool nodal, - const amrex::IntVect& fill_guards, const amrex::Real dt, const bool time_averaging, const bool dive_cleaning, const bool divb_cleaning) // Initializer list - : SpectralBaseAlgorithm(spectral_kspace, dm, spectral_index, norder_x, norder_y, norder_z, nodal, fill_guards), + : SpectralBaseAlgorithm(spectral_kspace, dm, spectral_index, norder_x, norder_y, norder_z, nodal), m_spectral_index(spectral_index), m_dt(dt), m_time_averaging(time_averaging), diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmPml.H b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmPml.H index 630c26260..0c1aeb885 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmPml.H +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmPml.H @@ -32,7 +32,6 @@ class PsatdAlgorithmPml : public SpectralBaseAlgorithm const SpectralFieldIndex& spectral_index, const int norder_x, const int norder_y, const int norder_z, const bool nodal, - const amrex::IntVect& fill_guards, const amrex::Real dt, const bool dive_cleaning, const bool divb_cleaning); diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmPml.cpp b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmPml.cpp index 69d8dc401..45a4d1580 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmPml.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmPml.cpp @@ -35,10 +35,10 @@ PsatdAlgorithmPml::PsatdAlgorithmPml(const SpectralKSpace& spectral_kspace, const SpectralFieldIndex& spectral_index, const int norder_x, const int norder_y, const int norder_z, const bool nodal, - const amrex::IntVect& fill_guards, const Real dt, + const Real dt, const bool dive_cleaning, const bool divb_cleaning) // Initialize members of base class - : SpectralBaseAlgorithm(spectral_kspace, dm, spectral_index, norder_x, norder_y, norder_z, nodal, fill_guards), + : SpectralBaseAlgorithm(spectral_kspace, dm, spectral_index, norder_x, norder_y, norder_z, nodal), m_spectral_index(spectral_index), m_dt(dt), m_dive_cleaning(dive_cleaning), diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.H b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.H index b4f70d5f5..ef08c4432 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.H +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.H @@ -71,8 +71,6 @@ class SpectralBaseAlgorithm protected: // Meant to be used in the subclasses - amrex::IntVect m_fill_guards; - using SpectralRealCoefficients = \ amrex::FabArray< amrex::BaseFab <amrex::Real> >; using SpectralComplexCoefficients = \ @@ -85,8 +83,7 @@ class SpectralBaseAlgorithm const amrex::DistributionMapping& dm, const SpectralFieldIndex& spectral_index, const int norder_x, const int norder_y, - const int norder_z, const bool nodal, - const amrex::IntVect& fill_guards); + const int norder_z, const bool nodal); SpectralFieldIndex m_spectral_index; diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.cpp b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.cpp index 4ecbb9000..1a2334cc6 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.cpp @@ -31,9 +31,7 @@ SpectralBaseAlgorithm::SpectralBaseAlgorithm(const SpectralKSpace& spectral_kspa const amrex::DistributionMapping& dm, const SpectralFieldIndex& spectral_index, const int norder_x, const int norder_y, - const int norder_z, const bool nodal, - const amrex::IntVect& fill_guards): - m_fill_guards(fill_guards), + const int norder_z, const bool nodal): m_spectral_index(spectral_index), // Compute and assign the modified k vectors modified_kx_vec(spectral_kspace.getModifiedKComponent(dm,0,norder_x,nodal)), @@ -66,8 +64,6 @@ SpectralBaseAlgorithm::ComputeSpectralDivE ( field_data.ForwardTransform(lev, *Efield[1], Idx.Ey, 0 ); field_data.ForwardTransform(lev, *Efield[2], Idx.Ez, 0 ); - const amrex::IntVect& fill_guards = m_fill_guards; - // Loop over boxes for (MFIter mfi(field_data.fields); mfi.isValid(); ++mfi){ @@ -107,5 +103,6 @@ SpectralBaseAlgorithm::ComputeSpectralDivE ( } // Backward Fourier transform - field_data.BackwardTransform(lev, divE, Idx.divE, 0, fill_guards); + const amrex::IntVect& fill_guards = amrex::IntVect(0); + field_data.BackwardTransform(lev, divE, Idx.divE, fill_guards, 0); } diff --git a/Source/FieldSolver/SpectralSolver/SpectralFieldData.H b/Source/FieldSolver/SpectralSolver/SpectralFieldData.H index fe856c236..811fdd4d7 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralFieldData.H +++ b/Source/FieldSolver/SpectralSolver/SpectralFieldData.H @@ -127,7 +127,7 @@ class SpectralFieldData const int i_comp); void BackwardTransform (const int lev, amrex::MultiFab& mf, const int field_index, - const int i_comp, const amrex::IntVect& fill_guards); + const amrex::IntVect& fill_guards, const int i_comp); // `fields` stores fields in spectral space, as multicomponent FabArray SpectralField fields; diff --git a/Source/FieldSolver/SpectralSolver/SpectralFieldData.cpp b/Source/FieldSolver/SpectralSolver/SpectralFieldData.cpp index 460e2cc3b..00346a2c7 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralFieldData.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralFieldData.cpp @@ -310,8 +310,8 @@ void SpectralFieldData::BackwardTransform (const int lev, MultiFab& mf, const int field_index, - const int i_comp, - const amrex::IntVect& fill_guards) + const amrex::IntVect& fill_guards, + const int i_comp) { amrex::LayoutData<amrex::Real>* cost = WarpX::getCosts(lev); bool do_costs = WarpXUtilLoadBalance::doCosts(cost, mf.boxArray(), mf.DistributionMap()); diff --git a/Source/FieldSolver/SpectralSolver/SpectralSolver.H b/Source/FieldSolver/SpectralSolver/SpectralSolver.H index df9e9f0ff..684cf9586 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralSolver.H +++ b/Source/FieldSolver/SpectralSolver/SpectralSolver.H @@ -47,7 +47,6 @@ class SpectralSolver * \param[in] norder_y spectral order along y * \param[in] norder_z spectral order along z * \param[in] nodal whether the spectral solver is applied to a nodal or staggered grid - * \param[in] fill_guards Update the guard cells (in addition to the valid cells) when pushing the fields in time * \param[in] v_galilean three-dimensional vector containing the components of the Galilean * velocity for the standard or averaged Galilean PSATD solvers * \param[in] v_comoving three-dimensional vector containing the components of the comoving @@ -72,7 +71,6 @@ class SpectralSolver const amrex::DistributionMapping& dm, const int norder_x, const int norder_y, const int norder_z, const bool nodal, - const amrex::IntVect& fill_guards, const amrex::Vector<amrex::Real>& v_galilean, const amrex::Vector<amrex::Real>& v_comoving, const amrex::RealVect dx, @@ -106,6 +104,7 @@ class SpectralSolver void BackwardTransform( const int lev, amrex::MultiFab& mf, const int field_index, + const amrex::IntVect& fill_guards, const int i_comp=0 ); /** diff --git a/Source/FieldSolver/SpectralSolver/SpectralSolver.cpp b/Source/FieldSolver/SpectralSolver/SpectralSolver.cpp index 81cba183c..75c82319c 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralSolver.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralSolver.cpp @@ -24,7 +24,6 @@ SpectralSolver::SpectralSolver( const amrex::DistributionMapping& dm, const int norder_x, const int norder_y, const int norder_z, const bool nodal, - const amrex::IntVect& fill_guards, const amrex::Vector<amrex::Real>& v_galilean, const amrex::Vector<amrex::Real>& v_comoving, const amrex::RealVect dx, const amrex::Real dt, @@ -52,7 +51,7 @@ SpectralSolver::SpectralSolver( { algorithm = std::make_unique<PsatdAlgorithmPml>( k_space, dm, m_spectral_index, norder_x, norder_y, norder_z, nodal, - fill_guards, dt, dive_cleaning, divb_cleaning); + dt, dive_cleaning, divb_cleaning); } else // PSATD equations in the regulard grids { @@ -61,7 +60,7 @@ SpectralSolver::SpectralSolver( { algorithm = std::make_unique<PsatdAlgorithmComoving>( k_space, dm, m_spectral_index, norder_x, norder_y, norder_z, nodal, - fill_guards, v_comoving, dt, update_with_rho); + v_comoving, dt, update_with_rho); } else // PSATD algorithms: standard, Galilean, averaged Galilean, multi-J { @@ -69,13 +68,13 @@ SpectralSolver::SpectralSolver( { algorithm = std::make_unique<PsatdAlgorithmJLinearInTime>( k_space, dm, m_spectral_index, norder_x, norder_y, norder_z, nodal, - fill_guards, dt, fft_do_time_averaging, dive_cleaning, divb_cleaning); + dt, fft_do_time_averaging, dive_cleaning, divb_cleaning); } else // standard, Galilean, averaged Galilean { algorithm = std::make_unique<PsatdAlgorithm>( k_space, dm, m_spectral_index, norder_x, norder_y, norder_z, nodal, - fill_guards, v_galilean, dt, update_with_rho, fft_do_time_averaging, + v_galilean, dt, update_with_rho, fft_do_time_averaging, dive_cleaning, divb_cleaning); } } @@ -84,8 +83,6 @@ SpectralSolver::SpectralSolver( // - Initialize arrays for fields in spectral space + FFT plans field_data = SpectralFieldData(lev, realspace_ba, k_space, dm, m_spectral_index.n_fields, periodic_single_box); - - m_fill_guards = fill_guards; } void @@ -102,10 +99,11 @@ void SpectralSolver::BackwardTransform( const int lev, amrex::MultiFab& mf, const int field_index, + const amrex::IntVect& fill_guards, const int i_comp ) { WARPX_PROFILE("SpectralSolver::BackwardTransform"); - field_data.BackwardTransform(lev, mf, field_index, i_comp, m_fill_guards); + field_data.BackwardTransform(lev, mf, field_index, fill_guards, i_comp); } void diff --git a/Source/FieldSolver/WarpXPushFieldsEM.cpp b/Source/FieldSolver/WarpXPushFieldsEM.cpp index 9082995cd..6d604bc15 100644 --- a/Source/FieldSolver/WarpXPushFieldsEM.cpp +++ b/Source/FieldSolver/WarpXPushFieldsEM.cpp @@ -84,15 +84,18 @@ namespace { SpectralSolver& solver, #endif const std::array<std::unique_ptr<amrex::MultiFab>,3>& vector_field, - const int compx, const int compy, const int compz) + const int compx, const int compy, const int compz, + const amrex::IntVect& fill_guards) { #ifdef WARPX_DIM_RZ + amrex::ignore_unused(fill_guards); solver.BackwardTransform(lev, *vector_field[0], compx, *vector_field[1], compy); + solver.BackwardTransform(lev, *vector_field[2], compz); #else - solver.BackwardTransform(lev, *vector_field[0], compx); - solver.BackwardTransform(lev, *vector_field[1], compy); + solver.BackwardTransform(lev, *vector_field[0], compx, fill_guards); + solver.BackwardTransform(lev, *vector_field[1], compy, fill_guards); + solver.BackwardTransform(lev, *vector_field[2], compz, fill_guards); #endif - solver.BackwardTransform(lev, *vector_field[2], compz); } } @@ -127,13 +130,17 @@ void WarpX::PSATDBackwardTransformEB ( for (int lev = 0; lev <= finest_level; ++lev) { - BackwardTransformVect(lev, *spectral_solver_fp[lev], E_fp[lev], Idx.Ex, Idx.Ey, Idx.Ez); - BackwardTransformVect(lev, *spectral_solver_fp[lev], B_fp[lev], Idx.Bx, Idx.By, Idx.Bz); + BackwardTransformVect(lev, *spectral_solver_fp[lev], E_fp[lev], + Idx.Ex, Idx.Ey, Idx.Ez, m_fill_guards_fields); + BackwardTransformVect(lev, *spectral_solver_fp[lev], B_fp[lev], + Idx.Bx, Idx.By, Idx.Bz, m_fill_guards_fields); if (spectral_solver_cp[lev]) { - BackwardTransformVect(lev, *spectral_solver_cp[lev], E_cp[lev], Idx.Ex, Idx.Ey, Idx.Ez); - BackwardTransformVect(lev, *spectral_solver_cp[lev], B_cp[lev], Idx.Bx, Idx.By, Idx.Bz); + BackwardTransformVect(lev, *spectral_solver_cp[lev], E_cp[lev], + Idx.Ex, Idx.Ey, Idx.Ez, m_fill_guards_fields); + BackwardTransformVect(lev, *spectral_solver_cp[lev], B_cp[lev], + Idx.Bx, Idx.By, Idx.Bz, m_fill_guards_fields); } } @@ -154,13 +161,17 @@ void WarpX::PSATDBackwardTransformEBavg ( for (int lev = 0; lev <= finest_level; ++lev) { - BackwardTransformVect(lev, *spectral_solver_fp[lev], E_avg_fp[lev], Idx.Ex_avg, Idx.Ey_avg, Idx.Ez_avg); - BackwardTransformVect(lev, *spectral_solver_fp[lev], B_avg_fp[lev], Idx.Bx_avg, Idx.By_avg, Idx.Bz_avg); + BackwardTransformVect(lev, *spectral_solver_fp[lev], E_avg_fp[lev], + Idx.Ex_avg, Idx.Ey_avg, Idx.Ez_avg, m_fill_guards_fields); + BackwardTransformVect(lev, *spectral_solver_fp[lev], B_avg_fp[lev], + Idx.Bx_avg, Idx.By_avg, Idx.Bz_avg, m_fill_guards_fields); if (spectral_solver_cp[lev]) { - BackwardTransformVect(lev, *spectral_solver_cp[lev], E_avg_cp[lev], Idx.Ex_avg, Idx.Ey_avg, Idx.Ez_avg); - BackwardTransformVect(lev, *spectral_solver_cp[lev], B_avg_cp[lev], Idx.Bx_avg, Idx.By_avg, Idx.Bz_avg); + BackwardTransformVect(lev, *spectral_solver_cp[lev], E_avg_cp[lev], + Idx.Ex_avg, Idx.Ey_avg, Idx.Ez_avg, m_fill_guards_fields); + BackwardTransformVect(lev, *spectral_solver_cp[lev], B_avg_cp[lev], + Idx.Bx_avg, Idx.By_avg, Idx.Bz_avg, m_fill_guards_fields); } } } @@ -188,11 +199,19 @@ WarpX::PSATDBackwardTransformF () for (int lev = 0; lev <= finest_level; ++lev) { +#ifdef WARPX_DIM_RZ if (F_fp[lev]) spectral_solver_fp[lev]->BackwardTransform(lev, *F_fp[lev], Idx.F); +#else + if (F_fp[lev]) spectral_solver_fp[lev]->BackwardTransform(lev, *F_fp[lev], Idx.F, m_fill_guards_fields); +#endif if (spectral_solver_cp[lev]) { +#ifdef WARPX_DIM_RZ if (F_cp[lev]) spectral_solver_cp[lev]->BackwardTransform(lev, *F_cp[lev], Idx.F); +#else + if (F_cp[lev]) spectral_solver_cp[lev]->BackwardTransform(lev, *F_cp[lev], Idx.F, m_fill_guards_fields); +#endif } } @@ -226,11 +245,19 @@ WarpX::PSATDBackwardTransformG () for (int lev = 0; lev <= finest_level; ++lev) { +#ifdef WARPX_DIM_RZ if (G_fp[lev]) spectral_solver_fp[lev]->BackwardTransform(lev, *G_fp[lev], Idx.G); +#else + if (G_fp[lev]) spectral_solver_fp[lev]->BackwardTransform(lev, *G_fp[lev], Idx.G, m_fill_guards_fields); +#endif if (spectral_solver_cp[lev]) { +#ifdef WARPX_DIM_RZ if (G_cp[lev]) spectral_solver_cp[lev]->BackwardTransform(lev, *G_cp[lev], Idx.G); +#else + if (G_cp[lev]) spectral_solver_cp[lev]->BackwardTransform(lev, *G_cp[lev], Idx.G, m_fill_guards_fields); +#endif } } @@ -302,7 +329,8 @@ void WarpX::PSATDBackwardTransformJ ( idx_jy = static_cast<int>(Idx.Jy); idx_jz = static_cast<int>(Idx.Jz); - BackwardTransformVect(lev, *spectral_solver_fp[lev], J_fp[lev], idx_jx, idx_jy, idx_jz); + BackwardTransformVect(lev, *spectral_solver_fp[lev], J_fp[lev], + idx_jx, idx_jy, idx_jz, m_fill_guards_current); if (spectral_solver_cp[lev]) { @@ -312,7 +340,8 @@ void WarpX::PSATDBackwardTransformJ ( idx_jy = static_cast<int>(Idx.Jy); idx_jz = static_cast<int>(Idx.Jz); - BackwardTransformVect(lev, *spectral_solver_cp[lev], J_cp[lev], idx_jx, idx_jy, idx_jz); + BackwardTransformVect(lev, *spectral_solver_cp[lev], J_cp[lev], + idx_jx, idx_jy, idx_jz, m_fill_guards_current); } } } |