diff options
author | 2021-03-04 10:23:06 -0800 | |
---|---|---|
committer | 2021-03-04 10:23:06 -0800 | |
commit | f51c8bdf36077b3f53cc60ea9633f42a6346f103 (patch) | |
tree | 5b6f92bf03d9256346fce5a9403b4400b8a4ab09 /Source/Utils/WarpXMovingWindow.cpp | |
parent | 279e5266ab50977ba8ea7a3ca20e848eb9ba16d2 (diff) | |
download | WarpX-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.cpp | 57 |
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. |