diff options
author | 2023-03-03 11:21:40 -0800 | |
---|---|---|
committer | 2023-03-03 19:21:40 +0000 | |
commit | dec1e18adbf3abb8e071df158b22e859ebd73807 (patch) | |
tree | 3ab3ec99344f0d8c78e9d23e2f987610ab03262b /Source/Utils/WarpXMovingWindow.cpp | |
parent | 6d9f5af2d31c35229be511fc239c474b5261d0df (diff) | |
download | WarpX-dec1e18adbf3abb8e071df158b22e859ebd73807.tar.gz WarpX-dec1e18adbf3abb8e071df158b22e859ebd73807.tar.zst WarpX-dec1e18adbf3abb8e071df158b22e859ebd73807.zip |
Moving window: shift G MultiFab w/ div(B) cleaning (#3725)
Diffstat (limited to '')
-rw-r--r-- | Source/Utils/WarpXMovingWindow.cpp | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/Source/Utils/WarpXMovingWindow.cpp b/Source/Utils/WarpXMovingWindow.cpp index 887d45504..bdf84af4b 100644 --- a/Source/Utils/WarpXMovingWindow.cpp +++ b/Source/Utils/WarpXMovingWindow.cpp @@ -233,24 +233,52 @@ WarpX::MoveWindow (const int step, bool move_j) } } - // Shift scalar component F for dive cleaning - if (do_dive_cleaning) { + // Shift scalar field F with div(E) cleaning + // TODO: shift F from pml_rz for RZ geometry with PSATD, once implemented + if (do_dive_cleaning) + { // Fine grid shiftMF(*F_fp[lev], geom[lev], num_shift, dir, lev, do_update_cost); - if (do_pml && pml[lev]->ok()) { + if (do_pml && pml[lev]->ok()) + { amrex::MultiFab* pml_F = pml[lev]->GetF_fp(); shiftMF(*pml_F, geom[lev], num_shift, dir, lev, dont_update_cost); } - if (lev > 0) { + if (lev > 0) + { // Coarse grid shiftMF(*F_cp[lev], geom[lev-1], num_shift_crse, dir, lev, do_update_cost); - if (do_pml && pml[lev]->ok()) { + if (do_pml && pml[lev]->ok()) + { amrex::MultiFab* pml_F = pml[lev]->GetF_cp(); shiftMF(*pml_F, geom[lev-1], num_shift_crse, dir, lev, dont_update_cost); } } } + // Shift scalar field G with div(B) cleaning + // TODO: shift G from pml_rz for RZ geometry with PSATD, once implemented + if (do_divb_cleaning) + { + // Fine grid + shiftMF(*G_fp[lev], geom[lev], num_shift, dir, lev, do_update_cost); + if (do_pml && pml[lev]->ok()) + { + amrex::MultiFab* pml_G = pml[lev]->GetG_fp(); + shiftMF(*pml_G, geom[lev], num_shift, dir, lev, dont_update_cost); + } + if (lev > 0) + { + // Coarse grid + shiftMF(*G_cp[lev], geom[lev-1], num_shift_crse, dir, lev, do_update_cost); + if (do_pml && pml[lev]->ok()) + { + amrex::MultiFab* pml_G = pml[lev]->GetG_cp(); + shiftMF(*pml_G, geom[lev-1], num_shift_crse, dir, lev, dont_update_cost); + } + } + } + // Shift scalar component rho if (move_j) { if (rho_fp[lev]){ |