Skip to content
Nuclear Engineering

nuclear-engineering-ai999x

Radioactive decay and decay chains, binding energy, reactor physics basics, radiation shielding and attenuation, and dosimetry.

83capabilities
10topics
83formulas typeset
8worked examples below
1.0.0version
About this model

What Nuclear Engineering does

Nuclear Engineering (nuclear-engineering-ai999x) is an offline Python package for nuclear engineering. It covers radioactive decay and decay chains, binding energy, reactor physics basics, radiation shielding and attenuation, and dosimetry.

It has 83 capabilities — 83 computational procedures — in 10 topics, the largest being Reactor physics, Detectors and counting, Neutron physics, Decay and activity, Shielding and dose and Reactor kinetics. Ask a question in words with ask(), or call a capability by name with typed inputs with solve(). Every answer carries its value and unit, the steps that produced it and the formula in LaTeX.

When a question is not determined — a value is missing, an input is out of range, or the request is outside the package — it says so and names what it needs, instead of guessing. It runs on an ordinary CPU without a network connection (Python >=3.10), and the same question always gets the same answer.

Install

pip install nuclear-engineering-ai999x
hf download AI999X/nuclear-engineering-ai999x --local-dir nuclear-engineering-ai999x

What it covers

Decay and activity10Activation with target depletion and product burn-up · Activity and specific activity of a mass of a radionuclide · Activity of a radionuclide and its progeny after a decay time …Detectors and counting15Compton edge and backscatter peak of a gamma line · Counting time for a target precision of the net count rate · Counts recorded from a decaying source (decay during counting) …Dosimetry5Committed effective dose from a dose coefficient · Committed equivalent dose to an organ from an intake (retention compartments) · Effective dose from organ equivalent doses and tissue weighting factors …Fuel cycle1Uranium enrichment: feed, tails and separative work (SWU)Neutron physics11Average logarithmic energy decrement and mean scattering cosine · Average number of collisions to slow a neutron down · Diffusion length from an exponential pile measurement …Reactor kinetics6Integral and differential control-rod worth (sine-squared weighting) · Power after a reactivity step (one delayed group, exact) · Power after a reactivity step (six delayed groups, exact) …Reactor physics20Approach to criticality: inverse multiplication (1/M) extrapolation · Critical radius of a bare cylindrical reactor of given height (one group) · Critical radius of a bare spherical reactor (one group) …Shielding1Half-value and tenth-value layersShielding and dose10Dose accumulated near a decaying source · Dose rate from a shielded point gamma source with buildup · Dose received passing a point source …Thermal hydraulics4Coolant temperature along a channel with a chopped-cosine power shape · Fuel centreline temperature with temperature-dependent conductivity · Fuel-rod radial temperatures: centreline, pellet surface and cladding …
Try it

Worked examples

Each question below was put to nuclear-engineering-ai999x and the answer shown is the one it returned, with the steps it took.

Decay and activitym.ask(…)

Specific activity: nuclide = Co-60, m = 1 g

A = 4.18689443e+13 1/s
A_Ci = 1131.593089
a = 4.18689443e+16 1/(kg*s)
a_Ci_per_g = 1131.593089
N = 1.004798494e+22
Show the steps
  1. Activity and specific activity of a mass of a radionuclide
    A = \lambda N = \frac{\ln 2}{T_{1/2}}\,\frac{m\,N_A}{M}
    with nuclide = Co-60, m = 1 g
    → A = 4.18689443e+13 1/s, A_Ci = 1131.593089 1/s, a = 4.18689443e+16 1/(kg*s), a_Ci_per_g = 1131.593089 1/s, N = 1.004798494e+22 1/s
Shielding and dosem.ask(…)

Point source dose rate: Gamma = 0.351 uSv*m^2/(MBq*h), A = 10 Ci, r = 2 m, mu = 0.0656 1/cm, x = 10 cm, buildup = linear

H_dot = 7.750139161e-06 J/(kg*s)
H_uSv_h = 27900.50098
B = 1.656
T = 0.8593362895
Show the steps
  1. Dose rate from a shielded point gamma source with buildup
    \dot H = \frac{\Gamma A}{r^2}\,B(\mu x)\,e^{-\mu x}
    with Gamma = 3.51e-13 (J/kg)*m^2/((1/s)*h), A = 3.7e+11 (1/s), r = 2 m, mu = 0.0656 1/cm, x = 10 cm, buildup = linear
    → H_dot = 7.750139161e-06 J/(kg*s), H_uSv_h = 27900.50098 J/(kg*s), B = 1.656 J/(kg*s), T = 0.8593362895 J/(kg*s)
Reactor physicsm.ask(…)

Critical sphere: D = 0.9 cm, Sigma_a = 0.15 1/cm, nuSigma_f = 0.18 1/cm, extrapolation = 2.13D

R = 0.1528913163 m
R_ext = 0.1720721163 m
V = 0.01497052629 m^3
Show the steps
  1. Critical radius of a bare spherical reactor (one group)
    \left(\frac{\pi}{R_{ext}}\right)^2 = \frac{\nu\Sigma_f-\Sigma_a}{D}
    with D = 0.9 cm, Sigma_a = 0.15 1/cm, nuSigma_f = 0.18 1/cm, extrapolation = 2.13D
    → R = 0.1528913163 m, R_ext = 0.1720721163 m, V = 0.01497052629 m^3
Reactor physicsm.ask(…)

Xenon after shutdown: Sigma_f = 0.1 1/cm, phi = 3e13 1/(cm^2*s), gamma_I = 0.0639, gamma_X = 0.00237, sigma_X = 2.65e6 b, t = 10 h

X = 3.723382215e+21 1/m^3
ratio = 1.883429887
t_peak = 30167.01507 s
peak_ratio = 1.901549197
I = 2.277591284e+21 1/m^3
Show the steps
  1. Xenon-135 after shutdown: concentration and peak
    X(t) = X_0e^{-\lambda_Xt} + \frac{\lambda_II_0}{\lambda_X-\lambda_I}\left(e^{-\lambda_It}-e^{-\lambda_Xt}\right)
    with Sigma_f = 0.1 1/cm, phi = 3e+13 1/(cm^2*s), gamma_I = 0.0639, gamma_X = 0.00237, sigma_X = 2.65e-22 m^2, t = 10 h
    → X = 3.723382215e+21 1/m^3, ratio = 1.883429887 1/m^3, t_peak = 30167.01507 s, peak_ratio = 1.901549197 1/m^3, I = 2.277591284e+21 1/m^3
Fuel cyclem.solve(…)
m.solve("nuc_enrichment_swu", x_p=0.045, x_f=0.00711, x_w=0.0025, P="1 kg")
F = 9.219088937 kg
W = 8.219088937 kg
SWU = 6.871112989 kg
F_per_P = 9.219088937
SWU_per_P = 6.871112989
Show the steps
  1. Uranium enrichment: feed, tails and separative work (SWU)
    SWU = P\,V(x_p) + W\,V(x_w) - F\,V(x_f),\quad V(x) = (2x-1)\ln\frac{x}{1-x}
    with x_p = 0.045, x_f = 0.00711, x_w = 0.0025, P = 1 kg
    → F = 9.219088937 kg, W = 8.219088937 kg, SWU = 6.871112989 kg, F_per_P = 9.219088937 kg, SWU_per_P = 6.871112989 kg
Detectors and countingm.ask(…)

Compton edge: E = 662 keV

T_max = 0.4776504094 MeV
E_bs = 0.1843495906 MeV
Show the steps
  1. Compton edge and backscatter peak of a gamma line
    T_{max} = \frac{2E^2}{m_ec^2 + 2E},\quad E_{bs} = \frac{E}{1+2E/m_ec^2}
    with E = 662 keV
    → T_max = 0.4776504094 MeV, E_bs = 0.1843495906 MeV
Dosimetrym.ask(…)

Committed dose from a dose coefficient: I = 1 MBq, e = 2.2e-8 Sv/Bq

E = 0.022 J/kg
E_mSv = 22
I_Bq = 1000000 1/s
Show the steps
  1. Committed effective dose from a dose coefficient
    E(50) = e(50)\,I
    with I = 1000000 (1/s), e = 2.2e-08 (J/kg)/(1/s)
    → E = 0.022 J/kg, E_mSv = 22, I_Bq = 1000000 1/s
Neutron physicsm.ask(…)

Collisions to thermalize: A = 12.0, E0 = 2 MeV, Ef = 0.025 eV

n = 115.3429277
xi = 0.1577689898
Show the steps
  1. Average number of collisions to slow a neutron down
    \bar n = \frac{\ln(E_0/E_f)}{\xi}
    with A = 12, E0 = 2 MeV, Ef = 0.025 eV
    → n = 115.3429277, xi = 0.1577689898
Use it

From Python or the command line

Every snippet was run as shown; the output under it is what it printed.

import nuclear_engineering_ai999x as m

a = m.ask("Specific activity: nuclide = Co-60, m = 1 g")
print(a.outcome)
print(a.values)
for step in a.steps:
    print(step["name"])
Output
SOLVED
{'A': 41868944303400.0, 'A_Ci': 1131.59308928, 'a': 4.18689443034e+16, 'a_Ci_per_g': 1131.59308928, 'N': 1.00479849416e+22}
Activity and specific activity of a mass of a radionuclide
Figures

Computed, not drawn by hand

Every value in these figures was computed by the package, each point a run of solve(); in a notebook, plot() and plot_relation() draw a capability's curves the same way.

A three-member decay chain

N_3 = N_{30}e^{-\lambda_3 t} + \frac{\lambda_2 N_{20}}{\lambda_3-\lambda_2}(e^{-\lambda_2 t}-e^{-\lambda_3 t}) + \lambda_1\lambda_2 N_{10}\sum_{i}\frac{e^{-\lambda_i t}}{\prod_{j\ne i}(\lambda_j-\lambda_i)}
A three-member decay chainA three-member decay chain (half-lives 100 s → 10 s → 1 s) with the activities the package computes at t = 50 s from a pure parent of 1000 Bq: parent 707.107 Bq, daughter 750.952 Bq, granddaughter 755.03 Bq, total 2213.09 Bq.parentT½ = 100 sA = 707.107 BqdaughterT½ = 10 sA = 750.952 BqgranddaughterT½ = 1 sA = 755.03 Bqactivities at t = 50 s from a pure parent of 1000 Bq; total 2213.09 Bq
A three-member decay chain (half-lives 100 s → 10 s → 1 s) with the activities the package computes at t = 50 s from a pure parent of 1000 Bq: parent 707.107 Bq, daughter 750.952 Bq, granddaughter 755.03 Bq, total 2213.09 Bq.

Decay-chain activities at five times

N_3 = N_{30}e^{-\lambda_3 t} + \frac{\lambda_2 N_{20}}{\lambda_3-\lambda_2}(e^{-\lambda_2 t}-e^{-\lambda_3 t}) + \lambda_1\lambda_2 N_{10}\sum_{i}\frac{e^{-\lambda_i t}}{\prod_{j\ne i}(\lambda_j-\lambda_i)}
Decay-chain activities at five timesActivities of the three members (parent / daughter / granddaughter) at five times, each from the package — the daughters overtake the parent and then decay with it in transient equilibrium: t = 10 s: 933.033 / 481.148 / 430.001 Bq; t = 50 s: 707.107 / 750.952 / 755.03 Bq; t = 100 s: 500 / 554.47 / 559.962 Bq; t = 200 s: 250 / 277.777 / 280.582 Bq; t = 400 s: 62.5 / 69.4444 / 70.1459 Bq.0250500750100010 s50 s100 s200 s400 sparentdaughtergranddaughtert — time since the parent was pure [s]activity [Bq]
Activities of the three members (parent / daughter / granddaughter) at five times, each from the package — the daughters overtake the parent and then decay with it in transient equilibrium: t = 10 s: 933.033 / 481.148 / 430.001 Bq; t = 50 s: 707.107 / 750.952 / 755.03 Bq; t = 100 s: 500 / 554.47 / 559.962 Bq; t = 200 s: 250 / 277.777 / 280.582 Bq; t = 400 s: 62.5 / 69.4444 / 70.1459 Bq.

The xenon transient after shutdown

X(t) = X_0e^{-\lambda_Xt} + \frac{\lambda_II_0}{\lambda_X-\lambda_I}\left(e^{-\lambda_It}-e^{-\lambda_Xt}\right)
The xenon transient after shutdownXenon-135 after a shutdown from a flux of 3.0000e+17 n/(m² s) (Σ_f = 10 1/m), relative to its equilibrium, at 144 times computed by the package: iodine decay builds xenon up before it decays away; marked: peak 1.90155 times equilibrium at t = 8.37973 h.020406000.511.52equilibrium1.90155 at 8.37973 hXe-135t — time after shutdown [h]X / X_eq — xenon-135
Xenon-135 after a shutdown from a flux of 3.0000e+17 n/(m² s) (Σ_f = 10 1/m), relative to its equilibrium, at 144 times computed by the package: iodine decay builds xenon up before it decays away; marked: peak 1.90155 times equilibrium at t = 8.37973 h.

Generator ingrowth: parent and daughter activity

A_D(t) = b\,A_{P0}\frac{\lambda_D}{\lambda_D-\lambda_P}\left(e^{-\lambda_P t}-e^{-\lambda_D t}\right)
Generator ingrowth: parent and daughter activityA Mo-99/Tc-99m generator: parent half-life 65.94 h, daughter 6.015 h, branching 0.8773, parent 37 GBq at t = 0; activities at 120 hourly times from the package; marked: the daughter's maximum 25.5251 GBq at t = 22.8646 h.050100010203025.5251 GBqparent (Mo-99)daughter (Tc-99m)t — time [h]activity [GBq]
A Mo-99/Tc-99m generator: parent half-life 65.94 h, daughter 6.015 h, branching 0.8773, parent 37 GBq at t = 0; activities at 120 hourly times from the package; marked: the daughter's maximum 25.5251 GBq at t = 22.8646 h.

Attenuation measurements and their exponential fit

\ln I = \ln I_0 - \mu x
Attenuation measurements and their exponential fitNarrow-beam attenuation on a logarithmic intensity axis, where the exponential law is a straight line: the five measured intensities and the fit by the package, μ = 65.3966 1/m with I₀ = 1000.02, drawn as I₀ times the transmission it computes at 51 thicknesses; half-value layer 1.05991 cm, tenth-value layer 3.52096 cm.0241001000HVLTVLfit, μ = 65.3966 1/mmeasurementsx — absorber thickness [cm]I — intensity (log scale)
Narrow-beam attenuation on a logarithmic intensity axis, where the exponential law is a straight line: the five measured intensities and the fit by the package, μ = 65.3966 1/m with I₀ = 1000.02, drawn as I₀ times the transmission it computes at 51 thicknesses; half-value layer 1.05991 cm, tenth-value layer 3.52096 cm.

Reactor power after a reactivity step: a table

