diff options
author | 2019-03-15 17:15:40 -0700 | |
---|---|---|
committer | 2019-03-15 17:15:40 -0700 | |
commit | 4a84e9009ae2c065cb3e2ff9ab57c125d4e2ca40 (patch) | |
tree | 9e62f47728bbc731377f51ee06bd8476d26feb02 /Source/Parallelization/WarpXComm.cpp | |
parent | 4729344d6e37ec797c64889cf4bf204cfc4aded6 (diff) | |
download | WarpX-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.cpp | 44 |
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) { |