|
| | atomic_radius (Omega) |
| |
| | capture_radius (n, Omega) |
| |
| | E_b_void (m, E_f_v, gamma_s, Omega, lambda_void=None, A_void_0=None) |
| |
| | He_pressure (m, ell, Omega, T) |
| |
| | E_b_bubble (m, ell, E_f_v, gamma_s, Omega, T) |
| |
| | E_b_He (m, ell, E_s_He, Omega, T, B2=_B2, B3=_B3) |
| |
| | E_b_He_first (E_b_hV_1=2.30) |
| |
| | E_b_He_second (E_b_hV_2=2.00) |
| |
| | _E_b_loop_i_continuum (n, E_f_i=3.77, G_shear=82e9, b=2.49e-10, nu=0.29, gamma_sf=0.6, Omega=1.18e-29) |
| |
| | A_111_from_E_b_i2 (E_b_i2, B_111) |
| |
| | E_b_loop_i (n, A_111=0.7501, B_111=0.3873, A_100=0.7160, B_100=0.3581, n_tr=25.0, sigma_tr=5.0, E_f_i=3.77, G_shear=82e9, b_111=2.49e-10, nu=0.29, gamma_sf=0.6, Omega=1.18e-29) |
| |
| | E_b_loop_100 (n, A_100=0.7160, B_100=0.3581, n_tr=25.0, sigma_tr=5.0, E_f_i=3.77, G_shear=82e9, b_100=2.8665e-10, nu=0.29, gamma_sf=0.6, Omega=1.18e-29) |
| |
| | E_b_loop_v (m, E_f_v, gamma_sf, Omega, b_111) |
| |
| | E_TM (m, ell, default=1e10) |
| |
| | Gamma_TM (m, ell, T, nu0_TM=1e12) |
| |
| | Gamma_res (ell, phi_dot, b0) |
| |
| | ell_max (m, alpha_He=1.7) |
| |
binding_energies.py — Defect cluster binding energies for bcc Fe / EUROFER97.
All equations and tables cite:
Ghoniem, N.M. (2026), "A Cluster Dynamics Model for Radiation Damage
Evolution in Ferritic-Martensitic Steels" (Rate_Equations.pdf).
Conventions
-----------
- Vacancy cluster of size m (pure void): c_{m,0}
- He-vacancy cluster: c_{m,ℓ} — m vacancies + ℓ He atoms
- Interstitial cluster of size n: c_n
- All energies in eV; lengths in m unless stated.
| py_utils.binding_energies.A_111_from_E_b_i2 |
( |
|
E_b_i2, |
|
|
|
B_111 |
|
) |
| |
Loop-binding amplitude ``A_111`` implied by a measured **di-interstitial
binding energy** ``E_b^i(2)``.
The small-n branch of :func:`E_b_loop_i` is the DFT power-law fit
``E_b^fit(n) = A_111 · n^{+B_111}`` (note the exponent is POSITIVE — binding
*increases* with loop size). Evaluated at n = 2 this is the binding of the
second SIA to a mono-interstitial, i.e. the di-interstitial binding energy.
Inverting,
A_111 = E_b^i(2) · 2^{−B_111}
Anchoring on ``E_b^i(2)`` rather than on ``A_111`` directly is preferable
for calibration: ``A_111`` has no independent measurement, whereas
``E_b^i(2)`` is reported by DFT for bcc Fe (≈0.8 eV).
Note that :func:`E_b_loop_i` returns the *blended* value at n = 2, which
differs from ``E_b_i2`` by the continuum admixture (1 − w) ≈ 1e-4 at the
default blend (n_tr = 25, σ_tr = 5) — negligible, but not identically zero.
Parameters
----------
E_b_i2 : float [eV] — di-interstitial binding energy
B_111 : float — power-law exponent
Returns
-------
A_111 : float [eV]
Definition at line 232 of file binding_energies.py.
| py_utils.binding_energies.E_b_bubble |
( |
|
m, |
|
|
|
ell, |
|
|
|
E_f_v, |
|
|
|
gamma_s, |
|
|
|
Omega, |
|
|
|
T |
|
) |
| |
Effective vacancy binding energy for a He-vacancy bubble (m, ℓ).
Capillary model with He-pressure correction (Eqs. 70-73):
E_b_bub(m, ℓ) = E_f_v − A_cap·[m^{2/3}−(m−1)^{2/3}]
+ P_He(m,ℓ)·Ω [He pressure work term]
The pressure term is POSITIVE: removing a vacancy from a gas-filled
cavity compresses the gas, costing work +P·Ω, so He raises the
vacancy binding energy and stabilizes bubbles against thermal
dissociation (equivalently c_v^eq(surface) ∝ exp[(2γ/r − P)Ω/kT]).
This term creates the stable-bubble branch and critical radius r*
of critical-bubble theory (Mansur & Coghlan).
Parameters
----------
m : int
ell : int or float (can be fractional mean loading)
E_f_v : float [eV]
gamma_s : float [J/m²]
Omega : float [m³]
T : float [K]
Returns
-------
E_b : float [eV]
Definition at line 116 of file binding_energies.py.
| py_utils.binding_energies.E_b_He |
( |
|
m, |
|
|
|
ell, |
|
|
|
E_s_He, |
|
|
|
Omega, |
|
|
|
T, |
|
|
|
B2 = _B2, |
|
|
|
B3 = _B3 |
|
) |
| |
He binding energy: energy to remove one He from bubble (m, ℓ).
Combined continuum + atomistic formula (Eqs. 76-77, Table 19):
E_b^He(m, ℓ) = E_s^He + P_He(m,ℓ)·Ω [continuum, Eq. 76]
+ f_blend · A^He(α) · exp(−μ·(ℓ−α)) [atomistic, Eq. 77]
where α = ℓ_max(m) = floor(alpha_He · m^{2/3}) is the trap-mutation limit,
and f_blend fades the atomistic correction for large ℓ.
Parameters
----------
m : int
ell : int — current He content
E_s_He : float [eV] — He interstitial solution energy (= 2.35 eV, Table 5)
Omega : float [m³]
T : float [K]
Returns
-------
E_b : float [eV]
Definition at line 160 of file binding_energies.py.
| py_utils.binding_energies.E_b_loop_100 |
( |
|
n, |
|
|
|
A_100 = 0.7160, |
|
|
|
B_100 = 0.3581, |
|
|
|
n_tr = 25.0, |
|
|
|
sigma_tr = 5.0, |
|
|
|
E_f_i = 3.77, |
|
|
|
G_shear = 82e9, |
|
|
|
b_100 = 2.8665e-10, |
|
|
|
nu = 0.29, |
|
|
|
gamma_sf = 0.6, |
|
|
|
Omega = 1.18e-29 |
|
) |
| |
Binding energy of the n-th SIA to a ⟨100⟩ interstitial loop of size n−1.
Sibling of :func:`E_b_loop_i` for the sessile ⟨100⟩ population
(½⟨111⟩→⟨100⟩ loop-conversion work). Same small-n DFT fit blended to the
continuum limit (Eqs. Eb_smalln_fit, Eb_blended), but with the ⟨100⟩ fit
amplitudes ``A_100, B_100`` (Table 18 — already carried, dormant, by
:func:`E_b_loop_i`) and the ⟨100⟩ Burgers vector ``b_100 = a`` in the
continuum tail.
E_b^fit(n) = A_100 · n^{+B_100}
E_b^cont(n) = E_f^i − μ_loop(n; b_100)
w(n) = 0.5·(1 + tanh((n_tr − n)/σ_tr))
E_b(n) = w·E_b^fit + (1−w)·E_b^cont
⟨100⟩ loops are slightly less bound than ½⟨111⟩ at small n
(``A_100 < A_111``); emission is therefore slow but nonzero, feeding the
⟨100⟩ ``DISSOCIATION`` edge.
Parameters mirror :func:`E_b_loop_i`; ``b_100`` defaults to the bcc-Fe
lattice parameter ``a = 2.8665 Å`` (= ⟨100⟩ Burgers vector magnitude).
Definition at line 316 of file binding_energies.py.
| py_utils.binding_energies.E_b_loop_i |
( |
|
n, |
|
|
|
A_111 = 0.7501, |
|
|
|
B_111 = 0.3873, |
|
|
|
A_100 = 0.7160, |
|
|
|
B_100 = 0.3581, |
|
|
|
n_tr = 25.0, |
|
|
|
sigma_tr = 5.0, |
|
|
|
E_f_i = 3.77, |
|
|
|
G_shear = 82e9, |
|
|
|
b_111 = 2.49e-10, |
|
|
|
nu = 0.29, |
|
|
|
gamma_sf = 0.6, |
|
|
|
Omega = 1.18e-29 |
|
) |
| |
Binding energy of the n-th SIA to an interstitial loop of size n−1.
Small-n DFT fit blended to continuum limit (Eqs. Eb_smalln_fit, Eb_blended):
E_b^fit(n) = A · n^{+B} [Eq. Eb_smalln_fit]
E_b^cont(n) = E_f^i − μ_loop(n) [continuum elasticity]
w(n) = 0.5·(1 + tanh((n_tr − n)/σ_tr)) [Eq. weight_function]
E_b(n) = w·E_b^fit + (1−w)·E_b^cont [Eq. Eb_blended]
For small n, w→1 and E_b follows the DFT power-law fit.
For large n, w→0 and E_b approaches E_f^i (formation energy).
Parameters
----------
n : int or array (≥ 2)
A_111, B_111 : float — ½⟨111⟩ loop fit (Table 18)
A_100, B_100 : float — ⟨100⟩ loop fit (Table 18)
n_tr : float — blend center (25 SIAs)
sigma_tr : float — blend width (5 SIAs)
E_f_i : float — SIA formation energy [eV]
G_shear : float — shear modulus [Pa]
b_111 : float — ½⟨111⟩ Burgers vector [m]
nu : float — Poisson ratio
gamma_sf : float — stacking fault energy [J/m²]
Omega : float — atomic volume [m³]
Returns
-------
E_b : float or array [eV]
Definition at line 265 of file binding_energies.py.
| py_utils.binding_energies.E_TM |
( |
|
m, |
|
|
|
ell, |
|
|
|
default = 1e10 |
|
) |
| |
Trap mutation barrier (Table 27, Eq. 83).
Returns the barrier E_TM(m, ℓ) [eV].
If (m, ℓ) not in the table, returns `default` (effectively disables TM).
Parameters
----------
m : int — vacancies
ell : int — He atoms
default : float [eV] — barrier for unknown (m, ℓ)
Definition at line 397 of file binding_energies.py.
| py_utils.binding_energies.Gamma_TM |
( |
|
m, |
|
|
|
ell, |
|
|
|
T, |
|
|
|
nu0_TM = 1e12 |
|
) |
| |
Trap mutation rate from bubble (m, ℓ) → (m+1, ℓ-1) [s^-1].
Γ_TM(m, ℓ) = ν_0_TM · exp(−E_TM(m,ℓ) / k_B T) (Eq. 142)
Parameters
----------
m, ell : int
T : float [K]
nu0_TM : float [s^-1] — attempt frequency (Table 27)
Definition at line 413 of file binding_energies.py.