Home / Docs-Technical WhitePaper / 39-EFT.WP.Plasma.Confinement v1.0
Chapter 15 — Data & Reproducibility (DataSpec / Methods.Repro)
I. Chapter Objectives & Structure
- Objective: Define the Plasma Confinement data contract, data/pipeline cards, and audit-trail exports; lock environments and equivalence thresholds so the equilibrium/stability/waves/GC/transport/edge chain across S20-/S30-/S40-/S50-/S60-/S70-/S80-/I10-/M10- is reproducible, auditable, and releasable under a unified data dialect.
- Structure: Data contract → Fields & templates → Pipeline card & env-lock → Repro workflow → Audit trail & release → Falsifiability → Compliance templates → Cross-chapter closure.
- Shared arrival-time dialect (two equivalent forms; path/measure explicit; record delta_form):
- Constant-factored: T_arr = ( 1 / c_ref ) * ( ∫ n_eff d ell )
- General: T_arr = ( ∫ ( n_eff / c_ref ) d ell )
II. Data Contract (Plasma increments)
- Artifacts (minimal set):
geometry/coils/binding (I10-), equilibrium{psi,q(ψ)} (S30-), stability{δW_min,Δ',D_S,D_M} (S40-),
waves{n_eff(ω),rays,α_abs,P_dep(r),T_arr} (S50-), gc_nc{D_nc,χ_nc,J_bs} (S60-),
transport{D,χ,Γ,Q,Π_ψ} (S70-), edge_sol{profiles_1D,q_t,R,Y,L_z} (S80-),
diagnostics{H_blocks,windows,AF/PF} (M10-), qa_gates, audit_manifest. - Minimal consistency: SI units; check_dim = pass; power closure, topology consistency, stability gates, and two-dialect T_arr agreement.
- Versioning & checksums: semver + per-file sha256; record created_at, toolchain, and env_lock fingerprints.
III. Dataset Card (v1.0, Plasma fields)
Field | Req. | Notes |
|---|---|---|
dataset_id / version / source | ✓ | Unique / semver / `measurement |
geometry/coils/binding | ✓ | I10- artifacts & binding |
equilibrium{psi,q} | ✓ | GS solution & metric/grid refs |
stability{δW_min,Δ',D_S,D_M} | ✓ | Energy principle/tearing/local criteria |
waves{n_eff,rays,alpha_abs,P_dep,T_arr} | ✓ | Dispersion/rays/deposition/arrival |
gc_nc{D_nc,χ_nc,J_bs} | — | Neoclassical coefficients |
transport{D,χ,Γ,Q,Π_ψ} | ✓ | Fluxes & closure outputs |
edge_sol{profiles_1D,q_t,R,Y,L_z} | — | Edge/SOL & target heat flux |
diagnostics{H_blocks,windows,AF/PF,Δt_sync} | ✓ | Operators/windows/calibration |
qa_gates | ✓ | check_dim/power_closure/topology/stability/Tarr_dual |
hashes/created_at/toolchain | ✓/—/— | Integrity & traceability |
Minimal template (copy-ready)
dataset_card:
dataset_id: "PC-DS-001"
version: "1.0.0"
source: "simulation"
geometry_ref: "GEOM-COIL-0001"
binding_ref: "I10-PC-0001"
equilibrium:
psi: "/eq/psi.nc"
q: "/eq/q.nc"
metrics: "/eq/coords_boozer.nc"
stability:
deltaW_min_J: 2.6e3
DeltaPrime: -0.4
D_S_profile: "/stab/DS.tbl"
D_M_profile: "/stab/DM.tbl"
waves:
n_eff_tbl: "/waves/n_eff.tbl"
rays_json: "/waves/rays.json"
alpha_abs: "/waves/alpha.tbl"
P_dep_Wm3: "/waves/Pdep.nc"
arrival:
form: "n_over_c" # or "one_over_c_times_n"
gamma: "explicit"
measure: "d_ell"
c_ref: 299792458.0
Tarr_s: 3.08e-06
u_Tarr_s: 9.0e-08
delta_form: "n_over_c"
gc_nc:
D_nc_m2s: "/nc/Dnc.tbl"
chi_nc_m2s: "/nc/Chinc.tbl"
J_bs_Am2: "/nc/Jbs.tbl"
transport:
D_m2s: "/trans/D.nc"
chi_m2s: "/trans/chi.nc"
fluxes: "/trans/fluxes.nc" # Γ, Q, Π_ψ
edge_sol:
s_grid_m: "/edge/s.npy"
profiles_1D: "/edge/profiles.nc"
q_t_MWm2: 7.3
R: 0.94
Y_tbl: "/impurity/Y.tbl"
Lz_tbl: "/impurity/Lz.tbl"
diagnostics:
H_blocks: [ "ECE_transfer", "Reflect_phase", "Mag_inversion", "IR_heatflux" ]
windows: "/diag/windows.yaml"
AF: "/cal/AF_antenna.yaml"
PF: "/cal/PF_probe.yaml"
dt_sync_s: 1.0e-08
qa_gates:
check_dim: "pass"
power_closure: "pass"
topology: "pass"
stability: {deltaW_min:">0", DeltaPrime:"<=0"}
Tarr_dual: {diff_s: 2.0e-08, u_Tarr_s: 9.0e-08, pass: true}
hashes:
files:
- {path:"/eq/psi.nc", sha256:"..."}
- {path:"/waves/Pdep.nc", sha256:"..."}
created_at: "2025-09-16T10:00:00Z"
toolchain: {simstack_plasma:"1.0.0", kernels:"0.9.3"}
IV. Pipeline Card (v1.0) & Env-Lock (v1.0)
- Standard stages: build(I10) → GS(S30) → stability(S40) → waves(S50) → gc_nc(S60) → transport(S70) → edge_sol(S80) → synth_obs+assim(M10) → qa → export.
- Env-lock: record OS/interpreter/dependencies/container digest & hardware; unified units; provide RNG seeds.
pipeline_card:
pipeline_id: "PC-PIPE-001"
version: "1.0.0"
steps:
- {id:"i10_build", cmd:"i10_bind --geom GEOM-COIL-0001 --out /artifacts/i10.yaml"}
- {id:"gs", cmd:"solve_gs --binding /artifacts/i10.yaml --out /eq"}
- {id:"stability", cmd:"stab_energy --eq /eq --out /stab"}
- {id:"waves", cmd:"waves_run --eq /eq --disp /cfg/disp.json --out /waves"}
- {id:"gc_nc", cmd:"neoclassical --eq /eq --out /nc"}
- {id:"transport", cmd:"transport_run --eq /eq --nc /nc --out /trans"}
- {id:"edge_sol", cmd:"edge_sol --geom /artifacts/i10.yaml --out /edge"}
- {id:"synth", cmd:"synth_obs --H /cfg/H.yaml --windows /diag/windows.yaml --out /obs"}
- {id:"assim", cmd:"assimilate --R /cov/R.h5 --B /cov/B.h5 --obs /obs --out /assim"}
- {id:"qa", cmd:"qa_check --dataset /assim/dataset_card.yaml"}
- {id:"export", cmd:"export_cards --out /release"}
env_lock:
os: {name:"Ubuntu", version:"22.04"}
interpreter: {name:"Python", version:"3.11.6"}
packages:
- {name:"numpy", version:"1.26.4", hash:"sha256:..."}
- {name:"scipy", version:"1.13.1", hash:"sha256:..."}
- {name:"netCDF4",version:"1.6.5", hash:"sha256:..."}
container: {image:"registry/pc-simstack:1.0.0", digest:"sha256:..."}
hardware: {cpu:"x86_64", gpu:"none", ram_GB:64}
seeds: {global: 20250916}
V. Reproducibility Workflow (Methods.Repro, execution dialect)
- Fetch & verify: pull dataset_card/pipeline_card/env_lock; verify sha256.
- Rebuild environment: start container/venv as per env_lock.
- Run pipeline: i10→GS→stability→waves→gc_nc→transport→edge_sol→synth→assim→qa; each stage passes check_dim and stage QA.
- Arrival agreement: compute both T_arr dialects; verify |Δ| ≤ u(T_arr).
- Power & topology: verify P_in = P_ref + P_rad + P_wall + ∫P_dep dV and q(ψ)/LCFS/X consistency.
- Stability gates: δW_min > 0 ∧ Δ' ≤ 0 ∧ {D_S,D_M}>0.
- Transport/neoclassical: compare D,χ to scalings/tables; D_nc/χ_nc/J_bs to ν_* , q , ε.
- Emit QA & release cards: generate qa_report.json and release_manifest.
VI. Audit Trail & Release
audit_manifest:
run_id: "RUN-PC-2025-09-16-001"
toolchain: {simstack_plasma:"1.0.0", kernels:"0.9.3"}
diffs: {params_changed:["closure.table","AF_update"], reason:"calibration refresh"}
seeds: {global: 20250916}
qa:
check_dim: "pass"
power_closure: "pass"
topology: "pass"
stability: "pass"
Tarr_dual: "pass"
logs: "/logs/run_001.txt"
release_manifest:
normative_refs: ["EFT.WP.Core.DataSpec v1.0","Methods.Repro v1.0"]
artifacts:
- "/release/dataset_card.yaml"
- "/release/pipeline_card.yaml"
- "/release/env_lock.yaml"
- ["/release/audit_manifest.yaml","/release/qa_report.json"]
hashes:
dataset_card: "sha256:..."
pipeline_card: "sha256:..."
env_lock: "sha256:..."
audit: "sha256:..."
VII. Falsifiability (Repro)
- R-PC-1 (Arrival mismatch): |T_arr(n_over_c) − T_arr(one_over_c_times_n)| > u(T_arr).
- R-PC-2 (Power/topology/stability failure): any hard gate fails.
- R-PC-3 (Equivalence failure): reproduced vs published curves exceed gates:
- ε_psi = max |psi^{rep} − psi^{pub}| / |psi^{pub}| > ε_psi_gate
- ε_q = max |q^{rep} − q^{pub}| > ε_q_gate
- ε_Pdep = |∫P_dep^{rep} − ∫P_dep^{pub}| / ∫P_dep^{pub} > ε_Pdep_gate
- ε_Tarr = max |T_arr^{rep} − T_arr^{pub}| > ε_Tarr_gate
- ε_Dχ = max |log(D,χ)^{rep} − log(D,χ)^{pub}| > ε_Dχ_gate
- ε_qt = max |q_t^{rep} − q_t^{pub}| / q_t^{pub} > ε_qt_gate
- R-PC-4 (Env not reproducible/audit missing): cannot rebuild env_lock or missing key hashes/logs.
- R-PC-5 (Operator/covariance mismatch): version/dimension mismatch in H/R/B causes QA failure.
VIII. Compliance Bundle (copy-ready)
Equivalence & consistency checks (pseudocode)# 1) Two-dialect arrival
T1 = (1/c_ref) * trapz(n_eff*dl)
T2 = trapz((n_eff/c_ref)*dl)
assert abs(T1 - T2) <= u_Tarr
# 2) Power closure
Pdep = integrate(P_dep_grid)
assert abs(P_in - P_ref - P_rad - P_wall - Pdep) <= u_power
# 3) Topology/Stability
assert max_abs(q_rep - q_pub) <= q_gate and max_rel(psi_rep, psi_pub) <= eps_psi_gate
assert deltaW_min > 0 and DeltaPrime <= 0
# 4) Transport/Neoclassical
assert r2_score(log(D_rep), log(D_pub)) >= R2_gate
assert r2_score(log(chi_rep), log(chi_pub)) >= R2_gate
# 5) Edge/SOL target heat flux
assert max_rel(qt_rep, qt_pub) <= eps_qt_gate
Suggested thresholds (dataset-specific)
equivalence_gates:
eps_psi_gate: 0.03
eps_q_gate: 0.05
eps_Pdep_gate: 0.05
eps_Tarr_gate: 0.05e-6
eps_Dχ_gate: 0.10
eps_qt_gate: 0.10
R2_gate: 0.85
u_power: 0.07*Pin
IX. Cross-Chapter Links & Closure
- Dependencies: Chapters 4–12 & 14 as above.
- Downstream: Chapter 16 (Design Protocol & Checklist—integrate repro gates & equivalence thresholds into sign-off) and the unified specifications EFT.WP.Core.DataSpec / Methods.Repro.
Copyright & License (CC BY 4.0)
Copyright: Unless otherwise noted, the copyright of “Energy Filament Theory” (text, charts, illustrations, symbols, and formulas) belongs to the author “Guanglin Tu”.
License: This work is licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0). You may copy, redistribute, excerpt, adapt, and share for commercial or non‑commercial purposes with proper attribution.
Suggested attribution: Author: “Guanglin Tu”; Work: “Energy Filament Theory”; Source: energyfilament.org; License: CC BY 4.0.
First published: 2025-11-11|Current version:v5.1
License link:https://creativecommons.org/licenses/by/4.0/