aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/FiniteDifferenceSolver/EvolveEPML.cpp
diff options
context:
space:
mode:
authorGravatar Remi Lehe <remi.lehe@normalesup.org> 2023-01-24 14:02:33 -0800
committerGravatar GitHub <noreply@github.com> 2023-01-24 14:02:33 -0800
commitf94a1f19e4e27830c184a34d9def47ba004ce9ea (patch)
treee7feb7b655c5a91661a9dec02ce7c3aee3e9ec9c /Source/FieldSolver/FiniteDifferenceSolver/EvolveEPML.cpp
parent81510e222e00fcdcf035369f91e62debfad9ebe7 (diff)
downloadWarpX-f94a1f19e4e27830c184a34d9def47ba004ce9ea.tar.gz
WarpX-f94a1f19e4e27830c184a34d9def47ba004ce9ea.tar.zst
WarpX-f94a1f19e4e27830c184a34d9def47ba004ce9ea.zip
Fix bug with PML in 2D when compiling with EB (#3637)
* Fix condition to update PML in 2D * Add automated test: PML with EB compiled * Pass correct cell sizes * Update automated test * Update benchmark
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver/EvolveEPML.cpp')
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/EvolveEPML.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/EvolveEPML.cpp b/Source/FieldSolver/FiniteDifferenceSolver/EvolveEPML.cpp
index 8232d2d0d..1dadd8e9f 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/EvolveEPML.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/EvolveEPML.cpp
@@ -146,9 +146,15 @@ void FiniteDifferenceSolver::EvolveEPMLCartesian (
[=] AMREX_GPU_DEVICE (int i, int j, int k){
#ifdef AMREX_USE_EB
- if(ly(i, j, k)<=0) return;
+ // Skip field push if this cell is fully covered by embedded boundaries
+#ifdef WARPX_DIM_3D
+ if (ly(i,j,k) <= 0) return;
+#elif defined(WARPX_DIM_XZ)
+ //In XZ Ey is associated with a mesh node, so we need to check if the mesh node is covered
+ amrex::ignore_unused(ly);
+ if (lx(i, j, k)<=0 || lx(i-1, j, k)<=0 || lz(i, j-1, k)<=0 || lz(i, j, k)<=0) return;
+#endif
#endif
-
Ey(i, j, k, PMLComp::yx) -= c2 * dt * (
T_Algo::DownwardDx(Bz, coefs_x, n_coefs_x, i, j, k, PMLComp::zx)
+ T_Algo::DownwardDx(Bz, coefs_x, n_coefs_x, i, j, k, PMLComp::zy) );