Skip to content

Repo - API! - Consolidate the v2 deck sections, driver and HDF5 writers - #602

Draft
matt-pharr wants to merge 52 commits into
developfrom
refactor/v2-consolidation
Draft

matt-pharr wants to merge 52 commits into
developfrom
refactor/v2-consolidation

Conversation

@matt-pharr

@matt-pharr matt-pharr commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Placeholder / work in progress. This is the v2.0.0 consolidation branch (stack V). It is
intentionally ahead of develop: it merges in open PRs that the refactor builds on, and the
consolidation itself lands here commit by commit. Do not review or merge yet. Issues that will be
resolved by the refactor can reference this PR as the place where the change happens.

Issues

Release note

  • Audience: users
  • Numerical impact: to be determined (harness @ )
  • Migration: deck sections, keys and several API names change; the full old -> new table will be added here before review

Consolidates GPEC's scripting API, deck format and output for v2.0.0: one deck section per object a
script constructs, one main that runs the same public calls a script does, and one
save_to_hdf5 with a method per result type.

Regression report

pending

Notes for reviewers

Not ready for review. Currently merged in beyond develop: #572-free prototype of the open roadmap
PRs (#551, #546/#552/#554, #564, #567, #568/#573, #555); upcoming: #571, #493, the PR 17 port,
the optional-wall port, and develop merges as #513, #501 and #415 land.


🤖 Generated with Claude Code

matt-pharr and others added 29 commits October 20, 2026 10:34
…broken

Run main and the scripting API on the same Solovev deck for Galerkin, Riccati Δ′,
hdf5 file forcing, the analytic two-pass grid and gal_match_flag matching. Mark the
known drifts @test_broken: file-forcing normalization, the analytic two-pass grid,
the cut solution implied under gal_match_flag, and the fixed kinetic source.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ount

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Remove the runtimes keyword from run_force_free_states, perturbed_equilibrium,
compute_perturbed_equilibrium, run_perturbed_equilibrium and run_slayer_stage.
main times every stage from outside: PerturbedEquilibrium, KineticForces and
ErrorFields each get one banner and one timer through _timed_stage, so they are
no longer timed twice. Info/Runtimes drops the galerkin and forcing_terms
sub-stage entries, which only a stage could measure from inside.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The :ray model returns no inner profiles by default since #536, so the
cut-solution drift only shows with real-ψ profiles.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings in develop (#536, #547). run_slayer_stage keeps #547's unguarded body
without the stage timer, which main now owns, and run_kinetic_forces keeps the
new axis_psi_c boundary without its own banner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-in-main

Brings in develop (#536, #547) through the stack. The deck/API match parity
test compares on the galerkin inner model, the only one that still returns
inner profiles by default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… the old key fail as an unknown keyword

No backward-compatibility code: remove the EulerLagrangeProblem error for local_stability_flag, its
deprecated-key pre-commit entry, the two tests asserting it errors, and the docs sentence naming it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gal_cut_solution is no longer a ForceFreeStatesControl field or a deprecated
deck key. Galerkin(; cut_solution=true) passes it to galerkin_solve as a solve
option, so only a script can keep the cut solution.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@matt-pharr matt-pharr self-assigned this Oct 27, 2026
@matt-pharr matt-pharr added this to the GPEC v2.0.0 milestone Oct 28, 2026
Implement consolidation spec commits 1 and 2 together: introduce the shared save protocol, give stage results their own writers, and move file writes from computation into the driver.

Keep schema metadata in Utilities, preserve the HDF5Schema title Area, and record FFS input provenance for explicit script saves.

Validate focused FFS output, frozen equilibrium, multi-ion, tearing, torque-response, and error-field tests, plus documentation. The SDCC comparison against wall-port commit 14a3745 follows this commit.
…roblem

Rename the public problem type, constructor, solve dispatch, exports, tests, and API references without retaining an alias. Keep internal Euler-Lagrange file and function names.

Describe the kinetic force-balance operator as non-self-adjoint rather than an energy extremization. Validate the renamed API and explicit FFS output tests (8 assertions), plus documentation.
…ects

Implement consolidation spec commit 4. Put ODE numerics on Forward and Riccati, with extended-precision BVP solving on Riccati only. Keep physical domain and Frobenius settings on the problem, rejecting unsupported Galerkin combinations.

Use automatic Galerkin factorization and algorithm fields without gal_ prefixes. Retain the temporary deck translator and twelve matching controls until the deck switch; route removed keys through the existing stop list and hook.

Defer manual numerical tests to CI as requested. Compare this committed checkpoint against 4f9e4d6 with the SDCC regression harness.
…erics

Implement consolidation spec commit 5. Move theta_k and alpha_boundary_scan onto LocalStabilityProblem and make verbose a solve keyword defaulting to false.

Keep the current deck layout through the adapter, forwarding only explicitly supplied problem keys so constructor defaults remain authoritative. Update API documentation and CI tests; defer manual tests as requested.
…dir_path from the force-balance problem and result
…etic keyword and make kinetic_factor a plain scale
… per-integrator, matching and tearing sections
Brings #581 as merged, with its two final fixes. The deck stops for the kinetic
file named under [KineticForces] (kinetic_file) or [SLAYER] (profile_file,
profile_group) move to src/Deck.jl's moved-key list with develop's remedy, and the
hook rejects the [SLAYER] keys. Rerun takes develop's _replay_kinetic_profiles.

Also fixes tests stale since the tearing rework: the dispersion tests use
Tearing.Dispersion and GrowthRateResult's omega/gamma, and the multi-ion species
test reads ion_species from [Equilibrium].

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api Config key, output dataset or exported name changed changed-results Results move or an interface breaks - read before upgrading

Projects

None yet

1 participant