Skip to content

GlobalDiffEq: add the Makazaga-Murua MM5GEE solver#3955

Draft
ChrisRackauckas-Claude wants to merge 4 commits into
SciML:masterfrom
ChrisRackauckas-Claude:globaldiffeq-mm5gee
Draft

GlobalDiffEq: add the Makazaga-Murua MM5GEE solver#3955
ChrisRackauckas-Claude wants to merge 4 commits into
SciML:masterfrom
ChrisRackauckas-Claude:globaldiffeq-mm5gee

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Important

Ignore this PR until it has been reviewed by @ChrisRackauckas.

Stacked on # (GLEE solvers), which is stacked on # and #3929. Only the top commit is new here; review that commit. Merge the base PRs first.

Summary

Adds MM5GEE — the Makazaga–Murua (BIT Numerical Mathematics 43, 2003) Dormand–Prince-based order-5 scheme with cheap global error estimation — as another tableau in the GLEE general-linear framework from the previous PR. This is the coefficient-complete published representative of the Dormand–Duckers–Prince "Runge–Kutta triples" family (SciML/GlobalDiffEq.jl#6): stages 1–7 are the standard DOPRI5 stages, three extra stages propagate an order-6 companion solution, and their difference is an asymptotically correct estimate of the DOPRI5 solution's global error.

  • The scheme maps exactly onto the y-ε general linear form (U[:,2] = 1 − μ, second output row b̄ − b), so it reuses the whole GLEE cache/stepping infrastructure.
  • The published tableau (their Table 4.1) was verified with exact rational arithmetic against the order conditions through order 5 and the independency conditions (Σb̄μ = Σb̄cμ = Σb̄Aμ = Σb̄μ² = 0) before implementation.
  • A generic solution-stage FSAL detection recognizes that stage 7 equals f(y_{n+1}) and reuses it for fsallast, giving exactly the paper's 9 function evaluations per step (verified by an nf accounting test).

The higher-order Dormand–Prince triples and the Macdougall–Verner order 7/8 estimators only have coefficients in paywalled sources; this method covers the family with published, machine-verified coefficients.

Version 1.5.0.

Validation (run locally)

  • ODEDIFFEQ_TEST_GROUP=Core julia --project=lib/GlobalDiffEq -e 'using Pkg; Pkg.test()': pass — Basic 1/1, traits 3/3, Adjoint 14/14, GLEE solvers 37/37, BigFloat 2/2
  • ODEDIFFEQ_TEST_GROUP=QA julia --project=lib/GlobalDiffEq -e 'using Pkg; Pkg.test()': pass — 22 passed, 1 pre-existing declared broken
  • Convergence on the unstable Prince42 problem, in-place and out-of-place: solution order 5, estimate-accuracy order ≈ 6, est/true-error ratio 1.04 at the finest fixed step, 9.01 measured f-evals/step.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MfUh8tgp3iBmMv9nkBqoyY

Repo transfer of SciML/GlobalDiffEq.jl (GlobalRichardson), keeping its
name, UUID, and version lineage. The umbrella OrdinaryDiffEq dependency
is replaced by OrdinaryDiffEqTsit5 (precompile workload and tests only),
path sources point at the sibling sublibraries, tests read
ODEDIFFEQ_TEST_GROUP, and the rendered-API-docs QA check points at the
monorepo docs with reexported DiffEqBase names excluded. Adds the
Global Error Control docs section and the docs env wiring.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Carries SciML/GlobalDiffEq.jl#56 (GlobalAdjoint, adjoint_error_estimate;
Cao and Petzold 2004, closes SciML/GlobalDiffEq.jl#4) into the
monorepo, restructured as the package extension
GlobalDiffEqSciMLSensitivityExt on SciMLSensitivity + QuadGK weakdeps.
sensealg defaults to nothing and resolves to
QuadratureAdjoint(autojacvec = true) when the extension loads; solving
without the extension raises an instructive error. Public API and
semantics otherwise match the original PR.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Implements the explicit general linear methods with built-in global
error estimation from Constantinescu (2016), SIAM J. Numer. Anal. 54(6)
(arXiv:1503.05166; PETSc's TSGLEE23/TSGLEE24/TSGLEE35), addressing
SciML/GlobalDiffEq.jl#6 and SciML/GlobalDiffEq.jl#22, as proper
OrdinaryDiffEqCore algorithms. The methods propagate the partitioned
state (y, ε) where ε is an asymptotically correct global error
estimate; solve/init on plain ODEProblems transparently extend to the
ArrayPartition form and global_error_estimate(sol) extracts the
estimates. The per-step ε increment is an asymptotically correct local
error estimate driving standard step-size adaptivity. The paper's
method A4 is defective as printed (violates b·c = 1/2, converges at
order 1, absent from PETSc) and is deliberately not implemented.

Verified locally on the unstable Prince42 problem: solution orders
2/2/3, estimate accuracy orders 3/3/4, est/true-error ratio 1.00.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Adds the DOPRI5-based order-5 scheme with cheap global error estimation
of Makazaga and Murua (BIT 43, 2003) as another tableau in the GLEE
general linear framework (SciML/GlobalDiffEq.jl#6, the coefficient-
complete published representative of the Dormand-Duckers-Prince RK
triple family). Stages 1-7 are the standard DOPRI5 stages, three extra
stages propagate an order-6 companion solution, and a generic
solution-stage FSAL detection reuses stage 7's evaluation for fsallast,
giving exactly 9 function evaluations per step (verified by an nf
accounting test). The tableau was verified with exact rational
arithmetic against the order and independency conditions.

Verified locally on the unstable Prince42 problem: solution order 5,
estimate accuracy order 6, est/true-error ratio 1.04, 9.01 f-evals/step.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants