aboutsummaryrefslogtreecommitdiff
path: root/Source/Parallelization/WarpXComm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Parallelization/WarpXComm.cpp')
-rw-r--r--Source/Parallelization/WarpXComm.cpp36
1 files changed, 24 insertions, 12 deletions
diff --git a/Source/Parallelization/WarpXComm.cpp b/Source/Parallelization/WarpXComm.cpp
index f80258fa3..dd9ab7142 100644
--- a/Source/Parallelization/WarpXComm.cpp
+++ b/Source/Parallelization/WarpXComm.cpp
@@ -380,7 +380,8 @@ WarpX::SyncCurrent ()
if (WarpX::use_filter) {
for (int lev = 0; lev <= finest_level; ++lev) {
IntVect ng = current_fp[lev][0]->nGrowVect();
- ng += 1;
+ ng += bilinear_filter.stencil_length_each_dir-1;
+ //ng += 1;
for (int idim = 0; idim < 3; ++idim) {
Print()<<"idim "<<idim<<'\n';
j_fp[lev][idim].reset(new MultiFab(current_fp[lev][idim]->boxArray(),
@@ -392,7 +393,8 @@ WarpX::SyncCurrent ()
}
for (int lev = 1; lev <= finest_level; ++lev) {
IntVect ng = current_cp[lev][0]->nGrowVect();
- ng += 1;
+ ng += bilinear_filter.stencil_length_each_dir-1;
+ //ng += 1;
for (int idim = 0; idim < 3; ++idim) {
j_cp[lev][idim].reset(new MultiFab(current_cp[lev][idim]->boxArray(),
current_cp[lev][idim]->DistributionMap(),
@@ -405,7 +407,8 @@ WarpX::SyncCurrent ()
for (int lev = 1; lev <= finest_level; ++lev) {
if (current_buf[lev][0]) {
IntVect ng = current_buf[lev][0]->nGrowVect();
- ng += 1;
+ ng += bilinear_filter.stencil_length_each_dir-1;
+ // ng += 1;
for (int idim = 0; idim < 3; ++idim) {
j_buf[lev][idim].reset(new MultiFab(current_buf[lev][idim]->boxArray(),
current_buf[lev][idim]->DistributionMap(),
@@ -559,7 +562,8 @@ WarpX::SyncRho (amrex::Vector<std::unique_ptr<amrex::MultiFab> >& rhof,
for (int lev = 0; lev <= finest_level; ++lev) {
const int ncomp = rhof[lev]->nComp();
IntVect ng = rhof[lev]->nGrowVect();
- ng += 1;
+ //ng += 1;
+ ng += bilinear_filter.stencil_length_each_dir-1;
rho_f_g[lev].reset(new MultiFab(rhof[lev]->boxArray(),
rhof[lev]->DistributionMap(),
ncomp, ng));
@@ -569,7 +573,8 @@ WarpX::SyncRho (amrex::Vector<std::unique_ptr<amrex::MultiFab> >& rhof,
for (int lev = 1; lev <= finest_level; ++lev) {
const int ncomp = rhoc[lev]->nComp();
IntVect ng = rhoc[lev]->nGrowVect();
- ng += 1;
+ //ng += 1;
+ ng += bilinear_filter.stencil_length_each_dir-1;
rho_c_g[lev].reset(new MultiFab(rhoc[lev]->boxArray(),
rhoc[lev]->DistributionMap(),
ncomp, ng));
@@ -580,7 +585,8 @@ WarpX::SyncRho (amrex::Vector<std::unique_ptr<amrex::MultiFab> >& rhof,
if (charge_buf[lev]) {
const int ncomp = charge_buf[lev]->nComp();
IntVect ng = charge_buf[lev]->nGrowVect();
- ng += 1;
+ //ng += 1;
+ ng += bilinear_filter.stencil_length_each_dir-1;
rho_buf_g[lev].reset(new MultiFab(charge_buf[lev]->boxArray(),
charge_buf[lev]->DistributionMap(),
ncomp, ng));
@@ -714,7 +720,8 @@ WarpX::ApplyFilterandSumBoundaryJ (int lev, PatchType patch_type)
for (int idim = 0; idim < 3; ++idim) {
if (use_filter) {
IntVect ng = j[idim]->nGrowVect();
- ng += 1;
+ //ng += 1;
+ ng += bilinear_filter.stencil_length_each_dir-1;
MultiFab jf(j[idim]->boxArray(), j[idim]->DistributionMap(), 1, ng);
bilinear_filter.ApplyStencil(jf, *j[idim]);
jf.SumBoundary(period);
@@ -755,7 +762,8 @@ WarpX::AddCurrentFromFineLevelandSumBoundary (int lev)
{
// coarse patch of fine level
IntVect ng = current_cp[lev+1][idim]->nGrowVect();
- ng += 1;
+ //ng += 1;
+ ng += bilinear_filter.stencil_length_each_dir-1;
MultiFab jfc(current_cp[lev+1][idim]->boxArray(),
current_cp[lev+1][idim]->DistributionMap(), 1, ng);
bilinear_filter.ApplyStencil(jfc, *current_cp[lev+1][idim]);
@@ -775,7 +783,8 @@ WarpX::AddCurrentFromFineLevelandSumBoundary (int lev)
{
// coarse patch of fine level
IntVect ng = current_cp[lev+1][idim]->nGrowVect();
- ng += 1;
+ //ng += 1;
+ ng += bilinear_filter.stencil_length_each_dir-1;
MultiFab jf(current_cp[lev+1][idim]->boxArray(),
current_cp[lev+1][idim]->DistributionMap(), 1, ng);
bilinear_filter.ApplyStencil(jf, *current_cp[lev+1][idim]);
@@ -825,7 +834,8 @@ WarpX::ApplyFilterandSumBoundaryRho (int lev, PatchType patch_type, int icomp, i
if (r == nullptr) return;
if (use_filter) {
IntVect ng = r->nGrowVect();
- ng += 1;
+ //ng += 1;
+ ng += bilinear_filter.stencil_length_each_dir-1;
MultiFab rf(r->boxArray(), r->DistributionMap(), ncomp, ng);
bilinear_filter.ApplyStencil(rf, *r, icomp, 0, ncomp);
rf.SumBoundary(period);
@@ -861,7 +871,8 @@ WarpX::AddRhoFromFineLevelandSumBoundary(int lev, int icomp, int ncomp)
{
// coarse patch of fine level
IntVect ng = rho_cp[lev+1]->nGrowVect();
- ng += 1;
+ //ng += 1;
+ ng += bilinear_filter.stencil_length_each_dir-1;
MultiFab rhofc(rho_cp[lev+1]->boxArray(),
rho_cp[lev+1]->DistributionMap(), ncomp, ng);
bilinear_filter.ApplyStencil(rhofc, *rho_cp[lev+1], icomp, 0, ncomp);
@@ -880,7 +891,8 @@ WarpX::AddRhoFromFineLevelandSumBoundary(int lev, int icomp, int ncomp)
else if (use_filter) // but no buffer
{
IntVect ng = rho_cp[lev+1]->nGrowVect();
- ng += 1;
+ //ng += 1;
+ ng += bilinear_filter.stencil_length_each_dir-1;
MultiFab rf(rho_cp[lev+1]->boxArray(), rho_cp[lev+1]->DistributionMap(), ncomp, ng);
bilinear_filter.ApplyStencil(rf, *rho_cp[lev+1], icomp, 0, ncomp);
mf.ParallelAdd(rf, 0, 0, ncomp, ng, IntVect::TheZeroVector(), period);