aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/WarpXPushFieldsEM.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/FieldSolver/WarpXPushFieldsEM.cpp')
-rw-r--r--Source/FieldSolver/WarpXPushFieldsEM.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/Source/FieldSolver/WarpXPushFieldsEM.cpp b/Source/FieldSolver/WarpXPushFieldsEM.cpp
index 21d9424a8..f0af7f605 100644
--- a/Source/FieldSolver/WarpXPushFieldsEM.cpp
+++ b/Source/FieldSolver/WarpXPushFieldsEM.cpp
@@ -111,11 +111,14 @@ WarpX::EvolveB (int lev, amrex::Real a_dt)
void
WarpX::EvolveB (int lev, PatchType patch_type, amrex::Real a_dt)
{
+
+#if ((defined WARPX_DIM_3D) || (defined WARPX_DIM_XZ)) // Only in Cartesian
if (patch_type == PatchType::fine) {
fdtd_solver_fp[lev]->EvolveB( Bfield_fp[lev], Efield_fp[lev], a_dt );
} else {
fdtd_solver_cp[lev]->EvolveB( Bfield_cp[lev], Efield_cp[lev], a_dt );
}
+#endif
// Goes into initializer
const int patch_level = (patch_type == PatchType::fine) ? lev : lev-1;
@@ -151,6 +154,7 @@ WarpX::EvolveB (int lev, PatchType patch_type, amrex::Real a_dt)
const Real xmin = Geom(0).ProbLo(0);
// Loop through the grids, and over the tiles within each grid
+#ifdef WARPX_DIM_RZ // Only in cylindrical geometry
#ifdef _OPENMP
#pragma omp parallel if (Gpu::notInLaunchRegion())
#endif
@@ -241,6 +245,7 @@ WarpX::EvolveB (int lev, PatchType patch_type, amrex::Real a_dt)
});
}
}
+#endif
if (do_pml && pml[lev]->ok())
{
@@ -261,7 +266,21 @@ WarpX::EvolveB (int lev, PatchType patch_type, amrex::Real a_dt)
auto const& pml_Exfab = pml_E[0]->array(mfi);
auto const& pml_Eyfab = pml_E[1]->array(mfi);
auto const& pml_Ezfab = pml_E[2]->array(mfi);
- if (WarpX::maxwell_fdtd_solver_id == 1) {
+ if (WarpX::maxwell_fdtd_solver_id == 0) {
+ amrex::ParallelFor(tbx, tby, tbz,
+ [=] AMREX_GPU_DEVICE (int i, int j, int k) {
+ warpx_push_pml_bx_yee(i,j,k,pml_Bxfab,pml_Eyfab,pml_Ezfab,
+ dtsdy,dtsdz);
+ },
+ [=] AMREX_GPU_DEVICE (int i, int j, int k) {
+ warpx_push_pml_by_yee(i,j,k,pml_Byfab,pml_Exfab,pml_Ezfab,
+ dtsdx,dtsdz);
+ },
+ [=] AMREX_GPU_DEVICE (int i, int j, int k) {
+ warpx_push_pml_bz_yee(i,j,k,pml_Bzfab,pml_Exfab,pml_Eyfab,
+ dtsdx,dtsdy);
+ });
+ } else if (WarpX::maxwell_fdtd_solver_id == 1) {
Real betaxy, betaxz, betayx, betayz, betazx, betazy;
Real gammax, gammay, gammaz;
Real alphax, alphay, alphaz;