aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/WarpXParticleContainer.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Source/Particles/WarpXParticleContainer.cpp80
1 files changed, 44 insertions, 36 deletions
diff --git a/Source/Particles/WarpXParticleContainer.cpp b/Source/Particles/WarpXParticleContainer.cpp
index befa5cfed..87c2d5e90 100644
--- a/Source/Particles/WarpXParticleContainer.cpp
+++ b/Source/Particles/WarpXParticleContainer.cpp
@@ -238,12 +238,14 @@ WarpXParticleContainer::AddNParticles (int lev,
p.pos(1) = z[i];
#endif
- if (WarpX::do_boosted_frame_diagnostic && do_boosted_frame_diags)
- {
- auto& ptile = DefineAndReturnParticleTile(0, 0, 0);
- ptile.push_back_real(particle_comps["xold"], x[i]);
- ptile.push_back_real(particle_comps["yold"], y[i]);
- ptile.push_back_real(particle_comps["zold"], z[i]);
+ if ( (NumRuntimeRealComps()>0) || (NumRuntimeIntComps()>0) ){
+ auto& ptile = DefineAndReturnParticleTile(0, 0, 0);
+ if (WarpX::do_boosted_frame_diagnostic && do_boosted_frame_diags)
+ {
+ ptile.push_back_real(particle_comps["xold"], x[i]);
+ ptile.push_back_real(particle_comps["yold"], y[i]);
+ ptile.push_back_real(particle_comps["zold"], z[i]);
+ }
}
particle_tile.push_back(p);
@@ -256,12 +258,14 @@ WarpXParticleContainer::AddNParticles (int lev,
particle_tile.push_back_real(PIdx::uy, vy + ibegin, vy + iend);
particle_tile.push_back_real(PIdx::uz, vz + ibegin, vz + iend);
- if (WarpX::do_boosted_frame_diagnostic && do_boosted_frame_diags)
- {
- auto& ptile = DefineAndReturnParticleTile(0, 0, 0);
- ptile.push_back_real(particle_comps["uxold"], vx + ibegin, vx + iend);
- ptile.push_back_real(particle_comps["uyold"], vy + ibegin, vy + iend);
- ptile.push_back_real(particle_comps["uzold"], vz + ibegin, vz + iend);
+ if ( (NumRuntimeRealComps()>0) || (NumRuntimeIntComps()>0) ){
+ auto& ptile = DefineAndReturnParticleTile(0, 0, 0);
+ if (WarpX::do_boosted_frame_diagnostic && do_boosted_frame_diags)
+ {
+ ptile.push_back_real(particle_comps["uxold"], vx + ibegin, vx + iend);
+ ptile.push_back_real(particle_comps["uyold"], vy + ibegin, vy + iend);
+ ptile.push_back_real(particle_comps["uzold"], vz + ibegin, vz + iend);
+ }
}
for (int comp = PIdx::uz+1; comp < PIdx::nattribs; ++comp)
@@ -425,6 +429,7 @@ void
WarpXParticleContainer::DepositCurrent(WarpXParIter& pti,
RealVector& wp, RealVector& uxp,
RealVector& uyp, RealVector& uzp,
+ const int * const ion_lev,
MultiFab* jx, MultiFab* jy, MultiFab* jz,
const long offset, const long np_to_depose,
int thread_num, int lev, int depos_lev,
@@ -507,37 +512,40 @@ WarpXParticleContainer::DepositCurrent(WarpXParIter& pti,
if (WarpX::current_deposition_algo == CurrentDepositionAlgo::Esirkepov) {
if (WarpX::nox == 1){
- doEsirkepovDepositionShapeN<1>(xp, yp, zp, wp.dataPtr() + offset, uxp.dataPtr() + offset,
- uyp.dataPtr() + offset, uzp.dataPtr() + offset, jx_arr, jy_arr,
- jz_arr, np_to_depose, dt, dx,
- xyzmin, lo, q);
+ doEsirkepovDepositionShapeN<1>(
+ xp, yp, zp, wp.dataPtr() + offset, uxp.dataPtr() + offset,
+ uyp.dataPtr() + offset, uzp.dataPtr() + offset, ion_lev,
+ jx_arr, jy_arr, jz_arr, np_to_depose, dt, dx, xyzmin, lo, q);
} else if (WarpX::nox == 2){
- doEsirkepovDepositionShapeN<2>(xp, yp, zp, wp.dataPtr() + offset, uxp.dataPtr() + offset,
- uyp.dataPtr() + offset, uzp.dataPtr() + offset, jx_arr, jy_arr,
- jz_arr, np_to_depose, dt, dx,
- xyzmin, lo, q);
+ doEsirkepovDepositionShapeN<2>(
+ xp, yp, zp, wp.dataPtr() + offset, uxp.dataPtr() + offset,
+ uyp.dataPtr() + offset, uzp.dataPtr() + offset, ion_lev,
+ jx_arr, jy_arr, jz_arr, np_to_depose, dt, dx, xyzmin, lo, q);
} else if (WarpX::nox == 3){
- doEsirkepovDepositionShapeN<3>(xp, yp, zp, wp.dataPtr() + offset, uxp.dataPtr() + offset,
- uyp.dataPtr() + offset, uzp.dataPtr() + offset, jx_arr, jy_arr,
- jz_arr, np_to_depose, dt, dx,
- xyzmin, lo, q);
+ doEsirkepovDepositionShapeN<3>(
+ xp, yp, zp, wp.dataPtr() + offset, uxp.dataPtr() + offset,
+ uyp.dataPtr() + offset, uzp.dataPtr() + offset, ion_lev,
+ jx_arr, jy_arr, jz_arr, np_to_depose, dt, dx, xyzmin, lo, q);
}
} else {
if (WarpX::nox == 1){
- doDepositionShapeN<1>(xp, yp, zp, wp.dataPtr() + offset, uxp.dataPtr() + offset,
- uyp.dataPtr() + offset, uzp.dataPtr() + offset, jx_arr, jy_arr,
- jz_arr, np_to_depose, dt, dx,
- xyzmin, lo, stagger_shift, q);
+ doDepositionShapeN<1>(
+ xp, yp, zp, wp.dataPtr() + offset, uxp.dataPtr() + offset,
+ uyp.dataPtr() + offset, uzp.dataPtr() + offset, ion_lev,
+ jx_arr, jy_arr, jz_arr, np_to_depose, dt, dx, xyzmin, lo,
+ stagger_shift, q);
} else if (WarpX::nox == 2){
- doDepositionShapeN<2>(xp, yp, zp, wp.dataPtr() + offset, uxp.dataPtr() + offset,
- uyp.dataPtr() + offset, uzp.dataPtr() + offset, jx_arr, jy_arr,
- jz_arr, np_to_depose, dt, dx,
- xyzmin, lo, stagger_shift, q);
+ doDepositionShapeN<2>(
+ xp, yp, zp, wp.dataPtr() + offset, uxp.dataPtr() + offset,
+ uyp.dataPtr() + offset, uzp.dataPtr() + offset, ion_lev,
+ jx_arr, jy_arr, jz_arr, np_to_depose, dt, dx, xyzmin, lo,
+ stagger_shift, q);
} else if (WarpX::nox == 3){
- doDepositionShapeN<3>(xp, yp, zp, wp.dataPtr() + offset, uxp.dataPtr() + offset,
- uyp.dataPtr() + offset, uzp.dataPtr() + offset, jx_arr, jy_arr,
- jz_arr, np_to_depose, dt, dx,
- xyzmin, lo, stagger_shift, q);
+ doDepositionShapeN<3>(
+ xp, yp, zp, wp.dataPtr() + offset, uxp.dataPtr() + offset,
+ uyp.dataPtr() + offset, uzp.dataPtr() + offset, ion_lev,
+ jx_arr, jy_arr, jz_arr, np_to_depose, dt, dx, xyzmin, lo,
+ stagger_shift, q);
}
}