diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/Evolve/WarpXEvolveEM.cpp | 13 | ||||
-rw-r--r-- | Source/Parallelization/GuardCellManager.H | 3 | ||||
-rw-r--r-- | Source/Parallelization/GuardCellManager.cpp | 9 | ||||
-rw-r--r-- | Source/Utils/WarpXMovingWindow.cpp | 52 | ||||
-rw-r--r-- | Source/WarpX.H | 2 |
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); |