Skip to content

Commit de23f75

Browse files
committed
Add tspan
1 parent 3149f77 commit de23f75

File tree

5 files changed

+26
-12
lines changed

5 files changed

+26
-12
lines changed

src/systems/abstractsystem.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ for prop in [:eqs
182182
:iv
183183
:states
184184
:ps
185+
:tspan
185186
:var_to_name
186187
:ctrls
187188
:defaults

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,8 @@ function DiffEqBase.ODEProblem{false}(sys::AbstractODESystem, args...; kwargs...
680680
ODEProblem{false, SciMLBase.FullSpecialize}(sys, args...; kwargs...)
681681
end
682682

683-
function DiffEqBase.ODEProblem{iip, specialize}(sys::AbstractODESystem, u0map, tspan,
683+
function DiffEqBase.ODEProblem{iip, specialize}(sys::AbstractODESystem, u0map = [],
684+
tspan = get_tspan(sys),
684685
parammap = DiffEqBase.NullParameters();
685686
callback = nothing,
686687
check_length = true,

src/systems/diffeqs/odesystem.jl

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ struct ODESystem <: AbstractODESystem
4141
states::Vector
4242
"""Parameter variables. Must not contain the independent variable."""
4343
ps::Vector
44+
"""Time span."""
45+
tspan::Union{NTuple{2, Any}, Nothing}
4446
"""Array variables."""
4547
var_to_name::Any
4648
"""Control parameters (some subset of `ps`)."""
@@ -125,7 +127,7 @@ struct ODESystem <: AbstractODESystem
125127
"""
126128
complete::Bool
127129

128-
function ODESystem(tag, deqs, iv, dvs, ps, var_to_name, ctrls, observed, tgrad,
130+
function ODESystem(tag, deqs, iv, dvs, ps, tspan, var_to_name, ctrls, observed, tgrad,
129131
jac, ctrl_jac, Wfact, Wfact_t, name, systems, defaults,
130132
torn_matching, connector_type, preface, cevents,
131133
devents, metadata = nothing, tearing_state = nothing,
@@ -140,7 +142,7 @@ struct ODESystem <: AbstractODESystem
140142
if checks == true || (checks & CheckUnits) > 0
141143
all_dimensionless([dvs; ps; iv]) || check_units(deqs)
142144
end
143-
new(tag, deqs, iv, dvs, ps, var_to_name, ctrls, observed, tgrad, jac,
145+
new(tag, deqs, iv, dvs, ps, tspan, var_to_name, ctrls, observed, tgrad, jac,
144146
ctrl_jac, Wfact, Wfact_t, name, systems, defaults, torn_matching,
145147
connector_type, preface, cevents, devents, metadata, tearing_state,
146148
substitutions, complete)
@@ -151,6 +153,7 @@ function ODESystem(deqs::AbstractVector{<:Equation}, iv, dvs, ps;
151153
controls = Num[],
152154
observed = Equation[],
153155
systems = ODESystem[],
156+
tspan = nothing,
154157
name = nothing,
155158
default_u0 = Dict(),
156159
default_p = Dict(),
@@ -195,7 +198,7 @@ function ODESystem(deqs::AbstractVector{<:Equation}, iv, dvs, ps;
195198
cont_callbacks = SymbolicContinuousCallbacks(continuous_events)
196199
disc_callbacks = SymbolicDiscreteCallbacks(discrete_events)
197200
ODESystem(Threads.atomic_add!(SYSTEM_COUNT, UInt(1)),
198-
deqs, iv′, dvs′, ps′, var_to_name, ctrl′, observed, tgrad, jac,
201+
deqs, iv′, dvs′, ps′, tspan, var_to_name, ctrl′, observed, tgrad, jac,
199202
ctrl_jac, Wfact, Wfact_t, name, systems, defaults, nothing,
200203
connector_type, preface, cont_callbacks, disc_callbacks,
201204
metadata, checks = checks)

src/systems/diffeqs/sdesystem.jl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ struct SDESystem <: AbstractODESystem
4242
states::Vector
4343
"""Parameter variables. Must not contain the independent variable."""
4444
ps::Vector
45+
"""Time span."""
46+
tspan::Union{NTuple{2, Any}, Nothing}
4547
"""Array variables."""
4648
var_to_name::Any
4749
"""Control parameters (some subset of `ps`)."""
@@ -110,7 +112,8 @@ struct SDESystem <: AbstractODESystem
110112
"""
111113
complete::Bool
112114

113-
function SDESystem(tag, deqs, neqs, iv, dvs, ps, var_to_name, ctrls, observed, tgrad,
115+
function SDESystem(tag, deqs, neqs, iv, dvs, ps, tspan, var_to_name, ctrls, observed,
116+
tgrad,
114117
jac,
115118
ctrl_jac, Wfact, Wfact_t, name, systems, defaults, connector_type,
116119
cevents, devents, metadata = nothing, complete = false;
@@ -124,7 +127,7 @@ struct SDESystem <: AbstractODESystem
124127
if checks == true || (checks & CheckUnits) > 0
125128
all_dimensionless([dvs; ps; iv]) || check_units(deqs, neqs)
126129
end
127-
new(tag, deqs, neqs, iv, dvs, ps, var_to_name, ctrls, observed, tgrad, jac,
130+
new(tag, deqs, neqs, iv, dvs, ps, tspan, var_to_name, ctrls, observed, tgrad, jac,
128131
ctrl_jac,
129132
Wfact, Wfact_t, name, systems, defaults, connector_type, cevents, devents,
130133
metadata, complete)
@@ -135,6 +138,7 @@ function SDESystem(deqs::AbstractVector{<:Equation}, neqs, iv, dvs, ps;
135138
controls = Num[],
136139
observed = Num[],
137140
systems = SDESystem[],
141+
tspan = nothing,
138142
default_u0 = Dict(),
139143
default_p = Dict(),
140144
defaults = _merge(Dict(default_u0), Dict(default_p)),
@@ -177,7 +181,7 @@ function SDESystem(deqs::AbstractVector{<:Equation}, neqs, iv, dvs, ps;
177181
disc_callbacks = SymbolicDiscreteCallbacks(discrete_events)
178182

179183
SDESystem(Threads.atomic_add!(SYSTEM_COUNT, UInt(1)),
180-
deqs, neqs, iv′, dvs′, ps′, var_to_name, ctrl′, observed, tgrad, jac,
184+
deqs, neqs, iv′, dvs′, ps′, tspan, var_to_name, ctrl′, observed, tgrad, jac,
181185
ctrl_jac, Wfact, Wfact_t, name, systems, defaults, connector_type,
182186
cont_callbacks, disc_callbacks, metadata; checks = checks)
183187
end
@@ -531,7 +535,7 @@ function SDEFunctionExpr(sys::SDESystem, args...; kwargs...)
531535
SDEFunctionExpr{true}(sys, args...; kwargs...)
532536
end
533537

534-
function DiffEqBase.SDEProblem{iip}(sys::SDESystem, u0map, tspan,
538+
function DiffEqBase.SDEProblem{iip}(sys::SDESystem, u0map = [], tspan = get_tspan(sys),
535539
parammap = DiffEqBase.NullParameters();
536540
sparsenoise = nothing, check_length = true,
537541
callback = nothing, kwargs...) where {iip}

src/systems/discrete_system/discrete_system.jl

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ struct DiscreteSystem <: AbstractTimeDependentSystem
3737
states::Vector
3838
"""Parameter variables. Must not contain the independent variable."""
3939
ps::Vector
40+
"""Time span."""
41+
tspan::Union{NTuple{2, Any}, Nothing}
4042
"""Array variables."""
4143
var_to_name::Any
4244
"""Control parameters (some subset of `ps`)."""
@@ -81,7 +83,8 @@ struct DiscreteSystem <: AbstractTimeDependentSystem
8183
"""
8284
complete::Bool
8385

84-
function DiscreteSystem(tag, discreteEqs, iv, dvs, ps, var_to_name, ctrls, observed,
86+
function DiscreteSystem(tag, discreteEqs, iv, dvs, ps, tspan, var_to_name, ctrls,
87+
observed,
8588
name,
8689
systems, defaults, preface, connector_type,
8790
metadata = nothing,
@@ -94,7 +97,8 @@ struct DiscreteSystem <: AbstractTimeDependentSystem
9497
if checks == true || (checks & CheckUnits) > 0
9598
all_dimensionless([dvs; ps; iv; ctrls]) || check_units(discreteEqs)
9699
end
97-
new(tag, discreteEqs, iv, dvs, ps, var_to_name, ctrls, observed, name, systems,
100+
new(tag, discreteEqs, iv, dvs, ps, tspan, var_to_name, ctrls, observed, name,
101+
systems,
98102
defaults,
99103
preface, connector_type, metadata, tearing_state, substitutions, complete)
100104
end
@@ -109,6 +113,7 @@ function DiscreteSystem(eqs::AbstractVector{<:Equation}, iv, dvs, ps;
109113
controls = Num[],
110114
observed = Num[],
111115
systems = DiscreteSystem[],
116+
tspan = nothing,
112117
name = nothing,
113118
default_u0 = Dict(),
114119
default_p = Dict(),
@@ -142,7 +147,7 @@ function DiscreteSystem(eqs::AbstractVector{<:Equation}, iv, dvs, ps;
142147
throw(ArgumentError("System names must be unique."))
143148
end
144149
DiscreteSystem(Threads.atomic_add!(SYSTEM_COUNT, UInt(1)),
145-
eqs, iv′, dvs′, ps′, var_to_name, ctrl′, observed, name, systems,
150+
eqs, iv′, dvs′, ps′, tspan, var_to_name, ctrl′, observed, name, systems,
146151
defaults, preface, connector_type, metadata, kwargs...)
147152
end
148153

@@ -192,7 +197,7 @@ end
192197
193198
Generates an DiscreteProblem from an DiscreteSystem.
194199
"""
195-
function SciMLBase.DiscreteProblem(sys::DiscreteSystem, u0map, tspan,
200+
function SciMLBase.DiscreteProblem(sys::DiscreteSystem, u0map = [], tspan = get_tspan(sys),
196201
parammap = SciMLBase.NullParameters();
197202
eval_module = @__MODULE__,
198203
eval_expression = true,

0 commit comments

Comments
 (0)