|
ARTEMIS
|
This functor does binary nuclear fusions on a single cell. Particles of the two reacting species are paired with each other and for each pair we compute if a fusion event occurs. If so, we fill a mask (input parameter p_mask) with true so that product particles corresponding to a given pair can be effectively created in the particle creation functor. This functor also reads and contains the fusion multiplier. More...
#include <NuclearFusionFunc.H>
Public Member Functions | |
| NuclearFusionFunc ()=default | |
| Default constructor of the NuclearFusionFunc class. More... | |
| NuclearFusionFunc (const std::string collision_name, MultiParticleContainer const *const mypc, const bool isSameSpecies) | |
| Constructor of the NuclearFusionFunc class. More... | |
| 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, SoaData_type soa_1, SoaData_type soa_2, GetParticlePosition, GetParticlePosition, amrex::ParticleReal const, amrex::ParticleReal const, amrex::ParticleReal const m1, amrex::ParticleReal const m2, amrex::Real const dt, amrex::Real const dV, 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 |
| operator() 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... | |
Private Types | |
| using | ParticleType = WarpXParticleContainer::ParticleType |
| using | ParticleBins = amrex::DenseBins< ParticleType > |
| using | index_type = ParticleBins::index_type |
| using | SoaData_type = WarpXParticleContainer::ParticleTileType::ParticleTileDataType |
Private Attributes | |
| amrex::ParticleReal | m_fusion_multiplier |
| amrex::ParticleReal | m_probability_threshold |
| amrex::ParticleReal | m_probability_target_value |
| NuclearFusionType | m_fusion_type |
| bool | m_isSameSpecies |
This functor does binary nuclear fusions on a single cell. Particles of the two reacting species are paired with each other and for each pair we compute if a fusion event occurs. If so, we fill a mask (input parameter p_mask) with true so that product particles corresponding to a given pair can be effectively created in the particle creation functor. This functor also reads and contains the fusion multiplier.
|
private |
|
private |
|
private |
|
private |
|
default |
Default constructor of the NuclearFusionFunc class.
|
inline |
Constructor of the NuclearFusionFunc class.
| [in] | collision_name | the name of the collision |
| [in] | mypc | pointer to the MultiParticleContainer |
| [in] | isSameSpecies | whether the two colliding species are the same |
|
inline |
operator() 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:
| [in] | I1s,I2s | is the start index for I1,I2 (inclusive). |
| [in] | I1e,I2e | is the stop index for I1,I2 (exclusive). |
| [in] | I1,I2 | index arrays. They determine all elements that will be used. |
| [in] | soa_1,soa_2 | contain the struct of array data of the two species |
| [in] | m1,m2 | are masses. |
| [in] | dt | is the time step length between two collision calls. |
| [in] | dV | is the volume of the corresponding cell. |
| [in] | cell_start_pair | is the start index of the pairs in that cell. |
| [out] | p_mask | is 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_2 | arrays 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_weight | stores 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] | engine | the random engine. |
|
private |
|
private |
|
private |
|
private |
|
private |