Repository navigation
ForceFreeStates - REFACTOR! - Run deck matching through a MatchProblem clause in main - #554
Merged
matt-pharr merged 2 commits intoOct 26, 2026
Conversation
logan-nc
reviewed
Oct 26, 2026
logan-nc
left a comment
Collaborator
There was a problem hiding this comment.
Read in full. Ready to approve from my read, with one migration nit for you to decide.
gal_cut_solution leaves ForceFreeStatesControl but is not added to _DEPRECATED_FFS_KEYS or the toml-no-deprecated-keys pre-commit regex. A deck that still sets it fails as an unknown keyword (MethodError) instead of the deprecation message, and once #569 lands, instead of its stop. One tuple entry plus one regex token would fix it. I did not push it because it touches src/ (stamp) and #569 edits the same lists. Nothing else: Match/Inner has no remaining readers, run_deck_match builds the same MatchProblem/GGJModel the old block did, and the Riccati-match and forward-error tests cover the two behaviour changes.
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
force-pushed
the
refactor/deck-match-in-main
branch
from
October 26, 2026 08:48
769685c to
4d2a8cb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release note
gal_match_flagno longer writesSingularSurfaces/Match/Inner/; the composite inner-region profiles are a scripting diagnostic (Galerkin(; cut_solution=true)thensolve(MatchProblem(...))).gal_cut_solutionis no longer a deck key; keep the cut solution from a script withGalerkin(; cut_solution=true).solve(EulerLagrangeProblem; gal_match_flag=true)now errors; match the result withsolve(MatchProblem(ffs; eta, rho, rotation), GGJModel()).A deck now matches the inner layer through the same
MatchProblema script poses, run bymainafter the outer solve. That also lets a deck match a Riccati solve, wheregal_match_flagused to be silently ignored, and makes a forward solve withgal_match_flagfail with a clear error instead.Regression report
Stacked on #552, so the baseline is
refactor/stage-timing-in-main.gal_resistive_peis N/A on both refs: a matched result publishes no ideal δW, so PerturbedEquilibrium skips it. That is the existing state, not a change here.Notes for reviewers
Stacked on #552, which sits on #546 (stack B). Closes 7d-match-into-main, match-riccati and match-resistive.
gal_match_flagblock moves out ofrun_force_free_statesintorun_deck_match(result, ctrl).maincalls it right after the outer solve and before the HDF5 write, soSingularSurfaces/Matchis written exactly as before. It builds the sameMatchProblemandGGJModela script would.integrator == "galerkin"gate is gone. A Riccati deck withvac_flag = truenow matches, and a Forward deck errors throughMatchProblem("no Δ′") instead of ignoring the flag.gal_rpec_flag, missinggal_eta/gal_rho/gal_rotation) are dropped;MatchProblemalready rejects both. The deck-onlygal_inner_solvercheck stays.solve(EulerLagrangeProblem)rejectsgal_match_flag=true, so matching has one route: aMatchProblemposed on the result.gal_cut_solutionis removed fromForceFreeStatesControl;Galerkin(; cut_solution)hands it togalerkin_solveas a solve option, which no longer infers it fromgal_match_flag. Nothing in the examples, harness or other tests readMatch/Innerfrom a deck run.gal_inner_solver = "galerkin"logsMatchProblem's existing one-time warning that no cut solution was retained. Since InnerLayer.GGJ - REFACTOR! - Solve the :ray BVP with the Galerkin assembly and use one parity convention #536,:rayreturns layer-centre values only, so:raydecks don't see it.Tests (
runtests_solve_api.jl):bpen, the matched ξ and the (empty) inner profiles, and the API withcut_solution=truestill produces them.bpen,cout), a Forward deck withgal_match_flagerroring, andsolve(...; gal_match_flag=true)erroring.runtests_solve_api,runtests_galerkinandruntests_matching_modelspass locally.The
gal_*match keys are now misnamed, since Riccati matches too. A follow-up (roadmap PR 8b) moves them into a[Match]section named after theMatchProblemkeywords, with a warn-and-map shim for one release.Overlap: #536 edits the
gal_inner_solvercomment line inCoreTypes.jl, next to thegal_cut_solutionandgal_match_flagcomment lines changed here. Whichever lands second resolves a one-line conflict.🤖 Generated with Claude Code