|
RadCluster
Graph-based cluster dynamics for irradiated materials
|
Functions | |
| run_case (name, overrides, quiet=True, heartbeat_every=1.5) | |
| write_summary_csv (cases, out_dir) | |
| plot_time_series (cases, out_dir) | |
| plot_size_distributions (cases, out_dir) | |
| main () | |
Variables | |
| MODULE_ROOT = Path(__file__).resolve().parent.parent.parent | |
| REPO_ROOT = MODULE_ROOT.parent | |
| I_SIM | |
| V_SIM | |
| float | DOSE_SNAPSHOT = 0.01 |
| dict | SOLVER_CONFIG |
| list | CASES |
mobility_sweep.py — diagnostic sweep of SIA / vacancy mobility cutoffs.
Hypothesis under test
---------------------
With the current input (n_max_i=50, m_max_v=5, L_hat=50), mobile SIA
clusters of size 4–50 glide in 1D and are rapidly drained at fixed sinks
(dislocations, GBs, precipitates) and at voids — even when the 3D
coalescence diffusivity D_SIA_eff[n>=2] is zero. Vacancy clusters lose
mobility at m=6 and become permanent sinks for the residual flux. The
asymmetry should disappear (and may invert) when i_mobile is reduced
toward 1, when v_mobile is raised, or when L_hat is shortened.
Cases
-----
A baseline i_mobile=50, v_mobile=5, L_hat=50
B di-SIA only i_mobile=2, v_mobile=5, L_hat=50
C monomer-only SIA i_mobile=1, v_mobile=5, L_hat=50
D symmetric mobility i_mobile=50, v_mobile=20, L_hat=50
E mono-defect (reference) i_mobile=1, v_mobile=1, L_hat=50
F short MFP (1D suppressed) i_mobile=50, v_mobile=5, L_hat=5
Output
------
output/mobility_sweep_<timestamp>/
summary.csv — per-case scalars at 0.1 dpa
mean_sizes_vs_dose.png — mean_n_i, mean_n_v(t) for all cases
swelling_vs_dose.png — swelling(t) for all cases
conservation_vs_dose.png — delta_FP vs dose for all cases
size_dist_at_0.1dpa.png — c_n, c_m at 0.1 dpa, all cases
| mobility_sweep.main | ( | ) |
Definition at line 298 of file mobility_sweep.py.
| mobility_sweep.plot_size_distributions | ( | cases, | |
| out_dir | |||
| ) |
Definition at line 276 of file mobility_sweep.py.
| mobility_sweep.plot_time_series | ( | cases, | |
| out_dir | |||
| ) |
Definition at line 232 of file mobility_sweep.py.
| mobility_sweep.run_case | ( | name, | |
| overrides, | |||
quiet = True, |
|||
heartbeat_every = 1.5 |
|||
| ) |
Run one case via active_window and return time-resolved results. Per-row progress is forwarded to the *real* terminal even while the inner solver's stdout is captured. A line is printed at most once every `heartbeat_every` seconds (wall-clock) plus always at the final point, to avoid flooding while still confirming progress.
Definition at line 98 of file mobility_sweep.py.
| mobility_sweep.write_summary_csv | ( | cases, | |
| out_dir | |||
| ) |
Definition at line 204 of file mobility_sweep.py.
| list mobility_sweep.CASES |
Definition at line 88 of file mobility_sweep.py.
| float mobility_sweep.DOSE_SNAPSHOT = 0.01 |
Definition at line 73 of file mobility_sweep.py.
| mobility_sweep.I_SIM |
Definition at line 68 of file mobility_sweep.py.
| mobility_sweep.MODULE_ROOT = Path(__file__).resolve().parent.parent.parent |
Definition at line 42 of file mobility_sweep.py.
| mobility_sweep.REPO_ROOT = MODULE_ROOT.parent |
Definition at line 43 of file mobility_sweep.py.
| dict mobility_sweep.SOLVER_CONFIG |
Definition at line 75 of file mobility_sweep.py.
| mobility_sweep.V_SIM |
Definition at line 68 of file mobility_sweep.py.