Repository navigation
Add discontinuity-controller state to DDE integrators - #4071
ChrisRackauckas merged 3 commits into
Conversation
|
This needs a minimum version on ordinarydiffeqcore for when it was added there |
|
CI audit after completion:
Local validation on the exact PR commit with a locally resolved SciMLBase 3.40.1 environment did execute the official DelayDiffEq |
947469d to
e13f39a
Compare
|
Addressed in I rebased the branch onto current master and reran the official DelayDiffEq |
The shared autonomous-discontinuity controller reads is_disco_step and disco_checkpoint, but DDEIntegrator did not carry either field. Initialize the state from the runtime time value, reset it during reinit!, and cover discontinuity-enabled and unitful public solver paths. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
The autonomous-discontinuity controller state used by DDEIntegrator ships with OrdinaryDiffEqCore 4.12. Prevent DelayDiffEq 6.1 from resolving against an older Core release that does not provide the required controller behavior. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
e13f39a to
bd63fda
Compare
Ignore this PR until it has been reviewed by @ChrisRackauckas.
Summary
OrdinaryDiffEqCoretoDDEIntegratorreinit!Root cause
OrdinaryDiffEqCore's shared DISCO/controller code assumes that compatible integrators carry
is_disco_stepanddisco_checkpoint.ODEIntegratorgained that state as the DISCO implementation evolved, butDDEIntegratordid not.A fixed-dependency parent/child check and
git bisectidentify408a7a30fe0989a55b446240a18fb2a8c5c30993(disco optimizations; parentc538565b25ff19e661e5bf788fe1953a154d64e9) as the first incompatible shared-controller change. On current master, the missing state is exposed as:The new
disco_checkpointis initialized withzero(t0)to preserve the runtime time type, andreinit!clears both fields so reused integrators do not retain transient state.Version boundary
OrdinaryDiffEqCore 4.12 is the first monorepo release line containing the corresponding controller behavior, so DelayDiffEq now requires 4.12 instead of allowing older Core 4.x releases.
Local verification
On an untouched
a7080c6f6dcheckout:GROUP=DelayDiffEq_Interface julia +1.12 --project -e 'using Pkg; Pkg.test()'— fails in the mass-matrix tests with the missing-field error aboveOn this branch at
bd63fdaa27:GROUP=DelayDiffEq_Interface julia +1.12 --project -e 'using Pkg; Pkg.test()'— pass, including mass-matrix 7/7 and the new state testsGROUP=DelayDiffEq_Integrators julia +1.12 --project -e 'using Pkg; Pkg.test()'— pass (the existing 36 broken SDIRK tests remain broken)GROUP=DelayDiffEq_QA julia +1.12 --project -e 'using Pkg; Pkg.test()'— 19/19 passgit diff --check— pass