diff options
author | 2019-10-29 13:28:54 -0700 | |
---|---|---|
committer | 2019-10-29 13:28:54 -0700 | |
commit | 9854b9afb105825e41ac6fade98564425b0179f9 (patch) | |
tree | 9e6e14090ea705c6d58ecf0a2ebb140190799b3b /Source/Particles/ParticleCreation/TransformParticle.H | |
parent | ca4f2ce00e8cd3e687d803787bf24f9dd2f555e5 (diff) | |
parent | bf752934c97c520a043705b4ae3e2e34b6026d56 (diff) | |
download | WarpX-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.H | 44 |
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_ |