aboutsummaryrefslogtreecommitdiff
path: root/Source/Parallelization
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Parallelization')
-rw-r--r--Source/Parallelization/WarpXComm.cpp44
1 files changed, 42 insertions, 2 deletions
diff --git a/Source/Parallelization/WarpXComm.cpp b/Source/Parallelization/WarpXComm.cpp
index 09767c265..1d2993d8e 100644
--- a/Source/Parallelization/WarpXComm.cpp
+++ b/Source/Parallelization/WarpXComm.cpp
@@ -1,4 +1,3 @@
-
#include <WarpX.H>
#include <WarpX_f.H>
@@ -381,6 +380,47 @@ WarpX::SyncCurrent ()
if (WarpX::use_filter) {
for (int lev = 0; lev <= finest_level; ++lev) {
IntVect ng = current_fp[lev][0]->nGrowVect();
+ ng += bilinear_filter.stencil_length_each_dir-1;
+ //ng += 1;
+ for (int idim = 0; idim < 3; ++idim) {
+ j_fp[lev][idim].reset(new MultiFab(current_fp[lev][idim]->boxArray(),
+ current_fp[lev][idim]->DistributionMap(),
+ 1, ng));
+ bilinear_filter.ApplyStencil(*j_fp[lev][idim], *current_fp[lev][idim]);
+ std::swap(j_fp[lev][idim], current_fp[lev][idim]);
+ }
+ }
+ for (int lev = 1; lev <= finest_level; ++lev) {
+ IntVect ng = current_cp[lev][0]->nGrowVect();
+ 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(),
+ 1, ng));
+ // applyFilter(*j_cp[lev][idim], *current_cp[lev][idim]);
+ bilinear_filter.ApplyStencil(*j_cp[lev][idim], *current_cp[lev][idim]);
+ std::swap(j_cp[lev][idim], current_cp[lev][idim]);
+ }
+ }
+ for (int lev = 1; lev <= finest_level; ++lev) {
+ if (current_buf[lev][0]) {
+ IntVect ng = current_buf[lev][0]->nGrowVect();
+ 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(),
+ 1, ng));
+ //applyFilter(*j_buf[lev][idim], *current_buf[lev][idim]);
+ bilinear_filter.ApplyStencil(*j_buf[lev][idim], *current_buf[lev][idim]);
+ std::swap(*j_buf[lev][idim], *current_buf[lev][idim]);
+ }
+ }
+ }
+ }
+ /*
+ if (WarpX::use_filter) {
+ for (int lev = 0; lev <= finest_level; ++lev) {
+ IntVect ng = current_fp[lev][0]->nGrowVect();
ng += 1;
for (int idim = 0; idim < 3; ++idim) {
j_fp[lev][idim].reset(new MultiFab(current_fp[lev][idim]->boxArray(),
@@ -415,7 +455,7 @@ WarpX::SyncCurrent ()
}
}
}
-
+ */
// Sum up fine patch
for (int lev = 0; lev <= finest_level; ++lev)
{