RadCluster
Graph-based cluster dynamics for irradiated materials
Loading...
Searching...
No Matches
Functions | Variables
runs Namespace Reference

Functions

 _r (run_id, table, label, notes="", **over)
 
list[dict] manifest ()
 
 _check_unique (runs)
 
list[dict] runnable (runs=None, tables=None)
 

Variables

str REFERENCE = "20260906_063055_full_system_bin_moment_CD_fission_I80000V20000_im5vm5"
 
dict GRID = {"t_span_end_s": 4.0e8, "n_points": 37, "dose": 40.0}
 
float DOSE_READ_MAIN = 15.72
 
tuple DOSE_READ_T4 = (0.2, 1.0, 2.0)
 
dict BASE
 
int TIMEOUT_NONLINEAR_CLOSURE = 1800
 
dict B4_GRID = {"i_discrete": 100, "I_bin": 18, "v_discrete": 5, "V_bin": 20}
 
tuple TD_SUPERSEDED
 
tuple P3_EXCLUDED
 
int M_BIN_DOMAIN = 10000
 
tuple M2_BINS = (4, 6, 8, 12, 16, 24, 32)
 
int M2R_DOMAIN = 1000
 
tuple M2R_BINS = (2, 3, 4, 6, 8, 12, 16, 24, 32)
 
tuple M2D_IDISC = (25, 50, 100, 200, 400, 800)
 
tuple M2D_BINS = (4, 8, 16, 32)
 
int M_REF_DOMAIN = 10000
 
str M_REF_RUN = "M1_D1000"
 
dict TIMING_SENSITIVE_TABLES = {"T5", "M1"}
 
list[dict] m = manifest()
 
list blocked = [e for e in m if e.get("blocked_on")]
 
str hdr
 

Detailed Description

runs.py — the run manifest for the paper-revision verification study.

The ~25 runs of `docs/Formulation/verification_campaign/paper_revision_verification_plan.md` as DATA,
not as two dozen hand-copied command lines.  One entry per table cell; the
runner (`campaign.py`) turns an entry into a `RadClusterSimulation` and a
timestamped output directory.

WHY A MANIFEST.  Three of the plan's rules are only enforceable if the runs are
enumerable in one place:

  * S3.2 -- every Table 1-3 column must share `t_span` and `n_points`, or
    "15.72 dpa" is a different point in different columns and the comparison
    drifts.  Here that is one constant (`GRID`) that every such entry inherits,
    rather than a number retyped 15 times.
  * S1.3 -- hold the bin ratio `r` at production and vary only `i_discrete`.
    The rungs below carry the plan's `I_bin`/`V_bin` for exactly that reason;
    `bin_layout()` then reads the REALISED layout back and refuses a silent
    fallback.
  * S3.4.1 -- no run that missed the comparison dose may be reported as a
    metric.  `dose_read` travels with the entry, so the reporting step can
    check it mechanically instead of by discipline.

Entries are ordered by the plan's execution order (S5): the Table 4 discrete
arm is the cost probe and comes first among the runs that must actually be
computed.

Function Documentation

◆ _check_unique()

runs._check_unique (   runs)
protected

Definition at line 674 of file runs.py.

◆ _r()

runs._r (   run_id,
  table,
  label,
  notes = "",
**  over 
)
protected
One manifest entry: BASE, overridden, plus identity and provenance.

Definition at line 156 of file runs.py.

◆ manifest()

list[dict] runs.manifest ( )
The full study, in execution order (plan S5).

Definition at line 164 of file runs.py.

◆ runnable()

list[dict] runs.runnable (   runs = None,
  tables = None 
)
Entries a worker may CLAIM: not blocked on unimplemented code, and not
excluded by a measured failure.  Excluded entries stay in manifest() so the
board still displays their recorded outcome.

Definition at line 701 of file runs.py.

Variable Documentation

◆ B4_GRID

dict runs.B4_GRID = {"i_discrete": 100, "I_bin": 18, "v_discrete": 5, "V_bin": 20}

Definition at line 71 of file runs.py.

