Methodology - Ghoniem/RadCluster GitHub Wiki
Methodology
This page summarizes the formulation. The full derivation is in the framework manuscript, in the folder docs/Formulation/cluster_dynamics_framework/ of the repository.
The master equation
For every tracked cluster species $a$ the code integrates
$$\frac{dc_a}{dt} = G_a + \sum_r S_{ar} J_r(c) - D_a c_a$$
| Symbol | Meaning |
|---|---|
| $c_a$ | concentration of species $a$, as an atomic fraction |
| $G_a$ | cascade source |
| $J_r$ | flux of the elementary reaction $r$ |
| $S_{ar}$ | stoichiometric coefficient of reaction $r$ for species $a$ |
| $D_a$ | loss rate at fixed sinks: network dislocations, grain boundaries, precipitates |
Sizes are atom counts, energies are in eV, and the temperature is in K.
The Reaction Admissibility Graph
The master equation is not written by hand for each material. A material is declared as a Reaction Admissibility Graph (RAG), and the right-hand side is assembled by walking that graph.
A cluster is identified by the four-tuple $\sigma = (\chi, n, p, c)$:
- $\chi \in \lbrace -1, +1 \rbrace$ is the polarity: vacancy type or interstitial type
- $n$ is the size
- $p$ is the population, for example glissile ½⟨111⟩ loops, sessile ⟨100⟩ loops or bulk cavities
- $c$ is the composition of trapped solutes
The model is the labelled multidigraph $\mathcal{G} = (V, E, \nu, k)$, where $V$ is the set of admissible cluster vertices, $E$ is the set of admissible elementary reactions, $\nu$ is the stoichiometric action of each edge, and $k$ is the rate-kernel library.
The ten edge classes
Each edge belongs to exactly one of ten abstract classes.
| # | Edge class | Action |
|---|---|---|
| 1 | GROWTH |
same-polarity monomer absorption, $n \to n+1$ |
| 2 | SHRINKAGE |
opposite-polarity monomer impingement, $n \to n-1$ |
| 3 | DISSOCIATION |
thermal monomer emission, $n \to n-1$ |
| 4 | RECOMBINATION |
cross-polarity monomer annihilation |
| 5 | ANNIHILATION |
cross-polarity binary (cluster-cluster) hyperedge |
| 6 | INTER_POPULATION |
$p \to p'$ at fixed size and composition |
| 7 | SOLUTE_TRAPPING |
trapping and detrapping, $c \to c \pm e_s$ |
| 8 | COALESCENCE |
same-polarity binary growth |
| 9 | SOURCE |
cascade injection, with no precursor vertex |
| 10 | SINK |
absorption at a fixed sink |
Each class carries a fixed stoichiometric contract. Because the sign pattern of $S_{ar}$ is structural, conservation of the signed defect content $q = \chi n$ holds by construction for every intra-host reaction.
Two-layer architecture
| Layer | Location | Content |
|---|---|---|
| 1, abstract core | py_utils/core/, cpp_utils/core/ |
cluster identifier, edge classes, graph container, graph walker, state layout, reductions |
| 2, material model | py_utils/materials/eurofer97/, cpp_utils/materials/eurofer97/ |
the EUROFER-97 populations, its admissible vertices and edges, and its rate kernels |
The core carries no bcc-Fe or EUROFER-97 assumption. The Python graph walker is the executable specification that the production C++ kernel must agree with.
State-space reductions
Two independent reductions keep the system tractable at engineering doses.
Helium-vacancy loading
| Case | Cascade | Treatment | Number of equations |
|---|---|---|---|
| Case 1 | fusion | the helium content of a cavity class is replaced by its mean field | $I + 2V + 1$ |
| Case 2 | fission | the loading decouples into a scalar inventory | $I + V + 2$ |
Logarithmic bin moments
Sizes up to $i_{\rm discrete}$ (and $v_{\rm discrete}$ for vacancies) keep 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$$
shape_function |
$P$ | Closure |
|---|---|---|
constant |
1 | piecewise constant |
linear |
2 | hat function |
lognormal |
3 | log-normal shape |
The discrete formulation is recovered exactly when the number of bins is zero.
More detail
- The Doxygen API reference has a page on each of these subjects, with links to the classes. It is built locally; the Documentation section of the README gives the command.
- The README describes the cascade source, the transport model, the reaction kernels and the energetics.