ModelingToolkit v11.42.0
Added
-
A
Systemcan now carry its own time span, and every time-dependent problem constructor falls back to it when the caller omits one:@mtkcompile sys = System([D(x) ~ -x], t; tspan = (0.0, 5.0)) prob = ODEProblem(sys, []) # tspan == (0.0, 5.0) prob = ODEProblem(sys, [], (0.0, 2.0)) # an explicit time span still wins
This covers
ODEProblem,DAEProblem,DDEProblem,SDEProblem,SDDEProblem,BVProblem,DiscreteProblemandImplicitDiscreteProblem. Omitting the time span for a system that does not carry one throwsMissingTspanError, which names the system and both ways to fix it, rather than silently building a problem with anothingtime span.JumpProblemdeliberately keeps its required time span: a two-argument method with an untyped operating point is ambiguous withJumpProcesses.JumpProblem(prob, jumps...).This adds no new accessor.
get_tspanandhas_tspanalready existed and were already public; only the field behind them was missing. The field itself and the constructor defaults shipped in ModelingToolkitBase 1.69.0 (#5085, originally #5027 by @carldlund); this release raises theModelingToolkitBasefloor to 1.69 so that a ModelingToolkit user is guaranteed to have them.
Fixed
mtkcompileno longer drops a system's time span when the system has Brownian variables (#5091). That path rebuilds theSystemfield by field rather than through@set!, so it silently lost the field while keepingtstops. It is only reachable with ModelingToolkit itself loaded, so the ModelingToolkitBase test suite could not catch it; the regression test now runs from the rootInterfaceIIgroup.
Changed
ModelingToolkitBasecompat floor 1.64 → 1.69, required becausesrc/systems/systems.jlnow passestspanto theSystemconstructor.
Downstream packages that want to rely on a system carrying its own time span should depend on ModelingToolkit 11.42.0 rather than 11.41: an 11.41 user can resolve ModelingToolkitBase 1.68 and not have the field at all.
🤖 Posted by an AI agent (Claude Code, model claude-opus-5) on behalf of Chris Rackauckas.
https://claude.ai/code/session_01H5RuLDtEazwTKPkNbPeZVu
Merged pull requests:
- Document interactive integrator workflow (#5055) (@ChrisRackauckas-Claude)
- Fix JET typo-mode findings in ModelingToolkitBase (#5065) (@ChrisRackauckas-Claude)
- fix: preserve structured parameters for vector remake (#5070) (@ChrisRackauckas-Claude)
- Fix scalarized array initial conditions (#5071) (@ChrisRackauckas-Claude)
- Require CasADi ≥ 1.3.1 for the CasADi dynamic-optimization extension (#5074) (@ChrisRackauckas-Claude)
- Run the Optimization test group on a dedicated GitHub-hosted runner (#5075) (@ChrisRackauckas-Claude)
- [bot] Solve implicit affects at the ODE solver's tolerance (#5080) (@ChrisRackauckas)
- Document observed access and plotting from a live integrator (#5081) (@ChrisRackauckas-Claude)
- Add analytical parameter jacobian code generation (#5083) (@AJ0070)
- Release ModelingToolkitBase 1.68.3 (#5084) (@ChrisRackauckas)
- Default every time-dependent problem constructor to the system's tspan (#5085) (@ChrisRackauckas-Claude)
- Release ModelingToolkitBase 1.69.0 (#5086) (@ChrisRackauckas)
- Recommend the inputs keyword for interactive external signals (#5087) (@ChrisRackauckas-Claude)
- Document unbound_inputs as the fallback for discovering an input (#5090) (@ChrisRackauckas-Claude)
- Keep the system tspan through SDE structural simplification (#5091) (@ChrisRackauckas-Claude)
Closed issues:
- Symbolic tspan (#847)