Skip to content

Align NLStep TRBDF2 parity test estimator - #4077

Merged
ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:agent/align-nlstep-parity-estimator
Aug 2, 2026
Merged

ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:agent/align-nlstep-parity-estimator

Conversation

@ChrisRackauckas-Claude

@ChrisRackauckas-Claude ChrisRackauckas-Claude commented Jul 30, 2026 •

Copy link
Copy Markdown
Member

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

Summary

  • compare the standard and nlstep = true TRBDF2 paths with smooth_est = false
  • keep the existing 2e-4 saved-trajectory threshold unchanged
  • leave solver behavior unchanged; this only restores the intended parity-test semantics

Cause

The smoothed-estimator change in #3823 lets the full-state NonlinearSolveAlg path reuse its W solve. The reduced MTK NLStep problem intentionally cannot provide that full-state solve and falls back to the raw estimator. The parity test therefore compares two different error-estimation strategies rather than only the two nonlinear-solve paths.

An exact diagnostic gave a maximum saved-trajectory delta of 3.052191084731426e-4 with the default mixed estimators and 1.2863503533355747e-4 when both paths use the raw estimator. The latter satisfies the existing threshold without weakening it. Smoothed-error behavior remains covered separately by nsa_smooth_est_tests.jl.

Local verification

On an untouched current-master checkout at a7080c6f6d:

  • GROUP=OrdinaryDiffEqNonlinearSolve_ModelingToolkit julia +1.12 --project -e 'using Pkg; Pkg.test()' — fails with 0.0003052191084731426 < 0.0002

On the rebased branch at 3f802179a8:

  • the same official group passes: NLStep 23 pass / 2 existing broken, preconditioners 18/18, DAE initialization 21/21
  • Runic passes on the changed file
  • git diff --check passes

Copy link
Copy Markdown
Member Author

Hosted CI classification after the first run:

  • The relevant OrdinaryDiffEqNonlinearSolve [ModelingToolkit] job never reaches the test command. julia-buildpkg fails because OrdinaryDiffEqCore requires SciMLBase 3.40, while General currently provides versions only through 3.39.1.
  • The root ModelingToolkit test fails during resolution for the same reason: OrdinaryDiffEqNonlinearSolve requires SciMLBase 3.40, while OrdinaryDiffEq resolves through 3.39.1.
  • The downstream ModelingToolkit Initialization job also fails during resolution because the developed DiffEqBase requires SciMLBase 3.40 and the registry stops at 3.39.1.
  • Runic explicitly passes the changed lib/OrdinaryDiffEqNonlinearSolve/test/modelingtoolkit/nlstep_tests.jl. It fails only on the three pre-existing DISCO formatting files already handled by Run Runic on the disco-optimizations files #4064.

These are clean-base/external-registration blockers, not failures introduced by this test-only commit, so I have not changed the branch in response. The exact relevant group passes locally on current master when developed against clean local SciMLBase 3.40.1, as recorded in the PR body.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude
ChrisRackauckas-Claude force-pushed the agent/align-nlstep-parity-estimator branch from 4300fd7 to 3f80217 Compare August 2, 2026 15:32
@ChrisRackauckas
ChrisRackauckas marked this pull request as ready for review August 2, 2026 22:06
@ChrisRackauckas
ChrisRackauckas merged commit 637746e into SciML:master Aug 2, 2026
119 of 131 checks passed
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