RadCluster
Graph-based cluster dynamics for irradiated materials
Loading...
Searching...
No Matches
State layout

The Reaction Admissibility Graph defines which clusters exist. Integration needs them packed into one contiguous state vector \(y \in \mathbb{R}^{N_{eq}}\). The StateLayout in state_layout.py is the map

(block, local index)  <->  global ODE index

A StateLayout is an ordered list of named Block objects. Blocks are added with add_discrete(), add_bin_moment(), add_scalar() and add_aux(), and the layout is closed with freeze(). After that, offset(), slice() and index() return the position of a block or of one of its entries, N_eq is the total number of equations, and describe() prints the layout.

State vectors of the C++ solver

The C++ solver uses the layouts below. \(I\) and \(V\) are the largest tracked SIA and vacancy cluster sizes.

Discrete equations, fission cascade (helium Case 2):

y[0..I-1]       SIA clusters c_n, n = 1..I
y[I..I+V-1]     vacancy clusters and bubbles c_m, m = 1..V
y[I+V]          total helium in cavities
y[I+V+1]        free helium c_h

The number of equations is \(I + V + 2\).

Discrete equations, fusion cascade (helium Case 1):

y[0..I-1]       SIA clusters c_n
y[I..I+V-1]     vacancy clusters and bubbles c_m
y[I+V..I+2V-1]  helium content Q_m of each cavity class
y[I+2V]         free helium c_h

The number of equations is \(I + 2V + 1\).

The free-helium entry is omitted when helium is treated in the quasi-steady state, which removes one equation in both cases.

With the bin-moment equations the sizes up to \(i_{discrete}\) and \(v_{discrete}\) keep one ODE per size, and the larger sizes are grouped into logarithmic bins that carry \(P\) moments each. The number of equations is

\[ N_{eq} = i_{discrete} + P\,I_{bin} + v_{discrete} + P\,V_{bin} + n_{He} . \]

The header comment of radcluster_code/cpp_utils/core/parameters.h lists these layouts in full.

See also
State-space reductions, Solver parameter file