diff options
Diffstat (limited to 'Source/Parallelization/WarpXComm.cpp')
-rw-r--r-- | Source/Parallelization/WarpXComm.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/Source/Parallelization/WarpXComm.cpp b/Source/Parallelization/WarpXComm.cpp index 4131b7307..992583862 100644 --- a/Source/Parallelization/WarpXComm.cpp +++ b/Source/Parallelization/WarpXComm.cpp @@ -1156,3 +1156,69 @@ void WarpX::NodalSyncPML (int lev, PatchType patch_type) } } } + +void WarpX::NodalSyncE () +{ + if (!override_sync_intervals.contains(istep[0]) && !do_pml) return; + + for (int lev = 0; lev <= finest_level; lev++) { + NodalSyncE(lev); + } +} + +void WarpX::NodalSyncE (int lev) +{ + NodalSyncE(lev, PatchType::fine); + if (lev > 0) NodalSyncE(lev, PatchType::coarse); +} + +void WarpX::NodalSyncE (int lev, PatchType patch_type) +{ + if (patch_type == PatchType::fine) + { + const auto& period = Geom(lev).periodicity(); + Efield_fp[lev][0]->OverrideSync(period); + Efield_fp[lev][1]->OverrideSync(period); + Efield_fp[lev][2]->OverrideSync(period); + } + else if (patch_type == PatchType::coarse) + { + const auto& cperiod = Geom(lev-1).periodicity(); + Efield_cp[lev][0]->OverrideSync(cperiod); + Efield_cp[lev][1]->OverrideSync(cperiod); + Efield_cp[lev][2]->OverrideSync(cperiod); + } +} + +void WarpX::NodalSyncB () +{ + if (!override_sync_intervals.contains(istep[0]) && !do_pml) return; + + for (int lev = 0; lev <= finest_level; lev++) { + NodalSyncB(lev); + } +} + +void WarpX::NodalSyncB (int lev) +{ + NodalSyncB(lev, PatchType::fine); + if (lev > 0) NodalSyncB(lev, PatchType::coarse); +} + +void WarpX::NodalSyncB (int lev, PatchType patch_type) +{ + if (patch_type == PatchType::fine) + { + const auto& period = Geom(lev).periodicity(); + Bfield_fp[lev][0]->OverrideSync(period); + Bfield_fp[lev][1]->OverrideSync(period); + Bfield_fp[lev][2]->OverrideSync(period); + } + else if (patch_type == PatchType::coarse) + { + const auto& cperiod = Geom(lev-1).periodicity(); + Bfield_cp[lev][0]->OverrideSync(cperiod); + Bfield_cp[lev][1]->OverrideSync(cperiod); + Bfield_cp[lev][2]->OverrideSync(cperiod); + } +} |