aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/Sorting/Partition.cpp
diff options
context:
space:
mode:
authorGravatar Remi Lehe <remi.lehe@normalesup.org> 2019-09-26 10:48:43 -0700
committerGravatar Remi Lehe <remi.lehe@normalesup.org> 2019-10-01 16:32:38 -0700
commitc1823aacc5a957181cc3ad075c8718c3666d8406 (patch)
tree43d854a831e5b55380c63d5a1e7ac7aa475d29ee /Source/Particles/Sorting/Partition.cpp
parent2b08e3082ba46361b943b7ce67f8d21eb835ece9 (diff)
downloadWarpX-c1823aacc5a957181cc3ad075c8718c3666d8406.tar.gz
WarpX-c1823aacc5a957181cc3ad075c8718c3666d8406.tar.zst
WarpX-c1823aacc5a957181cc3ad075c8718c3666d8406.zip
Use templated functor for copy of particles
Diffstat (limited to 'Source/Particles/Sorting/Partition.cpp')
-rw-r--r--Source/Particles/Sorting/Partition.cpp12
1 files changed, 2 insertions, 10 deletions
diff --git a/Source/Particles/Sorting/Partition.cpp b/Source/Particles/Sorting/Partition.cpp
index b4f96476e..2b5d661e4 100644
--- a/Source/Particles/Sorting/Partition.cpp
+++ b/Source/Particles/Sorting/Partition.cpp
@@ -115,22 +115,14 @@ PhysicalParticleContainer::PartitionParticlesInBuffers(
// Reorder the actual particle array, using the `pid` indices
if (nfine_current != np || nfine_gather != np)
{
- // Extract simple pointer
- long* AMREX_RESTRICT pid_ptr = pid.dataPtr();
-
// Temporary array for particle AoS
ParticleVector particle_tmp;
particle_tmp.resize(np);
- ParticleType* AMREX_RESTRICT particle_tmp_ptr = particle_tmp.dataPtr();
- // Copy the particle AoS
+ // Copy particle AoS
auto& aos = pti.GetArrayOfStructs();
- ParticleType* AMREX_RESTRICT aos_ptr = &(aos()[0]);
amrex::ParallelFor( np,
- [=] AMREX_GPU_DEVICE (long ip) {
- particle_tmp_ptr[ip] = aos_ptr[pid_ptr[ip]];
- }
- );
+ copyAndReorder<ParticleType>( aos(), particle_tmp, pid ) );
std::swap(aos(), particle_tmp);
// Temporary array for particle individual attributes