bouquet — workflow & logic map
Start with the physics workflow (what happens to the
profiles and equilibrium quantities); open the full logic map below to
see every config knob, decision gate, and artifact, each anchored to
file:line (hover). Scroll to zoom, drag to pan the full map.
Snapshot of commit 0fb8e7a.
The physics workflow — GP perturbation → derived quantities →
bootstrap → ℓ_i matching → GS solve → archive
bouquet_physics
cluster_p0
Inputs (solid blue = required for its path, dashed = optional)
cluster_p1
Baseline (once per slice)
cluster_p2
repeat ×
N
ens
(each draw independent)
gfile
geqdsk
ψ
(R,Z),
p
,
q
,
j
φ
, separatrix
recon
GS reconstruction (geqdsk path)
fit inductive spline, full-Sauter
j
BS
j
φ
=
j
ind
+
j
BS
; match
ℓ
i
(1) by secant
targets:
I
p
,
ℓ
i
gfile->recon
kin
kinetic profiles + σ(
ψ
N
) envelopes
n
e
,
T
e
,
T
i
(,
n
i
,
ω
tor
)
p-file or kinetic-fit netCDF
kin->recon
envel
uncertainty envelope
σ
n
,
σ
T
,
σ
Zeff
,
σ
jφ
+ GP length scales
ℓ
n
,
ℓ
T
,
ℓ
j
kin->envel
ids
IMAS/OMAS IDS
n
e
,
T
e
,
T
i
,
Z
eff
;
j
ohmic
,
j
BS
,
j
NBI
;
p
fast
; equilibrium anchors
fsolve
forward solve (IMAS/OMAS path)
keep IDS
j
ohmic
; Sauter
j
BS
reconciliation
(diff:
j
BS,diff
=
j
BS
IDS
−
j
BS
Sauter
| rescale)
anchors:
p
diff
,
j
φ,diff
;
ℓ
i
target = solved
ℓ
i
(1)
ids->fsolve
lcfs
magnetics-only LCFS
(separatrix target override)
lcfs->fsolve
fixed
fixed arrays
j
NBI
,
j
RF
,
p
fast
(
ψ
N
)
rebuild
rebuild total current
j
φ
=
j
ind
+
s
·
j
BS
(+
j
BS,diff
) +
j
NBI
+
j
RF
(+
j
φ,diff
)
fixed->rebuild
sigmas
explicit σ profiles
or diagnostic σ source
sigmas->envel
quasi
quasineutral densities
n
i
=
n
e
(
Z
imp
−
Z
eff
) / (
Z
imp
− 1)
recon->quasi
fsolve->quasi
quasi->envel
gp
GP profile sampling (Gibbs kernel)
draw
n
e
,
T
e
,
T
i
,
Z
eff
,
j
ind
~ GP(baseline, σ, ℓ)
within envelopes; SOL included via
ψ
N,kin
grid
envel->gp
derive
recompute derived
n
i
from drawn
Z
eff
(quasineutrality)
p
tot
= Σ
a
e
n
a
T
a
+
p
imp
+
p
fast
(+
p
diff
)
gp->derive
pgate
⟨
P
⟩ within 5%
of baseline?
derive->pgate
pgate->gp
resample
regrid
kinetic → equilibrium regrid (PCHIP)
n
e
,
T
e
,
T
i
,
Z
eff
:
ψ
N,kin
→
ψ
N,eq
shape-preserving (monotone, no overshoot)
⇒ clean ∇
n
, ∇
T
for the Sauter coefficients
pgate->regrid
yes
boot
bootstrap recompute (Sauter)
j
BS
= f(
n
,
T
,
Z
eff
) (3 self-consistent iterations)
parallel→toroidal:
c
= 1 / (⟨
R
⟩⟨1/
R
⟩)
scale
s
~ U(0.99, 1.01) ·
s
0
regrid->boot
smooth
near-axis bootstrap repair (shared with the baseline)
the solver collapses the innermost surface point of
j
BS
;
shelf-preserving Gaussian blend over the transition
⇒ a σ = 0 draw reproduces the baseline
j
BS
boot->smooth
smooth->rebuild
limatch
ℓ
i
matching
(optionally sample target ~ N(
ℓ
i
,
σ
ℓi
))
scale
j
ind
+ corrective iteration
until |
ℓ
i
− target| ≤ 5%
rebuild->limatch
limatch->limatch
iterate
gssolve
TokaMaker free-boundary GS solve
isoflux separatrix +
I
p
target
coil homotopy: bounds ±5% → ±2% → ±1% (warm-started)
VSC pair handles vertical control
limatch->gssolve
gssolve->gssolve
homotopy
passes
agate
accepted?
converged,
ℓ
i
in band,
q
0
≥ 1 (optional)
gssolve->agate
eqfsa
live-equilibrium capture (this draw's own geometry)
F
, ⟨1/
R
⟩, ⟨1/
R
2
⟩, ⟨
B
2
⟩,
q
, d
V
/d
ψ
,
f
trap
flux-surface averages of the converged solve (no re-solve)
gssolve->eqfsa
agate->gp
reject draw
inspec
in-spec tag
coil drift ≤ 2%; VSC via quadrature-propagated σ
agate->inspec
yes
archive
HDF5 ensemble archive (schema v2)
profiles,
j
components, g-/p-file bytes,
coil currents, targets, provenance (config)
inspec->archive
eqfsa->archive
filter
post-filtering (non-destructive)
boundary RMS ≤ 5 mm; coil spec
⇒ selected (machine-realizable) sub-ensemble
archive->filter
idsout
IMAS/OMAS IDS export (per draw)
j
tor
exact; ⟨
j
·
B
⟩/
B
0
from each draw’s own ⟨1/
R
⟩, ⟨1/
R
2
⟩, ⟨
B
2
⟩
otherwise the baseline flux-geometry ratio is used instead
archive->idsout
Stage overview of the code (585 nodes, 814
edges in the full map below)
bouquet_overview
Configuration
Configuration
(155 nodes)
Input readers (g-file / p-file / IDA)
Input readers (g-file / p-file / IDA)
(16 nodes)
Configuration->Input readers (g-file / p-file / IDA)
4
IMAS/OMAS reader
IMAS/OMAS reader
(28 nodes)
Configuration->IMAS/OMAS reader
1
Baseline & uncertainty resolution
Baseline & uncertainty resolution
(34 nodes)
Configuration->Baseline & uncertainty resolution
5
Bouquet orchestrator / IMAS forward solve
Bouquet orchestrator / IMAS forward solve
(26 nodes)
Configuration->Bouquet orchestrator / IMAS forward solve
3
Per-draw solve (SWB / l_i / homotopy)
Per-draw solve (SWB / l_i / homotopy)
(64 nodes)
Configuration->Per-draw solve (SWB / l_i / homotopy)
5
Input readers (g-file / p-file / IDA)->Configuration
1
Input readers (g-file / p-file / IDA)->IMAS/OMAS reader
1
Input readers (g-file / p-file / IDA)->Baseline & uncertainty resolution
1
Input readers (g-file / p-file / IDA)->Bouquet orchestrator / IMAS forward solve
10
Input readers (g-file / p-file / IDA)->Per-draw solve (SWB / l_i / homotopy)
7
IMAS/OMAS reader->Configuration
1
IMAS/OMAS reader->Input readers (g-file / p-file / IDA)
8
IMAS/OMAS reader->Baseline & uncertainty resolution
5
GS reconstruction
GS reconstruction
(20 nodes)
IMAS/OMAS reader->GS reconstruction
4
IMAS/OMAS reader->Bouquet orchestrator / IMAS forward solve
11
IMAS/OMAS reader->Per-draw solve (SWB / l_i / homotopy)
5
Baseline & uncertainty resolution->Input readers (g-file / p-file / IDA)
1
Baseline & uncertainty resolution->IMAS/OMAS reader
14
Baseline & uncertainty resolution->Bouquet orchestrator / IMAS forward solve
1
Baseline & uncertainty resolution->Per-draw solve (SWB / l_i / homotopy)
9
GS reconstruction->Bouquet orchestrator / IMAS forward solve
4
GS reconstruction->Per-draw solve (SWB / l_i / homotopy)
1
Bouquet orchestrator / IMAS forward solve->Input readers (g-file / p-file / IDA)
8
Bouquet orchestrator / IMAS forward solve->IMAS/OMAS reader
11
Bouquet orchestrator / IMAS forward solve->Baseline & uncertainty resolution
5
Bouquet orchestrator / IMAS forward solve->GS reconstruction
1
Draw loop (GPR sampling)
Draw loop (GPR sampling)
(19 nodes)
Bouquet orchestrator / IMAS forward solve->Per-draw solve (SWB / l_i / homotopy)
5
Archive, filtering & plotting
Archive, filtering & plotting
(53 nodes)
Bouquet orchestrator / IMAS forward solve->Archive, filtering & plotting
6
Draw loop (GPR sampling)->Bouquet orchestrator / IMAS forward solve
1
Draw loop (GPR sampling)->Per-draw solve (SWB / l_i / homotopy)
5
Draw loop (GPR sampling)->Archive, filtering & plotting
12
Per-draw solve (SWB / l_i / homotopy)->Bouquet orchestrator / IMAS forward solve
4
Per-draw solve (SWB / l_i / homotopy)->Draw loop (GPR sampling)
2
Archive, filtering & plotting->IMAS/OMAS reader
2
Archive, filtering & plotting->Bouquet orchestrator / IMAS forward solve
2
Archive, filtering & plotting->Draw loop (GPR sampling)
3
Process-parallel path
Process-parallel path
(31 nodes)
Process-parallel path->Bouquet orchestrator / IMAS forward solve
1
Process-parallel path->Archive, filtering & plotting
2
input (29) knob (149) quantity (139) transform (175) decision (62) artifact (31)
dashed edge = control flow
bouquet
cluster_0
Configuration
cluster_1
Input readers (g-file / p-file / IDA)
cluster_2
IMAS/OMAS reader
cluster_3
Baseline & uncertainty resolution
cluster_4
GS reconstruction
cluster_5
Bouquet orchestrator / IMAS forward solve
cluster_6
Draw loop (GPR sampling)
cluster_7
Per-draw solve (SWB / l_i / homotopy)
cluster_8
Archive, filtering & plotting
cluster_9
Process-parallel path
cfg.filterconfig.inspec_F_max
inspec_F_max: float = 0.02
fn.filtering.if abs
if abs
cfg.filterconfig.inspec_F_max->fn.filtering.if abs
cfg.filterconfig.inspec_VSC_max
inspec_VSC_max: float = 0.02
cfg.filterconfig.inspec_VSC_max->fn.filtering.if abs
cfg.filterconfig.rms_max_mm
rms_max_mm: float = 5.0
fn.filtering.if rms_error_mm > config.filtering.rms_max_mm: reject
if rms_error_mm > config.filtering.rms_max_mm: reject
cfg.filterconfig.rms_max_mm->fn.filtering.if rms_error_mm > config.filtering.rms_max_mm: reject
cfg.fixedcomponentsconfig.j_NBI
j_NBI: Optional[np.ndarray] = None
fn.run.fc.j_NBI or zeros_on_psi_N
fc.j_NBI or zeros_on_psi_N
cfg.fixedcomponentsconfig.j_NBI->fn.run.fc.j_NBI or zeros_on_psi_N
cfg.fixedcomponentsconfig.j_RF
j_RF: Optional[np.ndarray] = None
fn.run.fc.j_RF or zeros_on_psi_N
fc.j_RF or zeros_on_psi_N
cfg.fixedcomponentsconfig.j_RF->fn.run.fc.j_RF or zeros_on_psi_N
cfg.fixedcomponentsconfig.p_fast
p_fast: Optional[np.ndarray] = None
fn.run.fc.p_fast or compute_p_fast_from_source
fc.p_fast or compute_p_fast_from_source
cfg.fixedcomponentsconfig.p_fast->fn.run.fc.p_fast or compute_p_fast_from_source
cfg.fixedcomponentsconfig.p_fast_reduction
p_fast_reduction: str = "trace"
fn.physics.isotropize_fast_pressure
isotropize_fast_pressure
cfg.fixedcomponentsconfig.p_fast_reduction->fn.physics.isotropize_fast_pressure
cfg.fixedcomponentsconfig.psi_N
psi_N: Optional[np.ndarray] = None
fn.run.fc.psi_N or source_psi_N
fc.psi_N or source_psi_N
cfg.fixedcomponentsconfig.psi_N->fn.run.fc.psi_N or source_psi_N
cfg.generationconfig.accept_anchor_inband
accept_anchor_inband: bool = False
fn.TokaMaker_interface.if gc.accept_anchor_inband and in_band
if gc.accept_anchor_inband and in_band
cfg.generationconfig.accept_anchor_inband->fn.TokaMaker_interface.if gc.accept_anchor_inband and in_band
cfg.generationconfig.allow_incomplete_pressure
allow_incomplete_pressure: bool = False
fn.io.imas.if config.generation.allow_incomplete_pressure: skip_pressure_check
if config.generation.allow_incomplete_pressure: skip_pressure_check
cfg.generationconfig.allow_incomplete_pressure->fn.io.imas.if config.generation.allow_incomplete_pressure: skip_pressure_check
cfg.generationconfig.allow_unsafe_workflow
allow_unsafe_workflow: bool = False
fn.run.if not config.generation.allow_unsafe_workflow: validate_workflow
if not config.generation.allow_unsafe_workflow: validate_workflow
cfg.generationconfig.allow_unsafe_workflow->fn.run.if not config.generation.allow_unsafe_workflow: validate_workflow
cfg.generationconfig.anchor_jtor_to_equilibrium
anchor_jtor_to_equilibrium: bool = True
fn.run.eq.j_tor - cp.j_tor
eq.j_tor - cp.j_tor
cfg.generationconfig.anchor_jtor_to_equilibrium->fn.run.eq.j_tor - cp.j_tor
cfg.generationconfig.anchor_pressure_to_equilibrium
anchor_pressure_to_equilibrium: bool = False
fn.run.eq.pressure - p_recon
eq.pressure - p_recon
cfg.generationconfig.anchor_pressure_to_equilibrium->fn.run.eq.pressure - p_recon
cfg.generationconfig.coil_drift
coil_drift: float = 0.01
fn.TokaMaker_interface.config.generation.coil_drift
config.generation.coil_drift
cfg.generationconfig.coil_drift->fn.TokaMaker_interface.config.generation.coil_drift
cfg.generationconfig.coil_drift_hard_factor
coil_drift_hard_factor: Optional[float] = None
fn.TokaMaker_interface.coil_drift * config.generation.coil_drift_hard_factor if ... else None
coil_drift * config.generation.coil_drift_hard_factor if ... else None
cfg.generationconfig.coil_drift_hard_factor->fn.TokaMaker_interface.coil_drift * config.generation.coil_drift_hard_factor if ... else None
cfg.generationconfig.constrain_sawteeth
constrain_sawteeth: bool = False
fn.TokaMaker_interface.if gc.constrain_sawteeth and q0 < 1.0: reject
if gc.constrain_sawteeth and q0 < 1.0: reject
cfg.generationconfig.constrain_sawteeth->fn.TokaMaker_interface.if gc.constrain_sawteeth and q0 < 1.0: reject
cfg.generationconfig.diagnostic_plots
diagnostic_plots: bool = False
fn.run.if config.generation.diagnostic_plots: plot_diagnostics
if config.generation.diagnostic_plots: plot_diagnostics
cfg.generationconfig.diagnostic_plots->fn.run.if config.generation.diagnostic_plots: plot_diagnostics
cfg.generationconfig.floor_j_BS
floor_j_BS: bool = False
fn.run.np.maximum
np.maximum
cfg.generationconfig.floor_j_BS->fn.run.np.maximum
cfg.generationconfig.homotopy_passes
homotopy_passes: list = [(0.05,0.10),(0.02,0.05),(0.01,0.01)]
fn.TokaMaker_interface.for F_tol, VSC_tol in config.generation.homotopy_passes: ...
for F_tol, VSC_tol in config.generation.homotopy_passes: ...
cfg.generationconfig.homotopy_passes->fn.TokaMaker_interface.for F_tol, VSC_tol in config.generation.homotopy_passes: ...
cfg.generationconfig.isolate_edge_jBS
isolate_edge_jBS: bool = True
fn.run.isolate_edge_jBS
isolate_edge_jBS
cfg.generationconfig.isolate_edge_jBS->fn.run.isolate_edge_jBS
cfg.generationconfig.jBS_baseline_mode
jBS_baseline_mode: str = "diff"
fn.run....
...
cfg.generationconfig.jBS_baseline_mode->fn.run....
cfg.generationconfig.jBS_scale_range
jBS_scale_range: tuple = (0.99, 1.01)
fn.TokaMaker_interface.np.random.uniform
np.random.uniform
cfg.generationconfig.jBS_scale_range->fn.TokaMaker_interface.np.random.uniform
cfg.generationconfig.kinetic_source
kinetic_source: str = "fuse"
fn.run."ida_hybrid": resample_ida_profiles
"ida_hybrid": resample_ida_profiles
cfg.generationconfig.kinetic_source->fn.run."ida_hybrid": resample_ida_profiles
cfg.generationconfig.l_i_tolerance
l_i_tolerance: float = 0.05
fn.TokaMaker_interface.if not abs
if not abs
cfg.generationconfig.l_i_tolerance->fn.TokaMaker_interface.if not abs
cfg.generationconfig.n_equils
n_equils: int = 20
fn.TokaMaker_interface.for i_eq in _tqdm
for i_eq in _tqdm
cfg.generationconfig.n_equils->fn.TokaMaker_interface.for i_eq in _tqdm
fn.run.int
int
cfg.generationconfig.n_equils->fn.run.int
cfg.generationconfig.perturb_jind_in_anchor
perturb_jind_in_anchor: bool = False
fn.run.if config.generation.perturb_jind_in_anchor: apply_gpr_to_anchor_j_ind
if config.generation.perturb_jind_in_anchor: apply_gpr_to_anchor_j_ind
cfg.generationconfig.perturb_jind_in_anchor->fn.run.if config.generation.perturb_jind_in_anchor: apply_gpr_to_anchor_j_ind
cfg.generationconfig.recalculate_j_BS
recalculate_j_BS: bool = True
fn.run.compute_via_swb
compute_via_swb
cfg.generationconfig.recalculate_j_BS->fn.run.compute_via_swb
cfg.generationconfig.scan_key
scan_key: float = 0
fn.run.store_equilibrium
store_equilibrium
cfg.generationconfig.scan_key->fn.run.store_equilibrium
cfg.generationconfig.seed
seed: Optional[int] = None
fn.TokaMaker_interface.np.random.seed
np.random.seed
cfg.generationconfig.seed->fn.TokaMaker_interface.np.random.seed
cfg.generationconfig.swb_iterations
swb_iterations: int = 3
fn.TokaMaker_interface.solve_with_bootstrap
solve_with_bootstrap
cfg.generationconfig.swb_iterations->fn.TokaMaker_interface.solve_with_bootstrap
cfg.generationconfig.workflow
workflow: str = "auto"
fn.run.resolve_workflow_from_preset
resolve_workflow_from_preset
cfg.generationconfig.workflow->fn.run.resolve_workflow_from_preset
cfg.imassource.LCFS_geqdsk
LCFS_geqdsk: Optional[str] = None
fn.run.read_geqdsk
read_geqdsk
cfg.imassource.LCFS_geqdsk->fn.run.read_geqdsk
cfg.imassource.ida_path
ida_path: Optional[str] = None
fn.run.ida_path
ida_path
cfg.imassource.ida_path->fn.run.ida_path
cfg.imassource.ids_path
ids_path: str = None
fn.io.imas.read_imas
read_imas
cfg.imassource.ids_path->fn.io.imas.read_imas
cfg.imassource.impurity_Z
impurity_Z: float = 6.0
fn.io.imas.profiles.compute_ni
profiles.compute_ni
cfg.imassource.impurity_Z->fn.io.imas.profiles.compute_ni
cfg.imassource.time
time: Optional[float] = None
cfg.imassource.time->fn.io.imas.read_imas
cfg.reconstructionsource.cocos
cocos: int = 1
fn.baseline.read_geqdsk
read_geqdsk
cfg.reconstructionsource.cocos->fn.baseline.read_geqdsk
cfg.reconstructionsource.geqdsk_path
geqdsk_path: str = None
cfg.reconstructionsource.geqdsk_path->fn.baseline.read_geqdsk
cfg.reconstructionsource.geqdsk_path->fn.run.read_geqdsk
cfg.reconstructionsource.impurity_Z
impurity_Z: float = 6.0
fn.baseline.profiles.compute_ni
profiles.compute_ni
cfg.reconstructionsource.impurity_Z->fn.baseline.profiles.compute_ni
cfg.reconstructionsource.n_k
n_k: int = 5
fn.baseline.spline_fit
spline_fit
cfg.reconstructionsource.n_k->fn.baseline.spline_fit
cfg.reconstructionsource.profile_overrides
profile_overrides: dict = {}
fn.baseline....
...
cfg.reconstructionsource.profile_overrides->fn.baseline....
cfg.reconstructionsource.profiles_path
profiles_path: str = None
fn.baseline.read_profiles
read_profiles
cfg.reconstructionsource.profiles_path->fn.baseline.read_profiles
cfg.reconstructionsource.psi_bridge
psi_bridge: float = 0.99
fn.baseline.hermite_edge_bridge
hermite_edge_bridge
cfg.reconstructionsource.psi_bridge->fn.baseline.hermite_edge_bridge
cfg.reconstructionsource.psi_pad
psi_pad: float = 1e-3
fn.baseline.compute_psi_bounds
compute_psi_bounds
cfg.reconstructionsource.psi_pad->fn.baseline.compute_psi_bounds
cfg.reconstructionsource.rescale_j_BS
rescale_j_BS: bool = False
fn.baseline.scaling_factor
scaling_factor
cfg.reconstructionsource.rescale_j_BS->fn.baseline.scaling_factor
cfg.reconstructionsource.shelf_psi_N
shelf_psi_N: float = 0.0
fn.baseline.source.shelf_psi_N
source.shelf_psi_N
cfg.reconstructionsource.shelf_psi_N->fn.baseline.source.shelf_psi_N
cfg.reconstructionsource.time
time: Optional[float] = None
fn.io.ida.read_ida
read_ida
cfg.reconstructionsource.time->fn.io.ida.read_ida
cfg.solverconfig.F0
F0: Optional[float] = None
fn.run.F0 or eqdsk.F0_ref or ...
F0 or eqdsk.F0_ref or ...
cfg.solverconfig.F0->fn.run.F0 or eqdsk.F0_ref or ...
cfg.solverconfig.coil_reg
coil_reg: list = []
cfg.solverconfig.coil_vsc
coil_vsc: dict = {"F9A": 1.0, "F9B": -1.0}
fn.run.coil_vsc dict unpacked into solve_with_bootstrap
coil_vsc dict unpacked into solve_with_bootstrap
cfg.solverconfig.coil_vsc->fn.run.coil_vsc dict unpacked into solve_with_bootstrap
cfg.solverconfig.isoflux_pts
isoflux_pts: Optional[np.ndarray] = None
fn.run.isoflux_pts or eqdsk.isoflux_pts
isoflux_pts or eqdsk.isoflux_pts
cfg.solverconfig.isoflux_pts->fn.run.isoflux_pts or eqdsk.isoflux_pts
cfg.solverconfig.isoflux_weights
isoflux_weights: Optional[np.ndarray] = None
fn.run.isoflux_weights or np.ones
isoflux_weights or np.ones
cfg.solverconfig.isoflux_weights->fn.run.isoflux_weights or np.ones
cfg.solverconfig.mesh_path
mesh_path: str = None
fn.run.load_gs_mesh
load_gs_mesh
cfg.solverconfig.mesh_path->fn.run.load_gs_mesh
cfg.solverconfig.nthreads
nthreads: int = 1
fn.TokaMaker_interface.mygs.solve
mygs.solve
cfg.solverconfig.nthreads->fn.TokaMaker_interface.mygs.solve
cfg.solverconfig.nthreads->fn.run.load_gs_mesh
cfg.solverconfig.order
order: int = 3
fn.run.GsHandle
GsHandle
cfg.solverconfig.order->fn.run.GsHandle
cfg.solverconfig.region_overrides
region_overrides: Optional[dict] = None
cfg.source.LCFS_geqdsk
LCFS_geqdsk
fn.imas.read_imas_geometry
read_imas_geometry()
cfg.source.LCFS_geqdsk->fn.imas.read_imas_geometry
cfg.uncertaintyconfig.aux_baselines
aux_baselines: dict = {}
fn.TokaMaker_interface.config.uncertainty.aux_baselines.get
config.uncertainty.aux_baselines.get
cfg.uncertaintyconfig.aux_baselines->fn.TokaMaker_interface.config.uncertainty.aux_baselines.get
cfg.uncertaintyconfig.aux_length_scales
aux_length_scales: dict = {}
fn.TokaMaker_interface.config.uncertainty.aux_length_scales.get
config.uncertainty.aux_length_scales.get
cfg.uncertaintyconfig.aux_length_scales->fn.TokaMaker_interface.config.uncertainty.aux_length_scales.get
cfg.uncertaintyconfig.aux_sigmas
aux_sigmas: dict = {}
fn.TokaMaker_interface.for name, sigma in config.uncertainty.aux_sigmas.items
for name, sigma in config.uncertainty.aux_sigmas.items
cfg.uncertaintyconfig.aux_sigmas->fn.TokaMaker_interface.for name, sigma in config.uncertainty.aux_sigmas.items
cfg.uncertaintyconfig.ida_path
ida_path: Optional[str] = None
fn.baseline.unc.ida_path or source.profiles_path
unc.ida_path or source.profiles_path
cfg.uncertaintyconfig.ida_path->fn.baseline.unc.ida_path or source.profiles_path
cfg.uncertaintyconfig.j_ls
j_ls: float = 0.25
fn.TokaMaker_interface.GPRPerturber
GPRPerturber
cfg.uncertaintyconfig.j_ls->fn.TokaMaker_interface.GPRPerturber
cfg.uncertaintyconfig.jphi_scalar_sigma
jphi_scalar_sigma: float = 0.1
fn.TokaMaker_interface.config.uncertainty.jphi_scalar_sigma * abs
config.uncertainty.jphi_scalar_sigma * abs
cfg.uncertaintyconfig.jphi_scalar_sigma->fn.TokaMaker_interface.config.uncertainty.jphi_scalar_sigma * abs
cfg.uncertaintyconfig.n_ls
n_ls: float = 0.5
cfg.uncertaintyconfig.n_ls->fn.TokaMaker_interface.GPRPerturber
cfg.uncertaintyconfig.ne_scalar_sigma
ne_scalar_sigma: float = 0.05
fn.baseline.sigma_ne or unc.ne_scalar_sigma * ne_baseline
sigma_ne or unc.ne_scalar_sigma * ne_baseline
cfg.uncertaintyconfig.ne_scalar_sigma->fn.baseline.sigma_ne or unc.ne_scalar_sigma * ne_baseline
cfg.uncertaintyconfig.ni_scalar_sigma
ni_scalar_sigma: float = 0.1
fn.baseline.sigma_ni or unc.ni_scalar_sigma * ni_baseline
sigma_ni or unc.ni_scalar_sigma * ni_baseline
cfg.uncertaintyconfig.ni_scalar_sigma->fn.baseline.sigma_ni or unc.ni_scalar_sigma * ni_baseline
cfg.uncertaintyconfig.sigma_method
sigma_method: str = "percentile"
fn.baseline.percentile_or_std
percentile_or_std
cfg.uncertaintyconfig.sigma_method->fn.baseline.percentile_or_std
cfg.uncertaintyconfig.sigma_mode
sigma_mode: str = "auto"
fn.baseline.resolve_ida_sigmas
resolve_ida_sigmas
cfg.uncertaintyconfig.sigma_mode->fn.baseline.resolve_ida_sigmas
cfg.uncertaintyconfig.sigma_ni_from_ne
sigma_ni_from_ne: bool = True
fn.baseline.sigma_ne
sigma_ne
cfg.uncertaintyconfig.sigma_ni_from_ne->fn.baseline.sigma_ne
cfg.uncertaintyconfig.sigma_profiles
sigma_profiles: dict = {}
fn.baseline.unc.sigma_profiles.get
unc.sigma_profiles.get
cfg.uncertaintyconfig.sigma_profiles->fn.baseline.unc.sigma_profiles.get
cfg.uncertaintyconfig.t_ls
t_ls: float = 0.4
cfg.uncertaintyconfig.t_ls->fn.TokaMaker_interface.GPRPerturber
cfg.uncertaintyconfig.te_scalar_sigma
te_scalar_sigma: float = 0.05
fn.baseline.sigma_te or unc.te_scalar_sigma * te_baseline
sigma_te or unc.te_scalar_sigma * te_baseline
cfg.uncertaintyconfig.te_scalar_sigma->fn.baseline.sigma_te or unc.te_scalar_sigma * te_baseline
cfg.uncertaintyconfig.ti_scalar_sigma
ti_scalar_sigma: float = 0.1
fn.baseline.sigma_ti or unc.ti_scalar_sigma * ti_baseline
sigma_ti or unc.ti_scalar_sigma * ti_baseline
cfg.uncertaintyconfig.ti_scalar_sigma->fn.baseline.sigma_ti or unc.ti_scalar_sigma * ti_baseline
cfg.uncertaintyconfig.zeff_scalar_sigma
zeff_scalar_sigma: float = 0.05
fn.TokaMaker_interface.if unc.zeff_scalar_sigma > 0: perturb_zeff
if unc.zeff_scalar_sigma > 0: perturb_zeff
cfg.uncertaintyconfig.zeff_scalar_sigma->fn.TokaMaker_interface.if unc.zeff_scalar_sigma > 0: perturb_zeff
cls.FilterConfig
FilterConfig
cls.FixedComponentsConfig
FixedComponentsConfig
cls.GenerationConfig
GenerationConfig
cls.ImasSource
ImasSource
cls.ReconstructionSource
ReconstructionSource
cls.SolverConfig
SolverConfig
cls.UncertaintyConfig
UncertaintyConfig
qty.ne
ne (electron density)
fn.io.ida.read_ida->qty.ne
qty.ni
ni (main-ion density)
fn.io.ida.read_ida->qty.ni
qty.psi_N_kinetic
psi_N_kinetic (kinetic grid)
fn.io.ida.read_ida->qty.psi_N_kinetic
qty.te
te (electron temperature)
fn.io.ida.read_ida->qty.te
qty.ti
ti (ion temperature)
fn.io.ida.read_ida->qty.ti
qty.zeff
Zeff (effective charge)
fn.io.ida.read_ida->qty.zeff
qty.p_fast
p_fast (fast-ion pressure)
fn.physics.isotropize_fast_pressure->qty.p_fast
cfg.generationconfig.jbs_delta_mode
jbs_delta_mode
gate.jbs_delta_mode
spike-delta composition branch
cfg.generationconfig.jbs_delta_mode->gate.jbs_delta_mode
qty.delta_spike0_raw
_delta_spike0_raw (cached sigma=0 SWB reference)
cfg.generationconfig.jbs_delta_mode->qty.delta_spike0_raw
cfg.generationconfig.capture_live_eq
capture_live_eq
gate.capture_live_eq
capture live equilibrium?
cfg.generationconfig.capture_live_eq->gate.capture_live_eq
cfg.generationconfig.capture_npsi
capture_npsi
fn.physics.capture_equilibrium_fsa
capture_equilibrium_fsa (live-equilibrium snapshot)
cfg.generationconfig.capture_npsi->fn.physics.capture_equilibrium_fsa
cfg.generationconfig.capture_exact_inv_R2
capture_exact_inv_R2
cfg.generationconfig.capture_exact_inv_R2->fn.physics.capture_equilibrium_fsa
cfg.generationconfig.imas_corrective_jphi
imas_corrective_jphi
gate.imas_corrective_jphi
IMAS corrective j_phi iteration?
cfg.generationconfig.imas_corrective_jphi->gate.imas_corrective_jphi
cfg.solverconfig.saddle_targets
SolverConfig.saddle_targets
fn.run.setup_solver
setup_solver()
cfg.solverconfig.saddle_targets->fn.run.setup_solver
cfg.solverconfig.saddle_weights
SolverConfig.saddle_weights
cfg.solverconfig.saddle_weights->fn.run.setup_solver
fn.read_geqdsk
read_geqdsk()
obj.GEQDSKEquilibrium
GEQDSKEquilibrium object
fn.read_geqdsk->obj.GEQDSKEquilibrium
fn.read_ida
read_ida()
gate.ida_layout
IDA layout (direct vs ensemble)?
fn.read_ida->gate.ida_layout
fn.read_ida_cer
read_ida_cer()
obj.IDACERProfiles
IDACERProfiles dataclass
fn.read_ida_cer->obj.IDACERProfiles
fn.read_pfile
read_pfile()
obj.PFile
PFile object
fn.read_pfile->obj.PFile
fn.reconstruct_equilibrium
reconstruct_equilibrium() [geqdsk.py]
obj.IDAProfiles
IDAProfiles dataclass
gate.ida_layout->obj.IDAProfiles
gate.profile_file_type
Profile file type?
gate.profile_file_type->fn.io.ida.read_ida
gate.profile_file_type->fn.read_ida
gate.profile_file_type->fn.read_pfile
fn.io.pfile.read_pfile
read_pfile(path) + compute_quasineutrality/compute_zeff
gate.profile_file_type->fn.io.pfile.read_pfile
gate.time_index
Select time slice
gate.time_index->fn.read_ida
input.gfile
G-file (GEQDSK)
input.gfile->fn.read_geqdsk
input.ida_cdf
IDA .cdf (netCDF/HDF5)
input.ida_cdf->gate.time_index
fn.imas._merge_ida_kinetics
_merge_ida_kinetics() [IDA-hybrid only]
input.ida_cdf->fn.imas._merge_ida_kinetics
input.ida_cer
IDA CER channels (carbon)
input.ida_cer->fn.read_ida_cer
input.pfile
P-file (Osborne profiles)
input.pfile->fn.read_pfile
qty.F0
F0 (R*Bt poloidal function)
obj.GEQDSKEquilibrium->qty.F0
qty.Ip_target
Ip_target (plasma current)
obj.GEQDSKEquilibrium->qty.Ip_target
qty.boundary_lcfs
boundary_lcfs (separatrix contour)
obj.GEQDSKEquilibrium->qty.boundary_lcfs
qty.j_phi
j_phi (toroidal current density)
obj.GEQDSKEquilibrium->qty.j_phi
qty.li_target
li_target (internal inductance)
obj.GEQDSKEquilibrium->qty.li_target
qty.p_thermal
p_thermal (thermal pressure)
obj.GEQDSKEquilibrium->qty.p_thermal
qty.psi_N
psi_N (normalized flux)
obj.GEQDSKEquilibrium->qty.psi_N
qty.e_r_cer
E_r (radial electric field)
obj.IDACERProfiles->qty.e_r_cer
obj.IDAProfiles->qty.ne
obj.IDAProfiles->qty.ni
obj.IDAProfiles->qty.psi_N_kinetic
qty.sigma_ne
sigma_ne (density uncertainty)
obj.IDAProfiles->qty.sigma_ne
qty.sigma_ni
sigma_ni (ion density uncertainty)
obj.IDAProfiles->qty.sigma_ni
qty.sigma_te
sigma_te (temperature uncertainty)
obj.IDAProfiles->qty.sigma_te
qty.sigma_ti
sigma_ti (temperature uncertainty)
obj.IDAProfiles->qty.sigma_ti
obj.IDAProfiles->qty.te
obj.IDAProfiles->qty.ti
obj.IDAProfiles->qty.zeff
obj.PFile->qty.ne
obj.PFile->qty.ni
qty.omega_tor
omega_tor (toroidal rotation)
obj.PFile->qty.omega_tor
obj.PFile->qty.te
obj.PFile->qty.ti
artifact.baseline
Baseline (output)
artifact.imas_draw_json
Perturbed draw JSON
artifact.baseline->artifact.imas_draw_json
fn.imas.read_imas_baseline
read_imas_baseline()
artifact.baseline->fn.imas.read_imas_baseline
artifact.geometry
Geometry tuple (output)
cfg.fixed.j_NBI
user override: j_NBI
fn.imas._override
_override()
cfg.fixed.j_NBI->fn.imas._override
cfg.fixed.j_RF
user override: j_RF
cfg.fixed.j_RF->fn.imas._override
cfg.fixed.p_fast
user override: p_fast
cfg.fixed.p_fast->fn.imas._override
cfg.generation.allow_incomplete_pressure
allow incomplete pressure validation
fn.imas._validate_pressure_completeness
_validate_pressure_completeness()
cfg.generation.allow_incomplete_pressure->fn.imas._validate_pressure_completeness
cfg.generation.anchor_jtor_to_equilibrium
j_tor anchor to equilibrium
cfg.generation.anchor_pressure_to_equilibrium
pressure anchor to equilibrium
cfg.generation.kinetic_source
kinetic profile source
cfg.generation.p_fast_reduction
p_fast isotropization method
cfg.generation.p_fast_reduction->fn.physics.isotropize_fast_pressure
fn.ida.read_ida
read_ida() [IDA-hybrid only]
fn.imas._merge_ida_kinetics->qty.ne
fn.imas._merge_ida_kinetics->qty.omega_tor
fn.imas._merge_ida_kinetics->qty.te
fn.imas._merge_ida_kinetics->qty.ti
qty.j_NBI_toroidal
j_NBI (toroidal)
fn.imas._override->qty.j_NBI_toroidal
qty.j_RF
j_RF (RF-driven current)
fn.imas._override->qty.j_RF
fn.imas._override->qty.p_fast
fn.imas.read_imas_geometry->artifact.geometry
fn.imas.read_imas_geometry->qty.F0
fn.imas.read_imas_geometry->qty.boundary_lcfs
fn.physics.effective_impurity_charge
effective_impurity_charge()
fn.physics.impurity_pressure
impurity_pressure()
fn.physics.main_ion_density_from_zeff
main_ion_density_from_zeff()
fn.physics.parallel_to_toroidal
parallel_to_toroidal()
qty.j_BS
j_BS (bootstrap current)
fn.physics.parallel_to_toroidal->qty.j_BS
qty.j_BS_isolated
j_BS_isolated (toroidal)
fn.physics.parallel_to_toroidal->qty.j_BS_isolated
fn.physics.parallel_to_toroidal->qty.j_NBI_toroidal
gate.anchor_jtor
j_tor anchor decision
qty.jphi_diff
j_phi anchor offset
gate.anchor_jtor->qty.jphi_diff
gate.anchor_pressure
Pressure anchor decision
qty.p_diff
pressure anchor offset
gate.anchor_pressure->qty.p_diff
gate.fixed_components
Fixed component overrides
gate.fixed_components->fn.imas._override
gate.incomplete_pressure
Pressure completeness check
gate.incomplete_pressure->fn.imas._validate_pressure_completeness
gate.kinetic_source
Kinetic source selection
gate.kinetic_source->fn.imas._merge_ida_kinetics
input.lcfs_gfile
LCFS g-file (optional)
input.lcfs_gfile->fn.imas.read_imas_geometry
input.imas_ids
IMAS IDS (dd_sim.json)
input.imas_ids->fn.imas.read_imas_geometry
input.imas_ids->qty.F0
input.imas_ids->qty.Ip_target
qty.aux.E_r
radial electric field
input.imas_ids->qty.aux.E_r
qty.aux.chi_e
electron thermal diffusivity
input.imas_ids->qty.aux.chi_e
qty.aux.chi_i
ion thermal diffusivity
input.imas_ids->qty.aux.chi_i
input.imas_ids->qty.boundary_lcfs
qty.j_bootstrap_parallel
j_bootstrap (parallel)
input.imas_ids->qty.j_bootstrap_parallel
qty.j_nbi_parallel
j_NBI (parallel, summed)
input.imas_ids->qty.j_nbi_parallel
qty.j_ohmic_parallel
j_ohmic (parallel, unused)
input.imas_ids->qty.j_ohmic_parallel
qty.j_tor_parallel
j_tor (authoritative toroidal)
input.imas_ids->qty.j_tor_parallel
qty.j_total_parallel
j_total (parallel)
input.imas_ids->qty.j_total_parallel
input.imas_ids->qty.jphi_diff
input.imas_ids->qty.li_target
input.imas_ids->qty.ne
input.imas_ids->qty.ni
input.imas_ids->qty.omega_tor
qty.p_equilibrium
equilibrium pressure
input.imas_ids->qty.p_equilibrium
input.imas_ids->qty.psi_N
input.imas_ids->qty.te
input.imas_ids->qty.ti
input.imas_ids->qty.zeff
cfg.FixedComponentsConfig.j_NBI
FixedComponentsConfig.j_NBI
fn.baseline._resolve_fixed
_resolve_fixed(comp, src_psi, dst_psi)
cfg.FixedComponentsConfig.j_NBI->fn.baseline._resolve_fixed
cfg.FixedComponentsConfig.j_RF
FixedComponentsConfig.j_RF
cfg.FixedComponentsConfig.j_RF->fn.baseline._resolve_fixed
cfg.FixedComponentsConfig.p_fast
FixedComponentsConfig.p_fast
cfg.FixedComponentsConfig.p_fast->fn.baseline._resolve_fixed
cfg.FixedComponentsConfig.psi_N
FixedComponentsConfig.psi_N
cfg.FixedComponentsConfig.psi_N->fn.baseline._resolve_fixed
cfg.GenerationConfig.recalculate_j_BS
GenerationConfig.recalculate_j_BS
cfg.GenerationConfig.recalculate_j_BS->qty.j_BS
cfg.ReconstructionSource.impurity_Z
ReconstructionSource.impurity_Z
fn.baseline._load_kinetic_profiles
_load_kinetic_profiles(source)
cfg.ReconstructionSource.impurity_Z->fn.baseline._load_kinetic_profiles
cfg.UncertaintyConfig.aux_baselines
UncertaintyConfig.aux_baselines
fn.baseline._sigma_zeff_baseline
resolve zeff baseline (aux or baseline.Zeff)
cfg.UncertaintyConfig.aux_baselines->fn.baseline._sigma_zeff_baseline
cfg.UncertaintyConfig.aux_length_scales
UncertaintyConfig.aux_length_scales
cfg.UncertaintyConfig.aux_sigmas
UncertaintyConfig.aux_sigmas
gate.sigma_priority_zeff
zeff sigma priority: explicit | default auto-inject
cfg.UncertaintyConfig.aux_sigmas->gate.sigma_priority_zeff
cfg.UncertaintyConfig.ida_path
UncertaintyConfig.ida_path
gate.sigma_priority_ne
ne sigma priority: explicit | IDA | scalar
cfg.UncertaintyConfig.ida_path->gate.sigma_priority_ne
gate.sigma_priority_ni
ni sigma priority: explicit | IDA | scalar
cfg.UncertaintyConfig.ida_path->gate.sigma_priority_ni
gate.sigma_priority_te
te sigma priority: explicit | IDA | scalar
cfg.UncertaintyConfig.ida_path->gate.sigma_priority_te
gate.sigma_priority_ti
ti sigma priority: explicit | IDA | scalar
cfg.UncertaintyConfig.ida_path->gate.sigma_priority_ti
cfg.UncertaintyConfig.jphi_scalar_sigma
UncertaintyConfig.jphi_scalar_sigma
qty.sigma_jphi
sigma_jphi [A/m^2]
cfg.UncertaintyConfig.jphi_scalar_sigma->qty.sigma_jphi
cfg.UncertaintyConfig.ne_scalar_sigma
UncertaintyConfig.ne_scalar_sigma
cfg.UncertaintyConfig.ne_scalar_sigma->gate.sigma_priority_ne
cfg.UncertaintyConfig.ni_scalar_sigma
UncertaintyConfig.ni_scalar_sigma
cfg.UncertaintyConfig.ni_scalar_sigma->gate.sigma_priority_ni
cfg.UncertaintyConfig.sigma_ni_from_ne
UncertaintyConfig.sigma_ni_from_ne
cfg.UncertaintyConfig.sigma_ni_from_ne->gate.sigma_priority_ni
cfg.UncertaintyConfig.sigma_profiles
UncertaintyConfig.sigma_profiles
cfg.UncertaintyConfig.sigma_profiles->gate.sigma_priority_ne
cfg.UncertaintyConfig.sigma_profiles->gate.sigma_priority_ni
cfg.UncertaintyConfig.sigma_profiles->gate.sigma_priority_te
cfg.UncertaintyConfig.sigma_profiles->gate.sigma_priority_ti
cfg.UncertaintyConfig.te_scalar_sigma
UncertaintyConfig.te_scalar_sigma
cfg.UncertaintyConfig.te_scalar_sigma->gate.sigma_priority_te
cfg.UncertaintyConfig.ti_scalar_sigma
UncertaintyConfig.ti_scalar_sigma
cfg.UncertaintyConfig.ti_scalar_sigma->gate.sigma_priority_ti
cfg.UncertaintyConfig.zeff_scalar_sigma
UncertaintyConfig.zeff_scalar_sigma
gate.zeff_channel_enable
zeff channel enabled (when zeff_scalar_sigma>0)
cfg.UncertaintyConfig.zeff_scalar_sigma->gate.zeff_channel_enable
fn.baseline._load_kinetic_profiles->gate.profile_file_type
qty.j_NBI
j_NBI [A/m^2] (beam-driven)
fn.baseline._resolve_fixed->qty.j_NBI
fn.baseline._resolve_fixed->qty.j_RF
fn.baseline._resolve_fixed->qty.p_fast
fn.baseline._resolve_reconstruction
_resolve_reconstruction(source, config, mygs)
fn.baseline._resolve_reconstruction->fn.baseline._load_kinetic_profiles
fn.baseline._resolve_reconstruction->fn.baseline._resolve_fixed
fn.baseline.floor_inductive_split
floor_inductive_split(j_inductive, j_BS)
fn.baseline._resolve_reconstruction->fn.baseline.floor_inductive_split
fn.baseline._resolve_reconstruction->qty.Ip_target
fn.baseline._resolve_reconstruction->qty.j_BS
qty.j_inductive
j_inductive (ohmic current)
fn.baseline._resolve_reconstruction->qty.j_inductive
fn.baseline._resolve_reconstruction->qty.j_phi
fn.baseline._resolve_reconstruction->qty.li_target
fn.baseline._resolve_reconstruction->qty.psi_N
qty.aux_baselines
aux_baselines dict
fn.baseline._sigma_zeff_baseline->qty.aux_baselines
fn.baseline.resolve_baseline
resolve_baseline(config, mygs)
gate.source_type
source type: ImasSource | ReconstructionSource
fn.baseline.resolve_baseline->gate.source_type
fn.baseline.resolve_uncertainty
resolve_uncertainty(config, baseline)
fn.baseline.resolve_uncertainty->gate.sigma_priority_ne
fn.baseline.resolve_uncertainty->gate.sigma_priority_ni
fn.baseline.resolve_uncertainty->gate.sigma_priority_te
fn.baseline.resolve_uncertainty->gate.sigma_priority_ti
fn.baseline.resolve_uncertainty->gate.sigma_priority_zeff
fn.baseline.resolve_uncertainty->qty.aux_baselines
qty.aux_sigmas
aux_sigmas dict
fn.baseline.resolve_uncertainty->qty.aux_sigmas
fn.baseline.resolve_uncertainty->qty.sigma_jphi
fn.io.imas.read_imas_baseline
read_imas_baseline(source, fixed, ...)
fn.io.pfile.read_pfile->qty.ne
fn.io.pfile.read_pfile->qty.ni
fn.io.pfile.read_pfile->qty.psi_N_kinetic
fn.io.pfile.read_pfile->qty.te
fn.io.pfile.read_pfile->qty.ti
fn.io.pfile.read_pfile->qty.zeff
gate.sigma_priority_ne->qty.sigma_ne
gate.sigma_priority_ni->qty.sigma_ni
gate.sigma_priority_te->qty.sigma_te
gate.sigma_priority_ti->qty.sigma_ti
gate.sigma_priority_zeff->qty.aux_sigmas
gate.source_type->fn.baseline._resolve_reconstruction
gate.source_type->fn.io.imas.read_imas_baseline
gate.zeff_channel_enable->fn.baseline._sigma_zeff_baseline
gate.sigma0_floor_zone
floor zone? (j_inductive <= 0)
fn.baseline.floor_inductive_split->gate.sigma0_floor_zone
fn.baseline.floor_inductive_split->qty.j_BS
fn.baseline.floor_inductive_split->qty.j_inductive
cfg.isolate_edge_jBS
isolate_edge_jBS
ext.solve_with_bootstrap
solve_with_bootstrap()
cfg.isolate_edge_jBS->ext.solve_with_bootstrap
cfg.isolate_edge_jBS->ext.solve_with_bootstrap
gate.j_inductive_decomposition
j_inductive storage logic (isolate_edge_jBS)
cfg.isolate_edge_jBS->gate.j_inductive_decomposition
cfg.n_k
n_k (spline order)
fn.tmi.fit_inductive_profile
fit_inductive_profile
cfg.n_k->fn.tmi.fit_inductive_profile
cfg.psi_bridge
psi_bridge
cfg.psi_bridge->fn.tmi.fit_inductive_profile
cfg.psi_pad
psi_pad
fn.sampling.calc_cylindrical_li_proxy
calc_cylindrical_li_proxy
cfg.psi_pad->fn.sampling.calc_cylindrical_li_proxy
fn.tmi._swb_jbs_to_toroidal
_swb_jbs_to_toroidal
cfg.psi_pad->fn.tmi._swb_jbs_to_toroidal
cfg.rescale_j_BS
rescale_j_BS
cfg.rescale_j_BS->fn.tmi.fit_inductive_profile
cfg.shelf_psi_N
shelf_psi_N
cfg.shelf_psi_N->fn.tmi.fit_inductive_profile
qty.j_BS_shelved
j_BS after optional shelf
cfg.shelf_psi_N->qty.j_BS_shelved
ext.corrective_jphi_iteration
_corrective_jphi_iteration
qty.j_phi_output_corr
j_phi_output (corrective)
ext.corrective_jphi_iteration->qty.j_phi_output_corr
qty.li_proxy_baseline
baseline li proxy
fn.sampling.calc_cylindrical_li_proxy->qty.li_proxy_baseline
fn.tmi._shelf_blend_decompose
_shelf_blend_decompose
qty.shelf_psi_value
shelf_psi (location)
fn.tmi._shelf_blend_decompose->qty.shelf_psi_value
qty.full_j_BS
full_j_BS (full bootstrap, physical)
fn.tmi._swb_jbs_to_toroidal->qty.full_j_BS
qty.j_dot_B
<j.B> (undo SWB projection)
fn.tmi._swb_jbs_to_toroidal->qty.j_dot_B
qty.spike_profile
spike_profile (bootstrap spike)
fn.tmi._swb_jbs_to_toroidal->qty.spike_profile
qty.j_BS_isolated_raw
j_BS_isolated_raw (pre-smoothing)
fn.tmi._swb_jbs_to_toroidal->qty.j_BS_isolated_raw
fn.tmi.classify_jphi_profile
classify_jphi_profile
qty.jphi_mode
jphi_mode
fn.tmi.classify_jphi_profile->qty.jphi_mode
qty.spike_metrics
spike_metrics
fn.tmi.classify_jphi_profile->qty.spike_metrics
qty.bs_scale
bootstrap scaling factor
fn.tmi.fit_inductive_profile->qty.bs_scale
qty.ind_scale
inductive scaling factor
fn.tmi.fit_inductive_profile->qty.ind_scale
qty.j_inductive_basis
j_inductive_basis (spline fit)
fn.tmi.fit_inductive_profile->qty.j_inductive_basis
fn.tmi.reconstruct_equilibrium
reconstruct_equilibrium
gate.jphi_classified
gate.jphi_classified
qty.j_BS_final
j_BS_final
gate.jphi_classified->qty.j_BS_final
qty.j_phi_corrective_target
j_phi_corrective_target
gate.jphi_classified->qty.j_phi_corrective_target
gate.li_converged
gate.li_converged
gate.li_converged->fn.tmi.reconstruct_equilibrium
qty.ind_factor_opt
ind_factor (li-converged)
gate.li_converged->qty.ind_factor_opt
input.eqdsk
EQDSK geqdsk equilibrium
input.eqdsk->ext.solve_with_bootstrap
input.eqdsk->qty.Ip_target
qty.eqdsk_j_tor
eqdsk j_tor (baseline)
input.eqdsk->qty.eqdsk_j_tor
input.eqdsk->qty.li_target
input.eqdsk->qty.psi_N
input.isoflux
Isoflux constraint points & weights
qty.quality_metrics
quality metrics dict
input.isoflux->qty.quality_metrics
input.kinetics
Kinetic profiles (ne, te, ni, ti, Zeff)
input.kinetics->ext.solve_with_bootstrap
qty.pressure
pressure profile
input.kinetics->qty.pressure
input.mygs
TokaMaker GS solver
input.mygs->fn.sampling.calc_cylindrical_li_proxy
input.mygs->fn.tmi._swb_jbs_to_toroidal
cfg.core_exact_psi
core_exact_psi (core-exact inductive fit)
cfg.core_exact_psi->fn.tmi.fit_inductive_profile
art.h5_archive
HDF5 archive {header}.h5
fn.run.export
export()
art.h5_archive->fn.run.export
fn.archive.BouquetArchive
BouquetArchive(ref)
art.h5_archive->fn.archive.BouquetArchive
fn.utils.discover_scan_keys
discover_scan_keys(h5path_or_header)
art.h5_archive->fn.utils.discover_scan_keys
fn.utils.list_equilibrium_indices
list_equilibrium_indices(h5path, scan_key)
art.h5_archive->fn.utils.list_equilibrium_indices
fn.utils.load_baseline_profiles
load_baseline_profiles(h5path, scan_key)
art.h5_archive->fn.utils.load_baseline_profiles
fn.utils.load_config
load_config(h5path, scan_key)
art.h5_archive->fn.utils.load_config
fn.utils.load_equilibrium
load_equilibrium(header, count, scan_key, eqdsk_out_dir)
art.h5_archive->fn.utils.load_equilibrium
cfg.generation.floor_j_BS
config.generation.floor_j_BS
fn.run._forward_solve_imas_baseline
_forward_solve_imas_baseline()
cfg.generation.floor_j_BS->fn.run._forward_solve_imas_baseline
cfg.generation.isolate_edge_jBS
config.generation.isolate_edge_jBS
cfg.generation.jBS_baseline_mode
config.generation.jBS_baseline_mode
gate.jBS_baseline_mode
jBS_baseline_mode (diff vs rescale)
cfg.generation.jBS_baseline_mode->gate.jBS_baseline_mode
gate.workflow_guard
workflow validation gate
cfg.generation.jBS_baseline_mode->gate.workflow_guard
cfg.generation.recalculate_j_BS
config.generation.recalculate_j_BS
cfg.generation.recalculate_j_BS->fn.run._forward_solve_imas_baseline
cfg.source.type
source type
fn.run._validate_workflow
_validate_workflow()
cfg.source.type->fn.run._validate_workflow
ext.generate_bouquet
generate_bouquet()
ext.solve_with_bootstrap->qty.full_j_BS
qty.j_BS_swb
j_BS from solve_with_bootstrap (parallel)
ext.solve_with_bootstrap->qty.j_BS_swb
ext.solve_with_bootstrap->qty.spike_profile
gate.ip_sanity
Ip convergence check
fn.run._forward_solve_imas_baseline->gate.ip_sanity
fn.run._forward_solve_imas_baseline->qty.li_target
fn.run._repoint_imas_geometry
_repoint_imas_geometry()
fn.run._repoint_imas_geometry->qty.boundary_lcfs
fn.run._resolve_workflow_preset
resolve workflow preset
fn.run._resolve_workflow_preset->gate.workflow_guard
fn.run.generate
generate()
fn.run._validate_workflow->fn.run.generate
fn.run.run
run() [convenience]
fn.run.export->fn.run.run
fn.run.filter
filter()
fn.run.filter->fn.run.export
fn.run.filter->fn.run.run
fn.run.run_slices
run_slices()
fn.run.filter->fn.run.run_slices
fn.run.generate->art.h5_archive
fn.run.generate->fn.run.filter
fn.run.generate->fn.run.run
fn.run.generate->fn.run.run_slices
fn.run.prepare_baseline
prepare_baseline()
fn.run.prepare_baseline->fn.run.run
fn.run.prepare_baseline->fn.run.run_slices
fn.run.prepare_baseline->qty.Ip_target
qty.j_BS_src
j_BS_src
fn.run.prepare_baseline->qty.j_BS_src
fn.run.prepare_baseline->qty.j_inductive
fn.run.prepare_baseline->qty.j_phi
fn.run.prepare_baseline->qty.ne
fn.run.prepare_baseline->qty.ni
fn.run.prepare_baseline->qty.psi_N
fn.run.prepare_baseline->qty.psi_N_kinetic
fn.run.prepare_baseline->qty.te
fn.run.prepare_baseline->qty.ti
fn.run.prepare_baseline->qty.zeff
fn.run.set_slice
set_slice()
fn.run.set_slice->fn.run._repoint_imas_geometry
fn.run.set_slice->fn.run.run_slices
fn.run.setup_solver->fn.run.prepare_baseline
fn.run.setup_solver->fn.run.run
fn.run.setup_solver->fn.run.run_slices
fn.run.setup_solver->qty.F0
fn.run.setup_solver->qty.boundary_lcfs
gate.ip_sanity->fn.run.generate
gate.jBS_baseline_mode->qty.bs_scale
qty.jBS_diff
jBS_diff [A/m^2] (bootstrap correction)
gate.jBS_baseline_mode->qty.jBS_diff
qty.j_phi_diff_mode
j_phi (diff)
gate.jBS_baseline_mode->qty.j_phi_diff_mode
qty.j_phi_rescale_mode
j_phi (rescale)
gate.jBS_baseline_mode->qty.j_phi_rescale_mode
fn.run.verify_sigma0_consistency
verify_sigma0_consistency() (sigma=0 guard)
fn.run.verify_sigma0_consistency->gate.sigma0_floor_zone
gate.imas_corrective_jphi->ext.corrective_jphi_iteration
cfg.coil_drift
coil_drift
cfg.constrain_sawteeth
constrain_sawteeth
gate.sawteeth_q0
gate.sawteeth_q0 (q0 constraint)
cfg.constrain_sawteeth->gate.sawteeth_q0
gate.constrain_sawteeth_post
Post-check q_0 < 1 (final reject)
cfg.constrain_sawteeth->gate.constrain_sawteeth_post
gate.constrain_sawteeth_pre
Pre-check q_0 < 1 (early reject)
cfg.constrain_sawteeth->gate.constrain_sawteeth_pre
cfg.jBS_scale_range
jBS_scale_range
qty.jBS_scales
jBS_scales (per-draw samples)
cfg.jBS_scale_range->qty.jBS_scales
cfg.l_i_tolerance
l_i_tolerance
gate.li_band
gate.li_band (l_i acceptance)
cfg.l_i_tolerance->gate.li_band
gate.li_acceptance
l_i band acceptance gate
cfg.l_i_tolerance->gate.li_acceptance
cfg.l_i_uncertainty
l_i_uncertainty
qty.l_i_target_draw
l_i_target_draw (per-draw sample)
cfg.l_i_uncertainty->qty.l_i_target_draw
cfg.n_equils
n_equils
fn.tmi.generate_bouquet
generate_bouquet (batch driver)
cfg.n_equils->fn.tmi.generate_bouquet
cfg.recalculate_j_BS
recalculate_j_BS
gate.recalculate_jBS
Bootstrap recalculation gate
cfg.recalculate_j_BS->gate.recalculate_jBS
cfg.seed
seed (RNG)
cfg.seed->fn.tmi.generate_bouquet
fn.sampling.generate_perturbed_GPR
generate_perturbed_GPR (GPR sampling)
qty.aux_out
aux_out (per-draw auxiliary)
fn.sampling.generate_perturbed_GPR->qty.aux_out
qty.ne_draw
ne_draw (per-draw perturb)
fn.sampling.generate_perturbed_GPR->qty.ne_draw
qty.ni_draw
ni_draw (per-draw perturb or derived)
fn.sampling.generate_perturbed_GPR->qty.ni_draw
qty.te_draw
te_draw (per-draw perturb)
fn.sampling.generate_perturbed_GPR->qty.te_draw
qty.ti_draw
ti_draw (per-draw perturb)
fn.sampling.generate_perturbed_GPR->qty.ti_draw
qty.zeff_draw
zeff_draw (per-draw sample)
fn.sampling.generate_perturbed_GPR->qty.zeff_draw
fn.tmi.perturb_kinetic_equilibrium
perturb_kinetic_equilibrium (core loop)
gate.li_target_sample
sample per-draw l_i target?
fn.tmi.perturb_kinetic_equilibrium->gate.li_target_sample
qty.diagnostics
diagnostics (per-draw metrics)
fn.tmi.perturb_kinetic_equilibrium->qty.diagnostics
qty.output_jphi
output_jphi (per-draw j_phi)
fn.tmi.perturb_kinetic_equilibrium->qty.output_jphi
fn.utils.store_baseline_profiles
store_baseline_profiles (baseline save)
art.h5.baseline
baseline group (_baseline)
fn.utils.store_baseline_profiles->art.h5.baseline
art.h5.coil_currents
coil_currents + coil_names
fn.utils.store_baseline_profiles->art.h5.coil_currents
art.h5.eqdsk
eqdsk dataset
fn.utils.store_baseline_profiles->art.h5.eqdsk
art.h5.x_points
x_points
fn.utils.store_baseline_profiles->art.h5.x_points
fn.utils.store_equilibrium
store_equilibrium (per-draw save)
fn.utils.store_equilibrium->art.h5_archive
art.h5.aux
aux_* profiles
fn.utils.store_equilibrium->art.h5.aux
fn.utils.store_equilibrium->art.h5.coil_currents
fn.utils.store_equilibrium->art.h5.eqdsk
art.h5.filter_flags
filter flags (group attrs)
fn.utils.store_equilibrium->art.h5.filter_flags
art.h5.perturbed_lcfs_ref
perturbed_lcfs_ref
fn.utils.store_equilibrium->art.h5.perturbed_lcfs_ref
art.h5.profiles
profiles (psi_N, j_phi, j_BS, ...)
fn.utils.store_equilibrium->art.h5.profiles
fn.utils.store_equilibrium->art.h5.x_points
art.h5.eq_fsa
eq_fsa group (per-draw FSA geometry)
fn.utils.store_equilibrium->art.h5.eq_fsa
gate.draw_accepted
gate.draw_accepted (final acceptance)
gate.li_band->gate.draw_accepted
fn.tmi._corrective_jphi_iteration
_corrective_jphi_iteration (residual refinement)
gate.li_target_sample->fn.tmi._corrective_jphi_iteration
gate.sawteeth_q0->gate.draw_accepted
gate.solve_failed
gate.solve_failed (solver convergence)
gate.solve_failed->gate.draw_accepted
progress_callback
progress_callback (per-draw tick)
progress_callback->fn.tmi.generate_bouquet
art.eqdsk_bytes
EQDSK file (per-draw)
art.perturbed_lcfs_ref
LCFS trace (perturbed)
art.x_points
X-point locations
cfg.accept_anchor_inband
accept_anchor_inband (Fix-B path)
gate.li_loop_variant
l_i match strategy gate
cfg.accept_anchor_inband->gate.li_loop_variant
gate.perturb_jind_in_anchor_loop
Fix-C resample loop (perturb_jind_in_anchor)
cfg.accept_anchor_inband->gate.perturb_jind_in_anchor_loop
cfg.floor_j_BS
floor_j_BS (negative bootstrap clipping)
cfg.floor_j_BS->qty.spike_profile
cfg.max_li_iter
max_li_iter (l_i loop cap)
cfg.max_pressure_iter
max_pressure_iter (pressure loop cap)
cfg.max_proxy_draws
max_proxy_draws (proxy-draw cap)
cfg.mygs
mygs (TokaMaker solver)
cfg.npsi
npsi (grid size)
cfg.p_thresh
p_thresh (pressure match tolerance)
cfg.perturb_jind_in_anchor
perturb_jind_in_anchor (Fix-C path)
cfg.perturb_jind_in_anchor->gate.li_loop_variant
cfg.perturb_jind_in_anchor->gate.perturb_jind_in_anchor_loop
cfg.pin_jphi
pin_jphi (PIN_JPHI diagnostic)
gate.pin_jphi_branch
PIN_JPHI diagnostic branch
cfg.pin_jphi->gate.pin_jphi_branch
cfg.proxy_bias_warmstart
proxy_bias_warmstart (cross-draw cache)
cfg.recon_eq_snapshot
recon_eq_snapshot (DIFF_BS cache)
gate.diff_bs_branch
DIFF_BS differential-bootstrap branch
cfg.recon_eq_snapshot->gate.diff_bs_branch
cfg.scale_jBS
scale_jBS (bootstrap scale factor)
cfg.scale_jBS->ext.solve_with_bootstrap
cfg.spike_profile_recon_cached
spike_profile_recon_cached (DIFF_BS cache)
cfg.spike_profile_recon_cached->gate.diff_bs_branch
cfg.swb_iterations
swb_iterations (SWB self-consistency)
cfg.swb_iterations->ext.solve_with_bootstrap
ext.tokamaker_get_stats
mygs.get_stats (extract equilibrium state)
ext.tokamaker_replace_eq
mygs.replace_eq (state restore for DIFF_BS)
ext.tokamaker_set_profiles
mygs.set_profiles (pressure/current assignment)
ext.tokamaker_solve
mygs.solve() (GS forward solve)
qty.F_prof
F (flux function)
ext.tokamaker_solve->qty.F_prof
qty.Ip_tokamaker
Ip (TokaMaker output)
ext.tokamaker_solve->qty.Ip_tokamaker
qty.li_current
li (TokaMaker output)
ext.tokamaker_solve->qty.li_current
qty.li_final
li_final
ext.tokamaker_solve->qty.li_final
fn.tmi.Ip_flux_integral_vs_target
Ip_flux_integral_vs_target (root-find target)
gate.skip_hard_bounds_env
SKIP_HARD env?
fn.tmi._corrective_jphi_iteration->gate.skip_hard_bounds_env
fn.tmi._corrective_jphi_iteration->qty.output_jphi
fn.tmi._kin_to_eq
_kin_to_eq (kinetic grid → equilibrium grid)
fn.tmi._vsc_channel_drift_pct
VSC drift (common-mode + differential, quadrature sigma)
gate.in_spec_verdict
in-spec verdict
fn.tmi._vsc_channel_drift_pct->gate.in_spec_verdict
fn.tmi.calc_cylindrical_li_proxy
calc_cylindrical_li_proxy (fast proxy)
fn.tmi.calc_realgeom_li_proxy_fast
calc_realgeom_li_proxy_fast (real-geom pre-screen)
fn.tmi.find_optimal_scale
find_optimal_scale (SWB OFT import)
qty.final_jphi
final_jphi (find_optimal_scale output)
fn.tmi.find_optimal_scale->qty.final_jphi
qty.final_scale_j0
final_scale_j0 (core j0 scale factor)
fn.tmi.find_optimal_scale->qty.final_scale_j0
fn.tmi.generate_perturbed_GPR
generate_perturbed_GPR (external import)
fn.tmi.get_li_proxy_geometry
get_li_proxy_geometry (real-geom prescreen)
fn.tmi.recon_anchor_solve
recon-anchor forward solve
qty.eq_stats
eq_stats (TokaMaker equilibrium stats)
fn.tmi.recon_anchor_solve->qty.eq_stats
gate.diff_bs_branch->ext.solve_with_bootstrap
gate.homotopy_early_stop
next pass already infeasible?
gate.homotopy_early_stop->gate.in_spec_verdict
gate.homotopy_feasible
homotopy pass converged?
gate.qp_saturation
QP saturated at coil bound?
gate.homotopy_feasible->gate.qp_saturation
gate.post_align_failed
post-alignment failure?
gate.in_spec_verdict->gate.post_align_failed
gate.iso_update
re-point isoflux to perturbed LCFS?
gate.skip_homotopy_env
SKIP_HOMOTOPY env?
gate.iso_update->gate.skip_homotopy_env
qty.j_inductive_consistent
j_inductive_consistent (stored inductive)
gate.j_inductive_decomposition->qty.j_inductive_consistent
gate.li_band_loop
l_i band-conditioning loop (rejection sampling)
gate.li_acceptance->gate.li_band_loop
qty.jphi_perturb
jphi_perturb (GPR j_phi candidate)
gate.li_band_loop->qty.jphi_perturb
gate.li_loop_variant->gate.li_band_loop
qty.matched_j_inductive
matched_j_inductive (Ip-scaled inductive)
gate.perturb_jind_in_anchor_loop->qty.matched_j_inductive
gate.pin_jphi_branch->qty.spike_profile
gate.post_align_failed->gate.draw_accepted
gate.pressure_match
pressure-match loop
qty.ne_perturb
ne_perturb (perturbed density)
gate.pressure_match->qty.ne_perturb
qty.ni_perturb
ni_perturb (perturbed ion density)
gate.pressure_match->qty.ni_perturb
qty.te_perturb
te_perturb (perturbed temperature)
gate.pressure_match->qty.te_perturb
qty.ti_perturb
ti_perturb (perturbed ion temperature)
gate.pressure_match->qty.ti_perturb
gate.qp_saturation->gate.homotopy_early_stop
gate.skip_hard_bounds_env->gate.iso_update
gate.skip_homotopy_env->gate.homotopy_feasible
gate.skip_iso_env
SKIP_ISO env?
gate.standard_swb_branch
Standard SWB branch
gate.zeff_active
Zeff-primary channel active
qty.Z_imp
effective impurity charge
gate.zeff_active->qty.Z_imp
gate.zeff_active->qty.zeff_draw
qty.Zeff
Zeff (effective charge profile)
qty.Zeff->ext.solve_with_bootstrap
qty.Zeff->gate.zeff_active
qty.coil_currents
Coil currents (per-draw)
qty.coil_currents->art.eqdsk_bytes
qty.coil_currents->art.perturbed_lcfs_ref
qty.in_spec_metrics
In-spec boundary metrics
qty.input_j_phi
input_j_phi (total j_phi baseline)
qty.input_j_phi->qty.spike_profile
qty.input_jinductive
input_jinductive (inductive j_phi component)
qty.input_jinductive->qty.jphi_perturb
qty.new_jphi
new_jphi (total j_phi for anchor)
qty.input_jinductive->qty.new_jphi
qty.input_jinductive->qty.spike_profile
qty.l_i_target
l_i_target (internal inductance target)
qty.l_i_target->gate.li_acceptance
qty.eq_fsa
eq_fsa (per-draw flux-surface geometry)
fn.physics.capture_equilibrium_fsa->qty.eq_fsa
gate.capture_live_eq->fn.physics.capture_equilibrium_fsa
gate.jbs_delta_mode->fn.tmi.perturb_kinetic_equilibrium
qty.delta_spike0_raw->gate.jbs_delta_mode
fn.plotting.plot_bouquet
plot_bouquet(h5path, scan_key, mode, ...)
art.h5.baseline->fn.plotting.plot_bouquet
fn.plotting.plot_coil_currents
plot_coil_currents(h5path, scan_key, vsc_coils, ...)
art.h5.baseline->fn.plotting.plot_coil_currents
fn.plotting.plot_traces
plot_traces(h5path, scan_key, li_band, rms_max_mm)
art.h5.baseline->fn.plotting.plot_traces
fn.filtering._baseline_boundary
filtering._baseline_boundary
art.h5.baseline->fn.filtering._baseline_boundary
fn.filtering.filter_coil_currents
filter_coil_currents(h5path, scan_key, F_max_pct, VSC_max_pct, apply, plot)
art.h5.coil_currents->fn.filtering.filter_coil_currents
art.h5.coil_currents->fn.plotting.plot_coil_currents
art.h5.config_json
config_json dataset
fn.archive.DrawView
DrawView(archive, scan_key, count)
art.h5.eqdsk->fn.archive.DrawView
fn.plotting.plot_geqdsk_bouquet
plot_geqdsk_bouquet(geqdsk_path_or_eq, ...)
art.h5.eqdsk->fn.plotting.plot_geqdsk_bouquet
fn.archive.DrawView.extract
DrawView.extract(out_dir, formats)
art.h5.eqdsk->fn.archive.DrawView.extract
fn.filtering._boundary_devs
_boundary_devs(bl_boundary, grp)
art.h5.perturbed_lcfs_ref->fn.filtering._boundary_devs
art.h5.perturbed_lcfs_ref->fn.plotting.plot_traces
art.h5.pfile
pfile dataset
art.h5.pfile->fn.archive.DrawView
fn.plotting.plot_pfile_bouquet
plot_pfile_bouquet(pfile_path_or_pf, ...)
art.h5.pfile->fn.plotting.plot_pfile_bouquet
art.h5.profiles->fn.archive.DrawView
fn.gui.EquilibriumBrowser
EquilibriumBrowser(h5path)
art.h5.profiles->fn.gui.EquilibriumBrowser
art.h5.profiles->fn.plotting.plot_bouquet
art.h5.x_points->fn.plotting.plot_traces
cfg.filtering.F_max_pct
F_max_pct
cfg.filtering.F_max_pct->fn.filtering.filter_coil_currents
cfg.filtering.VSC_max_pct
VSC_max_pct
cfg.filtering.VSC_max_pct->fn.filtering.filter_coil_currents
cfg.filtering.max_max_mm
max_max_mm
fn.filtering.filter_boundaries
filter_boundaries(h5path, scan_key, rms_max_mm, max_max_mm, apply, plot)
cfg.filtering.max_max_mm->fn.filtering.filter_boundaries
cfg.filtering.rms_max_mm
rms_max_mm
cfg.filtering.rms_max_mm->fn.filtering.filter_boundaries
fn.archive.ScanView
ScanView(archive, scan_key)
fn.archive.BouquetArchive->fn.archive.ScanView
fn.archive.ScanView->fn.archive.DrawView
fn.filtering._boundary_devs->fn.filtering.filter_boundaries
fn.filtering.export_filtered
export_filtered(h5path, out_path, scan_key, selection, overwrite)
fn.filtering.export_filtered->art.h5_archive
fn.filtering.filter_boundaries->art.h5.filter_flags
gate.selected
selected (AND of filters)
fn.filtering.filter_boundaries->gate.selected
fn.filtering.filter_coil_currents->art.h5.filter_flags
fn.filtering.filter_coil_currents->gate.selected
fn.filtering.read_filter_flags
read_filter_flags(h5path, scan_key)
fn.filtering.select_indices
select_indices(h5path, scan_key, selection)
fn.filtering.read_filter_flags->fn.filtering.select_indices
fn.filtering.select_indices->fn.archive.ScanView
fn.filtering.select_indices->fn.filtering.export_filtered
fn.filtering.select_indices->fn.plotting.plot_bouquet
fn.io.imas.export_imas_drawset
export_imas_drawset(...)
fn.filtering.select_indices->fn.io.imas.export_imas_drawset
fn.schema.find_bytes_dataset
find_bytes_dataset(grp, kind)
fn.schema.find_bytes_dataset->fn.archive.DrawView
fn.schema.write_profile
write_profile(grp, name, data)
fn.schema.write_profile->fn.utils.store_baseline_profiles
fn.schema.write_profile->fn.utils.store_equilibrium
fn.utils.discover_scan_keys->fn.archive.BouquetArchive
fn.utils.initialize_equilibrium_database
initialize_equilibrium_database(header)
fn.utils.initialize_equilibrium_database->fn.utils.store_equilibrium
fn.utils.list_equilibrium_indices->fn.archive.ScanView
fn.utils.load_baseline_profiles->fn.archive.ScanView
fn.utils.load_baseline_profiles->fn.gui.EquilibriumBrowser
fn.utils.load_baseline_profiles->fn.plotting.plot_bouquet
fn.utils.write_provenance
write_provenance(h5path, config, scan_key)
fn.utils.write_provenance->art.h5_archive
gate.boundary_rms
Boundary RMS/max pass/fail
gate.boundary_rms->fn.filtering.filter_boundaries
gate.coil_spec
Coil-spec pass/fail
gate.coil_spec->fn.filtering.filter_coil_currents
gate.selected->art.h5.filter_flags
fn.utils.load_eq_fsa
load_eq_fsa(header, count, scan_key)
art.h5.eq_fsa->fn.utils.load_eq_fsa
fn.io.imas._eq_fsa_geom_on
_eq_fsa_geom_on(eq_fsa, psiN_t, B0)
fn.utils.load_eq_fsa->fn.io.imas._eq_fsa_geom_on
fn.archive.DrawView.profiles_doc
DrawView.profiles_doc()
fn.utils.load_eq_fsa->fn.archive.DrawView.profiles_doc
fn.run.export_bundle
export_bundle(out_dir, formats, selection)
fn.archive.ScanView.extract
ScanView.extract(out_dir, formats, selection)
fn.run.export_bundle->fn.archive.ScanView.extract
fn.run.export_ids
export_ids(out_dir, selection, time, fidelity)
fn.run.export_ids->fn.io.imas.export_imas_drawset
fn.io.imas.write_imas_draw
write_imas_draw(...)
fn.io.imas.export_imas_drawset->fn.io.imas.write_imas_draw
gate.ids_fidelity
IDS fidelity: exact | auto | reconstruct
fn.io.imas.write_imas_draw->gate.ids_fidelity
fn.io.imas._eq_fsa_geom_on->gate.ids_fidelity
fn.physics.toroidal_to_parallel
toroidal_to_parallel()
fn.physics.toroidal_to_parallel->artifact.imas_draw_json
gate.ids_fidelity->artifact.imas_draw_json
gate.ids_fidelity->fn.physics.toroidal_to_parallel
fn.archive.DrawView.extract->fn.archive.DrawView.profiles_doc
fn.archive.ScanView.extract->fn.archive.DrawView.extract
art.sbatch_scripts
{job_name}_array.sbatch, {job_name}_merge.sbatch, {job_name}_submit.sh
art.shard_h5
{out_header}_w{worker_id}.h5
fn.parallel.merge_archives
merge_archives(shard_paths, out_header, ...)
art.shard_h5->fn.parallel.merge_archives
art.slurm_bundle
{job_name}_bundle.json
fn.parallel._cli
_cli(argv)
art.slurm_bundle->fn.parallel._cli
env.blas_pinning
BLAS/OpenMP env pinning
fn.run.Bouquet_pipeline
Bouquet.setup_solver -> prepare_baseline -> generate
env.blas_pinning->fn.run.Bouquet_pipeline
env.fd_suppression
fd-level stdout/stderr suppression
fn.parallel.run_shard
run_shard(config, worker_id, n_workers, ...)
env.fd_suppression->fn.parallel.run_shard
fn.parallel._cli->fn.parallel.merge_archives
fn.parallel._cli->fn.parallel.run_shard
fn.parallel._derive_seed
_derive_seed(seed_base, worker_id, scan_key)
fn.parallel._physical_cores
_physical_cores()
knob.n_workers
n_workers
fn.parallel._shard_size
_shard_size(total, n_workers, worker_id)
fn.parallel._warn_multithreaded
_warn_multithreaded(threads_per_worker)
gate.threads_warn
threads_per_worker > 1 warning
fn.parallel._warn_multithreaded->gate.threads_warn
fn.parallel.emit_slurm_script
emit_slurm_script(config, ...)
fn.parallel.emit_slurm_script->art.sbatch_scripts
fn.parallel.emit_slurm_script->art.slurm_bundle
fn.parallel.merge_archives->art.h5_archive
fn.parallel.merge_archives->art.h5.config_json
fn.parallel.parallel_generate
parallel_generate(config, ...)
fn.parallel.merge_archives->fn.parallel.parallel_generate
gate.baseline_match_merge
baseline consistency check (merge)
fn.parallel.merge_archives->gate.baseline_match_merge
gate.baseline_match_laptop
baseline consistency check (laptop)
fn.parallel.parallel_generate->gate.baseline_match_laptop
fn.parallel.run_shard->art.shard_h5
fn.parallel.run_shard->fn.parallel.parallel_generate
fn.parallel.run_shard->fn.run.Bouquet_pipeline
fn.run.Bouquet_pipeline->art.shard_h5
fn.utils.capture_native_output
capture_native_output (fd redirect)
fn.utils.capture_native_output->fn.parallel.run_shard
gate.backend
backend decision
gate.backend->fn.parallel.emit_slurm_script
gate.backend->fn.parallel.parallel_generate
gate.baseline_match_laptop->fn.parallel.merge_archives
gate.missing_shards
missing shards handling (CLI)
gate.missing_shards->fn.parallel._cli
input.config
BouquetConfig
input.config->art.h5.config_json
input.config->fn.parallel.emit_slurm_script
input.config->fn.parallel.parallel_generate
input.config->fn.parallel.run_shard
knob.scan_key
scan_key
input.config->knob.scan_key
quantity.n_equils_total
n_equils_total
input.config->quantity.n_equils_total
input.user_args
CLI/user args
knob.backend
backend
input.user_args->knob.backend
input.user_args->knob.n_workers
knob.seed
seed
input.user_args->knob.seed
knob.threads_per_worker
threads_per_worker
input.user_args->knob.threads_per_worker
knob.backend->gate.backend
knob.n_workers->fn.parallel._physical_cores
knob.n_workers->fn.parallel.emit_slurm_script
quantity.n_equils_per_worker
n_equils_per_worker
knob.n_workers->quantity.n_equils_per_worker
quantity.per_worker_seed
per_worker_seed
knob.scan_key->quantity.per_worker_seed
knob.seed->fn.parallel.emit_slurm_script
knob.seed->quantity.per_worker_seed
knob.threads_per_worker->env.blas_pinning
knob.threads_per_worker->fn.parallel._warn_multithreaded
knob.threads_per_worker->fn.parallel.emit_slurm_script
quantity.n_equils_per_worker->fn.parallel.run_shard
quantity.n_equils_total->quantity.n_equils_per_worker
quantity.per_worker_seed->fn.parallel.run_shard
qty.F0->fn.reconstruct_equilibrium
qty.FUSE_tot
FUSE_tot
qty.FUSE_tot->gate.jBS_baseline_mode
qty.Ip
Ip (plasma current)
qty.Ip->art.eqdsk_bytes
qty.Ip_scales
Ip_scales
qty.Ip_scales->qty.diagnostics
qty.Ip_target->fn.reconstruct_equilibrium
qty.Ip_target->artifact.baseline
qty.Ip_target->ext.corrective_jphi_iteration
qty.Ip_target->ext.solve_with_bootstrap
qty.Ip_target->fn.run._forward_solve_imas_baseline
qty.Ip_target->fn.run.generate
qty.Ip_target->fn.tmi._corrective_jphi_iteration
qty.Ip_target->fn.tmi.find_optimal_scale
qty.Ip_target->fn.tmi.recon_anchor_solve
qty.a_optimal
a_optimal (Ip scale factor)
qty.Ip_target->qty.a_optimal
qty.Ip_target->qty.quality_metrics
qty.Ip_tokamaker->qty.quality_metrics
qty.Z_imp->artifact.baseline
qty.pres_tmp
pres_tmp (per-draw pressure)
qty.Z_imp->qty.pres_tmp
qty.Zeff_eq
Zeff_eq
qty.Zeff_eq->fn.run.generate
qty.matched_jphi_perturb
matched_jphi_perturb (Ip-matched j_phi candidate)
qty.a_optimal->qty.matched_jphi_perturb
qty.aux_baselines->gate.zeff_active
qty.aux_baselines->qty.aux_out
qty.aux_baselines->qty.zeff_draw
qty.aux_length_scales
aux_length_scales (auxiliary GPR scales)
qty.aux_length_scales->qty.aux_out
qty.aux_length_scales->qty.zeff_draw
qty.aux_out->fn.utils.store_equilibrium
qty.aux_out->qty.diagnostics
qty.aux_sigmas->gate.zeff_active
qty.aux_sigmas->qty.aux_out
qty.aux_sigmas->qty.zeff_draw
qty.avg_B2
<B²> (FSA)
qty.avg_inv_R
<1/R> (FSA)
qty.baseline_j_BS_with_diff
baseline_j_BS (+ jBS_diff)
qty.baseline_j_BS_with_diff->fn.run.generate
qty.baseline_li_proxy
baseline_li_proxy (cylindrical proxy l_i)
qty.proxy_target
proxy_target (adaptive proxy target)
qty.baseline_li_proxy->qty.proxy_target
qty.boundary_lcfs->fn.reconstruct_equilibrium
qty.bs_scale->fn.run.generate
qty.j_phi_fit_prelim
j_phi_fit (pre-li-match)
qty.bs_scale->qty.j_phi_fit_prelim
qty.chi_e
chi_e [m^2/s] (electron transport)
qty.chi_i
chi_i [m^2/s] (ion transport)
qty.diagnostics->fn.utils.store_equilibrium
qty.e_r
e_r [V/m] (radial electric field)
qty.eq_stats->qty.baseline_li_proxy
qty.eqdsk_j_tor->fn.sampling.calc_cylindrical_li_proxy
qty.eqdsk_j_tor->fn.tmi._shelf_blend_decompose
qty.eqdsk_j_tor->fn.tmi.classify_jphi_profile
qty.eqdsk_j_tor->qty.j_phi_corrective_target
qty.eqdsk_j_tor->qty.quality_metrics
qty.ffp_prof_corr
FFp for GS (corrective)
qty.ffp_prof_li
FFp for GS (li-match)
qty.ffp_prof_li->ext.tokamaker_solve
qty.final_jphi->gate.constrain_sawteeth_pre
qty.target_jphi_perturb
target_jphi_perturb (corrective target)
qty.final_jphi->qty.target_jphi_perturb
qty.final_li_proxy
final_li_proxy (diagnostic cylindrical proxy)
qty.proxy_vs_real
proxy_vs_real (proxy-equilibrium offset %)
qty.final_li_proxy->qty.proxy_vs_real
qty.final_scale_j0->qty.target_jphi_perturb
qty.full_j_BS->fn.tmi._swb_jbs_to_toroidal
qty.full_j_BS->qty.diagnostics
qty.guess_j_inductive
guess_j_inductive
qty.j_ind_li_matched
j_ind (li-matched)
qty.ind_factor_opt->qty.j_ind_li_matched
qty.j_inductive_fit
j_inductive_fit (scaled)
qty.ind_scale->qty.j_inductive_fit
qty.iteration_Ips
iteration_Ips
qty.iteration_Ips->qty.diagnostics
qty.iteration_l_is
iteration_l_is
qty.iteration_l_is->qty.diagnostics
qty.j0_scales
j0_scales
qty.j0_scales->qty.diagnostics
qty.jBS_diff->fn.run.generate
qty.jBS_diff->qty.baseline_j_BS_with_diff
qty.jBS_diff->qty.spike_profile
qty.jBS_scale_range_centered
jBS_scale_range (centered)
qty.jBS_scale_range_centered->ext.generate_bouquet
qty.jBS_scales->fn.tmi.perturb_kinetic_equilibrium
qty.j_BS->artifact.baseline
qty.j_BS->fn.run.verify_sigma0_consistency
qty.j_BS->qty.j_inductive
qty.j_ind_final
j_ind_final
qty.j_BS_final->qty.j_ind_final
qty.j_BS_isolated->fn.tmi._shelf_blend_decompose
qty.j_BS_isolated->fn.tmi.classify_jphi_profile
qty.j_BS_isolated->fn.tmi.fit_inductive_profile
qty.j_BS_isolated->qty.ffp_prof_li
qty.j_BS_isolated->qty.j_BS_shelved
qty.j_BS_isolated->qty.j_phi_corrective_target
qty.j_BS_isolated->qty.j_phi_fit_prelim
qty.j_BS_smoothed
j_BS near-axis smoothed
qty.j_BS_shelved->qty.j_BS_smoothed
qty.j_BS_smoothed->fn.run._forward_solve_imas_baseline
qty.j_BS_smoothed->fn.tmi.perturb_kinetic_equilibrium
qty.j_BS_smoothed->qty.j_BS_isolated
qty.j_BS_src->fn.run._forward_solve_imas_baseline
qty.j_BS_src->gate.jBS_baseline_mode
qty.j_BS_swb->fn.tmi._swb_jbs_to_toroidal
qty.j_BS_swb->gate.jBS_baseline_mode
qty.j_BS_swb->qty.baseline_j_BS_with_diff
qty.j_fixed_eff
j_fixed_eff (fixed additive currents)
qty.j_NBI->qty.j_fixed_eff
qty.j_NBI_toroidal->artifact.baseline
qty.j_NBI_toroidal->qty.j_inductive
qty.j_RF->artifact.baseline
qty.j_RF->qty.j_fixed_eff
qty.j_RF->qty.j_inductive
qty.j_bootstrap_parallel->fn.physics.parallel_to_toroidal
qty.j_fixed_eff->qty.a_optimal
qty.j_fixed_eff->qty.j_inductive_consistent
qty.j_fixed_eff->qty.matched_jphi_perturb
qty.j_fixed_eff->qty.new_jphi
qty.j_fixed_eff->qty.target_jphi_perturb
qty.j_ind_li_matched->qty.j_phi_corrective_target
qty.j_inductive->artifact.baseline
qty.j_inductive->fn.run._forward_solve_imas_baseline
qty.j_inductive->fn.run.generate
qty.j_inductive_basis->qty.j_inductive_fit
qty.j_inductive_consistent->qty.diagnostics
qty.j_inductive_fit->qty.ffp_prof_li
qty.j_inductive_fit->qty.j_ind_li_matched
qty.j_inductive_fit->qty.j_phi_fit_prelim
qty.j_ls
j_ls (current length scale)
qty.j_ls->qty.jphi_perturb
qty.j_nbi_parallel->fn.physics.parallel_to_toroidal
qty.j_phi->artifact.baseline
qty.j_phi->fn.run._forward_solve_imas_baseline
qty.j_phi->fn.run.generate
qty.j_phi->qty.j_inductive
qty.j_phi->qty.jphi_diff
qty.j_phi->qty.sigma_jphi
qty.j_phi_corrective_target->ext.corrective_jphi_iteration
qty.j_phi_final
j_phi_final
qty.j_phi_final->qty.j_ind_final
qty.j_phi_final->qty.quality_metrics
qty.j_phi_output_corr->qty.j_phi_final
qty.j_tor_parallel->fn.physics.parallel_to_toroidal
qty.j_tor_parallel->qty.j_phi
qty.j_total_parallel->fn.physics.parallel_to_toroidal
qty.jphi_diff->artifact.baseline
qty.jphi_diff->fn.run.generate
qty.jphi_diff->qty.j_fixed_eff
qty.jphi_mode->gate.jphi_classified
qty.jphi_mode->qty.quality_metrics
qty.jphi_perturb->qty.a_optimal
qty.jphi_perturb->qty.matched_jphi_perturb
qty.l_i
l_i (equilibrium internal inductance)
qty.l_i->art.eqdsk_bytes
qty.l_i->gate.li_acceptance
qty.l_i->qty.proxy_vs_real
qty.l_i_target_draw->gate.li_band
qty.li_current->gate.li_converged
qty.li_final->qty.quality_metrics
qty.li_proxy_baseline->fn.tmi.fit_inductive_profile
qty.li_target->artifact.baseline
qty.li_target->gate.li_converged
qty.li_target->fn.run.generate
qty.matched_j_inductive->gate.li_loop_variant
qty.matched_jphi_perturb->fn.tmi.find_optimal_scale
qty.n_ls
n_ls (density length scale)
qty.n_ls->gate.pressure_match
qty.n_ls->qty.ne_draw
qty.ne->fn.reconstruct_equilibrium
qty.ne->artifact.baseline
qty.ne->fn.imas._merge_ida_kinetics
qty.ne->fn.imas._validate_pressure_completeness
qty.ne->gate.sigma_priority_ne
qty.ne->fn.run._forward_solve_imas_baseline
qty.ne->fn.run.generate
qty.ne->gate.pressure_match
qty.ne->qty.Z_imp
qty.ne->qty.ne_draw
qty.ne->qty.zeff
qty.ne_draw->fn.utils.store_equilibrium
qty.ne_draw->qty.ni_draw
qty.ne_draw->qty.pres_tmp
qty.ne_perturb->ext.solve_with_bootstrap
qty.ne_perturb->art.eqdsk_bytes
qty.ne_perturb->qty.p_thermal
qty.new_jphi->fn.tmi.recon_anchor_solve
qty.ni->fn.reconstruct_equilibrium
qty.ni->artifact.baseline
qty.ni->fn.imas._validate_pressure_completeness
qty.ni->gate.sigma_priority_ni
qty.ni->fn.run._forward_solve_imas_baseline
qty.ni->fn.run.generate
qty.ni->gate.pressure_match
qty.ni->qty.Z_imp
qty.ni->qty.ni_draw
qty.p_imp
impurity pressure
qty.ni->qty.p_imp
qty.ni_draw->fn.utils.store_equilibrium
qty.ni_draw->qty.pres_tmp
qty.ni_perturb->ext.solve_with_bootstrap
qty.ni_perturb->art.eqdsk_bytes
qty.ni_perturb->qty.p_thermal
qty.output_jphi->fn.utils.store_equilibrium
qty.output_jphi->art.eqdsk_bytes
qty.output_jphi->gate.constrain_sawteeth_post
qty.output_jphi->qty.Ip
qty.output_jphi->qty.final_li_proxy
qty.output_jphi->qty.j_inductive_consistent
qty.output_jphi->qty.l_i
qty.p_diff->artifact.baseline
qty.p_diff->fn.run.generate
qty.p_diff->qty.pres_tmp
qty.p_equilibrium->artifact.baseline
qty.p_equilibrium->fn.imas._validate_pressure_completeness
qty.p_equilibrium->qty.p_diff
qty.p_fast->artifact.baseline
qty.p_fast->fn.imas._validate_pressure_completeness
qty.p_recon
reconstructed pressure
qty.p_fast->qty.p_recon
qty.p_fast->qty.pres_tmp
qty.p_imp->fn.imas._validate_pressure_completeness
qty.p_imp->qty.p_recon
qty.p_recon->qty.p_diff
qty.p_thermal->fn.reconstruct_equilibrium
qty.p_thermal->qty.pres_tmp
qty.p_total
p_total
qty.p_total->fn.run._forward_solve_imas_baseline
qty.pprime
p' (pressure gradient)
qty.pprime_gs
p' for GS
qty.pprime->qty.pprime_gs
qty.pprime_gs->ext.corrective_jphi_iteration
qty.pprime_gs->ext.tokamaker_solve
qty.pres_tmp->fn.tmi.perturb_kinetic_equilibrium
qty.pres_tmp->fn.tmi._corrective_jphi_iteration
qty.pres_tmp->fn.tmi.find_optimal_scale
qty.pres_tmp->fn.tmi.recon_anchor_solve
qty.pres_tmp->gate.recalculate_jBS
qty.pressure->fn.tmi.perturb_kinetic_equilibrium
qty.pressure->qty.pprime
qty.proxy_target->gate.li_band_loop
qty.proxy_vs_real->qty.proxy_target
qty.psi_N->fn.reconstruct_equilibrium
qty.psi_N->artifact.baseline
qty.psi_N->fn.imas._merge_ida_kinetics
qty.psi_N->fn.imas._override
qty.psi_N->fn.tmi.classify_jphi_profile
qty.psi_N->fn.run._forward_solve_imas_baseline
qty.psi_N->qty.Zeff_eq
qty.psi_N_kinetic->artifact.baseline
qty.psi_N_kinetic->fn.run._forward_solve_imas_baseline
qty.sigma_jphi->qty.jphi_perturb
qty.sigma_ne->gate.pressure_match
qty.sigma_ne->qty.ne_draw
qty.sigma_te->gate.pressure_match
qty.sigma_te->qty.te_draw
qty.sigma_ti->qty.ti_draw
qty.spike_metrics->qty.quality_metrics
qty.spike_profile->fn.tmi._swb_jbs_to_toroidal
qty.spike_profile->qty.a_optimal
qty.spike_profile->qty.diagnostics
qty.spike_profile->qty.j_inductive_consistent
qty.spike_profile->qty.matched_jphi_perturb
qty.spike_profile->qty.new_jphi
qty.spike_profile->qty.target_jphi_perturb
qty.t_ls
t_ls (temperature length scale)
qty.t_ls->gate.pressure_match
qty.t_ls->qty.te_draw
qty.target_jphi_perturb->fn.tmi._corrective_jphi_iteration
qty.te->fn.reconstruct_equilibrium
qty.te->artifact.baseline
qty.te->fn.imas._validate_pressure_completeness
qty.te->gate.sigma_priority_te
qty.te->fn.run._forward_solve_imas_baseline
qty.te->fn.run.generate
qty.te->gate.pressure_match
qty.te->qty.p_recon
qty.te->qty.te_draw
qty.te_draw->fn.utils.store_equilibrium
qty.te_draw->qty.pres_tmp
qty.te_perturb->ext.solve_with_bootstrap
qty.te_perturb->art.eqdsk_bytes
qty.te_perturb->qty.p_thermal
qty.ti->fn.reconstruct_equilibrium
qty.ti->artifact.baseline
qty.ti->fn.imas._validate_pressure_completeness
qty.ti->gate.sigma_priority_ti
qty.ti->fn.run._forward_solve_imas_baseline
qty.ti->fn.run.generate
qty.ti->gate.pressure_match
qty.ti->qty.p_imp
qty.ti->qty.p_recon
qty.ti->qty.ti_draw
qty.ti_draw->fn.utils.store_equilibrium
qty.ti_draw->qty.pres_tmp
qty.ti_perturb->ext.solve_with_bootstrap
qty.ti_perturb->art.eqdsk_bytes
qty.ti_perturb->qty.p_thermal
qty.zeff->artifact.baseline
qty.zeff->gate.sigma_priority_zeff
qty.zeff->fn.run._forward_solve_imas_baseline
qty.zeff->qty.Z_imp
qty.zeff->qty.Zeff_eq
qty.zeff_draw->qty.ni_draw
qty.zeff_draw->qty.ni_perturb
quantity.eqdsk_j_tor
eqdsk_j_tor
quantity.eqdsk_j_tor->fn.tmi.fit_inductive_profile
fn.tmi.smooth_jbs_transition
smooth_jbs_transition (shared near-axis j_BS repair)
fn.tmi.smooth_jbs_transition->fn.run.verify_sigma0_consistency
fn.tmi.smooth_jbs_transition->qty.j_BS_smoothed
fn.utils.pchip_interp
pchip_interp (kinetic -> equilibrium regrid)
fn.utils.pchip_interp->fn.baseline._resolve_reconstruction
fn.utils.pchip_interp->fn.run._forward_solve_imas_baseline
fn.utils.pchip_interp->fn.tmi.generate_bouquet
fn.utils.pchip_interp->fn.tmi._kin_to_eq
fn.utils.pchip_derivative
pchip_derivative (analytic p')
fn.utils.pchip_derivative->fn.tmi.recon_anchor_solve
fn.utils.pchip_derivative->qty.pprime
fn.physics.q_ravg
q_ravg (dict-or-positional FSA accessor)
fn.physics.q_ravg->fn.tmi._swb_jbs_to_toroidal
fn.physics.q_ravg->fn.physics.capture_equilibrium_fsa
qty.j_BS_isolated_raw->fn.tmi.classify_jphi_profile
qty.j_BS_isolated_raw->fn.tmi.smooth_jbs_transition
qty.eq_fsa->fn.utils.store_equilibrium
Generated by docs/flowchart/build.py from
docs/flowchart/graph.json. Edges/nodes are a descriptive snapshot
and may drift from the code; regenerate after refactors.