{"id":44629720,"url":"https://github.com/anulum/scpn-fusion-core","last_synced_at":"2026-02-24T06:56:31.841Z","repository":{"id":337959607,"uuid":"1155937608","full_name":"anulum/scpn-fusion-core","owner":"anulum","description":"SCPN Fusion Core — Advanced Plasma Physics \u0026 Neuromorphic Control Suite for Tokamak Reactors","archived":false,"fork":false,"pushed_at":"2026-02-17T22:05:16.000Z","size":9829,"stargazers_count":8,"open_issues_count":22,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-17T22:09:44.655Z","etag":null,"topics":["ai-surrogates","control-systems","digital-twin","fusion","grad-shafranov","machine-learning","mhd","neuro-symbolic","nuclear-engineering","numpy","petri-net","plasma-physics","python","rust","scipy","spiking-neural-network","tokamak"],"latest_commit_sha":null,"homepage":"https://anulum.github.io/scpn-fusion-core/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anulum.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json","notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-12T04:25:08.000Z","updated_at":"2026-02-17T22:05:20.000Z","dependencies_parsed_at":"2026-02-15T17:01:57.696Z","dependency_job_id":"56d8e607-13ee-4d8b-abe4-1264ac422017","html_url":"https://github.com/anulum/scpn-fusion-core","commit_stats":null,"previous_names":["anulum/scpn-fusion-core"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/anulum/scpn-fusion-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anulum%2Fscpn-fusion-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anulum%2Fscpn-fusion-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anulum%2Fscpn-fusion-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anulum%2Fscpn-fusion-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anulum","download_url":"https://codeload.github.com/anulum/scpn-fusion-core/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anulum%2Fscpn-fusion-core/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29593909,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T18:54:29.675Z","status":"ssl_error","status_checked_at":"2026-02-18T18:50:50.517Z","response_time":162,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-surrogates","control-systems","digital-twin","fusion","grad-shafranov","machine-learning","mhd","neuro-symbolic","nuclear-engineering","numpy","petri-net","plasma-physics","python","rust","scipy","spiking-neural-network","tokamak"],"created_at":"2026-02-14T16:19:37.590Z","updated_at":"2026-02-18T20:00:43.158Z","avatar_url":"https://github.com/anulum.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SCPN Fusion Core\n\n[![CI](https://github.com/anulum/scpn-fusion-core/actions/workflows/ci.yml/badge.svg)](https://github.com/anulum/scpn-fusion-core/actions/workflows/ci.yml)\n[![Docs](https://github.com/anulum/scpn-fusion-core/actions/workflows/docs.yml/badge.svg)](https://anulum.github.io/scpn-fusion-core/)\n[![PyPI](https://img.shields.io/pypi/v/scpn-fusion.svg)](https://pypi.org/project/scpn-fusion/)\n[![PyPI Downloads](https://img.shields.io/pypi/dm/scpn-fusion.svg)](https://pypi.org/project/scpn-fusion/)\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)\n[![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)\n[![Rust](https://img.shields.io/badge/rust-stable-orange.svg)](https://www.rust-lang.org/)\n[![codecov](https://codecov.io/gh/anulum/scpn-fusion-core/graph/badge.svg)](https://codecov.io/gh/anulum/scpn-fusion-core)\n[![DOI](https://img.shields.io/badge/DOI-Zenodo-blue.svg)](https://zenodo.org/)\n\nA comprehensive tokamak plasma physics simulation and control suite with neuro-symbolic compilation. SCPN Fusion Core models the full lifecycle of a fusion reactor — from Grad-Shafranov equilibrium and MHD stability through transport, heating, neutronics, and real-time disruption prediction — with optional Rust acceleration via PyO3 and an optional bridge to [SC-NeuroCore](https://github.com/anulum/sc-neurocore) spiking neural networks.\n\n## Architecture\n\n```\nscpn-fusion-core/\n├── src/scpn_fusion/           # Python package (46 modules)\n│   ├── core/                  # Plasma physics engines\n│   │   ├── fusion_kernel.py           Grad-Shafranov + transport solver\n│   │   ├── compact_reactor_optimizer  MVR-0.96 compact reactor search\n│   │   ├── mhd_sawtooth.py           MHD sawtooth crash simulator\n│   │   ├── rf_heating.py             ICRH/ECRH/LHCD heating models\n│   │   ├── divertor_thermal_sim.py   Divertor heat-flux solver\n│   │   ├── hall_mhd_discovery.py     Hall-MHD two-fluid effects\n│   │   ├── sandpile_fusion_reactor   SOC criticality model\n│   │   ├── neural_equilibrium.py     Neural-network equilibrium solver\n│   │   ├── fno_turbulence_suppressor Fourier Neural Operator turbulence model\n│   │   ├── turbulence_oracle.py      ITG/TEM turbulence predictor\n│   │   ├── wdm_engine.py             Warm dense matter EOS\n│   │   ├── geometry_3d.py            3D flux-surface geometry\n│   │   ├── global_design_scanner.py  Multi-objective design space explorer\n│   │   └── integrated_transport      Coupled transport solver\n│   ├── control/               # Reactor control \u0026 AI\n│   │   ├── tokamak_flight_sim.py     Real-time flight simulator\n│   │   ├── tokamak_digital_twin.py   Digital twin with live telemetry\n│   │   ├── fusion_optimal_control    Model-predictive controller\n│   │   ├── fusion_sota_mpc.py        State-of-the-art MPC\n│   │   ├── disruption_predictor.py   ML disruption early-warning\n│   │   ├── spi_mitigation.py         Shattered pellet injection\n│   │   ├── fusion_control_room.py    Integrated control room sim\n│   │   ├── neuro_cybernetic_controller  SNN-based feedback controller\n│   │   └── advanced_soc_fusion_learning Self-organized criticality RL\n│   ├── nuclear/               # Nuclear engineering\n│   │   ├── blanket_neutronics.py     Tritium breeding ratio solver\n│   │   ├── nuclear_wall_interaction  PMI / first-wall damage\n│   │   ├── pwi_erosion.py            Plasma-wall erosion model\n│   │   └── temhd_peltier.py          Thermoelectric MHD effects\n│   ├── diagnostics/           # Synthetic diagnostics\n│   │   ├── synthetic_sensors.py      Virtual instrument suite\n│   │   └── tomography.py             Soft X-ray tomographic inversion\n│   ├── engineering/           # Balance of plant\n│   │   └── balance_of_plant.py       Thermal cycle, turbine, cryo\n│   ├── scpn/                  # Neuro-symbolic compiler\n│   │   ├── compiler.py               Petri nets → stochastic neurons\n│   │   ├── controller.py             SNN-driven plasma control\n│   │   ├── structure.py              Petri net data structures\n│   │   ├── contracts.py              Formal verification contracts\n│   │   └── artifact.py               Compilation artifact storage\n│   ├── hpc/                   # High-performance computing\n│   │   └── hpc_bridge.py             C++/Rust FFI bridge\n│   └── ui/                    # Dashboard\n│       └── app.py                    Streamlit real-time dashboard\n├── scpn-fusion-rs/            # Rust workspace (10 crates)\n│   ├── crates/\n│   │   ├── fusion-types/      # Shared data types\n│   │   ├── fusion-math/       # Linear algebra, FFT, interpolation\n│   │   ├── fusion-core/       # Grad-Shafranov, transport in Rust\n│   │   ├── fusion-physics/    # MHD, heating, turbulence\n│   │   ├── fusion-nuclear/    # Neutronics, wall erosion\n│   │   ├── fusion-engineering/ # Balance of plant\n│   │   ├── fusion-control/    # PID, MPC, disruption predictor\n│   │   ├── fusion-diagnostics/ # Sensor models\n│   │   ├── fusion-ml/         # Inference engine\n│   │   └── fusion-python/     # PyO3 bindings → scpn_fusion_rs.pyd\n│   └── Cargo.toml             # Workspace manifest\n├── tests/                     # Python test suite\n├── docs/                      # Technical documentation\n├── validation/                # ITER validation configurations\n├── calibration/               # Optimization tools\n└── schemas/                   # JSON schemas\n```\n\n## Quick Start\n\n```bash\n# Clone\ngit clone https://github.com/anulum/scpn-fusion-core.git\ncd scpn-fusion-core\n\n# Install (Python)\npip install -e .\n\n# Run a simulation\npython run_fusion_suite.py kernel       # Grad-Shafranov equilibrium\npython run_fusion_suite.py optimizer    # Compact reactor search (MVR-0.96)\npython run_fusion_suite.py flight       # Tokamak flight simulator\npython run_fusion_suite.py neural       # Neural equilibrium solver\npython examples/run_3d_flux_quickstart.py --toroidal 24 --poloidal 24\npython examples/run_3d_flux_quickstart.py --toroidal 24 --poloidal 24 --preview-png artifacts/SCPN_Plasma_3D_quickstart.png\n\n# Run tests\npytest tests/ -v\n\n# Generate validation RMSE dashboard\npython validation/rmse_dashboard.py\n```\n\nThe 3D quickstart writes an OBJ mesh to `artifacts/SCPN_Plasma_3D_quickstart.obj` and can optionally render a PNG preview.\n\n### Docker (One-Click Run)\n\n```bash\n# Run the Streamlit dashboard\ndocker compose up\n\n# Or build and run manually\ndocker build -t scpn-fusion-core .\ndocker run -p 8501:8501 scpn-fusion-core\n\n# With dev dependencies (for running tests inside the container)\ndocker build --build-arg INSTALL_DEV=1 -t scpn-fusion-core:dev .\ndocker run scpn-fusion-core:dev pytest tests/ -v\n```\n\n### Pure Python (No Rust Toolchain Required)\n\nThe entire simulation suite works without Rust. Every module auto-detects the\nRust extension and falls back to NumPy/SciPy:\n\n```bash\npip install scpn-fusion          # from PyPI (pre-built wheels include Rust)\n# OR\npip install -e .                 # from source (pure Python, no cargo needed)\n```\n\nIf the Rust extension is not available, you'll see a one-time info message at\nimport and all computations run on NumPy. The only difference is speed\n(Rust kernels are ~10-50x faster for equilibrium solves).\n\n### Rust Acceleration (Optional)\n\n```bash\ncd scpn-fusion-rs\ncargo build --release\ncargo test\n\n# Build Python bindings (requires maturin)\npip install maturin\ncd crates/fusion-python\nmaturin develop --release\n```\n\nThe Python package auto-detects the Rust extension and falls back to NumPy if unavailable.\n\n### Testing\n\n```bash\n# Python unit + property-based tests\npip install -e \".[dev]\"\npytest tests/ -v\n\n# Rust unit + property-based tests\ncd scpn-fusion-rs\ncargo test --all-features\n\n# Rust benchmarks\ncargo bench\n```\n\nThe test suites include property-based tests powered by [Hypothesis](https://hypothesis.readthedocs.io/) (Python) and [proptest](https://crates.io/crates/proptest) (Rust), covering numerical invariants, topology preservation, and solver convergence properties.\n\n## Tutorial Notebooks\n\n| Notebook | Description |\n|----------|-------------|\n| `01_compact_reactor_search` | MVR-0.96 compact reactor optimizer walkthrough |\n| `02_neuro_symbolic_compiler` | Petri net → stochastic neuron compilation pipeline |\n| `03_grad_shafranov_equilibrium` | Free-boundary equilibrium solver tutorial |\n| `04_divertor_and_neutronics` | Divertor heat flux \u0026 tritium breeding ratio |\n| `05_validation_against_experiments` | Cross-validation vs SPARC GEQDSK \u0026 ITPA scaling |\n| `06_inverse_and_transport_benchmarks` | Inverse solver \u0026 neural transport surrogate benchmarks |\n\n## Validation Against Experimental Data\n\nThe `validation/` directory contains reference data from real tokamaks for cross-checking simulation outputs:\n\n| Dataset | Source | Contents |\n|---------|--------|----------|\n| **SPARC GEQDSK** | [SPARCPublic](https://github.com/cfs-energy/SPARCPublic) | 8 equilibrium files (B=12.2 T, I_p up to 8.7 MA) |\n| **ITPA H-mode** | Verdoolaege et al., NF 61 (2021) | Confinement data from 10 tokamaks (JET, DIII-D, C-Mod, ...) |\n| **IPB98(y,2)** | ITER Physics Basis | Scaling law coefficients + uncertainties |\n| **ITER configs** | Internal | 4 coil-optimised ITER configurations |\n| **SPARC config** | Creely et al., JPP 2020 | Machine parameters for compact high-field design |\n| **DIII-D config** | Luxon, NF 42 (2002) | Medium-size US tokamak parameters |\n| **JET config** | Pamela et al. (2007) | Largest tokamak, DT fusion data |\n\n```bash\n# Run validation script\npython validation/validate_against_sparc.py\n\n# Read a GEQDSK equilibrium\npython -c \"from scpn_fusion.core.eqdsk import read_geqdsk; eq = read_geqdsk('validation/reference_data/sparc/lmode_vv.geqdsk'); print(f'B={eq.bcentr:.1f}T, Ip={eq.current/1e6:.1f}MA')\"\n```\n\n## 21 Simulation Modes\n\n| Mode | Description |\n|------|-------------|\n| `kernel` | Grad-Shafranov equilibrium + coupled transport |\n| `flight` | Real-time tokamak flight simulator |\n| `optimal` | Model-predictive optimal control |\n| `learning` | Self-organized criticality reinforcement learning |\n| `digital-twin` | Live digital twin with telemetry |\n| `control-room` | Integrated control room simulation |\n| `sandpile` | SOC sandpile criticality model |\n| `nuclear` | Plasma-wall interaction \u0026 first-wall damage |\n| `breeding` | Tritium breeding blanket neutronics |\n| `safety` | ML disruption predictor + early warning |\n| `optimizer` | Compact reactor design search (MVR-0.96) |\n| `divertor` | Divertor thermal load simulation |\n| `diagnostics` | Synthetic diagnostic instrument suite |\n| `sawtooth` | MHD sawtooth crash dynamics |\n| `neural` | Neural-network equilibrium solver |\n| `geometry` | 3D flux-surface geometry |\n| `spi` | Shattered pellet injection mitigation |\n| `scanner` | Multi-objective global design scanner |\n| `heating` | RF heating (ICRH / ECRH / LHCD) |\n| `wdm` | Warm dense matter equation of state |\n| `neuro-control` | SNN-based cybernetic controller |\n\nAdditional experimental modes (quantum, vibrana, lazarus, director) are\navailable for SCPN framework integration work. These require external\ncomponents not shipped in this repo:\n\n```bash\npython run_fusion_suite.py --experimental quantum\n# or\nSCPN_EXPERIMENTAL=1 python run_fusion_suite.py vibrana\n```\n\n## Minimum Viable Reactor (MVR-0.96)\n\nThe compact reactor optimizer (`python run_fusion_suite.py optimizer`) performs multi-objective design-space exploration to find the smallest tokamak configuration that achieves Q \u003e= 10 ignition. The \"0.96\" refers to the normalized minor radius target. Key parameters explored:\n\n- Major/minor radius, elongation, triangularity\n- Magnetic field strength, plasma current\n- Heating power allocation (NBI, ICRH, ECRH)\n- Tritium breeding ratio constraints\n- Divertor heat-flux limits\n\n## Neuro-Symbolic Compiler\n\nThe `scpn/` subpackage implements a **Petri net → stochastic neuron** compiler:\n\n1. **Petri Net Definition** — plasma control logic expressed as place/transition nets with formal contracts\n2. **Compilation** — Petri net transitions mapped to stochastic LIF neurons (using [SC-NeuroCore](https://github.com/anulum/sc-neurocore) when available, NumPy fallback otherwise)\n3. **Execution** — SNN-driven real-time plasma control with sub-millisecond latency\n4. **Verification** — formal contract checking on compiled artifacts\n\n## SC-NeuroCore Integration\n\nSCPN Fusion Core has an **optional** dependency on [sc-neurocore](https://github.com/anulum/sc-neurocore). When installed, the neuro-symbolic compiler uses hardware-accurate stochastic LIF neurons and Bernoulli bitstream encoding. Without it, all paths fall back to NumPy float computation:\n\n```python\ntry:\n    from sc_neurocore import StochasticLIFNeuron, generate_bernoulli_bitstream\n    _HAS_SC_NEUROCORE = True\nexcept ImportError:\n    _HAS_SC_NEUROCORE = False  # NumPy float-path fallback\n```\n\n## Rust Workspace\n\nThe `scpn-fusion-rs/` directory contains a 10-crate Rust workspace that mirrors the Python package structure. Key features:\n\n- **Performance**: `opt-level = 3`, fat LTO, single codegen unit for maximum optimization\n- **FFI**: `fusion-python` crate provides PyO3 bindings producing `scpn_fusion_rs.so/.pyd`\n- **Dependencies**: `ndarray`, `nalgebra`, `rayon` (parallelism), `rustfft`, `serde`\n- **No external runtime**: pure Rust with no C/Fortran dependencies\n\n## Benchmarks\n\n### What's Validated\n\n| Component | Status | Evidence |\n|-----------|--------|----------|\n| **Grad-Shafranov solver** | Converges on SPARC GEQDSK equilibria | `validation/validate_against_sparc.py` — axis position, q-profile, GS operator checks |\n| **IPB98(y,2) scaling** | Confinement time matches published law | `tests/test_uncertainty.py` — regression against ITPA 20-shot dataset |\n| **Inverse reconstruction** | Levenberg-Marquardt with Tikhonov + Huber | Criterion benchmarks: `inverse_bench.rs` (FD vs analytical Jacobian) |\n| **SOR solver** | Criterion-benchmarked | `sor_bench.rs` — 65×65 and 128×128 grid sizes |\n| **Property-based tests** | Hypothesis + proptest | Numerical invariants, topology preservation, convergence |\n\n### Performance Estimates (Not Yet Independently Verified)\n\nThese numbers are internal measurements. We encourage you to reproduce them\nwith `cargo bench` and `benchmarks/collect_results.sh` on your hardware.\n\n| Metric | Value | How Measured | Caveat |\n|--------|-------|-------------|--------|\n| **SOR step** @ 65×65 | µs-range | Criterion `sor_bench.rs` | Single relaxation step, not full solve |\n| **Full equil. (Picard+SOR)** | ~5 s (Python) | `profiling/profile_kernel.py` | Jacobi + Picard, not multigrid |\n| **Multigrid V-cycle** | Implemented, not yet benchmarked E2E | `fusion-math/src/multigrid.rs` | Not wired into main kernel path yet |\n| **Inverse reconstruction** | ~4 s (5 LM iters, Rust) | Criterion `inverse_bench.rs` | Dominated by forward solve time |\n| **Neural transport MLP** | ~5 µs/point (synthetic weights) | Criterion `neural_transport_bench.rs` | No physics-trained weights shipped; user must train |\n| **Memory** | ~0.7 MB (65×65 equil.) | Estimated from array sizes | — |\n\n\u003e **Note on comparisons:** Earlier versions of this README cited \"50× faster\n\u003e than Python\" and \"200,000× faster than gyrokinetic.\" These comparisons mixed\n\u003e different algorithms (multigrid vs SOR) and compared a microsecond-latency\n\u003e MLP surrogate against first-principles gyrokinetic solvers — an apples-to-\n\u003e oranges comparison. We've removed these headlines pending proper A/B\n\u003e benchmarks and trained model validation.\n\n### Community Context\n\nFor context, here are representative runtimes from published fusion codes\n(2024–2025 literature). These are not direct comparisons with SCPN.\n\n| Code | Category | Typical Runtime | Language | Reference |\n|------|----------|-----------------|----------|-----------|\n| GENE | 5D gyrokinetic | ~10⁶ CPU-h | Fortran/MPI | Jenko 2000 |\n| JINTRAC | Integrated modelling | ~10 min/shot | Fortran/Python | Romanelli 2014 |\n| CHEASE | Fixed-boundary equilibrium | ~5 s | Fortran | Lütjens 1996 |\n| EFIT | Current-filament reconstruction | ~2 s | Fortran | Lao 1985 |\n| TORAX | Integrated (JAX) | ~30 s (GPU) | Python/JAX | — |\n| DREAM | Disruption / runaway electrons | ~1 s | C++ | Hoppe 2021 |\n\nStruggling with convergence? See the [Solver Tuning Guide](docs/SOLVER_TUNING_GUIDE.md) + benchmarks notebook Part F.\n\n### Resources\n\n- **Full comparison tables:** [`docs/BENCHMARKS.md`](docs/BENCHMARKS.md)\n- **Repro tooling:** [`benchmarks/`](benchmarks/) (Criterion collection + hardware metadata)\n- **Static figures for PDF/arXiv:** [`docs/BENCHMARK_FIGURES.md`](docs/BENCHMARK_FIGURES.md) (includes LaTeX table snippets)\n- **Interactive notebook:** [`examples/06_inverse_and_transport_benchmarks.ipynb`](examples/06_inverse_and_transport_benchmarks.ipynb)\n- **Pre-built HTML notebooks:** [`docs/notebooks/`](docs/notebooks/) (also served via [GitHub Pages](https://anulum.github.io/scpn-fusion-core/notebooks/))\n\n## Documentation\n\n- [Solver Tuning Guide](docs/SOLVER_TUNING_GUIDE.md) (relaxation, Tikhonov, Huber, grid sizing, common pitfalls)\n- [Benchmarks \u0026 Comparisons](docs/BENCHMARKS.md)\n- [Benchmark Figures (static export)](docs/BENCHMARK_FIGURES.md)\n- [Compact Reactor Findings](docs/COMPACT_REACTOR_FINDINGS.md)\n- [Physics Methods](docs/PHYSICS_METHODS_COMPLETE.md)\n- [ITER Validation](docs/VALIDATION_AGAINST_ITER.md)\n- [Neuro-Symbolic Compiler Architecture](docs/NEURO_SYMBOLIC_LOGIC_COMPILER_REPORT.md)\n- [Packet C Control API](docs/PACKET_C_CONTROL_API_COMPREHENSIVE_STUDY.md)\n- [Future Applications](docs/FUTURE_APPLICATIONS.md)\n- [Phase 1 3D Execution Plan](docs/PHASE1_3D_EXECUTION_PLAN.md)\n- [3D Gap Audit](docs/3d_gaps.md)\n- [Next Sprint Execution Queue](docs/NEXT_SPRINT_EXECUTION_QUEUE.md)\n- [Profiling Quickstart](profiling/README.md)\n- [Comprehensive Technical Study](SCPN_FUSION_CORE_COMPREHENSIVE_STUDY.md) (30,000+ words)\n\n## Validation Data Licensing\n\nThe `validation/reference_data/` directory contains third-party data used\nexclusively for regression testing. Each dataset has its own licensing terms:\n\n| Dataset | License / Source | Redistribution |\n|---------|-----------------|----------------|\n| **SPARC GEQDSK** | MIT ([cfs-energy/SPARCPublic](https://github.com/cfs-energy/SPARCPublic)) | See `validation/reference_data/sparc/LICENSE` |\n| **ITPA H-mode** | 20-row illustrative subset from Verdoolaege et al., NF 61 (2021) | See `validation/reference_data/itpa/README.md` |\n| **ITER configs** | Internally generated from published parameters | No restrictions |\n| **JET / DIII-D** | Manually constructed from published literature | No restrictions |\n| **EU-DEMO / K-DEMO** | Synthetic reference configurations | No restrictions |\n\nThe SPARC data carries an MIT license from Commonwealth Fusion Systems. The\nITPA subset is a small illustrative extract from a published paper and is not\nthe full ITPA global confinement database. For the authoritative ITPA dataset,\ncontact the ITPA Confinement Database Working Group.\n\n## Citation\n\nIf you use SCPN Fusion Core in your research, please cite using the [CITATION.cff](CITATION.cff) file or:\n\n```bibtex\n@software{scpn_fusion_core,\n  title   = {SCPN Fusion Core: Tokamak Plasma Physics Simulation and Neuro-Symbolic Control Suite},\n  author  = {Sotek, Miroslav and Reiprich, Michal},\n  year    = {2026},\n  url     = {https://github.com/anulum/scpn-fusion-core},\n  version = {1.0.0}\n}\n```\n\nThis software is archived on **Zenodo** (DOI pending first release deposit) and published on **Academia.edu**.\n\n## Authors\n\n- **Miroslav Sotek** — ANULUM CH \u0026 LI — [ORCID](https://orcid.org/0009-0009-3560-0851)\n- **Michal Reiprich** — ANULUM CH \u0026 LI\n\n## License\n\nGNU Affero General Public License v3.0 — see [LICENSE](LICENSE).\n\nFor commercial licensing inquiries, contact: protoscience@anulum.li\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanulum%2Fscpn-fusion-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanulum%2Fscpn-fusion-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanulum%2Fscpn-fusion-core/lists"}