|
RadCluster
Graph-based cluster dynamics for irradiated materials
|
Two independent reductions keep the system tractable at engineering doses. Both are stated on the abstract graph, so that any host material inherits them unchanged. They are in the folder radcluster_code/py_utils/core/reductions.
The unreduced vacancy-helium state space is a two-dimensional grid \(c_{m,\ell}\) in the number of vacancies \(m\) and of helium atoms \(\ell\). The enumeration HeReductionMode in he_reduction.py selects one of two reductions.
The cascade option selects the case: HeReductionMode.from_cascade() maps the fusion spectrum to Case 1 and the fission spectrum to Case 2.
Sizes up to \(i_{discrete}\) (and \(v_{discrete}\) for vacancies) are tracked with one ODE per size. Larger sizes are grouped into logarithmic bins \(\mathcal{B}_k\) that carry \(P\) moments each:
\[ \mu_k^{(0)} = \sum_{n \in \mathcal{B}_k} c_n , \qquad \mu_k^{(1)} = \sum_{n \in \mathcal{B}_k} n\,c_n , \qquad \mu_k^{(2)} = \sum_{n \in \mathcal{B}_k} n^2 c_n . \]
The parameter shape_function selects the intra-bin closure:
| shape_function | \(P\) | Closure | Truncation error |
|---|---|---|---|
| constant | 1 | piecewise constant | \(O((r-1)^2)\) |
| linear | 2 | hat function (dual basis) | \(O((r-1)^3)\) |
| lognormal | 3 | log-normal shape | \(O((r-1)^4)\) |
Here \(r\) is the bin ratio. The discrete formulation is recovered exactly when the number of bins is zero.
The class BinMomentReduction in bin_moment.py implements the reduction of one size axis as a three-step procedure, which is executed at every evaluation of the right-hand side:
The bin construction and the reconstruction helpers that the orchestrator uses are in radcluster_code/py_utils/bin_moment_rates.py.