![]() |
Module to deal with fission reactions. More...
Data Types | |
type | fissionrate_type |
fission rate type, designed to save fragment distribution at initialization More... | |
type | fragtype |
Functions/Subroutines | |
subroutine, public | init_fission_rates () |
Initialize the fission reactions. More... | |
subroutine | check_fission_mass_conservation |
Check the mass conservation during the fission process. More... | |
subroutine, private | reorder_fragments () |
Reorder the fission fragments. More... | |
subroutine, private | write_reac_verbose_out () |
Write the amount of individual reactions to the out. More... | |
subroutine, private | read_binary_fission_reaction_data (path) |
Read the fission reactions and fragment distributions from a binary file. More... | |
subroutine, public | output_binary_fission_reaction_data (path) |
Save the fission data to a unformatted binary file. More... | |
subroutine, public | merge_fission_rates (rrate_array, rrate_length, fiss_count) |
Merge fission rates with larger array. More... | |
subroutine, private | modify_halflifes (rrate, rrate_length, fissrate_in, nfiss_in) |
Modifies half lifes of beta decays to include fission. More... | |
subroutine, private | count_fission_rates () |
Count the amount of fission rates. More... | |
subroutine, private | count_fission_rates_reaclib_format (fission_rate_file, count_rates) |
Count the amount of fission rates in reaclib format. More... | |
subroutine, private | count_fission_rates_halflife_format (fission_rate_file, count_rates) |
subroutine, private | count_fission_rates_probability_format (fission_rate_file, count_rates, nr_cols) |
subroutine | add_fission_fragments () |
Initializes the rates with fragments. More... | |
subroutine, private | read_fission_rates () |
Read the fission rates, splitted into different types of fission. More... | |
subroutine, private | read_fission_rates_reaclib_format (fission_path, reac_type, start_idx) |
subroutine, private | read_fission_rates_probability_format (fission_path, reac_type, start_idx) |
subroutine, private | read_fission_rates_halflife_format (fission_path, reac_type, start_idx) |
subroutine, private | fiss_dist (fissrate_inout) |
Determines fission fragment mass distribution as described in Panov et al. 2001. More... | |
subroutine, private | kodtakdist (fissrate_inout) |
Kodama-Takahashi distribution. More... | |
subroutine | read_fiss_fragment_file (file, fragment_array) |
subroutine | file_fiss_frag (fissrate_inout, missing_frags) |
Fill the rates with the correct fragments. More... | |
subroutine, private | abla_nfiss (pos, mass, pnr, neutfission, qval) |
Calculates the (neutron-induced) fission fragment mass distribution according to the ABLA07 model: Kelic, Ricciardi, & Schmidt (arXiv:0906.4193) More... | |
subroutine, private | abla_betafiss (pos, mass, pnr, betafission, qval) |
Calculates the (beta-delayed and spontaneous) fission fragment mass distribution according to the ABLA07 model: Kelic, Ricciardi, & Schmidt (arXiv:0906.4193) More... | |
Variables | |
type(fissionrate_type), dimension(:), allocatable, public | fissrate |
Array storing fission reactions. More... | |
real(r_kind), dimension(:,:), allocatable, private | beta_delayed_fiss_probs |
integer, private | amount_cols |
Amount of columns in the beta-delayed fission file. More... | |
character(len= *), parameter, private | fiss_binary_name ='fiss_rates.windat' |
Name of the binary file containing the fission rates. More... | |
type(fragtype), dimension(:), allocatable, private | fissfrags_n_induced |
Array storing fragment distributions of neutron-induced fission from file. More... | |
type(fragtype), dimension(:), allocatable, private | fissfrags_spontaneous |
Array storing fragment distributions of spontaneous fission from file. More... | |
type(fragtype), dimension(:), allocatable, private | fissfrags_beta_delayed |
Array storing fragment distributions of beta-delayed fission from file. More... | |
integer, parameter, public | fiss_neglect =5 |
Amount of fission fragments not to be neglected. More... | |
integer, public | nfiss |
Amount of fission rates. More... | |
integer, private | nfiss_spont |
Amount of spontaneous fission rates. More... | |
integer, private | nfiss_n_ind |
Amount of neutron induced fission rates. More... | |
integer, private | nfiss_bdel |
Amount of beta-delayed fission rates. More... | |
integer, private | nufiss |
total number of fission neutrons More... | |
integer, private | n_nf |
integer, private | n_bf |
integer, private | n_sf |
Amount of individual reactions. More... | |
Module to deal with fission reactions.
This module contains subroutines to read fission reactions and fission fragment distributions. Furthermore, it counts the amount of reactions. Many subroutines here were originally implemented by M. Eichler and C. Winteler.
|
private |
Calculates the (beta-delayed and spontaneous) fission fragment mass distribution according to the ABLA07 model: Kelic, Ricciardi, & Schmidt (arXiv:0906.4193)
Definition at line 2823 of file fission_rate_module.f90.
|
private |
Calculates the (neutron-induced) fission fragment mass distribution according to the ABLA07 model: Kelic, Ricciardi, & Schmidt (arXiv:0906.4193)
Definition at line 2589 of file fission_rate_module.f90.
subroutine fission_rate_module::add_fission_fragments |
Initializes the rates with fragments.
This routine initializes the fission rates with the specified fragments. The fragments can differ for the types of fission.
Edited:
Definition at line 1078 of file fission_rate_module.f90.
subroutine fission_rate_module::check_fission_mass_conservation |
Check the mass conservation during the fission process.
This subroutine ensures that the total number of nucleons is conserved during fission reactions. It calculates the number of nucleons created and destroyed for each fission rate, checks for discrepancies against a defined error threshold, and raises an exception if the mass conservation is violated. If small deviations are within the threshold, the subroutine rescales the fragments accordingly.
Definition at line 154 of file fission_rate_module.f90.
|
private |
Count the amount of fission rates.
This subroutine counts the amount of fission rates and stores the result in nfiss. In case that a new fission type will be implemented, the reaction rates should be counted here. The different formats for the different types of fission reactions are:
Type | Value | Description |
---|---|---|
Spontaneous | 0 | No rates are read |
Spontaneous | 1 | Reaclib format |
Spontaneous | 2 | Half life format |
n-induced | 0 | No rates are read |
n-induced | 1 | Reaclib format |
\(\beta\)-delayed | 0 | No rates are read |
\(\beta\)-delayed | 1 | Reaclib format |
\(\beta\)-delayed | 2 | Half life format |
\(\beta\)-delayed | 3 | Probability format |
Definition at line 764 of file fission_rate_module.f90.
|
private |
[in] | fission_rate_file | File containing fission rates |
[out] | count_rates | Amount of fission rates |
Definition at line 911 of file fission_rate_module.f90.
|
private |
[in] | fission_rate_file | File containing fission rates |
[out] | count_rates | Amount of fission rates |
[out] | nr_cols | Number of columns in the file |
Definition at line 994 of file fission_rate_module.f90.
|
private |
Count the amount of fission rates in reaclib format.
This subroutine counts the amount of fission rates in reaclib format and stores the result in count_rates. This is necessary to allocate the fission array with the correct length. The subroutine can be called for any kind of fission (spontaneous, n-induced, beta-delayed).
Edited:
[in] | fission_rate_file | File containing fission rates |
[out] | count_rates | Amount of fission rates |
Definition at line 842 of file fission_rate_module.f90.
subroutine fission_rate_module::file_fiss_frag | ( | type(fissionrate_type), intent(inout) | fissrate_inout, |
integer, intent(in), optional | missing_frags | ||
) |
Fill the rates with the correct fragments.
This subroutine fills the rates with the correct fragments from Mumpower et al. (2020). This subroutine makes use of the fragtype struct. If no fragment is found, the fragment distribution is set to the one given by missing_frags. For beta-delayed fission the fissioning nucleus is the one of (Z+1, A) for neutron induced fission the nucleus with (Z, A+1), and for spontanous fission (not used within fissflag = 3) it is (Z,A).
[in,out] | fissrate_inout | Temporary fission rate |
[in] | missing_frags | Distribution to use if not in the file (1:panov, 2:kodama) |
Definition at line 2406 of file fission_rate_module.f90.
|
private |
Determines fission fragment mass distribution as described in Panov et al. 2001.
This routine is called for parameter_class::fissflag = 1 and fills the array fissrates with indices of the fragment nuclei.
[in,out] | fissrate_inout | Temporary fission rate |
Definition at line 1716 of file fission_rate_module.f90.
subroutine, public fission_rate_module::init_fission_rates |
Initialize the fission reactions.
This subroutine counts and reads fission reactions. After calling it fissrate will be filled as well as the integer nfiss will store the amount of fission reactions.
Definition at line 98 of file fission_rate_module.f90.
|
private |
Kodama-Takahashi distribution.
Subroutine that calculates fission fragment distribution as described in Kodama & Takahashi, Nuc. Phys. Sec.A, Vol. 239, Issue 3, p. 489-510, 1975.
Edited:
[in,out] | fissrate_inout | Temporary fission rate |
Definition at line 1898 of file fission_rate_module.f90.
subroutine, public fission_rate_module::merge_fission_rates | ( | type(reactionrate_type), dimension(:), intent(inout), allocatable | rrate_array, |
integer, intent(inout) | rrate_length, | ||
integer, intent(out) | fiss_count | ||
) |
Merge fission rates with larger array.
This subroutine will merge the fission rates. Since fission rates are treated separately, there is not really much to do. However, in case of beta-delayed fission, the half lifes of the beta decays have to be modified to include the fission rates.
[in,out] | rrate_array | Large rate array, containing all reactions |
[in,out] | rrate_length | length of rrate_array |
[out] | fiss_count | Amount of fission rates |
Definition at line 459 of file fission_rate_module.f90.
|
private |
Modifies half lifes of beta decays to include fission.
In case the beta delayed fission rates are given as a probability, the beta decays are rescaled to include the fission rates without changing the total half life. The fission rates are given by:
\[ \lambda_{\text{fiss}} =P_{\text{fiss}} * \lambda_{\beta} \]
where \(P_{\text{fiss}}\) is the probability of fission and \(\lambda_{\beta}\) is the beta decay rate as given initially in the Reaclib. The beta decay rate is then modified to
\[ \lambda_{\beta, new} = \left(1-P_{\text{fiss}}\right) * \lambda_{\beta} \]
There are special cases to consider, namely \(P_{\text{fiss}}=1\) in which case the reaclib rate has to be removed completely and
[in,out] | rrate | Large rate array, containing all reactions |
[in,out] | rrate_length | length of rrate_array |
[in,out] | fissrate_in | Fission rate array |
[in,out] | nfiss_in | Amount of fission rates |
Definition at line 516 of file fission_rate_module.f90.
subroutine, public fission_rate_module::output_binary_fission_reaction_data | ( | character(len=*), intent(in) | path | ) |
Save the fission data to a unformatted binary file.
This subroutine saves the fission data to a unformatted binary file.
Definition at line 387 of file fission_rate_module.f90.
|
private |
Read the fission reactions and fragment distributions from a binary file.
This subroutine reads the fission reactions and fragment distributions from a binary, unformatted file. The file is assumed to be created beforehand. It is only read when use_prepared_network is set to true.
[in] | path | Path to folder with binary files |
Definition at line 291 of file fission_rate_module.f90.
subroutine fission_rate_module::read_fiss_fragment_file | ( | character(len=*), intent(in) | file, |
type(fragtype), dimension(:), intent(out), allocatable | fragment_array | ||
) |
[in] | file | File path to fission fragment file |
[out] | fragment_array | Array of fission fragments |
Definition at line 2192 of file fission_rate_module.f90.
|
private |
Read the fission rates, splitted into different types of fission.
This routine serves as interface between the reading routines and the different fission formats and types. In case a new type of fission will be implemented, the reaction rates should be read here. The different formats for the different types of fission reactions are:
Type | Value | Description |
---|---|---|
Spontaneous | 0 | No rates are read |
Spontaneous | 1 | Reaclib format |
Spontaneous | 2 | Half life format |
n-induced | 0 | No rates are read |
n-induced | 1 | Reaclib format |
\(\beta\)-delayed | 0 | No rates are read |
\(\beta\)-delayed | 1 | Reaclib format |
\(\beta\)-delayed | 2 | Half life format |
\(\beta\)-delayed | 3 | Probability format |
Definition at line 1279 of file fission_rate_module.f90.
|
private |
[in] | fission_path | Path to fission rates file |
[in] | reac_type | Reaction type |
[in,out] | start_idx | Start index for fission rates |
Definition at line 1618 of file fission_rate_module.f90.
|
private |
[in] | fission_path | Path to fission rates file |
[in] | reac_type | Reaction type |
[in,out] | start_idx | Start index for fission rates |
Definition at line 1505 of file fission_rate_module.f90.
|
private |
[in] | fission_path | Path to fission rates file |
[in] | reac_type | Reaction type |
[in,out] | start_idx | Start index for fission rates |
Definition at line 1371 of file fission_rate_module.f90.
|
private |
Reorder the fission fragments.
Subroutine to reorder the fragments, having the ones with the largest ch_amount at the beginning. This is benificial as we can ignore some of the entries in the jacobian in case the parent abundance is zero.
Definition at line 219 of file fission_rate_module.f90.
|
private |
Write the amount of individual reactions to the out.
The rates are always counted, for a certain verbose level they are also printed to the OUT file
Definition at line 255 of file fission_rate_module.f90.
|
private |
Amount of columns in the beta-delayed fission file.
Definition at line 42 of file fission_rate_module.f90.
|
private |
Definition at line 41 of file fission_rate_module.f90.
|
private |
Name of the binary file containing the fission rates.
Definition at line 45 of file fission_rate_module.f90.
integer, parameter, public fission_rate_module::fiss_neglect =5 |
Amount of fission fragments not to be neglected.
Definition at line 66 of file fission_rate_module.f90.
|
private |
Array storing fragment distributions of beta-delayed fission from file.
Definition at line 61 of file fission_rate_module.f90.
|
private |
Array storing fragment distributions of neutron-induced fission from file.
Definition at line 59 of file fission_rate_module.f90.
|
private |
Array storing fragment distributions of spontaneous fission from file.
Definition at line 60 of file fission_rate_module.f90.
type(fissionrate_type), dimension(:), allocatable, public fission_rate_module::fissrate |
Array storing fission reactions.
Definition at line 39 of file fission_rate_module.f90.
|
private |
Definition at line 74 of file fission_rate_module.f90.
|
private |
Definition at line 74 of file fission_rate_module.f90.
|
private |
Amount of individual reactions.
Definition at line 74 of file fission_rate_module.f90.
integer, public fission_rate_module::nfiss |
Amount of fission rates.
Definition at line 68 of file fission_rate_module.f90.
|
private |
Amount of beta-delayed fission rates.
Definition at line 71 of file fission_rate_module.f90.
|
private |
Amount of neutron induced fission rates.
Definition at line 70 of file fission_rate_module.f90.
|
private |
Amount of spontaneous fission rates.
Definition at line 69 of file fission_rate_module.f90.
|
private |
total number of fission neutrons
Definition at line 72 of file fission_rate_module.f90.