diff options
author | 2023-04-28 09:56:04 -0700 | |
---|---|---|
committer | 2023-04-28 09:56:04 -0700 | |
commit | d7da74aff0d61fa4d753fb6459eec8cfcab28ac9 (patch) | |
tree | e8f7a8cba27c2748d537ba83870d2e0d16066c18 /Source/Utils/WarpXMovingWindow.cpp | |
parent | 4f994a2ab9fcefd34a26e7f35b37bccd004ae7ee (diff) | |
download | WarpX-d7da74aff0d61fa4d753fb6459eec8cfcab28ac9.tar.gz WarpX-d7da74aff0d61fa4d753fb6459eec8cfcab28ac9.tar.zst WarpX-d7da74aff0d61fa4d753fb6459eec8cfcab28ac9.zip |
Moving window: fix logic to shift F,G fields w/ div(E),div(B) cleaning in PML (#3884)
Diffstat (limited to 'Source/Utils/WarpXMovingWindow.cpp')
-rw-r--r-- | Source/Utils/WarpXMovingWindow.cpp | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/Source/Utils/WarpXMovingWindow.cpp b/Source/Utils/WarpXMovingWindow.cpp index bdf84af4b..af1f58f8e 100644 --- a/Source/Utils/WarpXMovingWindow.cpp +++ b/Source/Utils/WarpXMovingWindow.cpp @@ -233,12 +233,23 @@ WarpX::MoveWindow (const int step, bool move_j) } } - // Shift scalar field F with div(E) cleaning + // Shift scalar field F with div(E) cleaning in valid domain // 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 (lev > 0) + { + // Coarse grid + shiftMF(*F_cp[lev], geom[lev-1], num_shift_crse, dir, lev, do_update_cost); + } + } + + // Shift scalar field F with div(E) cleaning in pml region + if (do_pml_dive_cleaning) + { + // Fine grid if (do_pml && pml[lev]->ok()) { amrex::MultiFab* pml_F = pml[lev]->GetF_fp(); @@ -247,7 +258,6 @@ WarpX::MoveWindow (const int step, bool move_j) 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()) { amrex::MultiFab* pml_F = pml[lev]->GetF_cp(); @@ -256,12 +266,23 @@ WarpX::MoveWindow (const int step, bool move_j) } } - // Shift scalar field G with div(B) cleaning + // Shift scalar field G with div(B) cleaning in valid domain // 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 (lev > 0) + { + // Coarse grid + shiftMF(*G_cp[lev], geom[lev-1], num_shift_crse, dir, lev, do_update_cost); + } + } + + // Shift scalar field G with div(B) cleaning in pml region + if (do_pml_divb_cleaning) + { + // Fine grid if (do_pml && pml[lev]->ok()) { amrex::MultiFab* pml_G = pml[lev]->GetG_fp(); @@ -270,7 +291,6 @@ WarpX::MoveWindow (const int step, bool move_j) 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(); |