RadCluster
Graph-based cluster dynamics for irradiated materials
Loading...
Searching...
No Matches
Verification and diagnostics

Introduction

Every run reports two conservation residuals. They are computed by the function calculate_derived_quantities() in radcluster_code/py_utils/post_process.py.

Frenkel-pair residual

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)} . \]

Helium residual

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.

Levels

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.

Check scripts

The folder radcluster_code/codes/Python_Testing holds standalone scripts that gate the physics:

  • helium and Frenkel-pair conservation
  • bin-moment against discrete equivalence
  • convergence in the size of the discrete prefix
  • loop-conversion kernels and conservation
  • consistency of the graph declaration
  • comparisons of linear solvers and of window modes
  • benchmarks of the Woodbury preconditioner
  • parameter sweeps

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}\).

Pages

See also
Output directory, Graph walker