|
RadCluster
Graph-based cluster dynamics for irradiated materials
|
Functions | |
| run_one (T_C, t_end, n_points, I=1000, V=1000, i_mobile=20, v_mobile=5, rtol=1e-5, network_loss=True, conversion=True) | |
| run_conv (T_C, t_end=3e6, n_points=60, I=200, i_mobile=10, v_mobile=3, rtol=3e-3, timeout_s=4500, progress_path=None) | |
| summarize (T_C, r) | |
Variables | |
| ROOT = Path(__file__).resolve().parents[2] | |
| encoding | |
| float | T_STAR_CONV = 250.0 |
| float | E_A0_CONV = 1.6 |
| float | GAMMA_A_CONV = 0.02 |
| DH2_CONV = None | |
| PHI_MAX_JUNC = None | |
| float | RHO_D0 = 5.0e13 |
| float | RHO_MAX = 5.0e14 |
| float | LOOP_NET_WC = 3.72e-8 |
| float | LOOP_NET_KREC = 0.0 |
| float | LOOP_NET_CHI = 50.0 |
| int | LOOP_NET_NINC = 10 |
| ap = argparse.ArgumentParser() | |
| action | |
| help | |
| type | |
| float | |
| default | |
| str | |
| args = ap.parse_args() | |
| tuple | temps |
| flush | |
| list | rows = [] |
| t0 = time.perf_counter() | |
| dict | _kw = {} |
| r = run_conv(T_C, progress_path=args.progress, **_kw) | |
| dt = time.perf_counter() - t0 | |
| f111 = float(np.asarray(r["f_111_loop"])[-1]) | |
| dose = float(np.asarray(r["dose"])[-1]) | |
| t_end | |
| n_points | |
| I | |
| row = summarize(T_C, r) | |
sweep_loop100_and_network.py — exercise the two newest RadCluster_2_1 features
against experiment:
(1) ½⟨111⟩ → ⟨100⟩ loop conversion — content-weighted f₁₁₁(T) crossover.
Sweeps T ∈ {450, 500, 550} °C with the design-note-calibrated crossover
T_star_conv_C = 340 °C, so the Dudarev unary driving force turns on and
the large loops convert as T rises (⟨100⟩ becomes dominant at high T —
the experimental high-T regime).
(2) Loop → network-dislocation loss — dynamic ρ_net(dose).
Enables LOOP_NETWORK_LOSS and drives ρ_net through run_adaptive's
operator-split so it rises ~1 order of magnitude and saturates near the
experimental EUROFER network density (~5×10¹⁴ m⁻²).
Run (from module root, needs a built solver.exe):
python codes/Python_Testing/sweep_loop100_and_network.py [--quick] [--T 500]
| sweep_loop100_and_network.run_conv | ( | T_C, | |
t_end = 3e6, |
|||
n_points = 60, |
|||
I = 200, |
|||
i_mobile = 10, |
|||
v_mobile = 3, |
|||
rtol = 3e-3, |
|||
timeout_s = 4500, |
|||
progress_path = None |
|||
| ) |
f_111(T) CROSSOVER point: loop conversion ON, network loss OFF, on a reduced active_window/discrete grid so the (stiff) conversion runs complete. f_100 is a growth-vs-conversion competition gated by the dF cutoff (T_star): large loops convert fast at high T (gamma_a tuned) -> f_100->1, but stay partial at low T where the dF cutoff caps the convertible size. If ``progress_path`` is given, per-SEGMENT f_100 / loop concentrations are appended live (via a wrapper on sim._merge_results) so an in-flight run's progress is visible without waiting for the point to finish.
Definition at line 123 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.run_one | ( | T_C, | |
| t_end, | |||
| n_points, | |||
I = 1000, |
|||
V = 1000, |
|||
i_mobile = 20, |
|||
v_mobile = 5, |
|||
rtol = 1e-5, |
|||
network_loss = True, |
|||
conversion = True |
|||
| ) |
One temperature: conversion ON + (optionally) network loss, via run_adaptive so ρ_net advances between segments. Returns the results dict. Uses the efficient full_system + bin_moment + Woodbury path (the original 16-min config) so loops reach n≈200 — the size the network-loss channel needs to activate (the capture switch needs χ·d_loop ≳ network spacing).
Definition at line 73 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.summarize | ( | T_C, | |
| r | |||
| ) |
Definition at line 192 of file sweep_loop100_and_network.py.
|
protected |
Definition at line 257 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.action |
Definition at line 206 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.ap = argparse.ArgumentParser() |
Definition at line 205 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.args = ap.parse_args() |
Definition at line 232 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.default |
Definition at line 208 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.DH2_CONV = None |
Definition at line 56 of file sweep_loop100_and_network.py.
Definition at line 267 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.dt = time.perf_counter() - t0 |
Definition at line 263 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.E_A0_CONV = 1.6 |
Definition at line 52 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.encoding |
Definition at line 29 of file sweep_loop100_and_network.py.
Definition at line 266 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.float |
Definition at line 208 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.flush |
Definition at line 249 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.GAMMA_A_CONV = 0.02 |
Definition at line 53 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.help |
Definition at line 207 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.I |
Definition at line 280 of file sweep_loop100_and_network.py.
| float sweep_loop100_and_network.LOOP_NET_CHI = 50.0 |
Definition at line 69 of file sweep_loop100_and_network.py.
| float sweep_loop100_and_network.LOOP_NET_KREC = 0.0 |
Definition at line 68 of file sweep_loop100_and_network.py.
| int sweep_loop100_and_network.LOOP_NET_NINC = 10 |
Definition at line 70 of file sweep_loop100_and_network.py.
| float sweep_loop100_and_network.LOOP_NET_WC = 3.72e-8 |
Definition at line 66 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.n_points |
Definition at line 280 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.PHI_MAX_JUNC = None |
Definition at line 57 of file sweep_loop100_and_network.py.
Definition at line 262 of file sweep_loop100_and_network.py.
| float sweep_loop100_and_network.RHO_D0 = 5.0e13 |
Definition at line 58 of file sweep_loop100_and_network.py.
| float sweep_loop100_and_network.RHO_MAX = 5.0e14 |
Definition at line 59 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.ROOT = Path(__file__).resolve().parents[2] |
Definition at line 26 of file sweep_loop100_and_network.py.
Definition at line 296 of file sweep_loop100_and_network.py.
| list sweep_loop100_and_network.rows = [] |
Definition at line 250 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.str |
Definition at line 215 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.t0 = time.perf_counter() |
Definition at line 256 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.t_end |
Definition at line 280 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.T_STAR_CONV = 250.0 |
Definition at line 45 of file sweep_loop100_and_network.py.
| list sweep_loop100_and_network.temps |
Definition at line 245 of file sweep_loop100_and_network.py.
| sweep_loop100_and_network.type |
Definition at line 208 of file sweep_loop100_and_network.py.