\rho = \omega\Lambda + \sum_i\frac{\beta_i\,\omega}{\omega+\lambda_i},\quad \frac{P}{P_0} = \sum_j A_je^{\omega_jt}
Reactor power after a reactivity stepRelative reactor power P/P₀ after a step of reactivity (six delayed-neutron groups, β = 0.006502, Λ = 5.0000e-05 s): rows are the reactivities ρ = 0.0005, 0.001, 0.002, 0.003 (top to bottom), columns the times t = 0.1, 1, 5, 10, 30 s, every cell computed by the package (shaded by size); ρ = 0.0005: stable period 136.947 s; ρ = 0.001: stable period 54.964 s; ρ = 0.002: stable period 17.355 s; ρ = 0.003: stable period 7.1042 s; at ρ = 0.003 the power is 172.212 times its start after 30 s.1.0861.111.1781.2471.4881.1891.2461.4221.6172.4491.4641.6432.3023.24910.871.9012.3814.75410.07172.2t = 0.1 | 1 | 5 | 10 | 30 s →
Relative reactor power P/P₀ after a step of reactivity (six delayed-neutron groups, β = 0.006502, Λ = 5.0000e-05 s): rows are the reactivities ρ = 0.0005, 0.001, 0.002, 0.003 (top to bottom), columns the times t = 0.1, 1, 5, 10, 30 s, every cell computed by the package (shaded by size); ρ = 0.0005: stable period 136.947 s; ρ = 0.001: stable period 54.964 s; ρ = 0.002: stable period 17.355 s; ρ = 0.003: stable period 7.1042 s; at ρ = 0.003 the power is 172.212 times its start after 30 s.
Formulas

The mathematics inside

12 of its 83 formulas; every one is in the capability browser below.

Activity and specific activity of a mass of a radionuclide
A = \lambda N = \frac{\ln 2}{T_{1/2}}\,\frac{m\,N_A}{M}
Dose rate from a shielded point gamma source with buildup
\dot H = \frac{\Gamma A}{r^2}\,B(\mu x)\,e^{-\mu x}
Critical radius of a bare spherical reactor (one group)
\left(\frac{\pi}{R_{ext}}\right)^2 = \frac{\nu\Sigma_f-\Sigma_a}{D}
Xenon-135 after shutdown: concentration and peak
X(t) = X_0e^{-\lambda_Xt} + \frac{\lambda_II_0}{\lambda_X-\lambda_I}\left(e^{-\lambda_It}-e^{-\lambda_Xt}\right)
Uranium enrichment: feed, tails and separative work (SWU)
SWU = P\,V(x_p) + W\,V(x_w) - F\,V(x_f),\quad V(x) = (2x-1)\ln\frac{x}{1-x}
Compton edge and backscatter peak of a gamma line
T_{max} = \frac{2E^2}{m_ec^2 + 2E},\quad E_{bs} = \frac{E}{1+2E/m_ec^2}
Activation with target depletion and product burn-up
N_P = \frac{N_{T0}\sigma_T\phi}{\Lambda_P-\Lambda_T}\left(e^{-\Lambda_T t}-e^{-\Lambda_P t}\right),\ \Lambda_T=\sigma_T\phi,\ \Lambda_P=\lambda+\sigma_P\phi
Counting time for a target precision of the net count rate
T = \frac{(\sqrt{R_g}+\sqrt{R_b})^2}{(R_g-R_b)^2\,r^2}
Committed equivalent dose to an organ from an intake (retention compartments)
H_T(\tau) = \frac{w_R E}{m}\,I\sum_i f_i\frac{1-e^{-(\lambda_p+\lambda_{b,i})\tau}}{\lambda_p+\lambda_{b,i}}
Average logarithmic energy decrement and mean scattering cosine
\xi = 1 + \frac{\alpha\ln\alpha}{1-\alpha},\quad \alpha = \left(\frac{A-1}{A+1}\right)^2
Capabilities

Every capability, with an example

Search by name, formula, input or topic. Each capability opens to show what it takes, what it returns, when it applies, and a question it answered.

83 capabilities

Decay and activity 10

Activation with target depletion and product burn-upnuc_activation_with_burnup

The product activity when a high flux both depletes the target nuclide and burns up the product by its own absorption, the fraction of target left, and the time and value of the maximum product activity.

N_P = \frac{N_{T0}\sigma_T\phi}{\Lambda_P-\Lambda_T}\left(e^{-\Lambda_T t}-e^{-\Lambda_P t}\right),\ \Lambda_T=\sigma_T\phi,\ \Lambda_P=\lambda+\sigma_P\phi

Inputs

  • N_T0 initial number of target atoms
  • sigma_T target capture cross section (barns) [m^2]
  • sigma_P product absorption cross section (barns) [m^2]
  • phi neutron flux [1/(m^2*s)]
  • T_half half-life of the product [s]
  • t irradiation time [s]

Returns

  • A_P product activity at t [1/s]
  • f_T fraction of target atoms left
  • t_max irradiation time of maximum product activity [s]
  • A_max maximum product activity [1/s]

Applies when

  • constant flux
  • removal rates sigma_T phi and lambda + sigma_P phi differ

Example

m.ask("Activation with burnup: N_T0 = 1e+22, sigma_T = 37.18 b, sigma_P = 2 b, phi = 1e14 n/(cm^2*s), T_half = 166346024.445504 s, t = 1 y")
→ A_P = 4.30359e+12 1/s, f_T = 0.889291, t_max = 2.47908e+08 s, A_max = 1.4114e+13 1/s
Activity and specific activity of a mass of a radionuclidenuc_specific_activity

The activity of a stated mass of a named radionuclide, its specific activity (activity per unit mass) and the number of atoms, from its tabulated half-life and atomic mass.

A = \lambda N = \frac{\ln 2}{T_{1/2}}\,\frac{m\,N_A}{M}

Inputs

  • nuclide the radionuclide, written like Co-60, Cs-137, Tc-99m, U-235 choice
  • m mass of the radionuclide (the pure nuclide, not the compound) [kg]

Returns

  • A activity (Bq) [1/s]
  • A_Ci activity in curies
  • a specific activity (Bq/kg) [1/(kg*s)]
  • a_Ci_per_g specific activity in Ci/g
  • N number of atoms

Applies when

  • the nuclide is in the table (ICRP-107 half-lives, radioactivedecay 0.6.1)
  • m > 0

Example

m.ask("Specific activity: nuclide = Co-60, m = 1 g")
→ A = 4.18689e+13 1/s, A_Ci = 1131.59, a = 4.18689e+16 1/(kg*s), a_Ci_per_g = 1131.59, N = 1.0048e+22
Activity of a radionuclide and its progeny after a decay timenuc_chain_activity

Starting from a pure parent of stated activity, the activities of the parent, of its first daughter and of the whole chain (all radioactive progeny) after a time t, with the real branching fractions (Sr-90/Y-90, Mo-99/Tc-99m, Cs-137/Ba-137m, Ge-68/Ga-68, ...).

N_i(t) = \sum_j c_{ij}\,e^{-\lambda_j t},\quad c_{ij} = \frac{\sum_p b_{pi}\lambda_p c_{pj}}{\lambda_i - \lambda_j}

Inputs

  • nuclide the parent nuclide (Sr-90, Cs-137, Mo-99, Ge-68, W-188, Ru-106, Ce-144, Ba-140, Te-132, Sn-113, Sr-82, Zr-95, Sb-125, Pb-212, Te-131m, I-133, Pd-103, Ce-134, Ba-131, Hg-195m, Sr-91) choice
  • A0 activity of the pure parent at t = 0 [1/s]
  • t decay time [s]

Returns

  • A_parent activity of the parent at t [1/s]
  • A_daughter activity of the first daughter at t (Y-90, Ba-137m, Tc-99m, Ga-68, Re-188, Rh-106, Pr-144, La-140, I-132, In-113m, Rb-82, Nb-95, Te-125m, Bi-212, I-131, Xe-133, Rh-103m, La-134, Cs-131, Hg-195, Y-91m) [1/s]
  • A_total total activity of the parent and all radioactive progeny [1/s]
  • ratio daughter-to-parent activity ratio

Applies when

  • pure parent at t = 0
  • t >= 0
  • branching fractions and half-lives of radioactivedecay 0.6.1

Example

m.ask("Chain activity: nuclide = Mo-99, A0 = 1 Ci, t = 1 d")
→ A_parent = 2.87499e+10 1/s, A_daughter = 2.55061e+10 1/s, A_total = 5.4256e+10 1/s, ratio = 0.887172
Irradiation time to reach a fraction of saturation activitynuc_irradiation_time_for_saturation

How long a target must be irradiated (constant flux) for the induced activity to reach a stated fraction of its saturation value, in time and in product half-lives.

t_{irr} = -\frac{T_{1/2}}{\ln 2}\ln(1-f)

Inputs

  • T_half half-life of the product [s]
  • f fraction of the saturation activity (0 < f < 1)

Returns

  • t_irr irradiation time [s]
  • n_half irradiation time in half-lives

Applies when

  • constant flux
  • 0 < f < 1

Example

m.ask("Irradiation time for saturation: T_half = 15 h, f = 90%")
→ t_irr = 179384 s, n_half = 3.32193
Mass and number of atoms of a radionuclide with a given activitynuc_mass_for_activity

The mass and the number of atoms of a named radionuclide that has a stated activity (how much material a source of that strength contains).

m = \frac{A\,T_{1/2}}{\ln 2}\,\frac{M}{N_A}

Inputs

  • nuclide the radionuclide, written like Co-60, Cs-137, Tc-99m, U-235 choice
  • A activity (Bq, or Ci) [1/s]

Returns

  • m mass of the nuclide [kg]
  • m_ug mass in micrograms
  • N number of atoms

Applies when

  • the nuclide is in the table
  • A > 0

Example

m.ask("Mass for activity: nuclide = Tc-99m, A = 10 mCi")
→ m = 1.8984e-12 kg, m_ug = 0.0018984, N = 1.15588e+13
Neutron activation: activity after irradiation and decaynuc_activation_activity

The activity induced in a target by a neutron flux: at the end of irradiation, after a decay time, at saturation, and the saturation fraction reached (target depletion neglected).

A = N\sigma\phi\left(1-e^{-\lambda t_{irr}}\right)e^{-\lambda t_d}

Inputs

  • m mass of the target element [kg]
  • M molar mass of the target element [kg/mol]
  • theta isotopic abundance of the target nuclide
  • sigma activation cross section (barns) [m^2]
  • phi neutron flux [1/(m^2*s)]
  • T_half half-life of the product [s]
  • t_irr irradiation time [s]
  • t_d decay time after irradiation (0 when omitted) [s] optional

Returns

  • A_eoi activity at the end of irradiation [1/s]
  • A_d activity after the decay time [1/s]
  • A_sat saturation activity N sigma phi [1/s]
  • S saturation fraction 1 - e^(-lambda t_irr)

Applies when

  • constant flux
  • target depletion and product burn-up neglected
  • 0 < theta <= 1

Example

m.ask("Neutron activation: m = 1 g, M = 58.933195 g/mol, theta = 1.0, sigma = 37.18 b, phi = 1e13 n/(cm^2*s), T_half = 166346024.445504 s, t_irr = 30 d")
→ A_eoi = 4.08136e+10 1/s, A_d = 4.08136e+10 1/s, A_sat = 3.79927e+12 1/s, S = 0.0107425
Radionuclide generator: daughter activity after elution (with branching)nuc_generator_daughter_activity

The daughter activity available in a generator (Mo-99/Tc-99m, Ge-68/Ga-68, Sr-82/Rb-82 ...) a time t after the last complete elution, with the branching fraction to the daughter, plus when the daughter activity peaks and its peak value.

A_D(t) = b\,A_{P0}\frac{\lambda_D}{\lambda_D-\lambda_P}\left(e^{-\lambda_P t}-e^{-\lambda_D t}\right)

Inputs

  • A_P0 parent activity at the elution [1/s]
  • T_P half-life of the parent [s]
  • T_D half-life of the daughter [s]
  • b fraction of parent decays that produce the daughter (0 < b <= 1, e.g. 0.8773 for Mo-99 -> Tc-99m)
  • t time since the elution [s]

Returns

  • A_D daughter activity at t [1/s]
  • A_P parent activity at t [1/s]
  • ratio A_D / A_P
  • t_max time of maximum daughter activity [s]
  • A_D_max maximum daughter activity [1/s]

Applies when

  • daughter fully removed at the elution
  • 0 < b <= 1

Example

m.ask("Generator daughter activity: A_P0 = 1 Ci, T_P = 65.94 h, T_D = 6.015 h, b = 0.8773, t = 24 h")
→ A_D = 2.55061e+10 1/s, A_P = 2.87499e+10 1/s, ratio = 0.887172, t_max = 82312.6 s, A_D_max = 2.55251e+10 1/s
Three-member decay chain with initial activities (Bateman)nuc_three_member_chain

Activities of the three radioactive members of a chain 1 -> 2 -> 3 after a time t, from their half-lives and the initial activity of every member (the daughters need not start at zero).

N_3 = N_{30}e^{-\lambda_3 t} + \frac{\lambda_2 N_{20}}{\lambda_3-\lambda_2}(e^{-\lambda_2 t}-e^{-\lambda_3 t}) + \lambda_1\lambda_2 N_{10}\sum_{i}\frac{e^{-\lambda_i t}}{\prod_{j\ne i}(\lambda_j-\lambda_i)}

Inputs

  • T1 half-life of member 1 (the parent) [s]
  • T2 half-life of member 2 [s]
  • T3 half-life of member 3 [s]
  • A10 initial activity of member 1 [1/s]
  • A20 initial activity of member 2 (0 if none) [1/s]
  • A30 initial activity of member 3 (0 if none) [1/s]
  • t elapsed time [s]

Returns

  • A1 activity of member 1 [1/s]
  • A2 activity of member 2 [1/s]
  • A3 activity of member 3 [1/s]
  • A_total total activity [1/s]

Applies when

  • every decay of 1 gives 2 and of 2 gives 3 (no branching)
  • the half-lives differ
  • t >= 0

Example

m.ask("Three-member chain: T1 = 100.0 s, T2 = 10.0 s, T3 = 1.0 s, A10 = 1000.0 1/s, A20 = 0.0 1/s, A30 = 0.0 1/s, t = 50.0 s")
→ A1 = 707.107 1/s, A2 = 750.952 1/s, A3 = 755.03 1/s, A_total = 2213.09 1/s
Time of maximum daughter activitynuc_daughter_max_activity_time

