aboutsummaryrefslogtreecommitdiff
path: root/Source/Utils/WarpXMovingWindow.cpp
diff options
context:
space:
mode:
authorGravatar Edoardo Zoni <59625522+EZoni@users.noreply.github.com> 2021-03-04 10:23:06 -0800
committerGravatar GitHub <noreply@github.com> 2021-03-04 10:23:06 -0800
commitf51c8bdf36077b3f53cc60ea9633f42a6346f103 (patch)
tree5b6f92bf03d9256346fce5a9403b4400b8a4ab09 /Source/Utils/WarpXMovingWindow.cpp
parent279e5266ab50977ba8ea7a3ca20e848eb9ba16d2 (diff)
downloadWarpX-f51c8bdf36077b3f53cc60ea9633f42a6346f103.tar.gz
WarpX-f51c8bdf36077b3f53cc60ea9633f42a6346f103.tar.zst
WarpX-f51c8bdf36077b3f53cc60ea9633f42a6346f103.zip
Remove extra ghost cell used with momentum-conserving gathering (#1758)
Diffstat (limited to 'Source/Utils/WarpXMovingWindow.cpp')
-rw-r--r--Source/Utils/WarpXMovingWindow.cpp57
1 files changed, 26 insertions, 31 deletions
diff --git a/Source/Utils/WarpXMovingWindow.cpp b/Source/Utils/WarpXMovingWindow.cpp
index 73a5307d2..18fb34d6a 100644
--- a/Source/Utils/WarpXMovingWindow.cpp
+++ b/Source/Utils/WarpXMovingWindow.cpp
@@ -39,9 +39,6 @@ WarpX::MoveWindow (bool move_j)
{
if (do_moving_window == 0) return 0;
- IntVect ng_extra = guard_cells.ng_Extra;
- IntVect ng_zero = IntVect::TheZeroVector();
-
// Update the continuous position of the moving window,
// and of the plasma injection
moving_window_x += (moving_window_v - WarpX::beta_boost * PhysConst::c)/(1 - moving_window_v * WarpX::beta_boost / PhysConst::c) * dt[0];
@@ -128,42 +125,42 @@ WarpX::MoveWindow (bool move_j)
if (dim == 1) Efield_parser = getParser(Eyfield_parser);
if (dim == 2) Efield_parser = getParser(Ezfield_parser);
}
- shiftMF(*Bfield_fp[lev][dim], geom[lev], num_shift, dir, ng_extra, B_external_grid[dim], use_Bparser, Bfield_parser);
- shiftMF(*Efield_fp[lev][dim], geom[lev], num_shift, dir, ng_extra, E_external_grid[dim], use_Eparser, Efield_parser);
+ shiftMF(*Bfield_fp[lev][dim], geom[lev], num_shift, dir, B_external_grid[dim], use_Bparser, Bfield_parser);
+ shiftMF(*Efield_fp[lev][dim], geom[lev], num_shift, dir, E_external_grid[dim], use_Eparser, Efield_parser);
if (fft_do_time_averaging) {
- shiftMF(*Bfield_avg_fp[lev][dim], geom[lev], num_shift, dir, ng_extra, B_external_grid[dim], use_Bparser, Bfield_parser);
- shiftMF(*Efield_avg_fp[lev][dim], geom[lev], num_shift, dir, ng_extra, E_external_grid[dim], use_Eparser, Efield_parser);
+ shiftMF(*Bfield_avg_fp[lev][dim], geom[lev], num_shift, dir, B_external_grid[dim], use_Bparser, Bfield_parser);
+ shiftMF(*Efield_avg_fp[lev][dim], geom[lev], num_shift, dir, E_external_grid[dim], use_Eparser, Efield_parser);
}
if (move_j) {
- shiftMF(*current_fp[lev][dim], geom[lev], num_shift, dir, ng_zero);
+ shiftMF(*current_fp[lev][dim], geom[lev], num_shift, dir);
}
if (do_pml && pml[lev]->ok()) {
const std::array<MultiFab*, 3>& pml_B = pml[lev]->GetB_fp();
const std::array<MultiFab*, 3>& pml_E = pml[lev]->GetE_fp();
- shiftMF(*pml_B[dim], geom[lev], num_shift, dir, ng_extra);
- shiftMF(*pml_E[dim], geom[lev], num_shift, dir, ng_extra);
+ shiftMF(*pml_B[dim], geom[lev], num_shift, dir);
+ shiftMF(*pml_E[dim], geom[lev], num_shift, dir);
}
if (lev > 0) {
// coarse grid
- shiftMF(*Bfield_cp[lev][dim], geom[lev-1], num_shift_crse, dir, ng_zero, B_external_grid[dim], use_Bparser, Bfield_parser);
- shiftMF(*Efield_cp[lev][dim], geom[lev-1], num_shift_crse, dir, ng_zero, E_external_grid[dim], use_Eparser, Efield_parser);
- shiftMF(*Bfield_aux[lev][dim], geom[lev], num_shift, dir, ng_zero);
- shiftMF(*Efield_aux[lev][dim], geom[lev], num_shift, dir, ng_zero);
+ shiftMF(*Bfield_cp[lev][dim], geom[lev-1], num_shift_crse, dir, B_external_grid[dim], use_Bparser, Bfield_parser);
+ shiftMF(*Efield_cp[lev][dim], geom[lev-1], num_shift_crse, dir, E_external_grid[dim], use_Eparser, Efield_parser);
+ shiftMF(*Bfield_aux[lev][dim], geom[lev], num_shift, dir);
+ shiftMF(*Efield_aux[lev][dim], geom[lev], num_shift, dir);
if (fft_do_time_averaging) {
- shiftMF(*Bfield_avg_cp[lev][dim], geom[lev-1], num_shift_crse, dir, ng_zero, B_external_grid[dim], use_Bparser, Bfield_parser);
- shiftMF(*Efield_avg_cp[lev][dim], geom[lev-1], num_shift_crse, dir, ng_zero, E_external_grid[dim], use_Eparser, Efield_parser);
- shiftMF(*Bfield_avg_aux[lev][dim], geom[lev], num_shift, dir, ng_zero);
- shiftMF(*Efield_avg_aux[lev][dim], geom[lev], num_shift, dir, ng_zero);
+ shiftMF(*Bfield_avg_cp[lev][dim], geom[lev-1], num_shift_crse, dir, B_external_grid[dim], use_Bparser, Bfield_parser);
+ shiftMF(*Efield_avg_cp[lev][dim], geom[lev-1], num_shift_crse, dir, E_external_grid[dim], use_Eparser, Efield_parser);
+ shiftMF(*Bfield_avg_aux[lev][dim], geom[lev], num_shift, dir);
+ shiftMF(*Efield_avg_aux[lev][dim], geom[lev], num_shift, dir);
}
if (move_j) {
- shiftMF(*current_cp[lev][dim], geom[lev-1], num_shift_crse, dir, ng_zero);
+ shiftMF(*current_cp[lev][dim], geom[lev-1], num_shift_crse, dir);
}
if (do_pml && pml[lev]->ok()) {
const std::array<MultiFab*, 3>& pml_B = pml[lev]->GetB_cp();
const std::array<MultiFab*, 3>& pml_E = pml[lev]->GetE_cp();
- shiftMF(*pml_B[dim], geom[lev-1], num_shift_crse, dir, ng_extra);
- shiftMF(*pml_E[dim], geom[lev-1], num_shift_crse, dir, ng_extra);
+ shiftMF(*pml_B[dim], geom[lev-1], num_shift_crse, dir);
+ shiftMF(*pml_E[dim], geom[lev-1], num_shift_crse, dir);
}
}
}
@@ -171,19 +168,19 @@ WarpX::MoveWindow (bool move_j)
// Shift scalar component F for dive cleaning
if (do_dive_cleaning) {
// Fine grid
- shiftMF(*F_fp[lev], geom[lev], num_shift, dir, ng_zero);
+ shiftMF(*F_fp[lev], geom[lev], num_shift, dir);
if (do_pml && pml[lev]->ok()) {
MultiFab* pml_F = pml[lev]->GetF_fp();
- shiftMF(*pml_F, geom[lev], num_shift, dir, ng_extra);
+ shiftMF(*pml_F, geom[lev], num_shift, dir);
}
if (lev > 0) {
// Coarse grid
- shiftMF(*F_cp[lev], geom[lev-1], num_shift_crse, dir, ng_zero);
+ shiftMF(*F_cp[lev], geom[lev-1], num_shift_crse, dir);
if (do_pml && pml[lev]->ok()) {
MultiFab* pml_F = pml[lev]->GetF_cp();
- shiftMF(*pml_F, geom[lev-1], num_shift_crse, dir, ng_zero);
+ shiftMF(*pml_F, geom[lev-1], num_shift_crse, dir);
}
- shiftMF(*rho_cp[lev], geom[lev-1], num_shift_crse, dir, ng_zero);
+ shiftMF(*rho_cp[lev], geom[lev-1], num_shift_crse, dir);
}
}
@@ -191,10 +188,10 @@ WarpX::MoveWindow (bool move_j)
if (move_j) {
if (rho_fp[lev]){
// Fine grid
- shiftMF(*rho_fp[lev], geom[lev], num_shift, dir, ng_zero);
+ shiftMF(*rho_fp[lev], geom[lev], num_shift, dir);
if (lev > 0){
// Coarse grid
- shiftMF(*rho_cp[lev], geom[lev-1], num_shift_crse, dir, ng_zero);
+ shiftMF(*rho_cp[lev], geom[lev-1], num_shift_crse, dir);
}
}
}
@@ -243,7 +240,7 @@ WarpX::MoveWindow (bool move_j)
void
WarpX::shiftMF (MultiFab& mf, const Geometry& geom, int num_shift, int dir,
- IntVect ng_extra, amrex::Real external_field, bool useparser,
+ amrex::Real external_field, bool useparser,
HostDeviceParser<3> const& field_parser)
{
WARPX_PROFILE("WarpX::shiftMF()");
@@ -264,8 +261,6 @@ WarpX::shiftMF (MultiFab& mf, const Geometry& geom, int num_shift, int dir,
IntVect ng_mw = IntVect::TheUnitVector();
// Enough guard cells in the MW direction
ng_mw[dir] = num_shift;
- // Add the extra cell (if momentum-conserving gather with staggered field solve)
- ng_mw += ng_extra;
// Make sure we don't exceed number of guard cells allocated
ng_mw = ng_mw.min(ng);
// Fill guard cells.