diff options
author | 2018-10-16 18:57:03 -0400 | |
---|---|---|
committer | 2018-10-16 18:57:03 -0400 | |
commit | 7c9fc74b66f82da1115d2491bcda4ee2a7dfa79b (patch) | |
tree | 066edb1aa8b0eeaf6d6a61d2f04fb8f7ceae46a9 /Source/WarpX.cpp | |
parent | 8ff001c016835dc298201671efb6f74143d5f29e (diff) | |
download | WarpX-7c9fc74b66f82da1115d2491bcda4ee2a7dfa79b.tar.gz WarpX-7c9fc74b66f82da1115d2491bcda4ee2a7dfa79b.tar.zst WarpX-7c9fc74b66f82da1115d2491bcda4ee2a7dfa79b.zip |
use the GPU-launchable version of OverrideSync
Diffstat (limited to 'Source/WarpX.cpp')
-rw-r--r-- | Source/WarpX.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/Source/WarpX.cpp b/Source/WarpX.cpp index c3c362e4c..b1cab2aa0 100644 --- a/Source/WarpX.cpp +++ b/Source/WarpX.cpp @@ -163,6 +163,11 @@ WarpX::WarpX () current_buf.resize(nlevs_max); charge_buf.resize(nlevs_max); + current_fp_owner_masks.resize(nlevs_max); + current_cp_owner_masks.resize(nlevs_max); + rho_fp_owner_masks.resize(nlevs_max); + rho_cp_owner_masks.resize(nlevs_max); + pml.resize(nlevs_max); #ifdef WARPX_DO_ELECTROSTATIC @@ -461,8 +466,14 @@ WarpX::ClearLevel (int lev) Efield_cax[lev][i].reset(); Bfield_cax[lev][i].reset(); current_buf[lev][i].reset(); + + current_fp_owner_masks[lev][i].reset(); + current_cp_owner_masks[lev][i].reset(); } + rho_fp_owner_masks[lev].reset(); + rho_cp_owner_masks[lev].reset(); + charge_buf[lev].reset(); current_buffer_masks[lev].reset(); @@ -555,8 +566,14 @@ WarpX::AllocLevelData (int lev, const BoxArray& ba, const DistributionMapping& d current_fp[lev][1].reset( new MultiFab(amrex::convert(ba,jy_nodal_flag),dm,1,ngJ)); current_fp[lev][2].reset( new MultiFab(amrex::convert(ba,jz_nodal_flag),dm,1,ngJ)); + const auto& period = Geom(lev).periodicity(); + current_fp_owner_masks[lev][0] = std::move(current_fp[lev][0]->OwnerMask(period)); + current_fp_owner_masks[lev][1] = std::move(current_fp[lev][1]->OwnerMask(period)); + current_fp_owner_masks[lev][2] = std::move(current_fp[lev][2]->OwnerMask(period)); + if (do_dive_cleaning || plot_rho){ rho_fp[lev].reset(new MultiFab(amrex::convert(ba,IntVect::TheUnitVector()),dm,2,ngRho)); + rho_fp_owner_masks[lev] = std::move(rho_fp[lev]->OwnerMask(period)); } if (do_dive_cleaning) { @@ -613,8 +630,14 @@ WarpX::AllocLevelData (int lev, const BoxArray& ba, const DistributionMapping& d current_cp[lev][1].reset( new MultiFab(amrex::convert(cba,jy_nodal_flag),dm,1,ngJ)); current_cp[lev][2].reset( new MultiFab(amrex::convert(cba,jz_nodal_flag),dm,1,ngJ)); + const auto& cperiod = Geom(lev).periodicity(); + current_cp_owner_masks[lev][0] = std::move(current_cp[lev][0]->OwnerMask(cperiod)); + current_cp_owner_masks[lev][1] = std::move(current_cp[lev][1]->OwnerMask(cperiod)); + current_cp_owner_masks[lev][2] = std::move(current_cp[lev][2]->OwnerMask(cperiod)); + if (do_dive_cleaning || plot_rho){ rho_cp[lev].reset(new MultiFab(amrex::convert(cba,IntVect::TheUnitVector()),dm,2,ngRho)); + rho_cp_owner_masks[lev] = std::move(rho_cp[lev]->OwnerMask(cperiod)); } if (do_dive_cleaning) { |