aboutsummaryrefslogtreecommitdiff
path: root/Source/Python/WarpXWrappers.cpp
diff options
context:
space:
mode:
authorGravatar Andrew Myers <atmyers2@gmail.com> 2022-10-10 13:50:56 -0700
committerGravatar GitHub <noreply@github.com> 2022-10-10 20:50:56 +0000
commit23fa23209879cbdf5ef829530def162c2b343c72 (patch)
tree1560b42388bd1792625f73f7ed71e08e7bc44e9d /Source/Python/WarpXWrappers.cpp
parente9cc65ffeb0684a97618b67c2164d95ea497226c (diff)
downloadWarpX-23fa23209879cbdf5ef829530def162c2b343c72.tar.gz
WarpX-23fa23209879cbdf5ef829530def162c2b343c72.tar.zst
WarpX-23fa23209879cbdf5ef829530def162c2b343c72.zip
Add functions for reading particle id and cpu numbers correctly (#3457)
Diffstat (limited to 'Source/Python/WarpXWrappers.cpp')
-rw-r--r--Source/Python/WarpXWrappers.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/Source/Python/WarpXWrappers.cpp b/Source/Python/WarpXWrappers.cpp
index 61909cff7..bbcc26daf 100644
--- a/Source/Python/WarpXWrappers.cpp
+++ b/Source/Python/WarpXWrappers.cpp
@@ -488,6 +488,42 @@ namespace
return data;
}
+ void warpx_convert_id_to_long (amrex::Long* ids, const WarpXParticleContainer::ParticleType* pstructs, int size)
+ {
+ amrex::Long* d_ptr = nullptr;
+#ifdef AMREX_USE_GPU
+ amrex::Gpu::DeviceVector<amrex::Long> d_ids(size);
+ d_ptr = d_ids.data();
+#else
+ d_ptr = ids;
+#endif
+ amrex::ParallelFor(size, [=] AMREX_GPU_DEVICE (int i) noexcept
+ {
+ d_ptr[i] = pstructs[i].id();
+ });
+#ifdef AMREX_USE_GPU
+ amrex::Gpu::dtoh_memcpy(ids, d_ptr, size*sizeof(amrex::Long));
+#endif
+ }
+
+ void warpx_convert_cpu_to_int (int* cpus, const WarpXParticleContainer::ParticleType* pstructs, int size)
+ {
+ int* d_ptr = nullptr;
+#ifdef AMREX_USE_GPU
+ amrex::Gpu::DeviceVector<int> d_cpus(size);
+ d_ptr = d_cpus.data();
+#else
+ d_ptr = cpus;
+#endif
+ amrex::ParallelFor(size, [=] AMREX_GPU_DEVICE (int i) noexcept
+ {
+ d_ptr[i] = pstructs[i].cpu();
+ });
+#ifdef AMREX_USE_GPU
+ amrex::Gpu::dtoh_memcpy(cpus, d_ptr, size*sizeof(int));
+#endif
+ }
+
int warpx_getParticleCompIndex (
const char* char_species_name, const char* char_comp_name )
{