aboutsummaryrefslogtreecommitdiff
path: root/Source/Utils/WarpXMovingWindow.cpp
diff options
context:
space:
mode:
authorGravatar Prabhat Kumar <89051199+prkkumar@users.noreply.github.com> 2023-04-28 09:56:04 -0700
committerGravatar GitHub <noreply@github.com> 2023-04-28 09:56:04 -0700
commitd7da74aff0d61fa4d753fb6459eec8cfcab28ac9 (patch)
treee8f7a8cba27c2748d537ba83870d2e0d16066c18 /Source/Utils/WarpXMovingWindow.cpp
parent4f994a2ab9fcefd34a26e7f35b37bccd004ae7ee (diff)
downloadWarpX-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.cpp28
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();