diff options
author | 2022-02-16 15:31:10 -0800 | |
---|---|---|
committer | 2022-02-16 15:31:10 -0800 | |
commit | 278f3cd3db8889219e468699a8475d664ac5f2d3 (patch) | |
tree | 7f09625d0e8908910f49b5e146b41f2e2a19dad0 /Source/Particles/WarpXParticleContainer.cpp | |
parent | 716098b54a66b89a107f545f944e48cf7d141ee9 (diff) | |
download | WarpX-278f3cd3db8889219e468699a8475d664ac5f2d3.tar.gz WarpX-278f3cd3db8889219e468699a8475d664ac5f2d3.tar.zst WarpX-278f3cd3db8889219e468699a8475d664ac5f2d3.zip |
ABLASTR: Refactor `deposit_charge` API (#2856)
Simplified and re-ordered interface for
`ablastr::particles::deposit_charge`.
Diffstat (limited to 'Source/Particles/WarpXParticleContainer.cpp')
-rw-r--r-- | Source/Particles/WarpXParticleContainer.cpp | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/Source/Particles/WarpXParticleContainer.cpp b/Source/Particles/WarpXParticleContainer.cpp index f590d3cc0..e2a34727c 100644 --- a/Source/Particles/WarpXParticleContainer.cpp +++ b/Source/Particles/WarpXParticleContainer.cpp @@ -594,7 +594,11 @@ WarpXParticleContainer::DepositCharge (WarpXParIter& pti, RealVector const& wp, { if (!do_not_deposit) { WarpX& warpx = WarpX::GetInstance(); + + // deposition guards + // note: this is smaller than rho->nGrowVect() for PSATD const amrex::IntVect& ng_rho = warpx.get_ng_depos_rho(); + const std::array<amrex::Real,3>& dx = WarpX::CellSize(std::max(depos_lev,0)); amrex::IntVect ref_ratio; if (lev == depos_lev) { @@ -641,12 +645,18 @@ WarpXParticleContainer::DepositCharge (WarpXParIter& pti, RealVector const& wp, amrex::LayoutData<amrex::Real>* costs = WarpX::getCosts(lev); amrex::Real* cost = costs ? &((*costs)[pti.index()]) : nullptr; - ablastr::particles::deposit_charge<WarpXParticleContainer> - (pti, wp, ion_lev, rho, icomp, nc, offset, np_to_depose, - local_rho[thread_num], lev, depos_lev, this->charge, - WarpX::nox, WarpX::noy, WarpX::noz, ng_rho, dx, xyzmin, ref_ratio, - cost, WarpX::n_rz_azimuthal_modes, WarpX::load_balance_costs_update_algo, - WarpX::do_device_synchronize); + AMREX_ALWAYS_ASSERT(WarpX::nox == WarpX::noy); + AMREX_ALWAYS_ASSERT(WarpX::nox == WarpX::noz); + + ablastr::particles::deposit_charge<WarpXParticleContainer>( + pti, wp, this->charge, ion_lev, + rho, local_rho[thread_num], + WarpX::noz, dx, xyzmin, WarpX::n_rz_azimuthal_modes, + ng_rho, depos_lev, ref_ratio, + offset, np_to_depose, + icomp, nc, + cost, WarpX::load_balance_costs_update_algo, WarpX::do_device_synchronize + ); } } |