aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/PhysicalParticleContainer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Particles/PhysicalParticleContainer.cpp')
-rw-r--r--Source/Particles/PhysicalParticleContainer.cpp47
1 files changed, 24 insertions, 23 deletions
diff --git a/Source/Particles/PhysicalParticleContainer.cpp b/Source/Particles/PhysicalParticleContainer.cpp
index 110d4294c..729ab7044 100644
--- a/Source/Particles/PhysicalParticleContainer.cpp
+++ b/Source/Particles/PhysicalParticleContainer.cpp
@@ -1464,8 +1464,7 @@ PhysicalParticleContainer::SplitParticles(int lev)
// Loop over particle interator
for (WarpXParIter pti(*this, lev); pti.isValid(); ++pti)
{
- const auto& aos = pti.GetArrayOfStructs();
- const ParticleType* AMREX_RESTRICT pstruct = aos().dataPtr();
+ const auto get_position = GetPosition(pti);
const amrex::Vector<int> ppc_nd = plasma_injector->num_particles_per_cell_each_dim;
const std::array<Real,3>& dx = WarpX::CellSize(lev);
@@ -1490,6 +1489,8 @@ PhysicalParticleContainer::SplitParticles(int lev)
auto& uzp = attribs[PIdx::uz];
const long np = pti.numParticles();
for(int i=0; i<np; i++){
+ Real xp, yp, zp;
+ get_position(i, xp, yp, zp);
auto& p = particles[i];
if (p.id() == DoSplitParticleID){
// If particle is tagged, split it and put the
@@ -1502,9 +1503,9 @@ PhysicalParticleContainer::SplitParticles(int lev)
for (int ishift = -1; ishift < 2; ishift +=2 ){
for (int kshift = -1; kshift < 2; kshift +=2 ){
// Add one particle with offset in x and z
- psplit_x.push_back( pstruct[i].pos(0) + ishift*split_offset[0] );
- psplit_y.push_back( pstruct[i].pos(1) );
- psplit_z.push_back( pstruct[i].pos(2) + kshift*split_offset[2] );
+ psplit_x.push_back( xp + ishift*split_offset[0] );
+ psplit_y.push_back( yp );
+ psplit_z.push_back( zp + kshift*split_offset[2] );
psplit_ux.push_back( uxp[i] );
psplit_uy.push_back( uyp[i] );
psplit_uz.push_back( uzp[i] );
@@ -1516,17 +1517,17 @@ PhysicalParticleContainer::SplitParticles(int lev)
// 4 particles in 2d
for (int ishift = -1; ishift < 2; ishift +=2 ){
// Add one particle with offset in x
- psplit_x.push_back( pstruct[i].pos(0) + ishift*split_offset[0] );
- psplit_y.push_back( pstruct[i].pos(1) );
- psplit_z.push_back( pstruct[i].pos(2) );
+ psplit_x.push_back( xp + ishift*split_offset[0] );
+ psplit_y.push_back( yp );
+ psplit_z.push_back( zp );
psplit_ux.push_back( uxp[i] );
psplit_uy.push_back( uyp[i] );
psplit_uz.push_back( uzp[i] );
psplit_w.push_back( wp[i]/np_split );
// Add one particle with offset in z
- psplit_x.push_back( pstruct[i].pos(0) );
- psplit_y.push_back( pstruct[i].pos(1) );
- psplit_z.push_back( pstruct[i].pos(2) + ishift*split_offset[2] );
+ psplit_x.push_back( xp );
+ psplit_y.push_back( yp );
+ psplit_z.push_back( zp + ishift*split_offset[2] );
psplit_ux.push_back( uxp[i] );
psplit_uy.push_back( uyp[i] );
psplit_uz.push_back( uzp[i] );
@@ -1541,9 +1542,9 @@ PhysicalParticleContainer::SplitParticles(int lev)
for (int jshift = -1; jshift < 2; jshift +=2 ){
for (int kshift = -1; kshift < 2; kshift +=2 ){
// Add one particle with offset in x, y and z
- psplit_x.push_back( pstruct[i].pos(0) + ishift*split_offset[0] );
- psplit_y.push_back( pstruct[i].pos(1) + jshift*split_offset[1] );
- psplit_z.push_back( pstruct[i].pos(2) + kshift*split_offset[2] );
+ psplit_x.push_back( xp + ishift*split_offset[0] );
+ psplit_y.push_back( yp + jshift*split_offset[1] );
+ psplit_z.push_back( zp + kshift*split_offset[2] );
psplit_ux.push_back( uxp[i] );
psplit_uy.push_back( uyp[i] );
psplit_uz.push_back( uzp[i] );
@@ -1556,25 +1557,25 @@ PhysicalParticleContainer::SplitParticles(int lev)
// 6 particles in 3d
for (int ishift = -1; ishift < 2; ishift +=2 ){
// Add one particle with offset in x
- psplit_x.push_back( pstruct[i].pos(0) + ishift*split_offset[0] );
- psplit_y.push_back( pstruct[i].pos(1) );
- psplit_z.push_back( pstruct[i].pos(2) );
+ psplit_x.push_back( xp + ishift*split_offset[0] );
+ psplit_y.push_back( yp );
+ psplit_z.push_back( zp );
psplit_ux.push_back( uxp[i] );
psplit_uy.push_back( uyp[i] );
psplit_uz.push_back( uzp[i] );
psplit_w.push_back( wp[i]/np_split );
// Add one particle with offset in y
- psplit_x.push_back( pstruct[i].pos(0) );
- psplit_y.push_back( pstruct[i].pos(1) + ishift*split_offset[1] );
- psplit_z.push_back( pstruct[i].pos(2) );
+ psplit_x.push_back( xp );
+ psplit_y.push_back( yp + ishift*split_offset[1] );
+ psplit_z.push_back( zp );
psplit_ux.push_back( uxp[i] );
psplit_uy.push_back( uyp[i] );
psplit_uz.push_back( uzp[i] );
psplit_w.push_back( wp[i]/np_split );
// Add one particle with offset in z
- psplit_x.push_back( pstruct[i].pos(0) );
- psplit_y.push_back( pstruct[i].pos(1) );
- psplit_z.push_back( pstruct[i].pos(2) + ishift*split_offset[2] );
+ psplit_x.push_back( xp );
+ psplit_y.push_back( yp );
+ psplit_z.push_back( zp + ishift*split_offset[2] );
psplit_ux.push_back( uxp[i] );
psplit_uy.push_back( uyp[i] );
psplit_uz.push_back( uzp[i] );