WarpX
Public Member Functions | Public Attributes | List of all members
NuclearFusionFunc::Executor Struct Reference

#include <NuclearFusionFunc.H>

Public Member Functions

AMREX_GPU_HOST_DEVICE AMREX_INLINE void operator() (index_type const I1s, index_type const I1e, index_type const I2s, index_type const I2e, index_type const *AMREX_RESTRICT I1, index_type const *AMREX_RESTRICT I2, const SoaData_type &soa_1, const SoaData_type &soa_2, GetParticlePosition< PIdx >, GetParticlePosition< PIdx >, amrex::ParticleReal const, amrex::ParticleReal const, amrex::ParticleReal const m1, amrex::ParticleReal const m2, amrex::Real const dt, amrex::Real const dV, index_type coll_idx, index_type const cell_start_pair, index_type *AMREX_RESTRICT p_mask, index_type *AMREX_RESTRICT p_pair_indices_1, index_type *AMREX_RESTRICT p_pair_indices_2, amrex::ParticleReal *AMREX_RESTRICT p_pair_reaction_weight, amrex::RandomEngine const &engine) const
 Executor of the NuclearFusionFunc class. Performs nuclear fusions at the cell level using the algorithm described in Higginson et al., Journal of Computational Physics 388, 439-453 (2019). Note that this function does not yet create the product particles, but instead fills an array p_mask that stores which collisions result in a fusion event. More...
 

Public Attributes

amrex::ParticleReal m_fusion_multiplier
 
amrex::ParticleReal m_probability_threshold
 
amrex::ParticleReal m_probability_target_value
 
NuclearFusionType m_fusion_type
 
bool m_isSameSpecies
 

Member Function Documentation

◆ operator()()

AMREX_GPU_HOST_DEVICE AMREX_INLINE void NuclearFusionFunc::Executor::operator() ( index_type const  I1s,
index_type const  I1e,
index_type const  I2s,
index_type const  I2e,
index_type const *AMREX_RESTRICT  I1,
index_type const *AMREX_RESTRICT  I2,
const SoaData_type soa_1,
const SoaData_type soa_2,
GetParticlePosition< PIdx ,
GetParticlePosition< PIdx ,
amrex::ParticleReal const  ,
amrex::ParticleReal const  ,
amrex::ParticleReal const  m1,
amrex::ParticleReal const  m2,
amrex::Real const  dt,
amrex::Real const  dV,
index_type  coll_idx,
index_type const  cell_start_pair,
index_type *AMREX_RESTRICT  p_mask,
index_type *AMREX_RESTRICT  p_pair_indices_1,
index_type *AMREX_RESTRICT  p_pair_indices_2,
amrex::ParticleReal *AMREX_RESTRICT  p_pair_reaction_weight,
amrex::RandomEngine const &  engine 
) const
inline

Executor of the NuclearFusionFunc class. Performs nuclear fusions at the cell level using the algorithm described in Higginson et al., Journal of Computational Physics 388, 439-453 (2019). Note that this function does not yet create the product particles, but instead fills an array p_mask that stores which collisions result in a fusion event.

Also note that there are three main differences between this implementation and the algorithm described in Higginson's paper:

  • 1) The transformation from the lab frame to the center of mass frame is nonrelativistic in Higginson's paper. Here, we implement a relativistic generalization.
  • 2) The behaviour when the estimated fusion probability is greater than one is not specified in Higginson's paper. Here, we provide an implementation using two runtime dependent parameters (fusion probability threshold and fusion probability target value). See documentation for more details.
  • 3) Here, we divide the weight of a particle by the number of times it is paired with other particles. This was not explicitly specified in Higginson's paper.
Parameters
[in]I1s,I2sis the start index for I1,I2 (inclusive).
[in]I1e,I2eis the stop index for I1,I2 (exclusive).
[in]I1,I2index arrays. They determine all elements that will be used.
[in]soa_1,soa_2contain the struct of array data of the two species
[in]m1,m2are masses.
[in]dtis the time step length between two collision calls.
[in]dVis the volume of the corresponding cell.
[in]coll_idxis the collision index offset.
[in]cell_start_pairis the start index of the pairs in that cell.
[out]p_maskis a mask that will be set to true if a fusion event occurs for a given pair. It is only needed here to store information that will be used later on when actually creating the product particles.
[out]p_pair_indices_1,p_pair_indices_2arrays that store the indices of the particles of a given pair. They are only needed here to store information that will be used later on when actually creating the product particles.
[out]p_pair_reaction_weightstores the weight of the product particles. It is only needed here to store information that will be used later on when actually creating the product particles.
[in]enginethe random engine.

Member Data Documentation

◆ m_fusion_multiplier

amrex::ParticleReal NuclearFusionFunc::Executor::m_fusion_multiplier

◆ m_fusion_type

NuclearFusionType NuclearFusionFunc::Executor::m_fusion_type

◆ m_isSameSpecies

bool NuclearFusionFunc::Executor::m_isSameSpecies

◆ m_probability_target_value

amrex::ParticleReal NuclearFusionFunc::Executor::m_probability_target_value

◆ m_probability_threshold

amrex::ParticleReal NuclearFusionFunc::Executor::m_probability_threshold

The documentation for this struct was generated from the following file: