diff options
Diffstat (limited to 'Source/FieldSolver/SpectralSolver/SpectralAlgorithms')
14 files changed, 95 insertions, 63 deletions
diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/ComovingPsatdAlgorithm.H b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/ComovingPsatdAlgorithm.H index 2623a3ea6..22b04aeba 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/ComovingPsatdAlgorithm.H +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/ComovingPsatdAlgorithm.H @@ -52,7 +52,8 @@ class ComovingPsatdAlgorithm : public SpectralBaseAlgorithm * the three components of the current density * \param[in] rho Unique pointer to \c MultiFab storing the charge density */ - virtual void CurrentCorrection (SpectralFieldData& field_data, + virtual void CurrentCorrection (const int lev, + SpectralFieldData& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current, const std::unique_ptr<amrex::MultiFab>& rho) override final; @@ -66,7 +67,8 @@ class ComovingPsatdAlgorithm : public SpectralBaseAlgorithm * \param[in,out] current Array of unique pointers to \c MultiFab storing * the three components of the current density */ - virtual void VayDeposition (SpectralFieldData& field_data, + virtual void VayDeposition (const int lev, + SpectralFieldData& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current) override final; private: diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/ComovingPsatdAlgorithm.cpp b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/ComovingPsatdAlgorithm.cpp index ca82d5a8c..96b993dcf 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/ComovingPsatdAlgorithm.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/ComovingPsatdAlgorithm.cpp @@ -391,7 +391,8 @@ void ComovingPsatdAlgorithm::InitializeSpectralCoefficients (const SpectralKSpac } void -ComovingPsatdAlgorithm::CurrentCorrection (SpectralFieldData& field_data, +ComovingPsatdAlgorithm::CurrentCorrection (const int lev, + SpectralFieldData& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current, const std::unique_ptr<amrex::MultiFab>& rho) { @@ -401,11 +402,11 @@ ComovingPsatdAlgorithm::CurrentCorrection (SpectralFieldData& field_data, using Idx = SpectralFieldIndex; // Forward Fourier transform of J and rho - field_data.ForwardTransform(*current[0], Idx::Jx, 0); - field_data.ForwardTransform(*current[1], Idx::Jy, 0); - field_data.ForwardTransform(*current[2], Idx::Jz, 0); - field_data.ForwardTransform(*rho, Idx::rho_old, 0); - field_data.ForwardTransform(*rho, Idx::rho_new, 1); + field_data.ForwardTransform(lev, *current[0], Idx::Jx, 0); + field_data.ForwardTransform(lev, *current[1], Idx::Jy, 0); + field_data.ForwardTransform(lev, *current[2], Idx::Jz, 0); + field_data.ForwardTransform(lev, *rho, Idx::rho_old, 0); + field_data.ForwardTransform(lev, *rho, Idx::rho_new, 1); // Loop over boxes for (amrex::MFIter mfi(field_data.fields); mfi.isValid(); ++mfi){ @@ -487,13 +488,14 @@ ComovingPsatdAlgorithm::CurrentCorrection (SpectralFieldData& field_data, } // Backward Fourier transform of J - field_data.BackwardTransform(*current[0], Idx::Jx, 0); - field_data.BackwardTransform(*current[1], Idx::Jy, 0); - field_data.BackwardTransform(*current[2], Idx::Jz, 0); + field_data.BackwardTransform(lev, *current[0], Idx::Jx, 0); + field_data.BackwardTransform(lev, *current[1], Idx::Jy, 0); + field_data.BackwardTransform(lev, *current[2], Idx::Jz, 0); } void -ComovingPsatdAlgorithm::VayDeposition (SpectralFieldData& /*field_data*/, +ComovingPsatdAlgorithm::VayDeposition (const int /*lev*/, + SpectralFieldData& /*field_data*/, std::array<std::unique_ptr<amrex::MultiFab>,3>& /*current*/) { amrex::Abort("Vay deposition not implemented for comoving PSATD"); diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.H b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.H index 18a7f2dcd..c5680a4ce 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.H +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.H @@ -42,7 +42,8 @@ class GalileanPsatdAlgorithmRZ : public SpectralBaseAlgorithmRZ * storing the three components of the current density * \param[in] rho unique pointer to MultiFab storing the charge density */ - virtual void CurrentCorrection ( SpectralFieldDataRZ& field_data, + virtual void CurrentCorrection ( const int lev, + SpectralFieldDataRZ& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current, const std::unique_ptr<amrex::MultiFab>& rho ) override final; @@ -56,7 +57,7 @@ class GalileanPsatdAlgorithmRZ : public SpectralBaseAlgorithmRZ * \param[in,out] current Array of unique pointers to \c MultiFab storing * the three components of the current density */ - virtual void VayDeposition (SpectralFieldDataRZ& field_data, + virtual void VayDeposition (const int lev, SpectralFieldDataRZ& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current) override final; private: diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.cpp b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.cpp index 85de8ffc1..dd608fa18 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.cpp @@ -286,7 +286,8 @@ void GalileanPsatdAlgorithmRZ::InitializeSpectralCoefficients (SpectralFieldData } void -GalileanPsatdAlgorithmRZ::CurrentCorrection (SpectralFieldDataRZ& field_data, +GalileanPsatdAlgorithmRZ::CurrentCorrection (const int lev, + SpectralFieldDataRZ& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current, const std::unique_ptr<amrex::MultiFab>& rho ) { @@ -296,11 +297,11 @@ GalileanPsatdAlgorithmRZ::CurrentCorrection (SpectralFieldDataRZ& field_data, using Idx = SpectralFieldIndex; // Forward Fourier transform of J and rho - field_data.ForwardTransform( *current[0], Idx::Jx, + field_data.ForwardTransform( lev, *current[0], Idx::Jx, *current[1], Idx::Jy); - field_data.ForwardTransform( *current[2], Idx::Jz, 0); - field_data.ForwardTransform( *rho, Idx::rho_old, 0 ); - field_data.ForwardTransform( *rho, Idx::rho_new, 1 ); + field_data.ForwardTransform( lev, *current[2], Idx::Jz, 0); + field_data.ForwardTransform( lev, *rho, Idx::rho_old, 0 ); + field_data.ForwardTransform( lev, *rho, Idx::rho_new, 1 ); // Loop over boxes for (amrex::MFIter mfi(field_data.fields); mfi.isValid(); ++mfi){ @@ -364,14 +365,16 @@ GalileanPsatdAlgorithmRZ::CurrentCorrection (SpectralFieldDataRZ& field_data, } // Backward Fourier transform of J - field_data.BackwardTransform( *current[0], Idx::Jx, + field_data.BackwardTransform( lev, + *current[0], Idx::Jx, *current[1], Idx::Jy); - field_data.BackwardTransform( *current[2], Idx::Jz, 0 ); + field_data.BackwardTransform( lev, *current[2], Idx::Jz, 0 ); } void -GalileanPsatdAlgorithmRZ::VayDeposition (SpectralFieldDataRZ& /*field_data*/, +GalileanPsatdAlgorithmRZ::VayDeposition (const int /*lev*/, + SpectralFieldDataRZ& /*field_data*/, std::array<std::unique_ptr<amrex::MultiFab>,3>& /*current*/) { amrex::Abort("Vay deposition not implemented in RZ geometry"); diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PMLPsatdAlgorithm.H b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PMLPsatdAlgorithm.H index a4cccbc55..368ea27ad 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PMLPsatdAlgorithm.H +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PMLPsatdAlgorithm.H @@ -46,7 +46,8 @@ class PMLPsatdAlgorithm : public SpectralBaseAlgorithm * the three components of the current density * \param[in] rho Unique pointer to \c MultiFab storing the charge density */ - virtual void CurrentCorrection (SpectralFieldData& field_data, + virtual void CurrentCorrection (const int lev, + SpectralFieldData& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current, const std::unique_ptr<amrex::MultiFab>& rho) override final; @@ -61,7 +62,8 @@ class PMLPsatdAlgorithm : public SpectralBaseAlgorithm * \param[in,out] current Array of unique pointers to \c MultiFab storing * the three components of the current density */ - virtual void VayDeposition (SpectralFieldData& field_data, + virtual void VayDeposition (const int lev, + SpectralFieldData& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current) override final; private: diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PMLPsatdAlgorithm.cpp b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PMLPsatdAlgorithm.cpp index 6b9397807..aafa3ba8d 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PMLPsatdAlgorithm.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PMLPsatdAlgorithm.cpp @@ -226,7 +226,8 @@ void PMLPsatdAlgorithm::InitializeSpectralCoefficients ( } void -PMLPsatdAlgorithm::CurrentCorrection (SpectralFieldData& /*field_data*/, +PMLPsatdAlgorithm::CurrentCorrection (const int /*lev*/, + SpectralFieldData& /*field_data*/, std::array<std::unique_ptr<amrex::MultiFab>,3>& /*current*/, const std::unique_ptr<amrex::MultiFab>& /*rho*/) { @@ -234,7 +235,8 @@ PMLPsatdAlgorithm::CurrentCorrection (SpectralFieldData& /*field_data*/, } void -PMLPsatdAlgorithm::VayDeposition (SpectralFieldData& /*field_data*/, +PMLPsatdAlgorithm::VayDeposition (const int /*lev*/, + SpectralFieldData& /*field_data*/, std::array<std::unique_ptr<amrex::MultiFab>,3>& /*current*/) { amrex::Abort("Vay deposition not implemented for PML PSATD"); diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.H b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.H index 1ca4aaf31..d5efe5b74 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.H +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.H @@ -62,6 +62,7 @@ class PsatdAlgorithm : public SpectralBaseAlgorithm * \param[in] rho Unique pointer to \c MultiFab storing the charge density */ virtual void CurrentCorrection ( + const int lev, SpectralFieldData& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current, const std::unique_ptr<amrex::MultiFab>& rho) override final; @@ -78,6 +79,7 @@ class PsatdAlgorithm : public SpectralBaseAlgorithm * the three components of the current density */ virtual void VayDeposition ( + const int lev, SpectralFieldData& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current) override final; diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.cpp b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.cpp index 0a278a54a..379bb6369 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.cpp @@ -881,6 +881,7 @@ void PsatdAlgorithm::InitializeSpectralCoefficients ( void PsatdAlgorithm::CurrentCorrection ( + const int lev, SpectralFieldData& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current, const std::unique_ptr<amrex::MultiFab>& rho) @@ -891,11 +892,11 @@ PsatdAlgorithm::CurrentCorrection ( using Idx = SpectralFieldIndex; // Forward Fourier transform of J and rho - field_data.ForwardTransform(*current[0], Idx::Jx, 0); - field_data.ForwardTransform(*current[1], Idx::Jy, 0); - field_data.ForwardTransform(*current[2], Idx::Jz, 0); - field_data.ForwardTransform(*rho, Idx::rho_old, 0); - field_data.ForwardTransform(*rho, Idx::rho_new, 1); + field_data.ForwardTransform(lev, *current[0], Idx::Jx, 0); + field_data.ForwardTransform(lev, *current[1], Idx::Jy, 0); + field_data.ForwardTransform(lev, *current[2], Idx::Jz, 0); + field_data.ForwardTransform(lev, *rho, Idx::rho_old, 0); + field_data.ForwardTransform(lev, *rho, Idx::rho_new, 1); // Loop over boxes for (amrex::MFIter mfi(field_data.fields); mfi.isValid(); ++mfi){ @@ -989,13 +990,14 @@ PsatdAlgorithm::CurrentCorrection ( } // Backward Fourier transform of J - field_data.BackwardTransform(*current[0], Idx::Jx, 0); - field_data.BackwardTransform(*current[1], Idx::Jy, 0); - field_data.BackwardTransform(*current[2], Idx::Jz, 0); + field_data.BackwardTransform(lev, *current[0], Idx::Jx, 0); + field_data.BackwardTransform(lev, *current[1], Idx::Jy, 0); + field_data.BackwardTransform(lev, *current[2], Idx::Jz, 0); } void PsatdAlgorithm::VayDeposition ( + const int lev, SpectralFieldData& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current) { @@ -1007,9 +1009,9 @@ PsatdAlgorithm::VayDeposition ( // Forward Fourier transform of D (temporarily stored in current): // D is nodal and does not match the staggering of J, therefore we pass the // actual staggering of D (IntVect(1)) to the ForwardTransform function - field_data.ForwardTransform(*current[0], Idx::Jx, 0, IntVect(1)); - field_data.ForwardTransform(*current[1], Idx::Jy, 0, IntVect(1)); - field_data.ForwardTransform(*current[2], Idx::Jz, 0, IntVect(1)); + field_data.ForwardTransform(lev, *current[0], Idx::Jx, 0, IntVect(1)); + field_data.ForwardTransform(lev, *current[1], Idx::Jy, 0, IntVect(1)); + field_data.ForwardTransform(lev, *current[2], Idx::Jz, 0, IntVect(1)); // Loop over boxes for (amrex::MFIter mfi(field_data.fields); mfi.isValid(); ++mfi) @@ -1065,9 +1067,9 @@ PsatdAlgorithm::VayDeposition ( } // Backward Fourier transform of J - field_data.BackwardTransform(*current[0], Idx::Jx, 0); - field_data.BackwardTransform(*current[1], Idx::Jy, 0); - field_data.BackwardTransform(*current[2], Idx::Jz, 0); + field_data.BackwardTransform(lev, *current[0], Idx::Jx, 0); + field_data.BackwardTransform(lev, *current[1], Idx::Jy, 0); + field_data.BackwardTransform(lev, *current[2], Idx::Jz, 0); } #endif // WARPX_USE_PSATD diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.H b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.H index 74bf71c29..9d6ed9cfa 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.H +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.H @@ -41,7 +41,8 @@ class PsatdAlgorithmRZ : public SpectralBaseAlgorithmRZ * the three components of the current density * \param[in] rho Unique pointer to \c MultiFab storing the charge density */ - virtual void CurrentCorrection (SpectralFieldDataRZ& field_data, + virtual void CurrentCorrection (const int lev, + SpectralFieldDataRZ& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current, const std::unique_ptr<amrex::MultiFab>& rho) override final; @@ -56,7 +57,8 @@ class PsatdAlgorithmRZ : public SpectralBaseAlgorithmRZ * \param[in,out] current Array of unique pointers to \c MultiFab storing * the three components of the current density */ - virtual void VayDeposition (SpectralFieldDataRZ& field_data, + virtual void VayDeposition (const int lev, + SpectralFieldDataRZ& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current) override final; private: diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.cpp b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.cpp index 002f9e55f..b96d5fa93 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.cpp @@ -215,7 +215,8 @@ void PsatdAlgorithmRZ::InitializeSpectralCoefficients (SpectralFieldDataRZ const } void -PsatdAlgorithmRZ::CurrentCorrection (SpectralFieldDataRZ& field_data, +PsatdAlgorithmRZ::CurrentCorrection (const int lev, + SpectralFieldDataRZ& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current, const std::unique_ptr<amrex::MultiFab>& rho) { @@ -225,11 +226,12 @@ PsatdAlgorithmRZ::CurrentCorrection (SpectralFieldDataRZ& field_data, using Idx = SpectralFieldIndex; // Forward Fourier transform of J and rho - field_data.ForwardTransform( *current[0], Idx::Jx, + field_data.ForwardTransform( lev, + *current[0], Idx::Jx, *current[1], Idx::Jy); - field_data.ForwardTransform( *current[2], Idx::Jz, 0); - field_data.ForwardTransform( *rho, Idx::rho_old, 0 ); - field_data.ForwardTransform( *rho, Idx::rho_new, 1 ); + field_data.ForwardTransform( lev, *current[2], Idx::Jz, 0); + field_data.ForwardTransform( lev, *rho, Idx::rho_old, 0 ); + field_data.ForwardTransform( lev, *rho, Idx::rho_new, 1 ); // Loop over boxes for (amrex::MFIter mfi(field_data.fields); mfi.isValid(); ++mfi){ @@ -289,13 +291,16 @@ PsatdAlgorithmRZ::CurrentCorrection (SpectralFieldDataRZ& field_data, } // Backward Fourier transform of J - field_data.BackwardTransform( *current[0], Idx::Jx, + field_data.BackwardTransform( lev, + *current[0], Idx::Jx, *current[1], Idx::Jy); - field_data.BackwardTransform( *current[2], Idx::Jz, 0 ); + field_data.BackwardTransform( lev, + *current[2], Idx::Jz, 0 ); } void -PsatdAlgorithmRZ::VayDeposition (SpectralFieldDataRZ& /*field_data*/, +PsatdAlgorithmRZ::VayDeposition (const int lev /**/, + SpectralFieldDataRZ& /*field_data*/, std::array<std::unique_ptr<amrex::MultiFab>,3>& /*current*/) { amrex::Abort("Vay deposition not implemented in RZ geometry"); diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.H b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.H index 3e909145d..598046042 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.H +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.H @@ -42,7 +42,8 @@ class SpectralBaseAlgorithm * the three components of the current density * \param[in] rho Unique pointer to \c MultiFab storing the charge density */ - virtual void CurrentCorrection (SpectralFieldData& field_data, + virtual void CurrentCorrection (const int lev, + SpectralFieldData& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current, const std::unique_ptr<amrex::MultiFab>& rho) = 0; @@ -55,13 +56,15 @@ class SpectralBaseAlgorithm * \param[in,out] current Array of unique pointers to \c MultiFab storing * the three components of the current density */ - virtual void VayDeposition (SpectralFieldData& field_data, + virtual void VayDeposition (const int lev, + SpectralFieldData& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current) = 0; /** * \brief Compute spectral divergence of E */ - void ComputeSpectralDivE ( SpectralFieldData& field_data, + void ComputeSpectralDivE ( const int lev, + SpectralFieldData& field_data, const std::array<std::unique_ptr<amrex::MultiFab>,3>& Efield, amrex::MultiFab& divE ); diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.cpp b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.cpp index 46e9b50f7..46fe83900 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.cpp @@ -14,6 +14,7 @@ using namespace amrex; */ void SpectralBaseAlgorithm::ComputeSpectralDivE ( + const int lev, SpectralFieldData& field_data, const std::array<std::unique_ptr<amrex::MultiFab>,3>& Efield, amrex::MultiFab& divE ) @@ -21,9 +22,9 @@ SpectralBaseAlgorithm::ComputeSpectralDivE ( using Idx = SpectralFieldIndex; // Forward Fourier transform of E - field_data.ForwardTransform( *Efield[0], Idx::Ex, 0 ); - field_data.ForwardTransform( *Efield[1], Idx::Ey, 0 ); - field_data.ForwardTransform( *Efield[2], Idx::Ez, 0 ); + field_data.ForwardTransform(lev, *Efield[0], Idx::Ex, 0 ); + field_data.ForwardTransform(lev, *Efield[1], Idx::Ey, 0 ); + field_data.ForwardTransform(lev, *Efield[2], Idx::Ez, 0 ); // Loop over boxes for (MFIter mfi(field_data.fields); mfi.isValid(); ++mfi){ @@ -64,5 +65,5 @@ SpectralBaseAlgorithm::ComputeSpectralDivE ( } // Backward Fourier transform - field_data.BackwardTransform( divE, Idx::divE, 0 ); + field_data.BackwardTransform(lev, divE, Idx::divE, 0 ); } diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithmRZ.H b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithmRZ.H index 29a8d8e7f..c19d2fc5e 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithmRZ.H +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithmRZ.H @@ -38,14 +38,15 @@ class SpectralBaseAlgorithmRZ * the three components of the current density * \param[in] rho Unique pointer to \c MultiFab storing the charge density */ - virtual void CurrentCorrection ( SpectralFieldDataRZ& field_data, + virtual void CurrentCorrection ( const int lev, SpectralFieldDataRZ& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current, const std::unique_ptr<amrex::MultiFab>& rho ) = 0; /** * \brief Compute spectral divergence of E */ - void ComputeSpectralDivE ( SpectralFieldDataRZ& field_data, + void ComputeSpectralDivE ( const int lev, + SpectralFieldDataRZ& field_data, const std::array<std::unique_ptr<amrex::MultiFab>,3>& Efield, amrex::MultiFab& divE ); @@ -58,7 +59,8 @@ class SpectralBaseAlgorithmRZ * \param[in,out] current Array of unique pointers to \c MultiFab storing * the three components of the current density */ - virtual void VayDeposition (SpectralFieldDataRZ& field_data, + virtual void VayDeposition (const int lev, + SpectralFieldDataRZ& field_data, std::array<std::unique_ptr<amrex::MultiFab>,3>& current) = 0; protected: // Meant to be used in the subclasses diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithmRZ.cpp b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithmRZ.cpp index 4609b7177..f80f54208 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithmRZ.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithmRZ.cpp @@ -15,6 +15,7 @@ using namespace amrex; */ void SpectralBaseAlgorithmRZ::ComputeSpectralDivE ( + const int lev, SpectralFieldDataRZ& field_data, const std::array<std::unique_ptr<amrex::MultiFab>,3>& Efield, amrex::MultiFab& divE ) @@ -23,9 +24,11 @@ SpectralBaseAlgorithmRZ::ComputeSpectralDivE ( using Idx = SpectralFieldIndex; // Forward Fourier transform of E - field_data.ForwardTransform( *Efield[0], Idx::Ex, + field_data.ForwardTransform( lev, + *Efield[0], Idx::Ex, *Efield[1], Idx::Ey ); - field_data.ForwardTransform( *Efield[2], Idx::Ez, 0 ); + field_data.ForwardTransform( lev, + *Efield[2], Idx::Ez, 0 ); // Loop over boxes for (MFIter mfi(field_data.fields); mfi.isValid(); ++mfi){ @@ -69,5 +72,5 @@ SpectralBaseAlgorithmRZ::ComputeSpectralDivE ( } // Backward Fourier transform - field_data.BackwardTransform( divE, Idx::divE, 0 ); + field_data.BackwardTransform( lev, divE, Idx::divE, 0 ); } |