diff options
author | 2022-10-24 09:42:58 -0700 | |
---|---|---|
committer | 2022-10-24 09:42:58 -0700 | |
commit | b96e6a95f83e095e364c06e4416e81c0fbcf0ec0 (patch) | |
tree | 55df8e8191108098fae2ce69101fb054df0d8def /Source/FieldSolver | |
parent | c27b85db2b606f4474e5b331e4f9aeebaaf2da30 (diff) | |
download | WarpX-b96e6a95f83e095e364c06e4416e81c0fbcf0ec0.tar.gz WarpX-b96e6a95f83e095e364c06e4416e81c0fbcf0ec0.tar.zst WarpX-b96e6a95f83e095e364c06e4416e81c0fbcf0ec0.zip |
Fix stair-case solver in 2D Cartesian (#2942)
* Fix stair-case solver in 2D Cartesian
* Generalization for the macroscropic solver
* Update automated test
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Update benchmark
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Diffstat (limited to 'Source/FieldSolver')
-rw-r--r-- | Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp | 7 | ||||
-rw-r--r-- | Source/FieldSolver/FiniteDifferenceSolver/MacroscopicEvolveE.cpp | 7 |
2 files changed, 12 insertions, 2 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp b/Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp index 02f1d8087..da91eb73d 100644 --- a/Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp +++ b/Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp @@ -166,9 +166,14 @@ void FiniteDifferenceSolver::EvolveECartesian ( [=] AMREX_GPU_DEVICE (int i, int j, int k){ #ifdef AMREX_USE_EB // 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) += c2 * dt * ( - T_Algo::DownwardDx(Bz, coefs_x, n_coefs_x, i, j, k) + T_Algo::DownwardDz(Bx, coefs_z, n_coefs_z, i, j, k) diff --git a/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicEvolveE.cpp b/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicEvolveE.cpp index 7f0f99556..d6bc9be9e 100644 --- a/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicEvolveE.cpp +++ b/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicEvolveE.cpp @@ -193,8 +193,13 @@ void FiniteDifferenceSolver::MacroscopicEvolveECartesian ( [=] AMREX_GPU_DEVICE (int i, int j, int k){ #ifdef AMREX_USE_EB - // 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, k)<=0 || lz(i, j-1, k)<=0) return; +#endif #endif // Interpolate conductivity, sigma, to Ey position on the grid amrex::Real const sigma_interp = CoarsenIO::Interp( sigma_arr, sigma_stag, |