WarpX
Functions
SingleNuclearFusionEvent.H File Reference
#include "BoschHaleFusionCrossSection.H"
#include "ProtonBoronFusionCrossSection.H"
#include "Particles/Collision/BinaryCollision/BinaryCollisionUtils.H"
#include "Utils/WarpXConst.H"
#include <AMReX_Algorithm.H>
#include <AMReX_Random.H>
#include <AMReX_REAL.H>
#include <cmath>

Go to the source code of this file.

Functions

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

Function Documentation

◆ 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_typetype of the index argument
Parameters
[in]u1x,u1y,u1zmomenta of the first colliding particle
[in]u2x,u2y,u2zmomenta of the second colliding particle
[in]m1,m2masses
[in]w1,w2effective weight of the colliding particles
[in]dtis the time step length between two collision calls.
[in]dVis the volume of the corresponding cell.
[in]pair_indexis the index of the colliding pair
[out]p_maskis a mask that will be set to true if fusion occurs for that pair
[out]p_pair_reaction_weightstores the weight of the product particles
[in]fusion_multiplierfactor used to increase the number of fusion events by decreasing the weight of the produced particles
[in]multiplier_ratiofactor 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_thresholdprobability threshold above which we decrease the fusion multiplier
[in]probability_target_valueif the probability threshold is exceeded, this is used to determine by how much the fusion multiplier is reduced
[in]fusion_typethe physical fusion process to model
[in]enginethe random engine.