#include <NuclearFusionFunc.H>
|
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...
|
|
◆ 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,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] | coll_idx | is the collision index offset. |
[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. |
◆ m_fusion_multiplier
amrex::ParticleReal NuclearFusionFunc::Executor::m_fusion_multiplier |
◆ 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:
- /home/docs/checkouts/readthedocs.org/user_builds/warpx/checkouts/latest/Source/Particles/Collision/BinaryCollision/NuclearFusion/NuclearFusionFunc.H