Add Rodas3d: L-stable stiffly accurate Rosenbrock method for SICNM (NonlinearSolve.jl#330)#3931
Add Rodas3d: L-stable stiffly accurate Rosenbrock method for SICNM (NonlinearSolve.jl#330)#3931ChrisRackauckas-Claude wants to merge 1 commit into
Conversation
|
Companion PR (SICNM wrapper): SciML/SteadyStateDiffEq.jl#142 |
|
CI triage — none of the failures are introduced by this PR:
Locally, 🤖 Generated with Claude Code |
…tate DAE integration Adds the 4-stage 3rd-order (2nd-order embedded) stiffly accurate Rosenbrock method from Yu et al., arXiv:2312.02809, constructed for the semi-implicit Continuous Newton method (SciML/NonlinearSolve.jl#330). The damping parameter γ = 0.57281606 gives R(±∞) = 0 so both stable and unstable modes are damped, and is a root of the 4th-order linear order condition, so the method is additionally 4th order on linear problems. Coefficients come from the authors' reference implementation (github.com/rzyu45/MATPOWER-SICNM) and were verified against all order conditions stated in the paper; the transformation to the RodasTableau convention was computed in BigFloat and cross-checked against an independent implementation of the paper's untransformed scheme. The companion SciML/SteadyStateDiffEq.jl PR adds the SICNM nonlinear solver that uses this method. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NNigabD3sZaUKvDZ1NVQgv
1df2de0 to
fcc0f11
Compare
|
Rebased onto current master (38f01c5) — clean rebase, no conflicts. Since #3935 rewrote the RosenbrockCache stage-accumulation kernels, the full |
|
Post-rebase CI triage update — the rebase cleared all LTS lanes (thanks to #3939/#3941). The two checks that newly appeared were investigated and neither is introduced by this PR:
Remaining failures are the previously-triaged set: Rosenbrock/Tableaus [QA] (fixed by #3940), and the chronic downgrade/GPU/DelayDiffEq-Default-QA failures that also fail on merged PRs. 🤖 Generated with Claude Code |
Note
This PR is part of an agent-assisted workflow. Please ignore until it has been reviewed by @ChrisRackauckas.
Add Rodas3d: 4-stage 3rd-order L-stable stiffly accurate Rosenbrock method for steady-state focused DAE integration
Part 1 of 2 for SciML/NonlinearSolve.jl#330 (semi-implicit Continuous Newton method, SICNM). As discussed in that issue, the special DAE solver goes into OrdinaryDiffEq while the nonlinear-solve wrapper goes into SteadyStateDiffEq.jl (companion PR: SciML/SteadyStateDiffEq.jl).
What is Rodas3d
Rodas3d is the 4-stage, 3rd-order (2nd-order embedded), stiffly accurate Rosenbrock method constructed in Yu et al., Semi-implicit Continuous Newton Method for Power Flow Analysis, arXiv:2312.02809. Its distinguishing feature is the damping parameter γ = 0.57281606, chosen (per Hairer & Wanner Table 6.4) at the upper end of the range where R(±∞) = 0, so the method damps both stable and unstable modes as fast as possible ("hyper-stability" in the paper's terminology). It is designed for integrating DAEs to steady state — where damping speed matters more than trajectory accuracy — specifically the continuous-Newton DAE
whose equilibrium is the solution of the nonlinear system$0 = g(y)$ . In the paper's ill-conditioned power flow benchmarks (9241pegase, ACTIVSg25k) the Rodas3d-based SICNM beat both Rodas4-based SICNM and implicit continuous Newton by significant margins.
Coefficient provenance and verification
The paper states the order conditions but not the coefficients; the coefficients come from the authors' reference implementation rzyu45/MATPOWER-SICNM
coeff_rodas3d.m. Verification performed while developing this PR:RodasTableauform (A = αΓ⁻¹, C = diag(1/γ) − Γ⁻¹, transformed b/btilde, c, d) was computed inBigFloatand cross-verified: an independent implementation of the untransformed scheme (6) from the paper and the OrdinaryDiffEq-convention loop produce identical steps to ~1e-16 on random singular-mass-matrix problems.dcoefficients) and ≈ 2.9–3.0 on the index-1 continuous-Newton DAE.prob_ode_linear, exact Taylor coefficient of R(z) − e^z at z⁴ is ≈ −1.0e-9). The convergence tests assert order 4 on the linear test problems (with an explanatory comment) and order 3 viaanalyticless_test_convergenceon a nonlinear problem.ODEProblem+ mass-matrix API with this method.Changes
OrdinaryDiffEqRosenbrockTableaus: newRodas3dRodasTableau(+ export), version 2.2.1 → 2.3.0.OrdinaryDiffEqRosenbrock: newRodas3dalgorithm via the standard consolidatedRodasTableaumachinery (tabtype,RodasTableauAlgorithmsunion,alg_order = 3, step/stage limiter support, export, docstring with references), version 2.4.1 → 2.5.0.Rodas3dto the Rosenbrock solver lists (semiimplicit + massmatrixdae pages) and the sublibrary README.Like
Rodas3, the method has no stiff-aware dense output (emptyH); it falls back to the guarded Hermite path. A stiff-aware interpolant could be derived as follow-up work, but for the steady-state use case dense output is not on the critical path.Test results
ODEDIFFEQ_TEST_GROUP=Coreforlib/OrdinaryDiffEqRosenbrock: PASS (local, 178 tests incl. the new ones)lib/OrdinaryDiffEqRosenbrockTableaustest suite: only pre-existing failures (see note below)🤖 Generated with Claude Code
Note on pre-existing QA failures
While running the QA group locally, two failures were observed that also reproduce identically on unmodified
master(aa895b5) and are unrelated to this PR:public API has docstrings(HybridExplicitImplicitRKin OrdinaryDiffEqRosenbrock; 8 tableau names in OrdinaryDiffEqRosenbrockTableaus) andall_explicit_imports_are_public(pre-existing OrdinaryDiffEqDifferentiation internal imports). A separate investigation of those master failures is being run in parallel.