aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.cpp
diff options
context:
space:
mode:
authorGravatar Neïl Zaim <49716072+NeilZaim@users.noreply.github.com> 2021-10-19 22:43:36 +0200
committerGravatar GitHub <noreply@github.com> 2021-10-19 13:43:36 -0700
commit82395a83095f7159fd8835debc85e42ff177b7f5 (patch)
treebf7683a103d7f4c0836063fa3c96381ad77a9460 /Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.cpp
parentfcf88725d9753067b329f11687f5d90ddae79cd2 (diff)
downloadWarpX-82395a83095f7159fd8835debc85e42ff177b7f5.tar.gz
WarpX-82395a83095f7159fd8835debc85e42ff177b7f5.tar.zst
WarpX-82395a83095f7159fd8835debc85e42ff177b7f5.zip
BinaryCollision: implement particle creation functor (#2315)
* BinaryCollision: implement particle creation functor * Apply suggestions from code review (restrict keyword) Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * Don't restrict the particle pointers * Use atomicSetID * Use more restricts * Don't use auto restrict Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Diffstat (limited to 'Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.cpp')
-rw-r--r--Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.cpp b/Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.cpp
index fff4150c1..ba6b20f1b 100644
--- a/Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.cpp
+++ b/Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.cpp
@@ -23,23 +23,22 @@ ParticleCreationFunc::ParticleCreationFunc (const std::string collision_name,
m_collision_type = BinaryCollisionUtils::get_collision_type(collision_name, mypc);
-#ifdef AMREX_USE_GPU
- amrex::Vector<int> host_num_products;
-#else
- amrex::Gpu::DeviceVector<int>& host_num_products = m_num_products;
-#endif
if (m_collision_type == CollisionType::ProtonBoronFusion)
{
// Proton-Boron fusion only produces alpha particles
m_num_product_species = 1;
// Proton-Boron fusion produces 3 alpha particles per fusion reaction
- host_num_products.push_back(3);
+ m_num_products_host.push_back(3);
+#ifndef AMREX_USE_GPU
+ // On CPU, the device vector can be filled immediatly
+ m_num_products_device.push_back(3);
+#endif
}
#ifdef AMREX_USE_GPU
- m_num_products.resize(m_num_product_species);
- amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, host_num_products.begin(),
- host_num_products.end(),
- m_num_products.begin());
+ m_num_products_device.resize(m_num_product_species);
+ amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, m_num_products_host.begin(),
+ m_num_products_host.end(),
+ m_num_products_device.begin());
amrex::Gpu::streamSynchronize();
#endif
}