When the activity of a radioactive daughter, growing from a pure parent, reaches its maximum, and how large it is then (it equals the parent's activity at that moment).

t_{max} = \frac{\ln(\lambda_D/\lambda_P)}{\lambda_D - \lambda_P}

Inputs

  • T_P half-life of the parent [s]
  • T_D half-life of the daughter [s]
  • A_P0 initial parent activity (optional: gives the maximum daughter activity) [1/s] optional

Returns

  • t_max time of maximum daughter activity [s]
  • ratio_max maximum daughter activity / initial parent activity
  • t_max_half_lives t_max in daughter half-lives
  • A_D_max maximum daughter activity (when A_P0 is given) [1/s]

Applies when

  • pure parent at t = 0
  • every parent decay gives the daughter

Example

m.ask("Daughter maximum activity time: T_P = 65.94 h, T_D = 6.015 h")
→ t_max = 82312.6 s, ratio_max = 0.786354, t_max_half_lives = 3.80127
Transient and secular equilibrium: activity ratio and approachnuc_equilibrium_ratio

The daughter-to-parent activity and atom ratios once equilibrium is reached (transient; close to 1 in secular equilibrium) and the time after which the activity ratio is within 1 % of it, starting from pure parent.

\frac{A_D}{A_P} = \frac{\lambda_D}{\lambda_D-\lambda_P}\left(1 - e^{-(\lambda_D-\lambda_P)t}\right)

Inputs

  • T_P half-life of the parent [s]
  • T_D half-life of the daughter (shorter than the parent's) [s]

Returns

  • ratio_A equilibrium activity ratio A_D/A_P = T_P/(T_P - T_D)
  • ratio_N equilibrium atom ratio N_D/N_P
  • t_99 time to reach 99 % of the equilibrium activity ratio [s]

Applies when

  • T_P > T_D
  • pure parent at t = 0
  • every parent decay gives the daughter

Example

m.ask("Equilibrium ratio: T_P = 237384.0 s, T_D = 21654.0 s")
→ ratio_A = 1.10038, ratio_N = 0.100375, t_99 = 158307 s

Detectors and counting 15

Compton edge and backscatter peak of a gamma linenuc_compton_edge

Where a gamma line's Compton edge (maximum electron energy) and backscatter peak (energy of a photon scattered through 180 degrees) appear in a detector's spectrum.

T_{max} = \frac{2E^2}{m_ec^2 + 2E},\quad E_{bs} = \frac{E}{1+2E/m_ec^2}

Inputs

  • E gamma-ray energy [J]

Returns

  • T_max Compton edge: maximum electron recoil energy (MeV) [MeV]
  • E_bs backscatter peak: energy of the photon scattered through 180 degrees (MeV) [MeV]

Applies when

  • free electron at rest

Example

m.ask("Compton edge: E = 662 keV")
→ T_max = 0.47765 MeV, E_bs = 0.18435 MeV
Counting time for a target precision of the net count ratenuc_count_time_for_precision

The total counting time (optimally split between sample and background) needed for the net count rate to have a stated relative standard deviation, and the two counting times.

T = \frac{(\sqrt{R_g}+\sqrt{R_b})^2}{(R_g-R_b)^2\,r^2}

Inputs

  • Rg gross count rate [1/s]
  • Rb background count rate [1/s]
  • r target relative standard deviation of the net count rate (e.g. 1%)

Returns

  • T total counting time [s]
  • tg gross counting time [s]
  • tb background counting time [s]

Applies when

  • Poisson statistics
  • optimal split tg/tb = sqrt(Rg/Rb)
  • Rg > Rb

Example

m.ask("Counting time for precision: Rg = 100 cps, Rb = 25 cps, r = 1%")
→ T = 400 s, tg = 266.667 s, tb = 133.333 s
Counts recorded from a decaying source (decay during counting)nuc_counts_during_decay

The expected number of counts recorded from a source that decays during the count, the mean activity during the count and the decay-correction factor that converts the mean activity to the activity at the start of counting.

N = \varepsilon\,y\,A_0e^{-\lambda t_d}\frac{1-e^{-\lambda t_c}}{\lambda}

Inputs

  • A0 activity at the reference time [1/s]
  • T_half half-life [s]
  • tc counting time [s]
  • eff detection efficiency (fraction of emitted radiations counted)
  • y emission probability per decay (1 when every decay is counted)
  • td delay from the reference time to the start of counting (0 when omitted) [s] optional

Returns

  • N expected counts
  • A_mean mean activity during the count [1/s]
  • F decay-correction factor: activity at the start of counting / mean activity

Applies when

  • 0 < eff <= 1
  • 0 < y <= 1
  • no dead-time losses

Example

m.ask("Counts during decay: A0 = 100 kBq, T_half = 6586.2 s, tc = 1 h, eff = 20%, y = 96.7%")
→ N = 5.79538e+07, A_mean = 83238.3 1/s, F = 1.20137
Currie critical level, detection limit and minimum detectable activitynuc_currie_detection_limits

Currie's (1968) decision threshold L_C = k sqrt(2B) and detection limit L_D = k^2 + 2 L_C (net counts, paired blank, alpha = beta = 0.05, k = 1.645) from the background counts B, and with the counting time, efficiency and emission yield the minimum detectable activity L_D/(eff y t).

L_C = k\sqrt{2B},\quad L_D = k^2 + 2k\sqrt{2B},\quad MDA = \frac{L_D}{\varepsilon\,y\,t}

Inputs

  • B background counts in the counting time
  • t counting time (optional, for the MDA) [s] optional
  • eff counting efficiency (optional, with t) optional
  • y emission yield per decay (default 1) optional

Returns

  • L_C critical level (net counts)
  • L_D detection limit (net counts)
  • MDA minimum detectable activity (Bq) [1/s]

Applies when

  • paired blank (same counting time)
  • alpha = beta = 0.05
  • Gaussian approximation of the counts

Example

m.ask("Currie detection limits: B = 100.0")
→ L_C = 23.2617, L_D = 49.229
Dead-time correction, non-paralyzable detectornuc_dead_time_nonparalyzable

The true event rate from the observed count rate of a non-paralyzable (non-extendable) detector with a stated dead time, the fraction of events lost and the correction factor.

n = \frac{m}{1 - m\tau}

Inputs

  • m observed count rate (cps, cpm) [1/s]
  • tau dead time (e.g. us) [s]

Returns

  • n true event rate [1/s]
  • loss fraction of events lost
  • corr correction factor n/m

Applies when

  • non-paralyzable (non-extendable) dead time
  • m tau < 1

Example

m.ask("Non-paralyzable dead time: m = 50000 cps, tau = 5 us")
→ n = 66666.7 1/s, loss = 0.25, corr = 1.33333
Dead-time correction, paralyzable detectornuc_dead_time_paralyzable

The true event rate from the observed count rate of a paralyzable (extendable) detector, on the stated branch of the rate curve (below or above the maximum), with the fraction lost and the largest observable count rate.

m = n\,e^{-n\tau}

Inputs

  • m observed count rate [1/s]
  • tau dead time [s]
  • branch branch of the rate curve: low (true rate below 1/tau) or high (above it) choice

Returns

  • n true event rate [1/s]
  • loss fraction of events lost
  • m_max largest observable count rate 1/(e tau) [1/s]

Applies when

  • paralyzable (extendable) dead time
  • m tau <= 1/e
  • the branch is stated (two true rates give the same m)

Example

m.ask("Paralyzable dead time: m = 50000 cps, tau = 5 us, branch = low")
→ n = 71480.6 1/s, loss = 0.300509, m_max = 73575.9 1/s
Expected count rate from a point source on a detector's axisnuc_count_rate_point_source

The count rate a detector of stated intrinsic efficiency records from a point source on its axis, from the activity, the emission probability per decay and the geometric efficiency of the detector face.

R = A\,y\,\varepsilon_{int}\,\frac{1}{2}\left(1-\frac{d}{\sqrt{d^2+a^2}}\right)

Inputs

  • A source activity [1/s]
  • y emission probability of the counted radiation per decay
  • d source-to-face distance [m]
  • a radius of the detector face [m]
  • eps_int intrinsic efficiency (counts per radiation reaching the face)

Returns

  • R expected count rate [1/s]
  • g geometric efficiency
  • R_cpm expected count rate in counts per minute

Applies when

  • point source on the axis
  • no dead time, no attenuation between source and detector

Example

m.ask("Count rate from a point source: A = 1 uCi, y = 85.1%, d = 10 cm, a = 2.54 cm, eps_int = 60%")
→ R = 290.719 1/s, g = 0.0153883, R_cpm = 17443.1
Half-life from a measured decay curve (weighted log-linear fit)nuc_decay_curve_fit

The decay constant, half-life, initial count and the standard error of the half-life from counts measured at several times (equal counting intervals), by a Poisson-weighted least-squares fit of ln C against t.

\min\sum_i C_i\left(\ln C_i - \ln C_0 + \lambda t_i\right)^2

Inputs

  • t measurement times, in the unit t_unit vector
  • C counts recorded at those times (equal counting intervals) vector
  • t_unit unit of the times in the list: s, min, h, d or y choice

Returns

  • lambda_ fitted decay constant [1/s]
  • T_half fitted half-life [s]
  • C0 fitted count at t = 0
  • sigma_T standard error of the half-life (Poisson weights) [s]

Applies when

  • a single radionuclide
  • counts positive and decreasing overall
  • weights w_i = C_i (Var ln C = 1/C)

Example

m.ask("Decay curve fit: t = [0.0, 1.0, 2.0, 3.0, 4.0], C = [10000.0, 7100.0, 5000.0, 3540.0, 2500.0], t_unit = h")
→ lambda_ = 9.62845e-05 1/s, T_half = 7198.95 s, C0 = 10012.6, sigma_T = 94.4047 s
Neutron flux from a measured foil activationnuc_flux_from_foil_activation

The neutron flux that irradiated an activation foil, from the foil's measured activity a decay time after an irradiation of known length, its mass, molar mass, isotopic abundance and activation cross section; with the saturation activity and the reaction rate per atom.

\phi = \frac{A_d\,e^{\lambda t_d}}{N\sigma\left(1-e^{-\lambda t_{irr}}\right)}

Inputs

  • A_d foil activity measured at the count [1/s]
  • m foil mass (target element) [kg]
  • M molar mass of the target element [kg/mol]
  • theta isotopic abundance of the target nuclide
  • sigma activation cross section (barns) [m^2]
  • T_half half-life of the product [s]
  • t_irr irradiation time [s]
  • t_d time from the end of irradiation to the count [s]

Returns

  • phi neutron flux [1/(m^2*s)]
  • A_sat saturation activity [1/s]
  • R_atom reaction rate per target atom sigma phi (1/s) [1/s]

Applies when

  • constant flux during the irradiation
  • thin foil (no self-shielding), no target depletion

Example

m.ask("Flux from foil activation: A_d = 20 kBq, m = 0.1 g, M = 196.97 g/mol, theta = 1.0, sigma = 98.65 b, T_half = 2.695 d, t_irr = 1 h, t_d = 30 min")
→ phi = 6.2543e+11 1/(m^2*s), A_sat = 1.88637e+06 1/s, R_atom = 6.16987e-15 1/s
Optimal division of counting time between sample and backgroundnuc_count_time_split

How to split a fixed total counting time between the sample (gross) count and the background count to minimise the standard deviation of the net count rate, and that minimum standard deviation.

\frac{t_g}{t_b} = \sqrt{\frac{R_g}{R_b}},\quad \sigma_{net} = \frac{\sqrt{R_g}+\sqrt{R_b}}{\sqrt{T}}

Inputs

  • T total counting time available [s]
  • Rg gross count rate (sample plus background) [1/s]
  • Rb background count rate [1/s]

Returns

  • tg time for the gross count [s]
  • tb time for the background count [s]
  • sigma minimum standard deviation of the net count rate [1/s]
  • rel relative standard deviation of the net count rate

Applies when

  • Poisson counting statistics
  • Rg > Rb > 0

Example

m.ask("Counting time split: T = 1 h, Rg = 100 cps, Rb = 25 cps")
→ tg = 2400 s, tb = 1200 s, sigma = 0.25 1/s, rel = 0.00333333
Single and double escape peaks of a gamma raynuc_escape_peaks

The energies of the single- and double-escape peaks (E - m_e c^2 and E - 2 m_e c^2) that pair production by a gamma ray above 1.022 MeV produces in a detector.

E_{SE} = E_\gamma - m_ec^2,\quad E_{DE} = E_\gamma - 2m_ec^2

Inputs

  • E gamma-ray energy (MeV, keV) [J]

Returns

  • single_escape_keV single-escape peak in keV
  • double_escape_keV double-escape peak in keV
  • annihilation_keV annihilation photon energy in keV
  • E_keV full-energy peak in keV

Applies when

  • E > 2 m_e c^2 = 1.022 MeV

Example

m.ask("Escape peaks: E = 2614 keV")
→ single_escape_keV = 2103, double_escape_keV = 1592, annihilation_keV = 510.999, E_keV = 2614
Solid angle and geometric efficiency of a disk detector (source on axis)nuc_solid_angle_on_axis

The solid angle subtended by a circular detector face (or aperture) at a point source on its axis and the geometric efficiency (fraction of isotropic emissions that hit it).

\Omega = 2\pi\left(1-\frac{d}{\sqrt{d^2+a^2}}\right)

Inputs

  • d distance from the source to the detector face [m]
  • a radius of the detector face [m]

Returns

  • Omega solid angle (sr)
  • g geometric efficiency Omega/(4 pi)

Applies when

  • point isotropic source on the axis

Example

m.ask("Solid angle on axis: d = 10 cm, a = 2.54 cm")
→ Omega = 0.193375, g = 0.0153883
Solid angle of a disk detector for an off-axis point sourcenuc_solid_angle_off_axis

The solid angle subtended by a circular detector face at a point source displaced sideways from its axis, and the geometric efficiency.

\Omega = \int_0^{2\pi}\left(1-\frac{d}{\sqrt{d^2+r_e(\varphi)^2}}\right)d\varphi

Inputs

  • d distance from the source to the plane of the detector face [m]
  • a radius of the detector face [m]
  • rho0 lateral offset of the source from the detector axis [m]

Returns

  • Omega solid angle (sr)
  • g geometric efficiency Omega/(4 pi)

Applies when

  • point isotropic source
  • flat circular face

Example

m.ask("Solid angle off axis: d = 5 cm, a = 2.5 cm, rho0 = 1 cm")
→ Omega = 0.637049, g = 0.0506947
Total and intrinsic efficiency of a slab detector for a point source on axisnuc_detector_efficiency_point_source

The total detection efficiency of a flat detector of given thickness and attenuation coefficient for a point source on its axis (every photon entering the front face crosses the thickness along its slant path), the geometric efficiency and the intrinsic efficiency.

\varepsilon = \frac12\int_{\cos\theta_{max}}^{1}\left(1-e^{-\mu t/u}\right)du

Inputs

  • d source-to-face distance [m]
  • a radius of the detector face [m]
  • t detector thickness [m]
  • mu total linear attenuation coefficient of the detector material [1/m]

Returns

  • eff total efficiency (interacting photons per emitted photon)
  • g geometric efficiency
  • intrinsic intrinsic efficiency eff/g

Applies when

  • point source on the axis
  • path length t/cos(theta) for every ray through the front face (side escape neglected)

Example

m.ask("Detector efficiency for a point source: d = 10 cm, a = 3.81 cm, t = 7.62 cm, mu = 0.28 1/cm")
→ eff = 0.0291542, g = 0.0327635, intrinsic = 0.889836
Two-component decay curve: amplitudes of two known half-livesnuc_two_component_decay_fit

Resolve a decay curve that is the sum of two radionuclides of known half-lives into the initial count of each component (Poisson-weighted linear least squares).

\min\sum_i\frac{\left(C_i - C_1e^{-\lambda_1t_i} - C_2e^{-\lambda_2t_i}\right)^2}{C_i}

Inputs

  • t measurement times, in the unit t_unit vector
  • C counts recorded at those times (equal intervals) vector
  • T1 half-life of component 1 [s]
  • T2 half-life of component 2 [s]
  • t_unit unit of the times in the list: s, min, h, d or y choice

Returns

  • C1 component 1 count at t = 0
  • C2 component 2 count at t = 0
  • frac1 fraction of the initial count due to component 1

Applies when

  • two components with known, different half-lives
  • weights 1/C_i (Poisson)

Example

m.ask("Two-component decay fit: t = [0.0, 1.0, 2.0, 4.0, 8.0, 16.0], C = [11000.0, 6000.0, 3500.0, 1625.0, 1062.0, 844.0], T1 = 1 h, T2 = 10 h, t_unit = h")
→ C1 = 8973.7, C2 = 1696.92, frac1 = 0.840973

Dosimetry 5

Committed effective dose from a dose coefficientnuc_committed_dose_coefficient

The committed effective dose E(50) = e(50) I of an intake I of a radionuclide with the dose coefficient e(50) (Sv/Bq, from ICRP tables for the route and chemical form).

E(50) = e(50)\,I

Inputs

  • I activity taken in (Bq, kBq, MBq, Ci ...) [1/s]
  • e dose coefficient e(50) (Sv/Bq) [J*s/kg]

Returns

  • E committed effective dose (Sv) [J/kg]
  • E_mSv committed effective dose in mSv
  • I_Bq intake in Bq [1/s]

Applies when

  • dose coefficient for the route, particle size and chemical form of the intake
  • e <= 1e-3 Sv/Bq

Example

m.ask("Committed dose from a dose coefficient: I = 1 MBq, e = 2.2e-8 Sv/Bq")
→ E = 0.022 J/kg, E_mSv = 22, I_Bq = 1e+06 1/s
Committed equivalent dose to an organ from an intake (retention compartments)nuc_committed_dose_retention

The number of decays in an organ over the commitment period after an intake retained in exponential compartments, and the committed equivalent dose from the energy absorbed per decay, the radiation weighting factor and the organ mass.

H_T(\tau) = \frac{w_R E}{m}\,I\sum_i f_i\frac{1-e^{-(\lambda_p+\lambda_{b,i})\tau}}{\lambda_p+\lambda_{b,i}}

Inputs

  • I activity taken into the organ (intake reaching it) [1/s]
  • f fractions of the intake retained in each compartment (sum <= 1) vector
  • Tb biological half-lives of the compartments, in the unit t_unit vector
  • t_unit unit of the times in the list: s, min, h, d or y choice
  • T_p physical half-life [s]
  • E energy absorbed in the organ per decay (e.g. MeV) [J]
  • w_R radiation weighting factor (1 for photons and electrons, 20 for alpha particles)
  • m organ mass [kg]
  • tau commitment period (50 y for adults) [s]

Returns

  • U number of decays in the organ during tau
  • H committed equivalent dose (Sv) [J/kg]
  • H_mSv committed equivalent dose in mSv

Applies when

  • instantaneous intake
  • retention R(t) = sum f_i e^(-lambda_b,i t)
  • all energy per decay absorbed in the organ as stated

Example

m.ask("Committed dose: I = 1 MBq, f = [0.3], Tb = [80.0], t_unit = d, T_p = 8.0207 d, E = 0.18 MeV, w_R = 1.0, m = 20 g, tau = 50 y")
→ U = 2.72601e+11, H = 0.393079 J/kg, H_mSv = 393.079
Effective dose from organ equivalent doses and tissue weighting factorsnuc_effective_dose

The effective dose E = sum w_T H_T from the equivalent doses of the irradiated tissues and their tissue weighting factors (stated; ICRP 103: 0.12 for red marrow, colon, lung, stomach, breast and the remainder, 0.08 gonads, 0.04 bladder, oesophagus, liver, thyroid, 0.01 bone surface, brain, salivary glands, skin).

E = \sum_T w_T\,H_T

Inputs

  • H equivalent dose of each tissue in mSv vector
  • w tissue weighting factor of each tissue (as stated) vector

Returns

  • E_mSv effective dose in mSv
  • E effective dose (Sv) [J/kg]
  • w_sum sum of the weighting factors given

Applies when

  • one weighting factor per tissue, 0 < w_T <= 1, sum at most 1
  • tissues not listed received no dose

Example

m.ask("Effective dose: H = [10.0, 5.0, 2.0], w = [0.12, 0.04, 0.01]")
→ E_mSv = 1.42, E = 0.00142 J/kg, w_sum = 0.17
Effective half-life (physical and biological removal)nuc_effective_half_life

The effective half-life of a radionuclide in the body or another system that removes it biologically while it decays, the effective decay constant and (with the initial activity) the total number of decays.

\frac{1}{T_{eff}} = \frac{1}{T_p} + \frac{1}{T_b}

Inputs

  • T_p physical half-life [s]
  • T_b biological half-life [s]
  • A0 initial activity in the body (optional) [1/s] optional

Returns

  • T_eff effective half-life [s]
  • lambda_eff effective removal constant [1/s]
  • N_decays total number of decays in the body (cumulated activity, when A0 is given)

Applies when

  • single-exponential biological removal

Example

m.ask("Effective half-life: T_p = 8.0207 d, T_b = 80 d")
→ T_eff = 629841 s, lambda_eff = 1.10051e-06 1/s
Radiation unit conversion (Bq and Ci, Gy and rad, Sv and rem)nuc_radiation_unit_conversion

An activity, absorbed dose or equivalent dose written in any of the SI or traditional units, expressed in both systems (1 Ci = 3.7e10 Bq, 1 rad = 0.01 Gy, 1 rem = 0.01 Sv).

1\ \mathrm{Ci} = 3.7\times10^{10}\ \mathrm{Bq},\quad 1\ \mathrm{rad} = 0.01\ \mathrm{Gy},\quad 1\ \mathrm{rem} = 0.01\ \mathrm{Sv}

Inputs

  • A an activity (Bq, kBq, MBq, Ci, mCi, uCi ...) [1/s] optional
  • D an absorbed dose (Gy, mGy, rad, mrad) [J/kg] optional
  • H an equivalent or effective dose (Sv, mSv, rem, mrem) [J/kg] optional

Returns

  • SI_value value in the SI unit (Bq, Gy or Sv)
  • traditional_value value in the traditional unit (Ci, rad or rem)
  • si_unit the SI unit
  • traditional_unit the traditional unit
  • value_mCi activity in mCi
  • value_MBq activity in MBq
  • value_mSv_or_mGy dose in mSv or mGy
  • value_mrem_or_mrad dose in mrem or mrad

Applies when

  • exactly one of A, D, H

Example

m.ask("Radiation unit conversion: A = 10 mCi")
→ SI_value = 3.7e+08, traditional_value = 0.01, si_unit = Bq, traditional_unit = Ci, value_mCi = 10, value_MBq = 370

Fuel cycle 1

Uranium enrichment: feed, tails and separative work (SWU)nuc_enrichment_swu

The natural-uranium feed and tails masses and the separative work (kg SWU) needed to produce a mass of enriched uranium from stated product, feed and tails assays, per kg of product too.

SWU = P\,V(x_p) + W\,V(x_w) - F\,V(x_f),\quad V(x) = (2x-1)\ln\frac{x}{1-x}

Inputs

  • x_p U-235 assay of the product (weight fraction, e.g. 4.5%)
  • x_f U-235 assay of the feed (0.711% for natural uranium)
  • x_w U-235 assay of the tails (e.g. 0.25%)
  • P mass of product [kg]

Returns

  • F feed mass [kg]
  • W tails mass [kg]
  • SWU separative work (kg SWU) [kg]
  • F_per_P feed per unit product
  • SWU_per_P kg SWU per kg of product

Applies when

  • tails < feed < product assays
  • value function V(x) = (2x - 1) ln(x/(1 - x))

Example

m.ask("Enrichment SWU: x_p = 4.5%, x_f = 0.711%, x_w = 0.25%, P = 1 kg")
→ F = 9.21909 kg, W = 8.21909 kg, SWU = 6.87111 kg, F_per_P = 9.21909, SWU_per_P = 6.87111

Neutron physics 11

Average logarithmic energy decrement and mean scattering cosinenuc_logarithmic_energy_decrement

For elastic scattering from a nucleus of mass ratio A (isotropic in the centre of mass): the minimum energy ratio alpha, the average logarithmic energy loss per collision xi and the average cosine of the laboratory scattering angle.

\xi = 1 + \frac{\alpha\ln\alpha}{1-\alpha},\quad \alpha = \left(\frac{A-1}{A+1}\right)^2

Inputs

  • A mass of the nucleus in neutron masses (mass number)

Returns

  • alpha minimum E'/E, ((A - 1)/(A + 1))^2
  • xi average logarithmic energy decrement
  • mu_bar average cosine of the lab scattering angle, 2/(3A)

Applies when

  • isotropic scattering in the centre-of-mass frame
  • A >= 1

Example

m.ask("Logarithmic energy decrement: A = 12.0")
→ alpha = 0.715976, xi = 0.157769, mu_bar = 0.0555556
Average number of collisions to slow a neutron downnuc_collisions_to_thermalize

The average number of elastic collisions with nuclei of mass ratio A needed to slow a neutron from E0 to Ef (for example from 2 MeV to 0.025 eV), from the lethargy change and xi.

\bar n = \frac{\ln(E_0/E_f)}{\xi}

Inputs

  • A mass of the moderator nucleus in neutron masses
  • E0 initial neutron energy [J]
  • Ef final neutron energy [J]

Returns

  • n average number of collisions
  • xi average logarithmic energy decrement

Applies when

  • isotropic CM scattering
  • E0 > Ef
  • a single nuclide moderator

Example

m.ask("Collisions to thermalize: A = 12.0, E0 = 2 MeV, Ef = 0.025 eV")
→ n = 115.343, xi = 0.157769
Diffusion length from an exponential pile measurementnuc_exponential_pile

The thermal diffusion length of a moderator from fluxes measured along the axis of an exponential pile (a source at the bottom of a prism of extrapolated sides a and b): least-squares relaxation constant gamma, then L from gamma^2 = 1/L^2 + (pi/a)^2 + (pi/b)^2.

\gamma^2 = \frac{1}{L^2} + \left(\frac{\pi}{a}\right)^2 + \left(\frac{\pi}{b}\right)^2

Inputs

  • z heights of the measurements along the axis, in cm (far from the source and the top) vector
  • phi measured fluxes or detector readings at those heights (any consistent unit) vector
  • a first extrapolated transverse side [m]
  • b second extrapolated transverse side [m]

Returns

  • gamma fitted relaxation constant [1/m]
  • L diffusion length [m]
  • L2 diffusion area L^2 [m^2]

Applies when

  • fundamental transverse mode only (points far from the source)
  • an effectively infinite pile (points far from the top)

Example

m.ask("Exponential pile: z = [20.0, 40.0, 60.0, 80.0, 100.0], phi = [10000.0, 6200.0, 3850.0, 2390.0, 1480.0], a = 2 m, b = 2 m")
→ gamma = 2.38717 1/m, L = 1.14423 m, L2 = 1.30927 m^2
Flux from a plane neutron source at the centre of a slabnuc_plane_source_slab_flux

The one-group thermal flux at a position in a non-multiplying slab of stated (extrapolated) thickness with a plane source of neutrons at its mid-plane, the flux at the source plane and the fraction of neutrons that leak from the two faces.

\phi(x) = \frac{SL}{2D}\,\frac{\sinh\left[(a/2-|x|)/L\right]}{\cosh\left[a/(2L)\right]}

Inputs

  • S source strength per unit area of the plane (neutrons/(m^2 s)) [1/(m^2*s)]
  • D diffusion coefficient [m]
  • Sigma_a absorption cross section [1/m]
  • a extrapolated slab thickness (source at the centre) [m]
  • x distance from the source plane [m]

Returns

  • phi flux at x [1/(m^2*s)]
  • phi0 flux at the source plane [1/(m^2*s)]
  • leak fraction of source neutrons leaking from the two faces

Applies when

  • one-group diffusion in a non-multiplying medium
  • flux zero at the extrapolated faces

Example

m.ask("Plane source in a slab: S = 1e8 1/(cm^2*s), D = 0.16 cm, Sigma_a = 0.0197 1/cm, a = 1 m, x = 10 cm")
→ phi = 2.66547e+11 1/(m^2*s), phi0 = 8.90588e+12 1/(m^2*s), leak = 4.80301e-08
Flux from a point neutron source at the centre of a spherenuc_point_source_sphere_flux

The one-group thermal flux at a radius in a non-multiplying sphere (extrapolated radius R) with an isotropic point source at its centre, the fraction of neutrons that leak out, and the flux the same source would give in an infinite medium.

\phi(r) = \frac{S}{4\pi D r}\,\frac{\sinh[(R-r)/L]}{\sinh(R/L)}

Inputs

  • S source strength (neutrons per second) [1/s]
  • D diffusion coefficient [m]
  • Sigma_a absorption cross section [1/m]
  • R extrapolated radius of the sphere [m]
  • r distance from the source [m]

Returns

  • phi flux at r [1/(m^2*s)]
  • leak fraction of source neutrons leaking out
  • phi_inf flux at r in an infinite medium [1/(m^2*s)]

Applies when

  • one-group diffusion in a non-multiplying medium
  • 0 < r < R

Example

m.ask("Point source in a sphere: S = 1e9 1/s, D = 0.16 cm, Sigma_a = 0.0197 1/cm, R = 50 cm, r = 10 cm")
→ phi = 1.48856e+10 1/(m^2*s), leak = 8.42667e-07, phi_inf = 1.48856e+10 1/(m^2*s)
Maxwellian-averaged 1/v cross sectionnuc_maxwellian_average_cross_section

The effective thermal cross section of a 1/v absorber averaged over a Maxwellian neutron flux at a stated neutron temperature, from its tabulated 2200 m/s value.

\bar\sigma = \frac{\sqrt\pi}{2}\,\sigma_0\sqrt{\frac{E_0}{kT}}

Inputs

  • sigma0 cross section at 2200 m/s (barns) [m^2]
  • T neutron temperature [K]

Returns

  • sigma_avg flux-averaged cross section [m^2]
  • sigma_avg_b the same in barns
  • g ratio sigma_avg/sigma0 = (sqrt(pi)/2) sqrt(E0/kT)

Applies when

  • 1/v cross section
  • Maxwellian flux spectrum phi(E) ~ E e^(-E/kT)
  • E0 = m_n (2200 m/s)^2/2

Example

m.ask("Maxwellian average cross section: sigma0 = 680.9 b, T = 293.6 K")
→ sigma_avg = 6.03412e-26 m^2, sigma_avg_b = 603.412, g = 0.886198
Moderating power and ratio of a compound moderatornuc_moderator_mixture

The macroscopic scattering and absorption cross sections of a compound moderator (water, heavy water, graphite, beryllium oxide, ...), its average logarithmic energy decrement (weighted by scattering), moderating power and moderating ratio.

\bar\xi = \frac{\sum_i\xi_i\Sigma_{s,i}}{\sum_i\Sigma_{s,i}},\quad MR = \frac{\bar\xi\Sigma_s}{\Sigma_a}

Inputs

  • n atoms of each element per molecule vector
  • A mass ratio (mass number) of each element vector
  • sigma_s scattering cross section of each element, in barns vector
  • sigma_a absorption cross section of each element, in barns vector
  • rho density of the moderator [kg/m^3]
  • M molar mass of the molecule [kg/mol]

Returns

  • xi average logarithmic energy decrement of the mixture
  • MP moderating power xi Sigma_s [1/m]
  • MR moderating ratio xi Sigma_s/Sigma_a (when Sigma_a > 0)

Applies when

  • isotropic CM scattering for every element
  • constant cross sections

Example

m.ask("Moderator mixture: n = [2.0, 1.0], A = [1.0, 16.0], sigma_s = [20.0, 3.8], sigma_a = [0.332, 0.00019], rho = 1 g/cm^3, M = 18.015 g/mol")
→ xi = 0.923648, MP = 135.238 1/m, MR = 60.91
Neutron energy and lab angle after an elastic collisionnuc_elastic_scattering

The energy of a neutron after elastic scattering from a nucleus of mass ratio A through a stated centre-of-mass angle, the energy ratio, the scattering angle in the laboratory and the lethargy gained.

\frac{E'}{E} = \frac{A^2+2A\cos\theta+1}{(A+1)^2}

Inputs

  • A mass of the nucleus in neutron masses (mass number; 1 for hydrogen)
  • E neutron energy before the collision [J]
  • theta scattering angle in the centre-of-mass frame (deg or rad) [rad]

Returns

  • E_out neutron energy after the collision [J]
  • ratio E'/E
  • psi scattering angle in the laboratory frame [rad]
  • du lethargy gain ln(E/E')

Applies when

  • elastic scattering from a nucleus at rest
  • A >= 1

Example

m.ask("Elastic scattering: A = 12.0, E = 2 MeV, theta = 90 deg")
→ E_out = 2.7493e-13 J, ratio = 0.857988, psi = 1.48766 rad, du = 0.153165
Number densities and macroscopic cross sections of UO2 fuelnuc_fuel_cross_sections

Atom densities of U-235, U-238 and oxygen in uranium dioxide of stated density and enrichment, its macroscopic absorption and fission cross sections, eta (neutrons per absorption in the fuel) and the absorption mean free path.

N_{25} = \frac{\rho N_A}{M_U + 2M_O}\,a_5,\quad \Sigma_a = \sum_i N_i\sigma_{a,i}

Inputs

  • rho density of the UO2 (e.g. 10.4 g/cm^3) [kg/m^3]
  • w enrichment: mass fraction of U-235 in the uranium
  • sigma_a5 U-235 absorption cross section (barns) [m^2]
  • sigma_f5 U-235 fission cross section (barns) [m^2]
  • sigma_a8 U-238 absorption cross section (barns) [m^2]
  • sigma_aO oxygen absorption cross section (barns) [m^2]
  • nu neutrons per fission of U-235

Returns

  • N5 U-235 atoms per volume [1/m^3]
  • N8 U-238 atoms per volume [1/m^3]
  • NO oxygen atoms per volume [1/m^3]
  • Sigma_a macroscopic absorption cross section [1/m]
  • Sigma_f macroscopic fission cross section [1/m]
  • eta eta = nu Sigma_f/Sigma_a of the fuel
  • mfp_a absorption mean free path 1/Sigma_a [m]

Applies when

  • stoichiometric UO2 with U-235 and U-238 only
  • atomic masses U-235 235.043928, U-238 238.050787, O 15.999 g/mol

Example

m.ask("Fuel cross sections: rho = 10.4 g/cm^3, w = 3%, sigma_a5 = 680.9 b, sigma_f5 = 582.6 b, sigma_a8 = 2.68 b, sigma_aO = 0.00019 b, nu = 2.43")
→ N5 = 7.04635e+26 1/m^3, N8 = 2.24954e+28 1/m^3, NO = 4.64001e+28 1/m^3, Sigma_a = 54.0082 1/m, Sigma_f = 41.052 1/m, eta = 1.84706, mfp_a = 0.0185157 m
Speeds and mean energy of thermal neutrons (Maxwell distribution)nuc_thermal_neutron_speeds

The most probable, mean and root-mean-square speeds and the mean kinetic energy of neutrons in thermal equilibrium (Maxwell-Boltzmann distribution) at a stated temperature.

v_p = \sqrt{\frac{2kT}{m_n}},\quad \bar v = \frac{2}{\sqrt\pi}v_p

Inputs

  • T neutron (moderator) temperature [K]

Returns

  • v_p most probable speed sqrt(2kT/m) [m/s]
  • v_mean mean speed [m/s]
  • v_rms root-mean-square speed [m/s]
  • E_mean mean kinetic energy 3kT/2 [J]
  • E_mean_eV mean kinetic energy in eV

Applies when

  • Maxwell-Boltzmann distribution of the neutron density
  • neutron mass 1.67492750056e-27 kg

Example

m.ask("Thermal neutron speeds: T = 293.6 K")
→ v_p = 2200.07 m/s, v_mean = 2482.51 m/s, v_rms = 2694.53 m/s, E_mean = 6.08038e-21 J, E_mean_eV = 0.0379507
Thermal diffusion length and migration lengthnuc_diffusion_length

The thermal diffusion length L = sqrt(D/Sigma_a) of a medium and, with the Fermi age tau, the migration area M^2 = L^2 + tau and migration length.

L = \sqrt{\frac{D}{\Sigma_a}},\quad M^2 = L^2 + \tau

Inputs

  • D diffusion coefficient (cm) [m]
  • Sigma_a macroscopic absorption cross section [1/m]
  • tau Fermi age to thermal (cm^2, optional) [m^2] optional

Returns

  • L diffusion length [m]
  • L2 diffusion area L^2 [m^2]
  • L_cm diffusion length in cm
  • M2 migration area L^2 + tau [m^2]
  • M migration length [m]

Applies when

  • D, Sigma_a > 0
  • one-group (thermal) diffusion theory

Example

m.ask("Diffusion length: D = 0.16 cm, Sigma_a = 0.0197 1/cm")
→ L = 0.0284988 m, L2 = 0.000812183 m^2, L_cm = 2.84988

Reactor kinetics 6

Integral and differential control-rod worth (sine-squared weighting)nuc_control_rod_worth

The reactivity worth of a control rod inserted to a depth x in a core of height H with a cosine axial flux (first-order perturbation: worth density ~ sin^2), as a fraction of its total worth, and the differential worth at that depth.

\frac{\rho(x)}{\rho_{tot}} = \frac{x}{H} - \frac{1}{2\pi}\sin\frac{2\pi x}{H}

Inputs

  • rho_tot total worth of the fully inserted rod (absolute, or in pcm, %, dollars or cents)
  • H core height [m]
  • x insertion depth from the top of the core [m]
  • beta delayed-neutron fraction (optional: converts a worth in dollars and reports dollars) optional

Returns

  • rho worth inserted (absolute)
  • frac fraction of the total worth
  • drho_dx differential worth at x (reactivity per metre) [1/m]
  • rho_dollars worth in dollars (when beta is given)

Applies when

  • cosine axial flux, flux zero at the core ends
  • first-order perturbation (small rod)

Example

m.ask("Control rod worth: rho_tot = 1000 pcm, H = 3.66 m, x = 1.83 m")
→ rho = 0.005, frac = 0.5, drho_dx = 0.00546448 1/m
Power after a reactivity step (one delayed group, exact)nuc_power_after_step_one_group

The relative power P(t)/P0 a time t after a step reactivity change from steady state, from the exact two-mode solution with one delayed group, with the amplitude of the stable period (the exact prompt jump or drop) and the inverse period.

\frac{P(t)}{P_0} = \sum_j A_je^{\omega_jt}

Inputs

  • rho step reactivity (absolute, or in pcm, %, dollars or cents)
  • beta delayed-neutron fraction beta
  • lam precursor decay constant of the single delayed group (e.g. 0.08 1/s) [1/s]
  • Lambda prompt neutron generation time [s]
  • t time after the step [s]

Returns

  • P relative power P(t)/P0
  • A1 amplitude of the stable mode (exact prompt jump or drop)
  • omega inverse stable period [1/s]

Applies when

  • point kinetics, one delayed group, steady state before the step
  • rho < beta, rho != 0

Example

m.ask("Power after a reactivity step one group: rho = 100 pcm, beta = 0.0065, lam = 0.08 1/s, Lambda = 1e-4 s, t = 10 s")
→ P = 1.36579, A1 = 1.18119, omega = 0.0145205 1/s
Power after a reactivity step (six delayed groups, exact)nuc_power_after_step_six_group

The relative power P(t)/P0 a time t after a step reactivity change from steady state with six (or any number up to eight) delayed-neutron groups, from all the inhour roots and their residues, and the stable period.

\rho = \omega\Lambda + \sum_i\frac{\beta_i\,\omega}{\omega+\lambda_i},\quad \frac{P}{P_0} = \sum_j A_je^{\omega_jt}

Inputs

  • rho step reactivity (absolute, or in pcm, %, dollars or cents)
  • beta delayed-neutron fraction of each group vector
  • lam decay constant of each group, in 1/s vector
  • Lambda prompt neutron generation time [s]
  • t time after the step [s]

Returns

  • P relative power P(t)/P0
  • omega inverse stable period [1/s]
  • T stable period [s]

Applies when

  • point kinetics, steady state before the step
  • rho < beta (sum of the groups), rho != 0
  • distinct decay constants

Example

m.ask("Power after a reactivity step six groups: rho = 100 pcm, beta = [0.000215, 0.001424, 0.001274, 0.002568, 0.000748, 0.000273], lam = [0.0124, 0.0305, 0.111, 0.301, 1.14, 3.01], Lambda = 50 us, t = 10 s")
→ P = 1.61699, omega = 0.0181937 1/s, T = 54.964 s
Reactivity from a measured stable period or doubling time (inhour)nuc_reactivity_from_period

The reactivity, in absolute units, dollars and pcm, that produces a measured stable period (or doubling time) with stated delayed-neutron data, from the inhour equation.

\rho = \frac{\Lambda}{T} + \sum_i\frac{\beta_i}{1+\lambda_iT}

Inputs

  • beta delayed-neutron fraction of each group vector
  • lam decay constant of each group, in 1/s vector
  • Lambda prompt neutron generation time [s]
  • T stable period (give this or T_d; negative for falling power) [s] optional
  • T_d doubling time (give this or T) [s] optional

Returns

  • rho reactivity
  • rho_dollars reactivity in dollars
  • rho_pcm reactivity in pcm

Applies when

  • point kinetics, asymptotic period
  • for a negative period: 1/T > -lambda_min

Example

m.ask("Reactivity from period: beta = [0.000215, 0.001424, 0.001274, 0.002568, 0.000748, 0.000273], lam = [0.0124, 0.0305, 0.111, 0.301, 1.14, 3.01], Lambda = 50 us, T = 60 s")
→ rho = 0.000940626, rho_dollars = 0.144667, rho_pcm = 94.0626
Stable period and prompt root of the inhour equation (six delayed groups)nuc_stable_period_six_group

The stable reactor period, inverse period and doubling time after a step reactivity change with six (or any number up to eight) delayed groups, and the prompt (most negative) root that sets the prompt jump's time constant.

\rho = \omega\Lambda + \sum_i\frac{\beta_i\,\omega}{\omega+\lambda_i}

Inputs

  • rho step reactivity (absolute, or in pcm, %, dollars or cents)
  • beta delayed-neutron fraction of each group vector
  • lam decay constant of each group, in 1/s vector
  • Lambda prompt neutron generation time [s]

Returns

  • omega inverse stable period (largest root) [1/s]
  • T stable period [s]
  • T_d doubling time (negative: halving time) [s]
  • omega_p prompt root (most negative) [1/s]

Applies when

  • point kinetics
  • rho < beta, rho != 0
  • distinct decay constants

Example

m.ask("Stable period six groups: rho = 100 pcm, beta = [0.000215, 0.001424, 0.001274, 0.002568, 0.000748, 0.000273], lam = [0.0124, 0.0305, 0.111, 0.301, 1.14, 3.01], Lambda = 50 us")
→ omega = 0.0181937 1/s, T = 54.964 s, T_d = 38.0982 s, omega_p = -110.523 1/s
Stable reactor period after a reactivity step (one delayed group)nuc_reactor_period_one_group

The stable (asymptotic) period, inverse period and doubling time of a reactor after a step reactivity change, with one effective delayed-neutron group (the stable root of the inhour equation).

\rho = \omega\Lambda + \frac{\beta\,\omega}{\omega+\lambda}

Inputs

  • rho step reactivity (absolute, or in pcm, %, dollars or cents)
  • beta delayed-neutron fraction beta
  • lam precursor decay constant of the single delayed group (e.g. 0.08 1/s) [1/s]
  • Lambda prompt neutron generation time [s]

Returns

  • omega inverse stable period (largest inhour root) [1/s]
  • T stable period (negative: falling power) [s]
  • T_d doubling time T ln 2 (negative: halving time) [s]

Applies when

  • point kinetics with one delayed group
  • rho below prompt critical (rho < beta)
  • rho != 0

Example

m.ask("Reactor period one group: rho = 100 pcm, beta = 0.0065, lam = 0.08 1/s, Lambda = 1e-4 s")
→ omega = 0.0145205 1/s, T = 68.8682 s, T_d = 47.7358 s

Reactor physics 20

Approach to criticality: inverse multiplication (1/M) extrapolationnuc_inverse_multiplication

Predict the critical loading (fuel elements, kg, rod position) from count rates measured as fuel is added, by extrapolating the inverse multiplication 1/M = C_0/C to zero: least-squares line through all points and the line through the last two.

\frac{1}{M} = \frac{C_0}{C},\quad x_{crit}: \frac{1}{M}(x_{crit}) = 0

Inputs

  • x loadings (fuel elements, kg or any consistent measure), first = reference vector
  • C count rates at those loadings (any consistent unit) vector

Returns

  • x_crit predicted critical loading (least-squares line through all points)
  • slope slope of 1/M per unit loading
  • x_crit_last2 predicted critical loading from the last two points
  • inv_M_last 1/M at the last loading

Applies when

  • 1/M referred to the first count rate
  • 1/M decreasing with loading
  • subcritical measurements

Example

m.ask("Inverse multiplication: x = [0.0, 20.0, 40.0, 60.0, 80.0], C = [100.0, 125.0, 167.0, 250.0, 500.0]")
→ x_crit = 99.976, slope = -0.01, x_crit_last2 = 100, inv_M_last = 0.2
Critical radius of a bare cylindrical reactor of given height (one group)nuc_critical_cylinder

The critical radius of a bare homogeneous cylinder of stated height in one-group diffusion theory, with its extrapolated radius and the physical volume.

\left(\frac{2.405}{R_{ext}}\right)^2 + \left(\frac{\pi}{H_{ext}}\right)^2 = B_m^2

Inputs

  • D diffusion coefficient (a length, e.g. cm) [m]
  • Sigma_a macroscopic absorption cross section [1/m]
  • nuSigma_f nu times the macroscopic fission cross section [1/m]
  • extrapolation extrapolation distance added at each free surface: none, 2D or 2.13D (= 0.71 transport mean free paths) choice
  • H physical height of the cylinder [m]

Returns

  • R critical physical radius [m]
  • R_ext critical extrapolated radius [m]
  • V critical physical volume [m^3]

Applies when

  • one-group diffusion
  • the height exceeds the critical slab thickness

Example

m.ask("Critical cylinder: D = 0.9 cm, Sigma_a = 0.15 1/cm, nuSigma_f = 0.18 1/cm, extrapolation = 2.13D, H = 50 cm")
→ R = 0.119829 m, R_ext = 0.139009 m, V = 0.0225549 m^3
Critical radius of a bare spherical reactor (one group)nuc_critical_sphere

The critical radius (physical and extrapolated) and volume of a bare homogeneous spherical reactor in one-group diffusion theory.

\left(\frac{\pi}{R_{ext}}\right)^2 = \frac{\nu\Sigma_f-\Sigma_a}{D}

Inputs

  • D diffusion coefficient (a length, e.g. cm) [m]
  • Sigma_a macroscopic absorption cross section [1/m]
  • nuSigma_f nu times the macroscopic fission cross section [1/m]
  • extrapolation extrapolation distance added at each free surface: none, 2D or 2.13D (= 0.71 transport mean free paths) choice

Returns

  • R critical physical radius [m]
  • R_ext critical extrapolated radius [m]
  • V critical physical volume [m^3]

Applies when

  • one-group diffusion
  • k_inf > 1
  • bare homogeneous sphere

Example

m.ask("Critical sphere: D = 0.9 cm, Sigma_a = 0.15 1/cm, nuSigma_f = 0.18 1/cm, extrapolation = 2.13D")
→ R = 0.152891 m, R_ext = 0.172072 m, V = 0.0149705 m^3
Critical thickness of a bare slab reactor (one group)nuc_critical_slab

The critical thickness of an infinite bare slab of multiplying material in one-group diffusion theory, the extrapolated thickness and the material buckling.

\left(\frac{\pi}{a_{ext}}\right)^2 = \frac{\nu\Sigma_f-\Sigma_a}{D}

Inputs

  • D diffusion coefficient (a length, e.g. cm) [m]
  • Sigma_a macroscopic absorption cross section [1/m]
  • nuSigma_f nu times the macroscopic fission cross section [1/m]
  • extrapolation extrapolation distance added at each free surface: none, 2D or 2.13D (= 0.71 transport mean free paths) choice

Returns

  • a critical physical thickness [m]
  • a_ext critical extrapolated thickness [m]

Applies when

  • one-group diffusion
  • k_inf > 1
  • bare slab, flux zero at the extrapolated faces

Example

m.ask("Critical slab: D = 0.9 cm, Sigma_a = 0.15 1/cm, nuSigma_f = 0.18 1/cm, extrapolation = 2.13D")
→ a = 0.133711 m, a_ext = 0.172072 m
Critical thickness of a reflected slab reactor and reflector savings (one group)nuc_reflected_slab_critical

The critical core thickness of a slab reactor with a reflector of stated thickness on both faces (one-group diffusion in core and reflector) and the reflector savings compared with the bare core.

D_cB\tan\frac{Ba}{2} = \frac{D_r}{L_r}\coth\frac{T_r+d}{L_r}

Inputs

  • D_c core diffusion coefficient [m]
  • Sigma_ac core absorption cross section [1/m]
  • nuSigma_fc core nu Sigma_f [1/m]
  • D_r reflector diffusion coefficient [m]
  • Sigma_ar reflector absorption cross section [1/m]
  • T_r reflector thickness on each face [m]
  • extrapolation extrapolation distance added at each free surface: none, 2D or 2.13D (= 0.71 transport mean free paths) choice

Returns

  • a critical core thickness [m]
  • delta reflector savings per face (bare extrapolated half-thickness minus reflected half-thickness) [m]

Applies when

  • one-group diffusion
  • non-multiplying reflector
  • extrapolation distance of the reflector at its outer face

Example

m.ask("Reflected slab critical: D_c = 0.9 cm, Sigma_ac = 0.15 1/cm, nuSigma_fc = 0.18 1/cm, D_r = 0.16 cm, Sigma_ar = 0.0197 1/cm, T_r = 20 cm, extrapolation = 2.13D")
→ a = 0.0360662 m, delta = 0.0680029 m
Critical third side of a bare rectangular reactor (one group)nuc_critical_cuboid

The third side that makes a bare rectangular parallelepiped of two stated sides critical in one-group diffusion theory, its extrapolated value and the physical volume.

\left(\frac{\pi}{a_{ext}}\right)^2+\left(\frac{\pi}{b_{ext}}\right)^2+\left(\frac{\pi}{c_{ext}}\right)^2 = B_m^2

Inputs

  • D diffusion coefficient (a length, e.g. cm) [m]
  • Sigma_a macroscopic absorption cross section [1/m]
  • nuSigma_f nu times the macroscopic fission cross section [1/m]
  • extrapolation extrapolation distance added at each free surface: none, 2D or 2.13D (= 0.71 transport mean free paths) choice
  • a first physical side [m]
  • b second physical side [m]

Returns

  • c critical physical third side [m]
  • c_ext critical extrapolated third side [m]
  • V critical physical volume [m^3]

Applies when

  • one-group diffusion
  • the two given sides are large enough

Example

m.ask("Critical cuboid: D = 0.9 cm, Sigma_a = 0.15 1/cm, nuSigma_f = 0.18 1/cm, extrapolation = 2.13D, a = 60 cm, b = 60 cm")
→ c = 0.147765 m, c_ext = 0.186126 m, V = 0.0531953 m^3
Decay heat after shutdown (Way-Wigner)nuc_decay_heat_power

The fission-product decay power a time t after shutdown of a reactor that ran at constant power for an operating time T, by the Way-Wigner correlation.

\frac{P_d}{P_0} = 0.0622\left[t^{-0.2} - (t+T)^{-0.2}\right]

Inputs

  • P0 thermal power before shutdown [W]
  • T_op operating time at that power [s]
  • t time after shutdown (10 s to about 1e8 s) [s]

Returns

  • P_d decay power [W]
  • ratio decay power / operating power

Applies when

  • constant power before shutdown
  • 10 s <= t <= 1e8 s

Example

m.ask("Decay heat: P0 = 3000 MW, T_op = 1 y, t = 1 h")
→ P_d = 3.03755e+07 W, ratio = 0.0101252
Decay heat energy released between two times after shutdownnuc_decay_heat_energy

The total fission-product decay energy released between two times after shutdown (the Way-Wigner power integrated), and the mean decay power over that interval.

E = 0.0622\,P_0\left[\frac{t^{0.8}-(t+T)^{0.8}}{0.8}\right]_{t_1}^{t_2}

Inputs

  • P0 thermal power before shutdown [W]
  • T_op operating time at that power [s]
  • t1 start of the interval after shutdown [s]
  • t2 end of the interval after shutdown [s]

Returns

  • E decay energy released [J]
  • E_MWh the same energy in MWh
  • P_mean mean decay power over the interval [W]

Applies when

  • 10 s <= t1 < t2 <= 1e8 s
  • constant power before shutdown

Example

m.ask("Decay heat energy: P0 = 3000 MW, T_op = 1 y, t1 = 10.0 s, t2 = 1 d")
→ E = 1.56376e+12 J, E_MWh = 434.377, P_mean = 1.81011e+07 W
Equilibrium iodine-135 and xenon-135 concentrationsnuc_xenon_equilibrium

The equilibrium I-135 and Xe-135 atom densities in fuel operating at a steady flux, the xenon absorptions per fission (its poisoning strength) and the flux at which xenon burn-out equals its decay.

X_\infty = \frac{(\gamma_I+\gamma_X)\Sigma_f\phi}{\lambda_X+\sigma_X\phi}

Inputs

  • Sigma_f macroscopic fission cross section of the fuel [1/m]
  • phi thermal flux during operation [1/(m^2*s)]
  • gamma_I cumulative fission yield of I-135 (e.g. 0.0639)
  • gamma_X direct fission yield of Xe-135 (e.g. 0.00237)
  • sigma_X Xe-135 absorption cross section (e.g. 2.65e6 b) [m^2]

Returns

  • I_eq equilibrium I-135 atoms per volume [1/m^3]
  • X_eq equilibrium Xe-135 atoms per volume [1/m^3]
  • abs_per_fission Xe-135 absorptions per fission at equilibrium

Applies when

  • constant flux
  • half-lives of I-135 (6.57 h) and Xe-135 (9.14 h) of radioactivedecay 0.6.1
  • Xe-135m neglected

Example

m.ask("Xenon equilibrium: Sigma_f = 0.1 1/cm, phi = 3e13 1/(cm^2*s), gamma_I = 0.0639, gamma_X = 0.00237, sigma_X = 2.65e6 b")
→ I_eq = 6.54131e+21 1/m^3, X_eq = 1.97692e+21 1/m^3, abs_per_fission = 0.0523883
Fundamental-mode flux shape of a bare reactor at a pointnuc_flux_shape

The neutron flux at a point of a bare slab, sphere or finite cylinder relative to its maximum at the centre (cosine, sin(x)/x, J0 times cosine) and the geometric buckling, for extrapolated dimensions.

\frac{\phi}{\phi_{max}} = J_0\!\left(\frac{2.405\,r}{R}\right)\cos\frac{\pi z}{H}

Inputs

  • geometry shape: slab (a, x), sphere (R, r) or cylinder (R, H, r, z) choice
  • a extrapolated slab thickness [m] optional
  • R extrapolated radius [m] optional
  • H extrapolated cylinder height [m] optional
  • x distance from the slab mid-plane [m] optional
  • r distance from the centre or axis [m] optional
  • z height above the cylinder mid-plane [m] optional

Returns

  • ratio phi/phi_max at the point
  • B2 geometric buckling [1/m^2]

Applies when

  • fundamental mode of a bare homogeneous reactor
  • extrapolated dimensions
  • the point inside the reactor

Example

m.ask("Flux shape: geometry = cylinder, R = 1.5 m, H = 3 m, r = 75 cm, z = 50 cm")
→ ratio = 0.580176, B2 = 3.66693 1/m^2
k-effective and geometric buckling of a bare reactor (one group)nuc_bare_reactor_keff

The geometric buckling of a bare homogeneous slab, sphere, cylinder or rectangular reactor of stated size and its effective multiplication factor in one-group diffusion theory, with the non-leakage probability and the reactivity.

k_{eff} = \frac{\nu\Sigma_f}{\Sigma_a + D B_g^2}

Inputs

  • D diffusion coefficient (a length, e.g. cm) [m]
  • Sigma_a macroscopic absorption cross section [1/m]
  • nuSigma_f nu times the macroscopic fission cross section [1/m]
  • extrapolation extrapolation distance added at each free surface: none, 2D or 2.13D (= 0.71 transport mean free paths) choice
  • geometry bare reactor shape: slab (a), sphere (R), cylinder (R, H) or cuboid (a, b, c) choice
  • a slab thickness or first side of a cuboid [m] optional
  • b second side of a cuboid [m] optional
  • c third side of a cuboid [m] optional
  • R radius of a sphere or cylinder [m] optional
  • H height of a cylinder [m] optional

Returns

  • B2 geometric buckling (extrapolated dimensions) [1/m^2]
  • k_eff effective multiplication factor
  • P_NL non-leakage probability 1/(1 + L^2 B^2)
  • rho reactivity (k - 1)/k

Applies when

  • one-group diffusion
  • bare homogeneous reactor
  • the dimensions of the stated geometry only

Example

m.ask("Bare reactor k-effective: D = 0.9 cm, Sigma_a = 0.15 1/cm, nuSigma_f = 0.18 1/cm, extrapolation = 2.13D, geometry = sphere, R = 12 cm")
→ B2 = 509.496 1/m^2, k_eff = 0.919049, P_NL = 0.765874, rho = -0.0880815
k-effective of a bare reactor in two-group diffusion theorynuc_two_group_bare_keff

The effective and infinite multiplication factors of a bare homogeneous reactor in two-group (fast and thermal) diffusion theory, with fission in both groups and downscatter from fast to thermal, and the thermal-to-fast flux ratio of the fundamental mode.

k = \frac{\nu\Sigma_{f1} + \nu\Sigma_{f2}\frac{\Sigma_{12}}{D_2B^2+\Sigma_{a2}}}{D_1B^2+\Sigma_{a1}+\Sigma_{12}}

Inputs

  • geometry bare reactor shape: slab (a), sphere (R), cylinder (R, H) or cuboid (a, b, c) choice
  • D1 fast-group diffusion coefficient [m]
  • D2 thermal-group diffusion coefficient [m]
  • Sigma_a1 fast-group absorption cross section [1/m]
  • Sigma_12 downscatter (removal) cross section from fast to thermal [1/m]
  • Sigma_a2 thermal-group absorption cross section [1/m]
  • nuSigma_f1 fast-group nu Sigma_f [1/m]
  • nuSigma_f2 thermal-group nu Sigma_f [1/m]
  • a slab thickness or first side of a cuboid (extrapolated) [m] optional
  • b second side of a cuboid (extrapolated) [m] optional
  • c third side of a cuboid (extrapolated) [m] optional
  • R radius of a sphere or cylinder (extrapolated) [m] optional
  • H height of a cylinder (extrapolated) [m] optional

Returns

  • B2 geometric buckling [1/m^2]
  • k_eff effective multiplication factor
  • k_inf infinite multiplication factor
  • flux_ratio thermal/fast flux ratio of the fundamental mode

Applies when

  • two-group diffusion, no upscatter
  • all fission neutrons born fast
  • extrapolated dimensions

Example

m.ask("Two-group k-effective: geometry = cylinder, D1 = 1.43 cm, D2 = 0.37 cm, Sigma_a1 = 0.01 1/cm, Sigma_12 = 0.018 1/cm, Sigma_a2 = 0.08 1/cm, nuSigma_f1 = 0.005 1/cm, nuSigma_f2 = 0.135 1/cm, R = 170 cm, H = 370 cm")
→ B2 = 2.72204 1/m^2, k_eff = 1.24472, k_inf = 1.26339, flux_ratio = 0.224717
Minimum-volume critical bare cylinder (one group)nuc_critical_cylinder_minimum_volume

The radius and height of the bare cylindrical reactor that is critical with the smallest volume (extrapolated height-to-diameter ratio 0.924), and that volume.

H_{ext} = \frac{\sqrt3\,\pi}{B_m},\quad R_{ext} = \sqrt{\tfrac32}\,\frac{2.405}{B_m}

Inputs

  • D diffusion coefficient (a length, e.g. cm) [m]
  • Sigma_a macroscopic absorption cross section [1/m]
  • nuSigma_f nu times the macroscopic fission cross section [1/m]
  • extrapolation extrapolation distance added at each free surface: none, 2D or 2.13D (= 0.71 transport mean free paths) choice

Returns

  • R physical radius [m]
  • H physical height [m]
  • V_ext minimum critical volume (extrapolated dimensions) [m^3]
  • HD extrapolated height/diameter

Applies when

  • one-group diffusion
  • k_inf > 1

Example

m.ask("Minimum volume critical cylinder: D = 0.9 cm, Sigma_a = 0.15 1/cm, nuSigma_f = 0.18 1/cm, extrapolation = none")
→ R = 0.161321 m, H = 0.298038 m, V_ext = 0.0243669 m^3, HD = 0.923743
Multiplication factor by the four- and six-factor formulasnuc_six_factor_formula

k_inf = eta f p eps (four-factor formula) and, with the fast and thermal non-leakage probabilities, k_eff = k_inf P_FNL P_TNL (six-factor formula), with the reactivity (k - 1)/k.

k_{eff} = \eta f p \varepsilon\,P_{FNL}P_{TNL}

Inputs

  • eta reproduction factor eta
  • f thermal utilization f
  • p resonance escape probability p
  • eps fast fission factor epsilon
  • P_FNL fast non-leakage probability (optional) optional
  • P_TNL thermal non-leakage probability (optional) optional

Returns

  • k_inf infinite multiplication factor
  • k_eff effective multiplication factor (k_inf without leakage factors)
  • P_NL total non-leakage probability
  • rho reactivity (k_eff - 1)/k_eff

Applies when

  • 0 < f, p, P_FNL, P_TNL <= 1
  • missing non-leakage factors are taken as 1 (an infinite medium)

Example

m.ask("Six-factor formula: eta = 2.02, f = 0.71, p = 0.87, eps = 1.03")
→ k_inf = 1.28519, k_eff = 1.28519, P_NL = 1, rho = 0.221903
Power density and power from the fission reaction ratenuc_power_from_reaction_rate

The fission reaction rate density R = N sigma_f phi, the power density q''' = E_f N sigma_f phi and, with a volume, the power, from the fissile number density, the fission cross section, the flux and the energy per fission.

q''' = E_f N \sigma_f \phi,\quad P = q''' V

Inputs

  • E_f recoverable energy per fission (e.g. 200 MeV) [J]
  • N fissile atoms per unit volume [1/m^3]
  • sigma fission cross section (barns) [m^2]
  • phi neutron flux [1/(m^2*s)]
  • V volume (optional, for the power) [m^3] optional

Returns

  • R fission rate density (1/(m^3 s)) [1/(m^3*s)]
  • q power density [W/m^3]
  • q_MW_m3 power density in MW/m^3
  • P power E_f N sigma phi V [W]
  • P_MW power in MW

Applies when

  • one-group cross section and flux
  • uniform over the volume

Example

m.ask("Power from reaction rate: E_f = 200 MeV, N = 1e21 1/cm^3, sigma = 582.6 b, phi = 3e13 1/(cm^2*s)")
→ R = 1.7478e+19 1/(m^3*s), q = 5.60057e+08 W/m^3, q_MW_m3 = 560.057
Reactor power from the peak flux (or peak flux from power) of a bare corenuc_core_power_from_flux

The thermal power of a bare homogeneous sphere, cylinder or rectangular core from its peak thermal flux (or the peak flux from the power), with the average flux, the peak-to-average ratio and the volume, for the fundamental-mode flux shape.

P = E_f\Sigma_f\int_V\phi\,dV = E_f\Sigma_f\,\phi_{max}\,\frac{\bar\phi}{\phi_{max}}\,V

Inputs

  • geometry core shape: sphere (R), cylinder (R, H) or cuboid (a, b, c) choice
  • Sigma_f macroscopic fission cross section [1/m]
  • E_f recoverable energy per fission (e.g. 200 MeV) [J]
  • phi_max peak (centre) thermal flux (give this or P) [1/(m^2*s)] optional
  • P thermal power (give this or phi_max) [W] optional
  • R extrapolated radius [m] optional
  • H extrapolated cylinder height [m] optional
  • a first extrapolated side of a cuboid [m] optional
  • b second side [m] optional
  • c third side [m] optional

Returns

  • P thermal power [W]
  • phi_max peak flux [1/(m^2*s)]
  • phi_avg volume-average flux [1/(m^2*s)]
  • peaking peak-to-average flux ratio

Applies when

  • fundamental-mode flux of a bare homogeneous core
  • extrapolated dimensions taken as the core size
  • uniform Sigma_f

Example

m.ask("Core power from flux: geometry = cylinder, Sigma_f = 0.002 1/cm, E_f = 200 MeV, phi_max = 1e13 1/(cm^2*s), R = 170 cm, H = 370 cm")
→ P = 5.91748e+06 W, phi_max = 1e+17 1/(m^2*s), phi_avg = 2.74864e+16 1/(m^2*s), peaking = 3.63817
Samarium-149 poisoning: equilibrium and after shutdownnuc_samarium

The equilibrium Pm-149 and Sm-149 atom densities during operation (Sm-149 is independent of the flux), the Sm-149 level reached after shutdown when all the promethium has decayed, and (optionally) the level a time t after shutdown.

S_\infty = \frac{\gamma_{Pm}\Sigma_f}{\sigma_{Sm}},\quad P_\infty = \frac{\gamma_{Pm}\Sigma_f\phi}{\lambda_{Pm}}

Inputs

  • Sigma_f macroscopic fission cross section [1/m]
  • phi thermal flux during operation [1/(m^2*s)]
  • gamma_Pm fission yield of Pm-149 (e.g. 0.0113)
  • sigma_Sm Sm-149 absorption cross section (e.g. 40800 b) [m^2]
  • t time after shutdown (optional) [s] optional

Returns

  • Pm_eq equilibrium Pm-149 [1/m^3]
  • Sm_eq equilibrium Sm-149 [1/m^3]
  • Sm_max Sm-149 after all Pm-149 has decayed [1/m^3]
  • max_ratio Sm_max/Sm_eq
  • Sm_t Sm-149 at t after shutdown (when t is given) [1/m^3]

Applies when

  • constant flux before shutdown
  • Pm-149 half-life of radioactivedecay 0.6.1 (53.08 h)
  • Pm-149 absorption neglected

Example

m.ask("Samarium poisoning: Sigma_f = 0.1 1/cm, phi = 3e13 1/(cm^2*s), gamma_Pm = 0.0113, sigma_Sm = 40800 b")
→ Pm_eq = 9.34561e+21 1/m^3, Sm_eq = 2.76961e+22 1/m^3, Sm_max = 3.70417e+22 1/m^3, max_ratio = 1.33743
U-235 depletion and energy released at constant fluxnuc_depletion_constant_flux

How much of an initial mass of U-235 remains after irradiation at a constant flux, the fraction burnt, the fission energy released (J and MWd) and the power at the start and at the end.

N(t) = N_0e^{-\sigma_a\phi t},\quad E = E_f\frac{\sigma_f}{\sigma_a}\left(N_0-N\right)

Inputs

  • m0 initial mass of U-235 [kg]
  • sigma_a U-235 absorption cross section (barns) [m^2]
  • sigma_f U-235 fission cross section (barns) [m^2]
  • phi neutron flux [1/(m^2*s)]
  • t irradiation time [s]
  • E_f recoverable energy per fission (e.g. 200 MeV) [J]

Returns

  • m U-235 mass remaining [kg]
  • burnt fraction of U-235 consumed
  • E fission energy released [J]
  • E_MWd energy released in MWd
  • P_t fission power at t [W]

Applies when

  • constant flux, one group
  • U-235 only (no breeding)
  • M(U-235) = 235.043928 g/mol

Example

m.ask("Depletion at constant flux: m0 = 1 kg, sigma_a = 680.9 b, sigma_f = 582.6 b, phi = 3e13 1/(cm^2*s), t = 1 y, E_f = 200 MeV")
→ m = 0.524858 kg, burnt = 0.475142, E = 3.33774e+13 J, E_MWd = 386.313, P_t = 753140 W
U-235 depletion at constant powernuc_constant_power_depletion

How much of an initial mass of U-235 remains after operation at a constant power (the flux rising as the fuel is consumed), the fraction burnt, the mass consumed and the factor by which the flux has risen.

N(t) = N_0 - \frac{P\,t}{E_f}\frac{\sigma_a}{\sigma_f},\quad \frac{\phi(t)}{\phi_0} = \frac{N_0}{N(t)}

Inputs

  • m0 initial mass of U-235 [kg]
  • P constant thermal power [W]
  • t operating time [s]
  • E_f recoverable energy per fission (e.g. 200 MeV) [J]
  • sigma_a U-235 absorption cross section (barns) [m^2]
  • sigma_f U-235 fission cross section (barns) [m^2]

Returns

  • m U-235 mass remaining [kg]
  • burnt fraction of U-235 consumed
  • consumed U-235 mass consumed [kg]
  • flux_ratio flux at t over the initial flux (N0/N)
  • fissions number of fissions P t/E_f

Applies when

  • constant power, one group
  • U-235 only (no breeding)
  • M(U-235) = 235.043928 g/mol

Example

m.ask("Depletion at constant power: m0 = 100 kg, P = 30 MW, t = 1 y, E_f = 200 MeV, sigma_a = 680.9 b, sigma_f = 582.6 b")
→ m = 86.5229 kg, burnt = 0.134771, consumed = 13.4771 kg, flux_ratio = 1.15576, fissions = 2.95451e+25
Xenon-135 after shutdown: concentration and peaknuc_xenon_after_shutdown

The Xe-135 and I-135 atom densities a time t after shutdown from equilibrium operation, the xenon relative to its equilibrium value, and the time and height of the post-shutdown xenon peak (none at low flux).

X(t) = X_0e^{-\lambda_Xt} + \frac{\lambda_II_0}{\lambda_X-\lambda_I}\left(e^{-\lambda_It}-e^{-\lambda_Xt}\right)

Inputs

  • Sigma_f macroscopic fission cross section of the fuel [1/m]
  • phi thermal flux during operation [1/(m^2*s)]
  • gamma_I cumulative fission yield of I-135 (e.g. 0.0639)
  • gamma_X direct fission yield of Xe-135 (e.g. 0.00237)
  • sigma_X Xe-135 absorption cross section (e.g. 2.65e6 b) [m^2]
  • t time after shutdown [s]

Returns

  • X Xe-135 atoms per volume at t [1/m^3]
  • ratio X(t)/X_eq
  • t_peak time of the xenon peak after shutdown (0 when xenon only falls) [s]
  • peak_ratio peak xenon / equilibrium xenon
  • I I-135 atoms per volume at t [1/m^3]

Applies when

  • equilibrium before shutdown
  • no flux after shutdown

Example

m.ask("Xenon after shutdown: Sigma_f = 0.1 1/cm, phi = 3e13 1/(cm^2*s), gamma_I = 0.0639, gamma_X = 0.00237, sigma_X = 2.65e6 b, t = 10 h")
→ X = 3.72338e+21 1/m^3, ratio = 1.88343, t_peak = 30167 s, peak_ratio = 1.90155, I = 2.27759e+21 1/m^3

Shielding 1

Half-value and tenth-value layersnuc_half_value_layer

The half-value layer ln 2/mu, tenth-value layer ln 10/mu and mean free path 1/mu of a narrow beam in an absorber of linear attenuation coefficient mu, and with a thickness the transmission and number of half-value layers.

HVL = \frac{\ln 2}{\mu},\quad TVL = \frac{\ln 10}{\mu}

Inputs

  • mu linear attenuation coefficient [1/m]
  • x absorber thickness (optional) [m] optional

Returns

  • HVL half-value layer [m]
  • TVL tenth-value layer [m]
  • mfp mean free path 1/mu [m]
  • HVL_cm half-value layer in cm
  • TVL_cm tenth-value layer in cm
  • transmission narrow-beam transmission exp(-mu x)
  • n_HVL thickness in half-value layers

Applies when

  • narrow beam (no buildup)
  • mu > 0

Example

m.ask("Half-value layer: mu = 0.656 1/cm")
→ HVL = 0.0105663 m, TVL = 0.0351004 m, mfp = 0.0152439 m, HVL_cm = 1.05663, TVL_cm = 3.51004

Shielding and dose 10

Dose accumulated near a decaying sourcenuc_accumulated_dose_decaying_source

The dose accumulated over an exposure time when the dose rate falls with the source's half-life, the dose if the exposure lasted until complete decay, and the mean dose rate.

D = \dot H_0\,e^{-\lambda t_d}\,\frac{1-e^{-\lambda t}}{\lambda}

Inputs

  • H0 dose rate at the reference time [J/(kg*s)]
  • T_half half-life of the source [s]
  • t exposure time [s]
  • td delay from the reference time to the start (0 when omitted) [s] optional

Returns

  • D dose accumulated [J/kg]
  • D_mSv dose in mSv (or mGy)
  • D_inf dose until complete decay [J/kg]
  • H_mean mean dose rate during the exposure [J/(kg*s)]

Applies when

  • the dose rate follows one half-life

Example

m.ask("Accumulated dose from a decaying source: H0 = 1 mSv/h, T_half = 6586.2 s, t = 2 h")
→ D = 0.00140226 J/kg, D_mSv = 1.40226, D_inf = 0.00263941 J/kg, H_mean = 1.94758e-07 J/(kg*s)
Dose rate from a shielded point gamma source with buildupnuc_point_source_dose_rate

The dose rate at a distance from a point gamma source of stated dose-rate constant, behind a slab shield, with the buildup factor in the stated form (none, linear or Taylor), plus the buildup factor and the transmission.

\dot H = \frac{\Gamma A}{r^2}\,B(\mu x)\,e^{-\mu x}

Inputs

  • Gamma dose-rate constant of the nuclide (e.g. uSv*m^2/(MBq*h)) [J*m^2/kg]
  • A source activity [1/s]
  • r source-to-point distance [m]
  • mu linear attenuation coefficient of the shield [1/m]
  • x shield thickness (0 for none) [m]
  • buildup buildup form: none (B = 1), linear (B = 1 + mu x) or taylor choice
  • A1 Taylor buildup parameter A1 (only with buildup = taylor) optional
  • alpha1 Taylor buildup parameter alpha1 (only with buildup = taylor) optional
  • alpha2 Taylor buildup parameter alpha2 (only with buildup = taylor) optional

Returns

  • H_dot dose rate (same quantity as Gamma: Sv/s, Gy/s) [J/(kg*s)]
  • H_uSv_h dose rate in uSv/h (or uGy/h)
  • B buildup factor
  • T transmission B e^(-mu x)

Applies when

  • point isotropic source
  • shield between source and point (x < r)
  • Taylor parameters only with the Taylor form

Example

m.ask("Point source dose rate: Gamma = 0.351 uSv*m^2/(MBq*h), A = 10 Ci, r = 2 m, mu = 0.0656 1/cm, x = 10 cm, buildup = linear")
→ H_dot = 7.75014e-06 J/(kg*s), H_uSv_h = 27900.5, B = 1.656, T = 0.859336
Dose received passing a point sourcenuc_transit_dose

The dose received by a person or detector moving at constant speed along a straight path past an unshielded point source, from the closest distance, the speed and the path length (centred on the closest approach).

D = \frac{\Gamma A}{d\,v}\,2\arctan\frac{L}{2d}

Inputs

  • Gamma dose-rate constant of the nuclide [J*m^2/kg]
  • A source activity [1/s]
  • d closest distance to the source [m]
  • v speed along the path [m/s]
  • L length of the path, centred on the point of closest approach [m]

Returns

  • D dose received (Sv or Gy, as Gamma) [J/kg]
  • D_uSv dose in uSv (or uGy)
  • frac fraction of the dose of an infinitely long path

Applies when

  • unshielded point source
  • straight path at constant speed

Example

m.ask("Transit dose: Gamma = 0.351 uSv*m^2/(MBq*h), A = 100 Ci, d = 2 m, v = 1 m/s, L = 20 m")
→ D = 0.000495454 J/kg, D_uSv = 495.454, frac = 0.874334
Klein-Nishina Compton cross sections per electronnuc_klein_nishina

The total Compton (Klein-Nishina) cross section per electron for a photon energy, the energy-transfer cross section and the mean kinetic energy given to the recoil electron.

\sigma = 2\pi r_e^2\left\{\frac{1+k}{k^2}\left[\frac{2(1+k)}{1+2k}-\frac{\ln(1+2k)}{k}\right]+\frac{\ln(1+2k)}{2k}-\frac{1+3k}{(1+2k)^2}\right\}

Inputs

  • E photon energy (10 keV to 100 MeV) [J]

Returns

  • sigma Klein-Nishina cross section per electron [m^2]
  • sigma_b the same in barns per electron
  • sigma_tr energy-transfer cross section per electron [m^2]
  • T_mean mean kinetic energy of the Compton electron (MeV) [MeV]

Applies when

  • free electrons at rest (no binding)
  • 10 keV <= E <= 100 MeV

Example

m.ask("Klein-Nishina cross section: E = 0.662 MeV")
→ sigma = 2.5614e-29 m^2, sigma_b = 0.25614, sigma_tr = 9.77494e-30 m^2, T_mean = 0.252635 MeV
Linear attenuation coefficient from narrow-beam transmission measurementsnuc_attenuation_coefficient_fit

The linear attenuation coefficient of an absorber from intensities measured behind several thicknesses (least-squares fit of ln I against x), with the half- and tenth-value layers and the fitted unattenuated intensity.

\ln I = \ln I_0 - \mu x

Inputs

  • x absorber thicknesses, in cm vector
  • I measured intensities or count rates (any consistent unit) vector

Returns

  • mu fitted linear attenuation coefficient [1/m]
  • HVL half-value layer [m]
  • TVL tenth-value layer [m]
  • I0 fitted intensity with no absorber

Applies when

  • narrow-beam geometry (no buildup)
  • background already subtracted
  • unweighted least squares of ln I

Example

m.ask("Attenuation coefficient fit: x = [0.0, 1.0, 2.0, 3.0, 4.0], I = [1000.0, 520.0, 270.0, 141.0, 73.0]")
→ mu = 65.3966 1/m, HVL = 0.0105991 m, TVL = 0.0352096 m, I0 = 1000.02
Narrow-beam transmission through a multilayer shieldnuc_multilayer_transmission

The uncollided (narrow-beam) transmission through several shield layers, the total optical thickness, its value in half-value layers, the attenuation factor and (optionally) the dose rate behind the shield.

T = \exp\Big(-\sum_i \mu_i x_i\Big)

Inputs

  • mu linear attenuation coefficient of each layer, in 1/cm vector
  • x thickness of each layer, in cm vector
  • H0 uncollided dose rate in front of the shield (optional) [J/(kg*s)] optional

Returns

  • T uncollided transmission
  • tau total optical thickness sum mu_i x_i
  • n_hvl thickness in half-value layers
  • attenuation attenuation factor 1/T
  • H uncollided dose rate behind the shield (when H0 is given) [J/(kg*s)]

Applies when

  • narrow beam (no buildup)
  • layers perpendicular to the beam

Example

m.ask("Multilayer transmission: mu = [0.656, 0.149], x = [5.0, 30.0]")
→ T = 0.000430743, tau = 7.75, n_hvl = 11.1809, attenuation = 2321.57
Shield thickness for a target dose rate (point source, buildup)nuc_shield_thickness_for_dose_rate

The slab thickness that brings the dose rate from a point gamma source down to a target value, with no buildup or the linear buildup form B = 1 + mu x (the root of the attenuation equation).

\frac{\Gamma A}{r^2}B(\mu x)e^{-\mu x} = \dot H_{target}

Inputs

  • Gamma dose-rate constant of the nuclide [J*m^2/kg]
  • A source activity [1/s]
  • r source-to-point distance [m]
  • mu linear attenuation coefficient of the shield [1/m]
  • H_target target dose rate (e.g. uSv/h) [J/(kg*s)]
  • buildup buildup form: none (B = 1) or linear (B = 1 + mu x) choice

Returns

  • x required shield thickness [m]
  • n_mfp thickness in mean free paths
  • B buildup factor at that thickness

Applies when

  • target below the unshielded dose rate
  • the shield fits between source and point

Example

m.ask("Shield thickness for dose rate: Gamma = 0.351 uSv*m^2/(MBq*h), A = 10 Ci, r = 2 m, mu = 0.656 1/cm, H_target = 2.5 uSv/h, buildup = linear")
→ x = 0.183532 m, n_mfp = 12.0397, B = 13.0397
Stay time to a dose limit near a decaying sourcenuc_stay_time_decaying_source

How long one can stay at a place where the dose rate decays with the source's half-life before receiving a stated dose, compared with the stay time if the rate were constant.

t = -\frac{1}{\lambda}\ln\left(1-\frac{\lambda D_{lim}}{\dot H_0}\right)

Inputs

  • H0 dose rate at the start of the stay [J/(kg*s)]
  • T_half half-life of the source [s]
  • D_lim dose limit for the stay [J/kg]

Returns

  • t_stay allowed stay time [s]
  • frac dose limit as a fraction of the dose until complete decay

Applies when

  • D_lim < H0 T_half/ln 2 (otherwise the limit is never reached)

Example

m.ask("Stay time: H0 = 2 mSv/h, T_half = 6586.2 s, D_lim = 1 mSv")
→ t_stay = 1995.63 s, frac = 0.189436
Uncollided flux from a shielded line source (Sievert integral)nuc_line_source_flux

The uncollided photon flux at a point at perpendicular distance h from a straight line source (a pipe, a wire) running from y1 to y2 along the line, behind a slab shield parallel to the line, with the unshielded flux and the transmission.

\phi = \frac{S_L}{4\pi h}\left[F(\theta_2,\mu t) - F(\theta_1,\mu t)\right],\ F(\theta,b)=\int_0^{\theta}e^{-b\sec u}\,du

Inputs

  • S_L source strength per unit length (photons per second per metre) [1/(m*s)]
  • h perpendicular distance from the line to the point [m]
  • y1 position of one end along the line, measured from the foot of the perpendicular (may be negative) [m]
  • y2 position of the other end (y2 > y1) [m]
  • mu linear attenuation coefficient of the shield [1/m]
  • t shield thickness (0 for none) [m]

Returns

  • phi uncollided flux at the point [1/(m^2*s)]
  • phi0 flux without the shield [1/(m^2*s)]
  • T transmission phi/phi0

Applies when

  • isotropic line source in vacuum
  • slab shield parallel to the line (t < h)
  • no buildup

Example

m.ask("Line source flux: S_L = 1e8 1/(m*s), h = 1 m, y1 = -2 m, y2 = 2 m, mu = 0.1 1/cm, t = 10 cm")
→ phi = 5.01271e+06 1/(m^2*s), phi0 = 1.76208e+07 1/(m^2*s), T = 0.284476
Uncollided flux on the axis of a shielded disk sourcenuc_disk_source_flux

The uncollided flux on the axis of a uniform disk source (a contaminated floor patch, a tank bottom) at distance h, behind a slab shield parallel to the disk, with the unshielded flux and the transmission.

\phi = \frac{S_A}{2}\left[E_1(\mu t) - E_1(\mu t\sec\theta)\right]

Inputs

  • S_A source strength per unit area (photons per second per square metre) [1/(m^2*s)]
  • R disk radius [m]
  • h distance from the disk on its axis [m]
  • mu linear attenuation coefficient of the shield [1/m]
  • t shield thickness (0 for none) [m]

Returns

  • phi uncollided flux on the axis [1/(m^2*s)]
  • phi0 flux without the shield [1/(m^2*s)]
  • T transmission phi/phi0

Applies when

  • uniform isotropic disk source
  • slab shield parallel to the disk (t < h)
  • no buildup

Example

m.ask("Disk source flux: S_A = 1e7 1/(m^2*s), R = 1 m, h = 50 cm, mu = 0.1 1/cm, t = 5 cm")
→ phi = 1.89574e+06 1/(m^2*s), phi0 = 4.02359e+06 1/(m^2*s), T = 0.471155

Thermal hydraulics 4

Coolant temperature along a channel with a chopped-cosine power shapenuc_channel_coolant_temperature

The bulk coolant temperature at a height z (from the core mid-plane) in a heated channel whose linear heat rate follows a chopped cosine, the outlet temperature and the channel's total power.

T(z) = T_{in} + \frac{q_0H_e}{\pi\dot mc_p}\left[\sin\frac{\pi z}{H_e} + \sin\frac{\pi H}{2H_e}\right]

Inputs

  • q0 peak linear heat rate (at the core mid-plane) [W/m]
  • H heated (core) height [m]
  • H_e extrapolated height of the chopped-cosine power shape (H_e >= H) [m]
  • m_dot coolant mass flow rate in the channel [kg/s]
  • c_p coolant specific heat [J/(kg*K)]
  • T_in coolant inlet temperature [K]
  • z height above the core mid-plane (negative below) [m]

Returns

  • T coolant temperature at z [K]
  • T_out coolant outlet temperature [K]
  • Q total heat added to the channel [W]

Applies when

  • steady state, single-phase coolant, constant c_p
  • q'(z) = q0 cos(pi z/H_e)

Example

m.ask("Channel coolant temperature: q0 = 43 kW/m, H = 3.66 m, H_e = 4 m, m_dot = 0.3 kg/s, c_p = 5500 J/(kg*K), T_in = 565 K, z = 0 m")
→ T = 597.886 K, T_out = 630.772 K, Q = 108524 W
Fuel centreline temperature with temperature-dependent conductivitynuc_centreline_temperature_variable_k

The centreline temperature of a cylindrical fuel pellet at a stated linear heat rate and surface temperature when its conductivity varies as k = 1/(A + B T) (the usual form for UO2), through the conductivity integral, with the conductivities at the surface and the centre.

\int_{T_s}^{T_0}k(T)\,dT = \frac{q'}{4\pi}

Inputs

  • q_lin linear heat rate q' [W/m]
  • T_s pellet surface temperature [K]
  • A A in k = 1/(A + B T) (m*K/W) [m*K/W]
  • B B in k = 1/(A + B T) (m/W) [m/W]

Returns

  • T_0 centreline temperature [K]
  • dT centre-to-surface temperature rise [K]
  • k_s conductivity at the surface [W/(m*K)]
  • k_0 conductivity at the centre [W/(m*K)]

Applies when

  • uniform heat generation
  • radial conduction, steady state
  • k(T) = 1/(A + B T) with T in K

Example

m.ask("Centreline temperature variable conductivity: q_lin = 300 W/cm, T_s = 800 K, A = 0.0452 m*K/W, B = 2.46e-4 m/W")
→ T_0 = 1586.1 K, dT = 786.098 K, k_s = 4.13223 W/(m*K), k_0 = 2.29684 W/(m*K)
Fuel-rod radial temperatures: centreline, pellet surface and claddingnuc_fuel_rod_temperatures

The temperatures at the fuel centreline, the pellet surface and the cladding inner and outer surfaces of a cylindrical fuel rod at a stated linear heat rate, from the coolant temperature through the film, cladding, gap and pellet (constant conductivities).

T_0 - T_b = q'\left[\frac{1}{4\pi k_f} + \frac{1}{2\pi R_fh_g} + \frac{\ln(R_o/R_f)}{2\pi k_c} + \frac{1}{2\pi R_oh}\right]

Inputs

  • q_lin linear heat rate q' (W/m) [W/m]
  • R_f pellet radius [m]
  • k_f fuel thermal conductivity [W/(m*K)]
  • h_g gap conductance [W/(m^2*K)]
  • t_c cladding thickness [m]
  • k_c cladding thermal conductivity [W/(m*K)]
  • h coolant heat transfer coefficient [W/(m^2*K)]
  • T_cool bulk coolant temperature [K]

Returns

  • T_0 fuel centreline temperature [K]
  • T_fs pellet surface temperature [K]
  • T_ci cladding inner surface temperature [K]

Applies when

  • steady state, radial conduction only
  • uniform heat generation in the pellet
  • thin gap of conductance h_g at the pellet radius

Example

m.ask("Fuel rod temperatures: q_lin = 200 W/cm, R_f = 4.1 mm, k_f = 3 W/(m*K), h_g = 5000 W/(m^2*K), t_c = 0.57 mm, k_c = 15 W/(m*K), h = 34000 W/(m^2*K), T_cool = 580 K")
→ T_0 = 1313.46 K, T_fs = 782.944 K, T_ci = 627.671 K
Location and value of the maximum cladding surface temperaturenuc_max_clad_temperature

Where along a channel with a chopped-cosine power shape the cladding surface is hottest (above the mid-plane, because the coolant warms up), its temperature there and the coolant outlet temperature.

\tan\frac{\pi z_{max}}{H_e} = \frac{2R_ohH_e}{\dot mc_p}

Inputs

  • q0 peak linear heat rate (at the core mid-plane) [W/m]
  • H heated (core) height [m]
  • H_e extrapolated height of the chopped-cosine power shape (H_e >= H) [m]
  • m_dot coolant mass flow rate in the channel [kg/s]
  • c_p coolant specific heat [J/(kg*K)]
  • T_in coolant inlet temperature [K]
  • R_o cladding outer radius [m]
  • h coolant heat transfer coefficient [W/(m^2*K)]

Returns

  • z_max height of the maximum cladding temperature above the mid-plane [m]
  • T_max maximum cladding surface temperature [K]
  • T_out coolant outlet temperature [K]

Applies when

  • single-phase coolant, constant h and c_p
  • q'(z) = q0 cos(pi z/H_e)
  • the maximum may sit at the core exit

Example

m.ask("Maximum cladding temperature: q0 = 43 kW/m, H = 3.66 m, H_e = 4 m, m_dot = 0.3 kg/s, c_p = 5500 J/(kg*K), T_in = 565 K, R_o = 4.75 mm, h = 34000 W/(m^2*K)")
→ z_max = 0.845823 m, T_max = 651.707 K, T_out = 630.772 K
Questions

Frequently asked

What does nuclear-engineering-ai999x do?

Nuclear Engineering answers questions in nuclear engineering: radioactive decay and decay chains, binding energy, reactor physics basics, radiation shielding and attenuation, and dosimetry. Each answer gives the value with its unit, the steps and the formula in LaTeX.

How do I install nuclear-engineering-ai999x?

With pip: pip install nuclear-engineering-ai999x. The same files are on Hugging Face (hf download AI999X/nuclear-engineering-ai999x --local-dir nuclear-engineering-ai999x) and GitHub.

Does it run offline?

Yes. It is a Python package that runs on an ordinary CPU without a network connection (Python >=3.10); no GPU and no API key are needed.

How many capabilities does nuclear-engineering-ai999x have?

83 capabilities in 10 topics, including Reactor physics, Detectors and counting, Neutron physics, Decay and activity, Shielding and dose.

Which field and tasks does it cover?

Field: Engineering. Tasks: Question Answering, Token Classification, Text Classification, Sentence Similarity, Feature Extraction.

What does an answer look like?

Asked "Specific activity: nuclide = Co-60, m = 1 g", it answers: A = 4.18689e+13 1/s, A_Ci = 1131.59, a = 4.18689e+16 1/(kg*s), a_Ci_per_g = 1131.59, N = 1.0048e+22.

What happens when a question cannot be answered?

It says so and names what is missing or out of range, instead of guessing a number.

More from AI999X

Explore every model.