aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/ParticleCreation/TransformParticle.H
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Particles/ParticleCreation/TransformParticle.H')
-rw-r--r--Source/Particles/ParticleCreation/TransformParticle.H44
1 files changed, 44 insertions, 0 deletions
diff --git a/Source/Particles/ParticleCreation/TransformParticle.H b/Source/Particles/ParticleCreation/TransformParticle.H
new file mode 100644
index 000000000..14e534d0e
--- /dev/null
+++ b/Source/Particles/ParticleCreation/TransformParticle.H
@@ -0,0 +1,44 @@
+#ifndef TRANSFORMPARTICLE_H_
+#define TRANSFORMPARTICLE_H_
+
+#include "WarpXParticleContainer.H"
+
+enum struct elementaryProcessType { Ionization };
+
+/**
+ * \brief small modifications on source particle
+ * \param i index of particle
+ * \param particle particle struct
+ * \param runtime_iattribs integer attribs
+ */
+template < elementaryProcessType ProcessT >
+AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+void transformSourceParticle(
+ int i,
+ WarpXParticleContainer::ParticleType& particle,
+ amrex::GpuArray<int*,1> runtime_iattribs){}
+
+/**
+ * \brief small modifications on product particle
+ * \param i index of particle
+ * \param particle particle struct
+ */
+template < elementaryProcessType ProcessT >
+AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+void transformProductParticle(
+ int i,
+ WarpXParticleContainer::ParticleType* * v_particle){}
+
+// For ionization, increase ionization level of source particle
+template <>
+AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+void transformSourceParticle < elementaryProcessType::Ionization > (
+ int i,
+ WarpXParticleContainer::ParticleType& particle,
+ amrex::GpuArray<int*,1> runtime_iattribs)
+{
+ // increment particle's ionization level
+ runtime_iattribs[0][i] += 1;
+}
+
+#endif // TRANSFORMPARTICLE_H_