aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/WarpXParticleContainer.cpp
diff options
context:
space:
mode:
authorGravatar Axel Huebl <axel.huebl@plasma.ninja> 2022-02-16 15:31:10 -0800
committerGravatar GitHub <noreply@github.com> 2022-02-16 15:31:10 -0800
commit278f3cd3db8889219e468699a8475d664ac5f2d3 (patch)
tree7f09625d0e8908910f49b5e146b41f2e2a19dad0 /Source/Particles/WarpXParticleContainer.cpp
parent716098b54a66b89a107f545f944e48cf7d141ee9 (diff)
downloadWarpX-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.cpp22
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
+ );
}
}