fission_rate_module Module Reference

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

Detailed Description

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.

Remarks
All subroutines have often been existed at other places in the network and possibly as parts of other subroutines.

Function/Subroutine Documentation

◆ abla_betafiss()

subroutine, private fission_rate_module::abla_betafiss ( integer, intent(in)  pos,
integer, intent(in)  mass,
integer, intent(in)  pnr,
integer, intent(in)  betafission,
real(r_kind), intent(out)  qval 
)
private

Calculates the (beta-delayed and spontaneous) fission fragment mass distribution according to the ABLA07 model: Kelic, Ricciardi, & Schmidt (arXiv:0906.4193)

See also
Kelic et al. 2009

Definition at line 2742 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ abla_nfiss()

subroutine, private fission_rate_module::abla_nfiss ( integer, intent(in)  pos,
integer, intent(in)  mass,
integer, intent(in)  pnr,
integer, intent(in)  neutfission,
real(r_kind), intent(out)  qval 
)
private

Calculates the (neutron-induced) fission fragment mass distribution according to the ABLA07 model: Kelic, Ricciardi, & Schmidt (arXiv:0906.4193)

See also
Kelic et al. 2009

Definition at line 2508 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ add_fission_fragments()

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:

  • 31.05.2024 (MR): Created this subroutine from code parts contained in other routines

Definition at line 1006 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ count_fission_rates()

subroutine, private fission_rate_module::count_fission_rates
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:

Fission formats
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
See also
read_fission_rates
Author
M. Reichert
Date
25.01.21

Definition at line 692 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ count_fission_rates_halflife_format()

subroutine, private fission_rate_module::count_fission_rates_halflife_format ( character(len=*), intent(in)  fission_rate_file,
integer, intent(out)  count_rates 
)
private
Parameters
[in]fission_rate_fileFile containing fission rates
[out]count_ratesAmount of fission rates

Definition at line 839 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ count_fission_rates_probability_format()

subroutine, private fission_rate_module::count_fission_rates_probability_format ( character(len=*), intent(in)  fission_rate_file,
integer, intent(out)  count_rates,
integer, intent(out)  nr_cols 
)
private
Parameters
[in]fission_rate_fileFile containing fission rates
[out]count_ratesAmount of fission rates
[out]nr_colsNumber of columns in the file

Definition at line 922 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ count_fission_rates_reaclib_format()

subroutine, private fission_rate_module::count_fission_rates_reaclib_format ( character(len=*), intent(in)  fission_rate_file,
integer, intent(out)  count_rates 
)
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:

  • 30.05.2024 (MR): Made this its own subroutine to add more file formats
Parameters
[in]fission_rate_fileFile containing fission rates
[out]count_ratesAmount of fission rates

Definition at line 770 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ file_fiss_frag()

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

Author
M. Reichert
Date
14.02.2023
Parameters
[in,out]fissrate_inoutTemporary fission rate
[in]missing_fragsDistribution to use if not in the file (1:panov, 2:kodama)

Definition at line 2333 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ fiss_dist()

subroutine, private fission_rate_module::fiss_dist ( type(fissionrate_type), intent(inout)  fissrate_inout)
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.

See also
Panov et al., Nuc. Phys. A688 2001
Author
C. Winteler
Parameters
[in,out]fissrate_inoutTemporary fission rate

Definition at line 1644 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ init_fission_rates()

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.

Author
M. Reichert
Date
25.01.21

Definition at line 98 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ kodtakdist()

subroutine, private fission_rate_module::kodtakdist ( type(fissionrate_type), intent(inout)  fissrate_inout)
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.

See also
Kodama & Takahashi 1975

Edited:

  • 11.01.14
  • 05.12.17 (ME)
  • 30.05.2024 (MR): Fixed bug related to neutron emission if fragment was not in Sunet
Author
C. Winteler
Parameters
[in,out]fissrate_inoutTemporary fission rate

Definition at line 1826 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ merge_fission_rates()

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.

Note
The other fission rate array fissrate will exist independently and are used to calculate the correct equations for the fission fragments in jacobian_class::jacobi_init, jacobian_class::abchange.
Author
M. Reichert
Date
25.01.21
Parameters
[in,out]rrate_arrayLarge rate array, containing all reactions
[in,out]rrate_lengthlength of rrate_array
[out]fiss_countAmount of fission rates

Definition at line 387 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ modify_halflifes()

subroutine, private fission_rate_module::modify_halflifes ( type(reactionrate_type), dimension(:), intent(inout), allocatable  rrate,
integer, intent(inout)  rrate_length,
type(fissionrate_type), dimension(:), intent(inout), allocatable  fissrate_in,
integer, intent(inout)  nfiss_in 
)
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

Parameters
[in,out]rrateLarge rate array, containing all reactions
[in,out]rrate_lengthlength of rrate_array
[in,out]fissrate_inFission rate array
[in,out]nfiss_inAmount of fission rates

Definition at line 444 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ output_binary_fission_reaction_data()

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.

Author
M. Reichert
Date
21.07.23

Definition at line 315 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ read_binary_fission_reaction_data()

subroutine, private fission_rate_module::read_binary_fission_reaction_data ( character(len=*), intent(in)  path)
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.

