From f94a1f19e4e27830c184a34d9def47ba004ce9ea Mon Sep 17 00:00:00 2001 From: Remi Lehe Date: Tue, 24 Jan 2023 14:02:33 -0800 Subject: 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 --- Source/FieldSolver/FiniteDifferenceSolver/EvolveEPML.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'Source/FieldSolver/FiniteDifferenceSolver/EvolveEPML.cpp') 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) ); -- cgit v1.2.3