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. More...
|
|
◆ 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. |