Author
M. Reichert
Date
21.07.23
Parameters
[in]pathPath to folder with binary files

Definition at line 219 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ read_fiss_fragment_file()

subroutine fission_rate_module::read_fiss_fragment_file ( character(len=*), intent(in)  file,
type(fragtype), dimension(:), intent(out), allocatable  fragment_array 
)
Parameters
[in]fileFile path to fission fragment file
[out]fragment_arrayArray of fission fragments

Definition at line 2119 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ read_fission_rates()

subroutine, private fission_rate_module::read_fission_rates
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:

Fission formats
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
Author
M. Reichert
Date
31.05.2024

Definition at line 1207 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ read_fission_rates_halflife_format()

subroutine, private fission_rate_module::read_fission_rates_halflife_format ( character(len=*), intent(in)  fission_path,
integer, intent(in)  reac_type,
integer, intent(inout)  start_idx 
)
private
Parameters
[in]fission_pathPath to fission rates file
[in]reac_typeReaction type
[in,out]start_idxStart index for fission rates

Definition at line 1546 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ read_fission_rates_probability_format()

subroutine, private fission_rate_module::read_fission_rates_probability_format ( character(len=*), intent(in)  fission_path,
integer, intent(in)  reac_type,
integer, intent(inout)  start_idx 
)
private
Parameters
[in]fission_pathPath to fission rates file
[in]reac_typeReaction type
[in,out]start_idxStart index for fission rates

Definition at line 1433 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ read_fission_rates_reaclib_format()

subroutine, private fission_rate_module::read_fission_rates_reaclib_format ( character(len=*), intent(in)  fission_path,
integer, intent(in)  reac_type,
integer, intent(inout)  start_idx 
)
private
Parameters
[in]fission_pathPath to fission rates file
[in]reac_typeReaction type
[in,out]start_idxStart index for fission rates

Definition at line 1299 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ reorder_fragments()

subroutine, private fission_rate_module::reorder_fragments
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.

Author
M. Reichert
Date
22.02.23

Definition at line 147 of file fission_rate_module.f90.

Here is the call graph for this function:

◆ write_reac_verbose_out()

subroutine, private fission_rate_module::write_reac_verbose_out
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

Author
M. Reichert
Date
27.01.21

Definition at line 183 of file fission_rate_module.f90.

Here is the call graph for this function:

Variable Documentation

◆ amount_cols

integer, private fission_rate_module::amount_cols
private

Amount of columns in the beta-delayed fission file.

Definition at line 42 of file fission_rate_module.f90.

◆ beta_delayed_fiss_probs

real(r_kind), dimension(:,:), allocatable, private fission_rate_module::beta_delayed_fiss_probs
private

Definition at line 41 of file fission_rate_module.f90.

◆ fiss_binary_name

character(len=*), parameter, private fission_rate_module::fiss_binary_name ='fiss_rates.windat'
private

Name of the binary file containing the fission rates.

Definition at line 45 of file fission_rate_module.f90.

◆ fiss_neglect

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.

◆ fissfrags_beta_delayed

type(fragtype), dimension(:), allocatable, private fission_rate_module::fissfrags_beta_delayed
private

Array storing fragment distributions of beta-delayed fission from file.

Definition at line 61 of file fission_rate_module.f90.

◆ fissfrags_n_induced

type(fragtype), dimension(:), allocatable, private fission_rate_module::fissfrags_n_induced
private

Array storing fragment distributions of neutron-induced fission from file.

Definition at line 59 of file fission_rate_module.f90.

◆ fissfrags_spontaneous

type(fragtype), dimension(:), allocatable, private fission_rate_module::fissfrags_spontaneous
private

Array storing fragment distributions of spontaneous fission from file.

Definition at line 60 of file fission_rate_module.f90.

◆ fissrate

type(fissionrate_type), dimension(:), allocatable, public fission_rate_module::fissrate

Array storing fission reactions.

Definition at line 39 of file fission_rate_module.f90.

◆ n_bf

integer, private fission_rate_module::n_bf
private

Definition at line 74 of file fission_rate_module.f90.

◆ n_nf

integer, private fission_rate_module::n_nf
private

Definition at line 74 of file fission_rate_module.f90.

◆ n_sf

integer, private fission_rate_module::n_sf
private

Amount of individual reactions.

Definition at line 74 of file fission_rate_module.f90.

◆ nfiss

integer, public fission_rate_module::nfiss

Amount of fission rates.

Definition at line 68 of file fission_rate_module.f90.

◆ nfiss_bdel

integer, private fission_rate_module::nfiss_bdel
private

Amount of beta-delayed fission rates.

Definition at line 71 of file fission_rate_module.f90.

◆ nfiss_n_ind

integer, private fission_rate_module::nfiss_n_ind
private

Amount of neutron induced fission rates.

Definition at line 70 of file fission_rate_module.f90.

◆ nfiss_spont

integer, private fission_rate_module::nfiss_spont
private

Amount of spontaneous fission rates.

Definition at line 69 of file fission_rate_module.f90.

◆ nufiss

integer, private fission_rate_module::nufiss
private

total number of fission neutrons

Definition at line 72 of file fission_rate_module.f90.