◆ BASE

dict runs.BASE
Initial value:
1= {
2 "I": 80000, "V": 20000,
3 "equations": "bin_moment", "cascade": "fission",
4 "shape_function": "linear",
5 "solver_mode": "full_system",
6 "i_mobile": 5, "v_mobile": 5,
7 "rtol": 1e-5, "atol": 1e-20,
8 "preconditioner": "woodbury",
9 "he_kinetics": "quasi_steady_state",
10 "lnl": 1,
11 "omp_threads": 12,
12 "dose": GRID["dose"],
13 "n_points": GRID["n_points"],
14 "dose_read": DOSE_READ_MAIN,
15}

Definition at line 41 of file runs.py.

◆ blocked

list runs.blocked = [e for e in m if e.get("blocked_on")]

Definition at line 717 of file runs.py.

◆ DOSE_READ_MAIN

float runs.DOSE_READ_MAIN = 15.72

Definition at line 38 of file runs.py.

◆ DOSE_READ_T4

tuple runs.DOSE_READ_T4 = (0.2, 1.0, 2.0)

Definition at line 39 of file runs.py.

◆ GRID

dict runs.GRID = {"t_span_end_s": 4.0e8, "n_points": 37, "dose": 40.0}

Definition at line 37 of file runs.py.

◆ hdr

str runs.hdr
Initial value:
1= f"{'run_id':16s} {'tbl':4s} {'label':22s} {'eqs':9s} " \
2 f"{'I':>6s} {'V':>6s} {'i_d':>5s} {'I_b':>4s} {'v_d':>5s} {'V_b':>4s} {'dose':>5s}"

Definition at line 719 of file runs.py.

◆ m

list[dict] runs.m = manifest()

Definition at line 713 of file runs.py.

◆ M2_BINS

tuple runs.M2_BINS = (4, 6, 8, 12, 16, 24, 32)

Definition at line 106 of file runs.py.

◆ M2D_BINS

tuple runs.M2D_BINS = (4, 8, 16, 32)

Definition at line 132 of file runs.py.

◆ M2D_IDISC

tuple runs.M2D_IDISC = (25, 50, 100, 200, 400, 800)

Definition at line 131 of file runs.py.

◆ M2R_BINS

tuple runs.M2R_BINS = (2, 3, 4, 6, 8, 12, 16, 24, 32)

Definition at line 120 of file runs.py.

◆ M2R_DOMAIN

int runs.M2R_DOMAIN = 1000

Definition at line 119 of file runs.py.

◆ M_BIN_DOMAIN

int runs.M_BIN_DOMAIN = 10000

Definition at line 99 of file runs.py.

◆ M_REF_DOMAIN

int runs.M_REF_DOMAIN = 10000

Definition at line 136 of file runs.py.

◆ M_REF_RUN

str runs.M_REF_RUN = "M1_D1000"

Definition at line 153 of file runs.py.

◆ P3_EXCLUDED

tuple runs.P3_EXCLUDED
Initial value:
1= ("P=3 lognormal does not advance; measured 2026-09-06 on both "
2 "domains. Recorded as 'did not reach' per plan S3.4.1.")

Definition at line 88 of file runs.py.

◆ REFERENCE

str runs.REFERENCE = "20260906_063055_full_system_bin_moment_CD_fission_I80000V20000_im5vm5"

Definition at line 33 of file runs.py.

◆ TD_SUPERSEDED

tuple runs.TD_SUPERSEDED
Initial value:
1= ("superseded by cfce995 + check_bm_vs_discrete.py; the pair "
2 "cost ~2 days to re-confirm a 20 s result")

Definition at line 85 of file runs.py.

◆ TIMEOUT_NONLINEAR_CLOSURE

int runs.TIMEOUT_NONLINEAR_CLOSURE = 1800

Definition at line 68 of file runs.py.

◆ TIMING_SENSITIVE_TABLES

dict runs.TIMING_SENSITIVE_TABLES = {"T5", "M1"}

Definition at line 698 of file runs.py.