aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/ParticleCreation
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Particles/ParticleCreation')
-rw-r--r--Source/Particles/ParticleCreation/CopyParticle.H6
-rw-r--r--Source/Particles/ParticleCreation/ElementaryProcess.H33
-rw-r--r--Source/Particles/ParticleCreation/TransformParticle.H8
3 files changed, 25 insertions, 22 deletions
diff --git a/Source/Particles/ParticleCreation/CopyParticle.H b/Source/Particles/ParticleCreation/CopyParticle.H
index bd2d530fb..5e51c5283 100644
--- a/Source/Particles/ParticleCreation/CopyParticle.H
+++ b/Source/Particles/ParticleCreation/CopyParticle.H
@@ -13,7 +13,7 @@
* Pointers to SoA data are saved when constructor is called.
* AoS data is passed as argument of operator ().
*/
-class copyParticle
+class CopyParticle
{
public:
@@ -33,7 +33,7 @@ public:
// Simple constructor
AMREX_GPU_HOST_DEVICE
- copyParticle(
+ CopyParticle(
const int cpuid, const int do_back_transformed_product,
const amrex::GpuArray<amrex::ParticleReal*,3> runtime_uold_source,
const amrex::GpuArray<amrex::ParticleReal*,PIdx::nattribs> attribs_source,
@@ -54,7 +54,7 @@ public:
* \param ip index of product particle
* \param pid_product ID of first product particle
* \param p_source Struct with data for 1 source particle (position etc.)
- * \param p_source Struct with data for 1 product particle (position etc.)
+ * \param p_product Struct with data for 1 product particle (position etc.)
*/
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
void operator () (int is, int ip, int pid_product,
diff --git a/Source/Particles/ParticleCreation/ElementaryProcess.H b/Source/Particles/ParticleCreation/ElementaryProcess.H
index fa791c244..75443cb38 100644
--- a/Source/Particles/ParticleCreation/ElementaryProcess.H
+++ b/Source/Particles/ParticleCreation/ElementaryProcess.H
@@ -21,8 +21,8 @@
* The class is templated on the process type. This gives flexibility
* on source and product particle transformations.
*/
-template<elementaryProcessType ProcessT>
-class elementaryProcess
+template<ElementaryProcessType ProcessT>
+class ElementaryProcess
{
public:
@@ -36,16 +36,17 @@ public:
* \param attribs_product attribs of product particles
* \param runtime_attribs_product runtime attribs for product, to store old attribs
*/
- copyParticle initialize_copy(
+ CopyParticle initialize_copy(
const int cpuid, const int do_back_transformed_product,
const amrex::GpuArray<amrex::ParticleReal*,3> runtime_uold_source,
const amrex::GpuArray<amrex::ParticleReal*,PIdx::nattribs> attribs_source,
const amrex::GpuArray<amrex::ParticleReal*,PIdx::nattribs> attribs_product,
const amrex::GpuArray<amrex::ParticleReal*,6> runtime_attribs_product) const noexcept
{
- return copyParticle (
+ return CopyParticle(
cpuid, do_back_transformed_product, runtime_uold_source,
- attribs_source, attribs_product, runtime_attribs_product);
+ attribs_source, attribs_product, runtime_attribs_product
+ );
};
/**
@@ -123,7 +124,8 @@ public:
int np_flagged = i_product[np_source-1];
if (np_flagged == 0) return;
- amrex::Vector<copyParticle> v_copy_functor;
+ amrex::Gpu::ManagedDeviceVector<CopyParticle> v_copy_functor;
+ v_copy_functor.reserve(nproducts);
amrex::Gpu::ManagedDeviceVector<int> v_pid_product(nproducts);
amrex::Gpu::ManagedDeviceVector<WarpXParticleContainer::ParticleType*> v_particles_product(nproducts);
for (int iproduct=0; iproduct<nproducts; iproduct++){
@@ -172,12 +174,13 @@ public:
const int cpuid = amrex::ParallelDescriptor::MyProc();
// Create instance of copy functor, and add it to the vector
- v_copy_functor.push_back (initialize_copy(
- cpuid, v_do_back_transformed_product[iproduct],
- runtime_uold_source,
- attribs_source,
- attribs_product,
- runtime_attribs_product) );
+ v_copy_functor.push_back( initialize_copy(
+ cpuid, v_do_back_transformed_product[iproduct],
+ runtime_uold_source,
+ attribs_source,
+ attribs_product,
+ runtime_attribs_product
+ ) );
v_pid_product[iproduct] = pid_product;
}
@@ -212,12 +215,12 @@ public:
amrex::Gpu::ManagedDeviceVector<int> v_pid_product,
amrex::Gpu::ManagedDeviceVector<WarpXParticleContainer::ParticleType*> v_particles_product,
WarpXParticleContainer::ParticleType* particles_source,
- const amrex::Vector<copyParticle>& v_copy_functor,
+ const amrex::Gpu::ManagedDeviceVector<CopyParticle>& v_copy_functor,
amrex::GpuArray<int*,1> runtime_iattribs_source)
{
int const * const AMREX_RESTRICT p_is_flagged = is_flagged.dataPtr();
int const * const AMREX_RESTRICT p_i_product = i_product.dataPtr();
- copyParticle const * const p_copy_functor = v_copy_functor.data();
+ CopyParticle const * const AMREX_RESTRICT p_copy_functor = v_copy_functor.dataPtr();
WarpXParticleContainer::ParticleType * * p_particles_product = v_particles_product.data();
int const * const p_pid_product = v_pid_product.data();
@@ -251,7 +254,7 @@ public:
};
// Derived class for ionization process
-class IonizationProcess: public elementaryProcess<elementaryProcessType::Ionization>
+class IonizationProcess: public ElementaryProcess<ElementaryProcessType::Ionization>
{};
#endif // ELEMENTARYPROCESS_H_
diff --git a/Source/Particles/ParticleCreation/TransformParticle.H b/Source/Particles/ParticleCreation/TransformParticle.H
index 14e534d0e..1b71df723 100644
--- a/Source/Particles/ParticleCreation/TransformParticle.H
+++ b/Source/Particles/ParticleCreation/TransformParticle.H
@@ -3,7 +3,7 @@
#include "WarpXParticleContainer.H"
-enum struct elementaryProcessType { Ionization };
+enum struct ElementaryProcessType { Ionization };
/**
* \brief small modifications on source particle
@@ -11,7 +11,7 @@ enum struct elementaryProcessType { Ionization };
* \param particle particle struct
* \param runtime_iattribs integer attribs
*/
-template < elementaryProcessType ProcessT >
+template < ElementaryProcessType ProcessT >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
void transformSourceParticle(
int i,
@@ -23,7 +23,7 @@ void transformSourceParticle(
* \param i index of particle
* \param particle particle struct
*/
-template < elementaryProcessType ProcessT >
+template < ElementaryProcessType ProcessT >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
void transformProductParticle(
int i,
@@ -32,7 +32,7 @@ void transformProductParticle(
// For ionization, increase ionization level of source particle
template <>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-void transformSourceParticle < elementaryProcessType::Ionization > (
+void transformSourceParticle < ElementaryProcessType::Ionization > (
int i,
WarpXParticleContainer::ParticleType& particle,
amrex::GpuArray<int*,1> runtime_iattribs)