aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/WarpXPushFieldsEM.cpp
diff options
context:
space:
mode:
authorGravatar Edoardo Zoni <59625522+EZoni@users.noreply.github.com> 2022-08-12 14:04:54 -0700
committerGravatar GitHub <noreply@github.com> 2022-08-12 14:04:54 -0700
commit1ed58acbee55bfa93918e89d7dd618177fb314e8 (patch)
treecb4a0c7d3eed6780a1ec6a810e7c1a87c2181f5c /Source/FieldSolver/WarpXPushFieldsEM.cpp
parent7545b3c28acfa9d5ea8d3b8c600020a5bf4f3008 (diff)
downloadWarpX-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/WarpXPushFieldsEM.cpp')
-rw-r--r--Source/FieldSolver/WarpXPushFieldsEM.cpp57
1 files changed, 43 insertions, 14 deletions
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);
}
}
}