|
RadCluster
Graph-based cluster dynamics for irradiated materials
|
Every run reports two conservation residuals. They are computed by the function calculate_derived_quantities() in radcluster_code/py_utils/post_process.py.
Let \(S_I(t) = \sum_n n\,c_n\) be the SIA inventory and \(S(t) = \sum_m m\,c_m\) the swelling. The swelling is reported through the identity
\[ S(t) = S_I(t) + \Delta J^d(t) , \]
where \(\Delta J^d\) is the cumulative net bias flux to dislocations. The identity yields the dimensionless Frenkel-pair residual
\[ \delta_{FP}(t) = \frac{\left| S(t) - S_I(t) - \Delta J^d(t) \right|}{S(t) + S_I(t) + \Delta J^d(t)} . \]
The helium balance yields the residual \(\delta_{He}(t)\), which compares the helium in solution and in cavities with the helium that was produced and lost at sinks.
Both residuals should stay below about \(10^{-6}\). A value above \(10^{-3}\) indicates a coding error.
Note that in long loop-coarsening runs the loop distribution can outgrow the size axis. Products beyond the largest tracked size then carry content out of the domain, and \(\delta_{FP}\) grows. It falls as the largest tracked size grows.
The folder radcluster_code/codes/Python_Testing holds standalone scripts that gate the physics:
A change that touches reaction kernels or stoichiometry should come with the relevant conservation check, and with a note of the resulting \(\delta_{FP}\) and \(\delta_{He}\).