diff options
author | 2019-12-20 05:59:26 -0800 | |
---|---|---|
committer | 2019-12-20 05:59:26 -0800 | |
commit | 000a6b27ff59f3ef9c97f0e5324433e20f06b7a9 (patch) | |
tree | 3776a3bbf23d85aacd19331aa377cd278937457a /Source/Particles/PhysicalParticleContainer.cpp | |
parent | 15685b7d1926295e99e5fe84801a37a8b61acd14 (diff) | |
parent | fabbe4dde65a48fc583f0ab407b7ee4ad77cecac (diff) | |
download | WarpX-000a6b27ff59f3ef9c97f0e5324433e20f06b7a9.tar.gz WarpX-000a6b27ff59f3ef9c97f0e5324433e20f06b7a9.tar.zst WarpX-000a6b27ff59f3ef9c97f0e5324433e20f06b7a9.zip |
Merge pull request #577 from MaxThevenet/fix_splitting
[mini-PR] splitting distance depends on ppc only if uniform per cell
Diffstat (limited to 'Source/Particles/PhysicalParticleContainer.cpp')
-rw-r--r-- | Source/Particles/PhysicalParticleContainer.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/Source/Particles/PhysicalParticleContainer.cpp b/Source/Particles/PhysicalParticleContainer.cpp index d5c08074a..94d9bc363 100644 --- a/Source/Particles/PhysicalParticleContainer.cpp +++ b/Source/Particles/PhysicalParticleContainer.cpp @@ -1431,15 +1431,19 @@ PhysicalParticleContainer::SplitParticles(int lev) { pti.GetPosition(xp, yp, zp); - // offset for split particles is computed as a function of cell size - // and number of particles per cell, so that a uniform distribution - // before splitting results in a uniform distribution after splitting const amrex::Vector<int> ppc_nd = plasma_injector->num_particles_per_cell_each_dim; const std::array<Real,3>& dx = WarpX::CellSize(lev); - amrex::Vector<Real> split_offset = {dx[0]/2._rt/ppc_nd[0], - dx[1]/2._rt/ppc_nd[1], - dx[2]/2._rt/ppc_nd[2]}; - + amrex::Vector<Real> split_offset = {dx[0]/2._rt, + dx[1]/2._rt, + dx[2]/2._rt}; + if (ppc_nd[0] > 0){ + // offset for split particles is computed as a function of cell size + // and number of particles per cell, so that a uniform distribution + // before splitting results in a uniform distribution after splitting + split_offset[0] /= ppc_nd[0]; + split_offset[1] /= ppc_nd[1]; + split_offset[2] /= ppc_nd[2]; + } // particle Array Of Structs data auto& particles = pti.GetArrayOfStructs(); // particle Struct Of Arrays data |