aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/FiniteDifferenceSolver
diff options
context:
space:
mode:
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver')
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/HybridPICModel/HybridPICModel.cpp20
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/HybridPICSolveE.cpp6
2 files changed, 20 insertions, 6 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/HybridPICModel/HybridPICModel.cpp b/Source/FieldSolver/FiniteDifferenceSolver/HybridPICModel/HybridPICModel.cpp
index 9e04045d0..4d8d9bde4 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/HybridPICModel/HybridPICModel.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/HybridPICModel/HybridPICModel.cpp
@@ -125,6 +125,26 @@ void HybridPICModel::InitData ()
amrex::IntVect Ey_stag = warpx.getEfield_fp(0,1).ixType().toIntVect();
amrex::IntVect Ez_stag = warpx.getEfield_fp(0,2).ixType().toIntVect();
+ // Check that the grid types are appropriate
+ const bool appropriate_grids = (
+#if defined(WARPX_DIM_1D_Z)
+ // AMReX convention: x = missing dimension, y = missing dimension, z = only dimension
+ Ex_stag == IntVect(1) && Ey_stag == IntVect(1) && Ez_stag == IntVect(0) &&
+ Bx_stag == IntVect(0) && By_stag == IntVect(0) && Bz_stag == IntVect(1) &&
+#elif defined(WARPX_DIM_XZ) || defined(WARPX_DIM_RZ)
+ // AMReX convention: x = first dimension, y = missing dimension, z = second dimension
+ Ex_stag == IntVect(0,1) && Ey_stag == IntVect(1,1) && Ez_stag == IntVect(1,0) &&
+ Bx_stag == IntVect(1,0) && By_stag == IntVect(0,0) && Bz_stag == IntVect(0,1) &&
+#elif defined(WARPX_DIM_3D)
+ Ex_stag == IntVect(0,1,1) && Ey_stag == IntVect(1,0,1) && Ez_stag == IntVect(1,1,0) &&
+ Bx_stag == IntVect(1,0,0) && By_stag == IntVect(0,1,0) && Bz_stag == IntVect(0,0,1) &&
+#endif
+ Jx_stag == Ex_stag && Jy_stag == Ey_stag && Jz_stag == Ez_stag
+ );
+ WARPX_ALWAYS_ASSERT_WITH_MESSAGE(
+ appropriate_grids,
+ "Ohm's law E-solve only works with staggered (Yee) grids.");
+
// copy data to device
for ( int idim = 0; idim < AMREX_SPACEDIM; ++idim) {
Jx_IndexType[idim] = Jx_stag[idim];
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/HybridPICSolveE.cpp b/Source/FieldSolver/FiniteDifferenceSolver/HybridPICSolveE.cpp
index 24e17d040..8d74adb45 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/HybridPICSolveE.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/HybridPICSolveE.cpp
@@ -198,12 +198,6 @@ void FiniteDifferenceSolver::HybridPICSolveE (
int lev, HybridPICModel const* hybrid_model,
DtType a_dt_type )
{
-
- WARPX_ALWAYS_ASSERT_WITH_MESSAGE(
- WarpX::grid_type == GridType::Staggered,
- "Ohm's law E-solve only works with a staggered (Yee) grid.");
-
-
// Select algorithm (The choice of algorithm is a runtime option,
// but we compile code for each algorithm, using templates)
if (m_fdtd_algo == ElectromagneticSolverAlgo::HybridPIC) {