aboutsummaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/Evolve/WarpXEvolveEM.cpp13
-rw-r--r--Source/Parallelization/GuardCellManager.H3
-rw-r--r--Source/Parallelization/GuardCellManager.cpp9
-rw-r--r--Source/Utils/WarpXMovingWindow.cpp52
-rw-r--r--Source/WarpX.H2
5 files changed, 39 insertions, 40 deletions
diff --git a/Source/Evolve/WarpXEvolveEM.cpp b/Source/Evolve/WarpXEvolveEM.cpp
index c98a4688e..8707b9fde 100644
--- a/Source/Evolve/WarpXEvolveEM.cpp
+++ b/Source/Evolve/WarpXEvolveEM.cpp
@@ -93,10 +93,9 @@ WarpX::EvolveEM (int numsteps)
// FillBoundaryE(guard_cells.ngE);
// This is probably overkill
// FillBoundaryB(guard_cells.ngE);
- IntVect my_nc;
- my_nc = guard_cells.ng_FieldGather+guard_cells.ng_NCIFilter;
- FillBoundaryE(my_nc);
- FillBoundaryB(my_nc);
+ IntVect ng_gather = guard_cells.ng_FieldGather+guard_cells.ng_NCIFilter;
+ FillBoundaryE(ng_gather);
+ FillBoundaryB(ng_gather);
FillBoundaryAux(guard_cells.ng_Aux);
UpdateAuxilaryData();
}
@@ -328,12 +327,12 @@ WarpX::OneStep_nosub (Real cur_time)
FillBoundaryB(guard_cells.ngE);
#else
EvolveF(0.5*dt[0], DtType::FirstHalf);
- FillBoundaryF(guard_cells.ngF);
+ FillBoundaryF(guard_cells.ng_FieldSolver);
EvolveB(0.5*dt[0]); // We now have B^{n+1/2}
- FillBoundaryB(guard_cells.ngE_FieldSolver);
+ FillBoundaryB(guard_cells.ng_FieldSolver);
EvolveE(dt[0]); // We now have E^{n+1}
- FillBoundaryE(guard_cells.ngE_FieldSolver);
+ FillBoundaryE(guard_cells.ng_FieldSolver);
EvolveF(0.5*dt[0], DtType::SecondHalf);
FillBoundaryF(guard_cells.ngF);
EvolveB(0.5*dt[0]); // We now have B^{n+1}
diff --git a/Source/Parallelization/GuardCellManager.H b/Source/Parallelization/GuardCellManager.H
index 706b5df79..e241eed75 100644
--- a/Source/Parallelization/GuardCellManager.H
+++ b/Source/Parallelization/GuardCellManager.H
@@ -30,8 +30,7 @@ public:
int ngF_int = 0;
// Guard cells to exchange data
- amrex::IntVect ngB_FieldSolver = amrex::IntVect::TheZeroVector();
- amrex::IntVect ngE_FieldSolver = amrex::IntVect::TheZeroVector();
+ amrex::IntVect ng_FieldSolver = amrex::IntVect::TheZeroVector();
amrex::IntVect ng_FieldGather = amrex::IntVect::TheZeroVector();
amrex::IntVect ngJ_CurrentDepo = amrex::IntVect::TheZeroVector();
amrex::IntVect ng_MovingWindow = amrex::IntVect::TheZeroVector();
diff --git a/Source/Parallelization/GuardCellManager.cpp b/Source/Parallelization/GuardCellManager.cpp
index 166f0d58d..a67e15eb7 100644
--- a/Source/Parallelization/GuardCellManager.cpp
+++ b/Source/Parallelization/GuardCellManager.cpp
@@ -1,4 +1,5 @@
#include "GuardCellManager.H"
+#include <AMReX_Print.H>
using namespace amrex;
@@ -121,11 +122,15 @@ guardCellManager::Init(
ngF = IntVect(AMREX_D_DECL(ngF_int, ngF_int, ngF_int));
#endif
+ Print()<<"rrr ngE : "<<ngE <<'\n';
+ Print()<<"rrr ngJ : "<<ngJ <<'\n';
+ Print()<<"rrr ngRho: "<<ngRho<<'\n';
+ Print()<<"rrr ngF : "<<ngF <<'\n';
+
ngExtra = IntVect(static_cast<int>(aux_is_nodal and !do_nodal));
// Guard cells for field solver
- ngB_FieldSolver = IntVect(AMREX_D_DECL(1,1,1));
- ngE_FieldSolver = IntVect(AMREX_D_DECL(1,1,1));
+ ng_FieldSolver = IntVect(AMREX_D_DECL(1,1,1));
ng_MovingWindow = IntVect(AMREX_D_DECL(0,0,0)); // Multiplied by number of cells moved at each timestep
ng_MovingWindow[moving_window_dir] = 1;
int FGcell[4] = {0,1,1,2}; // Index is nox
diff --git a/Source/Utils/WarpXMovingWindow.cpp b/Source/Utils/WarpXMovingWindow.cpp
index 59810d817..db58ad53c 100644
--- a/Source/Utils/WarpXMovingWindow.cpp
+++ b/Source/Utils/WarpXMovingWindow.cpp
@@ -99,34 +99,32 @@ WarpX::MoveWindow (bool move_j)
for (int dim = 0; dim < 3; ++dim) {
// Fine grid
- shiftMF(*Bfield_fp[lev][dim], geom[lev], num_shift, dir, guard_cells.ngE, B_external_grid[dim]);
- shiftMF(*Efield_fp[lev][dim], geom[lev], num_shift, dir, guard_cells.ngE, E_external_grid[dim]);
+ shiftMF(*Bfield_fp[lev][dim], geom[lev], num_shift, dir, B_external_grid[dim]);
+ shiftMF(*Efield_fp[lev][dim], geom[lev], num_shift, dir, E_external_grid[dim]);
if (move_j) {
- shiftMF(*current_fp[lev][dim], geom[lev], num_shift, dir, guard_cells.ngJ);
+ 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();
- IntVect ng_exchange = pml_B[dim]->nGrowVect();
- shiftMF(*pml_B[dim], geom[lev], num_shift, dir, ng_exchange);
- shiftMF(*pml_E[dim], geom[lev], num_shift, dir, ng_exchange);
+ 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, guard_cells.ngE, B_external_grid[dim]);
- shiftMF(*Efield_cp[lev][dim], geom[lev-1], num_shift_crse, dir, guard_cells.ngE, E_external_grid[dim]);
- shiftMF(*Bfield_aux[lev][dim], geom[lev], num_shift, dir, guard_cells.ngE);
- shiftMF(*Efield_aux[lev][dim], geom[lev], num_shift, dir, guard_cells.ngE);
+ shiftMF(*Bfield_cp[lev][dim], geom[lev-1], num_shift_crse, dir, B_external_grid[dim]);
+ shiftMF(*Efield_cp[lev][dim], geom[lev-1], num_shift_crse, dir, E_external_grid[dim]);
+ shiftMF(*Bfield_aux[lev][dim], geom[lev], num_shift, dir);
+ shiftMF(*Efield_aux[lev][dim], geom[lev], num_shift, dir);
if (move_j) {
- shiftMF(*current_cp[lev][dim], geom[lev-1], num_shift_crse, dir, guard_cells.ngJ);
+ 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();
- IntVect ng_exchange = pml_B[dim]->nGrowVect();
- shiftMF(*pml_B[dim], geom[lev-1], num_shift_crse, dir, ng_exchange);
- shiftMF(*pml_E[dim], geom[lev-1], num_shift_crse, dir, ng_exchange);
+ shiftMF(*pml_B[dim], geom[lev-1], num_shift_crse, dir);
+ shiftMF(*pml_E[dim], geom[lev-1], num_shift_crse, dir);
}
}
}
@@ -134,21 +132,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, guard_cells.ngF);
+ shiftMF(*F_fp[lev], geom[lev], num_shift, dir);
if (do_pml && pml[lev]->ok()) {
MultiFab* pml_F = pml[lev]->GetF_fp();
- IntVect ng_exchange = pml_F->nGrowVect();
- shiftMF(*pml_F, geom[lev], num_shift, dir, ng_exchange);
+ shiftMF(*pml_F, geom[lev], num_shift, dir);
}
if (lev > 0) {
// Coarse grid
- shiftMF(*F_cp[lev], geom[lev-1], num_shift_crse, dir, guard_cells.ngF);
+ shiftMF(*F_cp[lev], geom[lev-1], num_shift_crse, dir);
if (do_pml && pml[lev]->ok()) {
MultiFab* pml_F = pml[lev]->GetF_cp();
- IntVect ng_exchange = pml_F->nGrowVect();
- shiftMF(*pml_F, geom[lev-1], num_shift_crse, dir, ng_exchange);
+ shiftMF(*pml_F, geom[lev-1], num_shift_crse, dir);
}
- shiftMF(*rho_cp[lev], geom[lev-1], num_shift_crse, dir, guard_cells.ngRho);
+ shiftMF(*rho_cp[lev], geom[lev-1], num_shift_crse, dir);
}
}
@@ -156,10 +152,10 @@ WarpX::MoveWindow (bool move_j)
if (move_j) {
if (rho_fp[lev]){
// Fine grid
- shiftMF(*rho_fp[lev], geom[lev], num_shift, dir, guard_cells.ngRho);
+ 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, guard_cells.ngRho);
+ shiftMF(*rho_cp[lev], geom[lev-1], num_shift_crse, dir);
}
}
}
@@ -208,7 +204,7 @@ WarpX::MoveWindow (bool move_j)
void
WarpX::shiftMF (MultiFab& mf, const Geometry& geom, int num_shift, int dir,
- IntVect ng_exchange, amrex::Real external_field)
+ amrex::Real external_field)
{
BL_PROFILE("WarpX::shiftMF()");
const BoxArray& ba = mf.boxArray();
@@ -222,11 +218,11 @@ WarpX::shiftMF (MultiFab& mf, const Geometry& geom, int num_shift, int dir,
MultiFab::Copy(tmpmf, mf, 0, 0, nc, ng);
// Not sure why this is needed, but it is...
- ng_exchange[0] = 1;
- ng_exchange[1] = num_shift; // 2
- Print()<<"ng_exchange "<<ng_exchange<<'\n';
+ IntVect ng_mw = IntVect::TheUnitVector();
+ ng_mw[dir] = num_shift;
+ Print()<<"ng_mw "<<ng_mw<<'\n';
- tmpmf.FillBoundary(0, tmpmf.nComp(), ng_exchange, geom.periodicity());
+ tmpmf.FillBoundary(0, tmpmf.nComp(), ng_mw, geom.periodicity());
diff --git a/Source/WarpX.H b/Source/WarpX.H
index f645e8e9a..0280b3641 100644
--- a/Source/WarpX.H
+++ b/Source/WarpX.H
@@ -72,7 +72,7 @@ public:
MultiParticleContainer& GetPartContainer () { return *mypc; }
static void shiftMF(amrex::MultiFab& mf, const amrex::Geometry& geom, int num_shift, int dir,
- amrex::IntVect ng_exchange, amrex::Real external_field = 0.);
+ amrex::Real external_field = 0.);
static void GotoNextLine (std::istream& is);