|
RadCluster
Graph-based cluster dynamics for irradiated materials
|
A cluster is identified by the four-tuple \(\sigma = (\chi, n, p, c)\):
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 graph is host-specific in \((V, E)\) and calibration-specific in \(k\). A reaction that is physically forbidden is excluded when the graph is constructed, and never reaches the solver.
The vertex primitives are in cluster_identifier.py:
The graph container is in rag.py:
A host material fills a ReactionAdmissibilityGraph in three steps:
The method validate() checks that every edge has a registered kernel, and summary() returns a one-line count of populations and of edges per class.
The production path keeps the graph implicit: the graph walker never instantiates a vertex. The module to_networkx.py materializes a declared graph up to a chosen size cut-off as a networkx.MultiDiGraph, writes it to GraphML, and prints a structural report (connectivity, reachability from the monomer pools, orphaned vertices). It is a diagnostic path only.