From 1ed58acbee55bfa93918e89d7dd618177fb314e8 Mon Sep 17 00:00:00 2001 From: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> Date: Fri, 12 Aug 2022 14:04:54 -0700 Subject: 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 --- Source/FieldSolver/WarpXPushFieldsEM.cpp | 57 ++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 14 deletions(-) (limited to 'Source/FieldSolver/WarpXPushFieldsEM.cpp') 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,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(Idx.Jy); idx_jz = static_cast(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(Idx.Jy); idx_jz = static_cast(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); } } } -- cgit v1.2.3