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

Functions

 latin_hypercube (n_samples, n_dims, rng)
 
 unit_to_physical (u, spec)
 
 physical_to_unit (val, spec)
 
 sample_to_params (unit_vec)
 
 atoms_to_loop_diameter_nm (mean_n_i)
 
 atoms_to_void_diameter_nm (mean_n_v)
 
 evaluate_cost (results, sim)
 
 run_single (params, timeout_s=180, run_id=0)
 
 append_log (log_path, row_dict)
 
 build_row (run_id, phase, params, cost, metrics, wall)
 
 main ()
 

Variables

 SCRIPT_DIR = Path(__file__).resolve().parent
 
 BASE_DIR = SCRIPT_DIR.parent.parent
 
float OMEGA = 1.18e-29
 
float B_111 = 2.482e-10
 
list PARAM_SPEC
 
list PARAM_NAMES = [p[0] for p in PARAM_SPEC]
 
float TARGET_DOSE = 10.0
 
float TARGET_N_LOOPS = 1.0e22
 
float TARGET_D_I_NM = 10.0
 
float TARGET_N_VOIDS = 4.0e21
 
float TARGET_D_V_NM = 3.0
 
int N_MIN_TEM = 10
 
tuple LOG_FIELDS
 

Detailed Description

calibrate.py — Autonomous parameter calibration for RadCluster_2_1.

Explores the parameter space using Latin Hypercube Sampling, runs bin-moment
cluster dynamics simulations via the C++ solver, and identifies parameter
combinations that match experimental TEM data at 10 dpa for EUROFER97:

    SIA loop density  ~ 10^22 m^-3       diameter ~ 10 nm
    Void density      ~ 3-5 x 10^21 m^-3 diameter ~ 2-4 nm

Usage
-----
    cd radcluster_code
    python codes/calibrate.py              # default 20 + 10 runs
    python codes/calibrate.py --phase1 30  # more exploration
    python codes/calibrate.py --timeout 120  # 2 min per run

Function Documentation

◆ append_log()

calibrate.append_log (   log_path,
  row_dict 
)
Append one row to the CSV log, creating headers if needed.

Definition at line 314 of file calibrate.py.

◆ atoms_to_loop_diameter_nm()

calibrate.atoms_to_loop_diameter_nm (   mean_n_i)
Convert mean SIA cluster size (atoms) to loop diameter (nm).

Definition at line 115 of file calibrate.py.

◆ atoms_to_void_diameter_nm()

calibrate.atoms_to_void_diameter_nm (   mean_n_v)
Convert mean vacancy cluster size (atoms) to void diameter (nm).

Definition at line 123 of file calibrate.py.

◆ build_row()

calibrate.build_row (   run_id,
  phase,
  params,
  cost,
  metrics,
  wall 
)
Assemble a log row dict.

Definition at line 324 of file calibrate.py.

◆ evaluate_cost()

calibrate.evaluate_cost (   results,
  sim 
)
Compute scalar cost measuring deviation from experimental targets at
TARGET_DOSE dpa.  Uses TEM-visible clusters only (n,m >= N_MIN_TEM).
Returns (cost, metrics_dict) or (inf, None) on failure.

Definition at line 131 of file calibrate.py.

◆ latin_hypercube()

calibrate.latin_hypercube (   n_samples,
  n_dims,
  rng 
)
Simple LHS: stratified random in [0,1]^d.

Definition at line 62 of file calibrate.py.

◆ main()

calibrate.main ( )

Definition at line 340 of file calibrate.py.

◆ physical_to_unit()

calibrate.physical_to_unit (   val,
  spec 
)
Map physical value back to [0,1].

Definition at line 83 of file calibrate.py.

◆ run_single()

calibrate.run_single (   params,
  timeout_s = 180,
  run_id = 0 
)
Run one simulation with the given parameter dict.
Returns (cost, metrics, wall_time) or (inf, None, wall_time).

Definition at line 239 of file calibrate.py.

◆ sample_to_params()

calibrate.sample_to_params (   unit_vec)
Convert a [0,1]^d vector to a dict of physical parameters.

Definition at line 94 of file calibrate.py.

◆ unit_to_physical()

calibrate.unit_to_physical (   u,
  spec 
)
Map u in [0,1] to physical value according to spec.

Definition at line 72 of file calibrate.py.

Variable Documentation

◆ B_111

float calibrate.B_111 = 2.482e-10

Definition at line 33 of file calibrate.py.

◆ BASE_DIR

calibrate.BASE_DIR = SCRIPT_DIR.parent.parent

Definition at line 26 of file calibrate.py.

◆ LOG_FIELDS

tuple calibrate.LOG_FIELDS
Initial value:
1= (
2 ['run_id', 'phase', 'cost', 'wall_s']
3 + PARAM_NAMES
4 + ['N_loops', 'N_voids', 'mean_n_i', 'mean_n_v',
5 'd_i_nm', 'd_v_nm', 'delta_FP', 'delta_He']
6)

Definition at line 306 of file calibrate.py.

◆ N_MIN_TEM

int calibrate.N_MIN_TEM = 10

Definition at line 112 of file calibrate.py.

◆ OMEGA

float calibrate.OMEGA = 1.18e-29

Definition at line 32 of file calibrate.py.

◆ PARAM_NAMES

list calibrate.PARAM_NAMES = [p[0] for p in PARAM_SPEC]

Definition at line 59 of file calibrate.py.

◆ PARAM_SPEC

list calibrate.PARAM_SPEC
Initial value:
1= [
2 # (name, sheet, lo, hi, scale)
3 # -- Production --
4 ('eta', 'production_fission', 0.15, 0.35, 'linear'),
5 ('f_cl_i', 'production_fission', 0.10, 0.55, 'linear'),
6 ('f_cl_v', 'production_fission', 0.02, 0.15, 'linear'),
7 # -- Diffusion: 1D glide & mobility cutoff --
8 ('E_m_1D', 'diffusion', 0.01, 0.20, 'linear'),
9 ('i_mobile', 'diffusion', 3, 100, 'int'),
10 ('L_hat', 'diffusion', 20, 100, 'linear'),
11 # -- Diffusion: solute trapping (dominant effect on SIA mobility) --
12 ('c_C', 'diffusion', 1e-5, 5e-4, 'log'),
13 ('E_b_C_SIA', 'diffusion', 0.20, 0.50, 'linear'),
14 # -- Reactions: sinks and coalescence bias --
15 ('rho_d', 'reactions', 1e12, 1e14, 'log'),
16 ('Z_i', 'reactions', 1.02, 1.20, 'linear'),
17 ('Z_ii', 'reactions', 1.0, 10.0, 'log'),
18]

Definition at line 40 of file calibrate.py.

◆ SCRIPT_DIR

calibrate.SCRIPT_DIR = Path(__file__).resolve().parent

Definition at line 25 of file calibrate.py.

◆ TARGET_D_I_NM

float calibrate.TARGET_D_I_NM = 10.0

Definition at line 107 of file calibrate.py.

◆ TARGET_D_V_NM

float calibrate.TARGET_D_V_NM = 3.0

Definition at line 109 of file calibrate.py.

◆ TARGET_DOSE

float calibrate.TARGET_DOSE = 10.0

Definition at line 105 of file calibrate.py.

◆ TARGET_N_LOOPS

float calibrate.TARGET_N_LOOPS = 1.0e22

Definition at line 106 of file calibrate.py.

◆ TARGET_N_VOIDS

float calibrate.TARGET_N_VOIDS = 4.0e21

Definition at line 108 of file calibrate.py.