RadCluster
Graph-based cluster dynamics for irradiated materials
Loading...
Searching...
No Matches
Classes | Functions | Variables
py_utils.loop_energetics Namespace Reference

Classes

class  LoopEnergetics
 

Functions

int _selftest ()
 

Variables

 _E = float(np.e)
 
float _C_TO_K = 273.15
 

Detailed Description

loop_energetics.py — ½⟨111⟩ vs ⟨100⟩ interstitial-loop free energies and the
thermodynamic driving force for the *unary* (Dudarev) ½⟨111⟩ → ⟨100⟩ conversion.

Part of the ½⟨111⟩ → ⟨100⟩ loop-conversion work
(see ``docs/design_notes/loop_111_to_100_conversion.md``).

Physics
-------
Prismatic-loop free energy (Dudarev, Bullough & Derlet, PRL 100, 135503 (2008),
Eq. 5; equivalently Marian, Wirth & Perlado, PRL 88, 255507 (2002), Eq. 3):

    E_l^X(n,T) = P_X(n) · [ F̂_X(T)·ln(4 R*_X(n) / (e·δ)) + F_δ^X + F_c^X ]

with X ∈ {111, 100}, P_X the loop perimeter, R*_X the equivalent-circle radius
of a platelet of n self-interstitials (area A = n·Ω/b_X), and δ ≈ 0.4 nm the
core cutoff.  ½⟨111⟩ loops are hexagonal {110} (6 sides, b = (√3/2)a); ⟨100⟩
loops are square {100} (4 sides, b = a).

Temperature enters only through the ⟨100⟩ prelogarithmic factor, which softens
toward the α–γ transition as the analytic ⟨100⟩[100] solution
F̂_001([100]) ∝ √(c₁₁−c₁₂) ∝ (1 − T/T_c)^{1/4} (Dudarev Eq. 4); the
½⟨111⟩ factor is treated as ~T-independent:

    F̂_100(T) = F̂_100^0 · (1 − T/T_c)^{1/4},   T_c = 1185 K.

Driving force for ½⟨111⟩ → ⟨100⟩ (favourable where positive):

    ΔF(n,T) = E_l^111(n,T) − E_l^100(n,T).

Calibration
-----------
Rather than trust digitised absolute values of the elastic constants, the
overall ⟨100⟩ prelog magnitude F̂_100^0 is *derived* from a single calibration
target — the crossover temperature T* at a reference size n_ref where
ΔF(n_ref, T*) = 0 — via :meth:`LoopEnergetics.calibrate`.  This guarantees, by
construction, that at the reference size ½⟨111⟩ is favoured below T* and ⟨100⟩
above it, matching the Dudarev Fig. 4 stability regions (sign change ≈ 350 °C,
strongly ⟨100⟩-favoured by ≈ 550 °C).  The remaining size dependence of the
crossover then *emerges* from the loop geometry.

.. note::
   The default core/prelog constants below are approximate (digitised from
   Dudarev Figs. 2–3 + best-fit table).  The *direction and magnitude* of the
   size dependence of the crossover is sensitive to them and is a physics
   calibration decision (Phase 6, against ``loop_burgers_fraction.py``); only
   the qualitative T behaviour at the reference size is guaranteed by the
   calibration.  All constants are overridable on the dataclass.

Function Documentation

◆ _selftest()

int py_utils.loop_energetics._selftest ( )
protected
Verify the construction-guaranteed properties (not absolute eV values).

Definition at line 212 of file loop_energetics.py.

Variable Documentation

◆ _C_TO_K

float py_utils.loop_energetics._C_TO_K = 273.15
protected

Definition at line 57 of file loop_energetics.py.

◆ _E

py_utils.loop_energetics._E = float(np.e)
protected

Definition at line 56 of file loop_energetics.py.