|
RadCluster
Graph-based cluster dynamics for irradiated materials
|
Functions | |
| RadClusterSimulation | build_sim (str equations) |
| dict | make_solver_config (str linsol, preconditioner) |
| _last (arr) | |
| run_one (tag, equations, linsol, preconditioner) | |
| fmt_t (x) | |
| fmt_w (x) | |
| fmt_pct (x) | |
| fmt_n (x) | |
| find (tag) | |
| ratio (a, b) | |
| fastest (group) | |
Variables | |
| encoding | |
| errors | |
| MODULE_ROOT = Path(__file__).resolve().parent.parent.parent | |
| REPO_ROOT = MODULE_ROOT.parent | |
| HERE = Path(__file__).resolve().parent | |
| str | build_dir = MODULE_ROOT / 'build' |
| str | exe_name = 'win32' else 'solver' |
| list | exe_paths |
| flush | |
| exist_ok | |
| str | cmake_src = MODULE_ROOT / 'cpp_utils' |
| res = subprocess.run(cmd, capture_output=True, text=True) | |
| float | TIMEOUT_S = 3000.0 |
| I = int(1e4) | |
| i_mobile | |
| v_mobile | |
| tuple | T_SPAN = (1e-6, 1e4) |
| int | N_POINTS = 200 |
| int | RTOL = 1e-6 |
| int | ATOL = 1e-20 |
| int | C_FLOOR = 1e-25 |
| dict | PHYSICS_OVERRIDES |
| BIN_MOMENT_GRID | |
| list | CASES |
| list | records = [run_one(*c) for c in CASES] |
| str | out_json = HERE / 'compare_linsol_results.json' |
| f | |
| indent | |
| default | |
| D_WB | |
| D_JC | |
| D_KLU | |
| B_WB | |
| B_JC | |
| B_KLU | |
| ref_d = fastest([D_WB, D_JC, D_KLU]) | |
| ref_b = fastest([B_WB, B_JC, B_KLU]) | |
| list | lines = [] |
| str | rel = ratio(r['wall_s'], ref_d['wall_s']) if (ref_d and r['wall_s']) else '—' |
| spd = ratio(ref_d['wall_s'], ref_b['wall_s']) | |
| str | report_path = HERE / 'compare_linsol_report.md' |
compare_linsol.py — Linear-solver / preconditioner comparison.
Six configurations are timed back-to-back, all with identical physics
overrides (taken verbatim from the current cell of
RadCluster_2_1.ipynb). Each run is capped at TIMEOUT_S wall-clock
seconds; if the cap is hit, the C++ solver finalises the current
output step gracefully and the partial trajectory is kept.
Group 1 EQUATIONS='discrete' (full per-size, I_bin=V_bin=0)
D-WB gmres + Woodbury
D-JC gmres + Jacobi
D-KLU klu (sparse direct, full_CD only)
Group 2 EQUATIONS='bin_moment' (i_discrete=v_discrete=50, I_bin=V_bin=20)
B-WB gmres + Woodbury
B-JC gmres + Jacobi
B-KLU klu <-- C++ rejects: full_CD only
After the 6 runs the script writes
compare_linsol_results.json
compare_linsol_report.md
in the same directory.
|
protected |
Definition at line 198 of file compare_linsol.py.
| RadClusterSimulation compare_linsol.build_sim | ( | str | equations | ) |
Construct a fresh RadClusterSimulation with the right equation form.
Definition at line 132 of file compare_linsol.py.
| compare_linsol.fastest | ( | group | ) |
Definition at line 302 of file compare_linsol.py.
| compare_linsol.find | ( | tag | ) |
Definition at line 289 of file compare_linsol.py.
| compare_linsol.fmt_n | ( | x | ) |
Definition at line 287 of file compare_linsol.py.
| compare_linsol.fmt_pct | ( | x | ) |
Definition at line 286 of file compare_linsol.py.
| compare_linsol.fmt_t | ( | x | ) |
Definition at line 284 of file compare_linsol.py.
| compare_linsol.fmt_w | ( | x | ) |
Definition at line 285 of file compare_linsol.py.
| dict compare_linsol.make_solver_config | ( | str | linsol, |
| preconditioner | |||
| ) |
Definition at line 179 of file compare_linsol.py.
| compare_linsol.ratio | ( | a, | |
| b | |||
| ) |
Definition at line 294 of file compare_linsol.py.
| compare_linsol.run_one | ( | tag, | |
| equations, | |||
| linsol, | |||
| preconditioner | |||
| ) |
Definition at line 205 of file compare_linsol.py.
| int compare_linsol.ATOL = 1e-20 |
Definition at line 94 of file compare_linsol.py.
| compare_linsol.B_JC |
Definition at line 299 of file compare_linsol.py.
| compare_linsol.B_KLU |
Definition at line 299 of file compare_linsol.py.
| compare_linsol.B_WB |
Definition at line 299 of file compare_linsol.py.
| compare_linsol.BIN_MOMENT_GRID |
Definition at line 113 of file compare_linsol.py.
| str compare_linsol.build_dir = MODULE_ROOT / 'build' |
Definition at line 50 of file compare_linsol.py.
| int compare_linsol.C_FLOOR = 1e-25 |
Definition at line 95 of file compare_linsol.py.
| list compare_linsol.CASES |
Definition at line 118 of file compare_linsol.py.
| str compare_linsol.cmake_src = MODULE_ROOT / 'cpp_utils' |
Definition at line 58 of file compare_linsol.py.
| compare_linsol.D_JC |
Definition at line 298 of file compare_linsol.py.
| compare_linsol.D_KLU |
Definition at line 298 of file compare_linsol.py.
| compare_linsol.D_WB |
Definition at line 298 of file compare_linsol.py.
| compare_linsol.default |
Definition at line 277 of file compare_linsol.py.
| compare_linsol.encoding |
Definition at line 36 of file compare_linsol.py.
| compare_linsol.errors |
Definition at line 36 of file compare_linsol.py.
| str compare_linsol.exe_name = 'win32' else 'solver' |
Definition at line 51 of file compare_linsol.py.
| list compare_linsol.exe_paths |
Definition at line 52 of file compare_linsol.py.
| compare_linsol.exist_ok |
Definition at line 57 of file compare_linsol.py.
| compare_linsol.f |
Definition at line 277 of file compare_linsol.py.
| compare_linsol.flush |
Definition at line 56 of file compare_linsol.py.
| compare_linsol.HERE = Path(__file__).resolve().parent |
Definition at line 44 of file compare_linsol.py.
| compare_linsol.I = int(1e4) |
Definition at line 87 of file compare_linsol.py.
| compare_linsol.i_mobile |
Definition at line 88 of file compare_linsol.py.
| compare_linsol.indent |
Definition at line 277 of file compare_linsol.py.
| list compare_linsol.lines = [] |
Definition at line 309 of file compare_linsol.py.
| compare_linsol.MODULE_ROOT = Path(__file__).resolve().parent.parent.parent |
Definition at line 42 of file compare_linsol.py.
| int compare_linsol.N_POINTS = 200 |
Definition at line 92 of file compare_linsol.py.
| str compare_linsol.out_json = HERE / 'compare_linsol_results.json' |
Definition at line 267 of file compare_linsol.py.
| dict compare_linsol.PHYSICS_OVERRIDES |
Definition at line 98 of file compare_linsol.py.
Definition at line 264 of file compare_linsol.py.
Definition at line 307 of file compare_linsol.py.
Definition at line 306 of file compare_linsol.py.
Definition at line 355 of file compare_linsol.py.
| compare_linsol.REPO_ROOT = MODULE_ROOT.parent |
Definition at line 43 of file compare_linsol.py.
| str compare_linsol.report_path = HERE / 'compare_linsol_report.md' |
Definition at line 420 of file compare_linsol.py.
| compare_linsol.res = subprocess.run(cmd, capture_output=True, text=True) |
Definition at line 62 of file compare_linsol.py.
| int compare_linsol.RTOL = 1e-6 |
Definition at line 93 of file compare_linsol.py.
Definition at line 391 of file compare_linsol.py.
| tuple compare_linsol.T_SPAN = (1e-6, 1e4) |
Definition at line 91 of file compare_linsol.py.
| float compare_linsol.TIMEOUT_S = 3000.0 |
Definition at line 84 of file compare_linsol.py.
| compare_linsol.v_mobile |
Definition at line 88 of file compare_linsol.py.