aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/SpectralSolver/SpectralAlgorithms
diff options
context:
space:
mode:
Diffstat (limited to 'Source/FieldSolver/SpectralSolver/SpectralAlgorithms')
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralAlgorithms/ComovingPsatdAlgorithm.H6
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralAlgorithms/ComovingPsatdAlgorithm.cpp22
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.H5
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.cpp19
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PMLPsatdAlgorithm.H6
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PMLPsatdAlgorithm.cpp6
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.H2
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.cpp30
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.H6
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.cpp21
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.H9
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.cpp9
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithmRZ.H8
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithmRZ.cpp9
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 );
}