diff options
author | 2020-01-24 20:22:36 -0800 | |
---|---|---|
committer | 2020-01-24 20:22:36 -0800 | |
commit | b51df322f2d17cd4dbf7b98d277491caf9d1ebfc (patch) | |
tree | 873172fc624621e9ca1bebcbd6c86f1cee7c1aec /Source | |
parent | 3b2a9e7bd9d656c503324f502ff298239d448287 (diff) | |
download | WarpX-b51df322f2d17cd4dbf7b98d277491caf9d1ebfc.tar.gz WarpX-b51df322f2d17cd4dbf7b98d277491caf9d1ebfc.tar.zst WarpX-b51df322f2d17cd4dbf7b98d277491caf9d1ebfc.zip |
Avoid pushing B twice
Diffstat (limited to 'Source')
-rw-r--r-- | Source/FieldSolver/WarpXPushFieldsEM.cpp | 21 |
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; |