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

Functions

list[list[float]] latin_hypercube (int n, int d, random.Random rng)
 
int main (argv=None)
 

Variables

 HERE = Path(__file__).resolve().parent
 
dict SAMPLED
 
dict ORIGINAL_PRIOR
 

Detailed Description

Generate a SPACE-FILLING calibration design for the T8 experiment match.

WHY NOT SALTELLI.  T2/T3 used a Saltelli A/B/AB_j design because the question
was the RELATIVE RANKING of parameters (Sobol indices), which needs that exact
pairing and costs N*(p+2) rows to buy it.  The question now is different: find
parameter vectors whose loop character and mean size match the measurement.
That is estimation, not attribution -- the pairing buys nothing, and a Latin
hypercube covers the box far better per row.  At p = 7 a Saltelli design would
need 9 rows per base sample; this needs 1.

WHY THESE SEVEN.  Screened on the T3 campaign (1008 rows) against the two
observables the campaign never screened -- f_100_tem_1 and the loop diameters --
because <100> was withheld under bin_moment:

    parameter      rho(d_100)  rho(d_111)  rho(pile_100)  rho(f_100)
    L_hat            -0.540      +0.011       -0.699        +0.004
    E_a0_conv        +0.650      +0.268       +0.119        -0.583
    phi_max_junc     +0.322      +0.267       -0.019        -0.556
    Z_i              +0.420      +0.270       +0.015        -0.590
    f_cl_v           -0.337      -0.251       +0.136        +0.605
    f_cl_i           +0.343      -0.031       +0.284        +0.013
    dH2_abs_conv     +0.323      +0.113       +0.430        -0.183

L_hat is the one lever that is strong on the <100> axis and ORTHOGONAL to
d_111 (rho = +0.011), so it de-saturates the grid without disturbing the
1/2<111> size that sets the character.  Every other parameter trades the two
against each other.  It is sampled HIGH by default: all four grid-clean
full-dose rows in T3 had L_hat >= 1016, and the L_hat < 100 half of the campaign
has median pile_100 = 1.000, i.e. totally saturated.

THE TARGET is the 85 grid-clean rows (pile_100 < 0.05, 8.4 % of T3), where the
model already reproduces the experiment qualitatively: median f_100_tem_1 =
0.331 against a "< 0.5" datum, median d_111 = 2.31 nm against 3.4 nm, and
d_100 down to 1.61 nm.  This design searches that region rather than the full
prior box.

Every non-sampled parameter is pinned to a BASE ROW rather than the workbook, so
the design sits at a point already known to be grid-clean, conserving and cheap
(T3 row 38: pile_100 = 1e-17, delta_FP = 4.6e-3, 1852 s to full dose).

Usage:
    python make_calib_design.py --n 64 --condition C_330_G6 --out design/T8_calib.csv

Function Documentation

◆ latin_hypercube()

list[list[float]] make_calib_design.latin_hypercube ( int  n,
int  d,
random.Random  rng 
)
Stratified sample in [0,1)^d: one point per stratum per dimension.

Plain uniform sampling leaves gaps and clumps that matter at n = 64 over 7
dimensions; the LHS guarantees each parameter's marginal is covered evenly,
which is what makes a small design usable for estimation.

Definition at line 110 of file make_calib_design.py.

◆ main()

int make_calib_design.main (   argv = None)

Definition at line 125 of file make_calib_design.py.

Variable Documentation

◆ HERE

make_calib_design.HERE = Path(__file__).resolve().parent

Definition at line 55 of file make_calib_design.py.

◆ ORIGINAL_PRIOR

dict make_calib_design.ORIGINAL_PRIOR
Initial value:
1= {
2 "E_a0_conv": (1.6, 2.4),
3 "phi_max_junc": (0.1, 1.0),
4 "f_cl_i": (0.05, 0.25),
5 "dH2_abs_conv": (0.26, 0.45),
6 "E_b_i2": (0.6, 1.2),
7 "B_111": (0.3, 0.7),
8}

Definition at line 100 of file make_calib_design.py.

◆ SAMPLED

dict make_calib_design.SAMPLED
Initial value:
1= {
2 "L_hat": (300.0, 3500.0, "log"),
3 "E_a0_conv": (1.4, 3.5, "lin"), # was (1.6, 2.4)
4 "phi_max_junc": (0.01, 1.0, "log"), # was (0.1, 1.0) lin
5 "Z_i": (1.02, 1.15, "lin"),
6 "f_cl_v": (0.2, 0.7, "lin"),
7 "f_cl_i": (0.01, 0.25, "log"), # was (0.05, 0.25) lin
8 "dH2_abs_conv": (0.26, 0.70, "lin"), # was (0.26, 0.45)
9 "E_b_i2": (0.6, 1.6, "lin"), # NEW -- was pinned
10 "B_111": (0.2, 0.7, "lin"), # NEW -- was pinned
11}

Definition at line 86 of file make_calib_design.py.