decaydb.hh 5.98 KB
Newer Older
1
2
3
4
#ifndef RADIX_RADIXIO_DECAYDB_HH_
#define RADIX_RADIXIO_DECAYDB_HH_
#include <array>
#include <memory>
5
#include <string>
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <unordered_map>

namespace radix
{
struct DecayDBEntry
{
  /**
   * symbol
   **/
  int z;
  /**
   * atomic number
   **/
  int a;
  /**
   * metastable state
   **/
  int m;
  /**
   * The variable HALFL, physical half-life in seconds
   **/
  float halflife;
  /**
   * The variable Q(I) is the total amount of recoverable energy (MeV) per
  disintegration released by radioactive decay. It does not include the energy
  of neutrinos emitted during beta decay transitions.
   **/
  float energy;
  /**
   * The variable ABUND(I) is the atom percent abundance of naturally occurring
  isotopes. It is read by ORIGEN-S for light-element nuclides but is ignored
  for the actinide and fission-product nuclides.
   **/
  float abundance;
  /**
   * The variable FG(I) is the fraction of recoverable energy per disintegration
  that comes from gamma and X rays. In the ORIGEN-S libraries this
  fraction includes the energy from all decay gamma and X rays and from all
  gamma rays associated with spontaneous fission. Using an approximation for the
  combined spectra 11 of prompt and equilibrium fission-product gamma rays from
  spontaneous fission, a value of 12.56 MeV per spontaneous fission transition
  was calculated for use in determining FG for any nuclide having a
  spontaneous fission fraction exceeding 10 . Note that the definition of FG
  is not the same as that for the original ORIGEN -7 libraries. In those
  libraries, FG included only those photons with energies greater than 200
  keV. In addition, 1 it included the bremsstrahlung radiation from beta
  particles slowing down in a UO fuel matrix. 2 Bremsstrahlung radiation is
  not included in the values of FG in the ORIGEN-S libraries, since the
  bremsstrahlung spectrum depends on the medium that contains the decaying
  nuclide. Neither is the energy from gamma rays accompanying (*,n) reactions
  included, since it too depends on the medium.
   **/
  float photon_fraction;
  /**
    * The variables WMPC(I) and AMPC(I) are the radioactivity concentration
  guides for continuous ingestion (from water) and inhalation (from air) in
  unrestricted areas, in units of curies per cubic meter (Ci m ). -3 The RCG
  values, as defined in the pre-1991 version of Part 10, Title 20, of the Code
  of Federal Regulations16 (10CFR20), specify the maximum permissible
  concentrations of an isotope in soluble and insoluble forms, for both
  ingestion and inhalation, and for occupational and unrestricted exposure.
  When the activity (in curies) of a given isotope is divided by WMPC (or
  AMPC) for that isotope, the result is the volume of water (or air) required
  to dilute that quantity of the isotope to its maximum permissible
  concentration. The dilution volume is a measure of the radioactive toxicity
  of the nuclide for cases of direct ingestion or inhalation. The values of
  WMPC and AMPC are defined to be the smaller (i.e., more toxic) of the values
  for soluble and insoluble forms of the isotope.
   **/
  float wmpc;
  /**
    * The variables WMPC(I) and AMPC(I) are the radioactivity concentration
  guides for continuous ingestion (from water) and inhalation (from air) in
  unrestricted areas, in units of curies per cubic meter (Ci m ). -3 The RCG
  values, as defined in the pre-1991 version of Part 10, Title 20, of the Code
  of Federal Regulations16 (10CFR20), specify the maximum permissible
  concentrations of an isotope in soluble and insoluble forms, for both
  ingestion and inhalation, and for occupational and unrestricted exposure.
  When the activity (in curies) of a given isotope is divided by WMPC (or
  AMPC) for that isotope, the result is the volume of water (or air) required
  to dilute that quantity of the isotope to its maximum permissible
  concentration. The dilution volume is a measure of the radioactive toxicity
  of the nuclide for cases of direct ingestion or inhalation. The values of
  WMPC and AMPC are defined to be the smaller (i.e., more toxic) of the values
  for soluble and insoluble forms of the isotope.
   **/
  float ampc;
  /**
   *<ol><li> FB:  Fraction of decay transitions that take place by beta
  (negatron) emission and lead to a product nuclide in the ground state</li>
  <li>FB1: Fraction of decay transitions that take place by beta emission and
  lead to a product nuclide in an excited (metastable) nuclear state</li>
  <li>FP:  Fraction of decay transitions that take place by positron emission or
  orbital electron capture and lead to a product nuclide in the ground
  state</li> <li>FP1: Fraction of decay transitions that take place by positron
  emission or orbital electron capture and lead to a product nuclide in an
  excited nuclear state</li> <li>FA:  Fraction of decay transitions that take
  place by alpha particle emission</li> <li>FT:  Fraction of decay transitions
  that take place by isomeric transition</li> <li>FSF: Fraction of decay
  transitions that take place by spontaneous fission</li> <li>FN:  Fraction of
  decay transitions that take place by the emission of both a beta particle and
  a neutron</li>
  </ol>
   **/
  std::array<float, 8> fractions;
  int zaid() { return z * 10000 + a * 10 + m; }

};  // struct
class DecayDb
{
  std::unordered_map<int, DecayDBEntry> mActivation;
  std::unordered_map<int, DecayDBEntry> mActinide;
  std::unordered_map<int, DecayDBEntry> mFissionProduct;
  std::string mActivationTitle;
  std::string mActinideTitle;
  std::string mFissionProductTitle;

 public:
  DecayDb();
125
126
  float calculate_activity(int zaid, float lp_abundance, float ap_abundance,
                           float fp_abundance) const;
127
128
129
130
131
132
133
134
135
  std::string activation_title() const;
  std::string actinide_title() const;
  std::string fission_product_title() const;
  void set_activation_title(const std::string& title);
  void set_actinide_title(const std::string& title);
  void set_fission_product_title(const std::string& title);
};  // class
}  // namespace radix
#endif /** RADIX_RADIXIO_DECAYDB_HH_ */