Go to the source code of this file.
|
| template<typename index_type> |
| AMREX_GPU_HOST_DEVICE AMREX_INLINE void | SingleNuclearFusionEvent (const amrex::ParticleReal &u1x, const amrex::ParticleReal &u1y, const amrex::ParticleReal &u1z, const amrex::ParticleReal &u2x, const amrex::ParticleReal &u2y, const amrex::ParticleReal &u2z, const amrex::ParticleReal &m1, const amrex::ParticleReal &m2, amrex::ParticleReal w1, amrex::ParticleReal w2, const amrex::Real &dt, const amrex::ParticleReal &dV, const int &pair_index, index_type *AMREX_RESTRICT p_mask, amrex::ParticleReal *AMREX_RESTRICT p_pair_reaction_weight, const amrex::ParticleReal &fusion_multiplier, const int &multiplier_ratio, const amrex::ParticleReal &probability_threshold, const amrex::ParticleReal &probability_target_value, const NuclearFusionType &fusion_type, const amrex::RandomEngine &engine) |
| | This function computes whether the collision between two particles result in a nuclear fusion event, using the algorithm described in Higginson et al., Journal of Computational Physics 388, 439-453 (2019). If nuclear fusion occurs, the mask is set to true for that given pair of particles and the weight of the produced particles is stored in p_pair_reaction_weight.
|
| |
◆ SingleNuclearFusionEvent()
template<typename index_type>
| AMREX_GPU_HOST_DEVICE AMREX_INLINE void SingleNuclearFusionEvent |
( |
const amrex::ParticleReal & | u1x, |
|
|
const amrex::ParticleReal & | u1y, |
|
|
const amrex::ParticleReal & | u1z, |
|
|
const amrex::ParticleReal & | u2x, |
|
|
const amrex::ParticleReal & | u2y, |
|
|
const amrex::ParticleReal & | u2z, |
|
|
const amrex::ParticleReal & | m1, |
|
|
const amrex::ParticleReal & | m2, |
|
|
amrex::ParticleReal | w1, |
|
|
amrex::ParticleReal | w2, |
|
|
const amrex::Real & | dt, |
|
|
const amrex::ParticleReal & | dV, |
|
|
const int & | pair_index, |
|
|
index_type *AMREX_RESTRICT | p_mask, |
|
|
amrex::ParticleReal *AMREX_RESTRICT | p_pair_reaction_weight, |
|
|
const amrex::ParticleReal & | fusion_multiplier, |
|
|
const int & | multiplier_ratio, |
|
|
const amrex::ParticleReal & | probability_threshold, |
|
|
const amrex::ParticleReal & | probability_target_value, |
|
|
const NuclearFusionType & | fusion_type, |
|
|
const amrex::RandomEngine & | engine ) |
This function computes whether the collision between two particles result in a nuclear fusion event, using the algorithm described in Higginson et al., Journal of Computational Physics 388, 439-453 (2019). If nuclear fusion occurs, the mask is set to true for that given pair of particles and the weight of the produced particles is stored in p_pair_reaction_weight.
- Template Parameters
-
| index_type | type of the index argument |
- Parameters
-
| [in] | u1x,u1y,u1z | momenta of the first colliding particle |
| [in] | u2x,u2y,u2z | momenta of the second colliding particle |
| [in] | m1,m2 | masses |
| [in] | w1,w2 | effective weight of the colliding particles |
| [in] | dt | is the time step length between two collision calls. |
| [in] | dV | is the volume of the corresponding cell. |
| [in] | pair_index | is the index of the colliding pair |
| [out] | p_mask | is a mask that will be set to true if fusion occurs for that pair |
| [out] | p_pair_reaction_weight | stores the weight of the product particles |
| [in] | fusion_multiplier | factor used to increase the number of fusion events by decreasing the weight of the produced particles |
| [in] | multiplier_ratio | factor used to take into account unsampled pairs (i.e. the fact that a particle only collides with one or few particles of the other species) |
| [in] | probability_threshold | probability threshold above which we decrease the fusion multiplier |
| [in] | probability_target_value | if the probability threshold is exceeded, this is used to determine by how much the fusion multiplier is reduced |
| [in] | fusion_type | the physical fusion process to model |
| [in] | engine | the random engine. |