aboutsummaryrefslogtreecommitdiff
path: root/Source/Parallelization/WarpXComm.cpp
diff options
context:
space:
mode:
authorGravatar MaxThevenet <mthevenet@lbl.gov> 2019-03-15 17:15:40 -0700
committerGravatar MaxThevenet <mthevenet@lbl.gov> 2019-03-15 17:15:40 -0700
commit4a84e9009ae2c065cb3e2ff9ab57c125d4e2ca40 (patch)
tree9e62f47728bbc731377f51ee06bd8476d26feb02 /Source/Parallelization/WarpXComm.cpp
parent4729344d6e37ec797c64889cf4bf204cfc4aded6 (diff)
downloadWarpX-4a84e9009ae2c065cb3e2ff9ab57c125d4e2ca40.tar.gz
WarpX-4a84e9009ae2c065cb3e2ff9ab57c125d4e2ca40.tar.zst
WarpX-4a84e9009ae2c065cb3e2ff9ab57c125d4e2ca40.zip
implemented stencil application.
Diffstat (limited to 'Source/Parallelization/WarpXComm.cpp')
-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)
{