aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/ParticleCreation/TransformParticle.H
diff options
context:
space:
mode:
authorGravatar MaxThevenet <mthevenet@lbl.gov> 2019-10-29 13:28:54 -0700
committerGravatar MaxThevenet <mthevenet@lbl.gov> 2019-10-29 13:28:54 -0700
commit9854b9afb105825e41ac6fade98564425b0179f9 (patch)
tree9e6e14090ea705c6d58ecf0a2ebb140190799b3b /Source/Particles/ParticleCreation/TransformParticle.H
parentca4f2ce00e8cd3e687d803787bf24f9dd2f555e5 (diff)
parentbf752934c97c520a043705b4ae3e2e34b6026d56 (diff)
downloadWarpX-9854b9afb105825e41ac6fade98564425b0179f9.tar.gz
WarpX-9854b9afb105825e41ac6fade98564425b0179f9.tar.zst
WarpX-9854b9afb105825e41ac6fade98564425b0179f9.zip
Merge branch 'dev' into comm
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_