aboutsummaryrefslogtreecommitdiff
path: root/Source/Parallelization/WarpXComm.cpp
diff options
context:
space:
mode:
authorGravatar MaxThevenet <mthevenet@lbl.gov> 2019-03-19 13:09:02 -0700
committerGravatar MaxThevenet <mthevenet@lbl.gov> 2019-03-19 13:09:02 -0700
commit1abb26092bbaece522dbe5266118768985b97706 (patch)
tree4102086935610a3e8136d35fea6a2f0b41288f36 /Source/Parallelization/WarpXComm.cpp
parentdc8e98970816ff7bc79bfe6767222ea9cf6f3f43 (diff)
downloadWarpX-1abb26092bbaece522dbe5266118768985b97706.tar.gz
WarpX-1abb26092bbaece522dbe5266118768985b97706.tar.zst
WarpX-1abb26092bbaece522dbe5266118768985b97706.zip
addd npass capability for 2d. ATTENTION number of ghosts cells unchanged
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);