Skip to content

Commit ace3d29

Browse files
authored
Don't pass to DiffEqBase.ODEProblem invalid keyword check_length (#1584)
1 parent f08173d commit ace3d29

File tree

4 files changed

+37
-20
lines changed

4 files changed

+37
-20
lines changed

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -699,9 +699,11 @@ Generates an ODEProblem from an ODESystem and allows for automatically
699699
symbolically calculating numerical enhancements.
700700
"""
701701
function DiffEqBase.ODEProblem{iip}(sys::AbstractODESystem,u0map,tspan,
702-
parammap=DiffEqBase.NullParameters(); callback=nothing, kwargs...) where iip
702+
parammap=DiffEqBase.NullParameters(); callback=nothing,
703+
check_length=true, kwargs...) where iip
703704
has_difference = any(isdifferenceeq, equations(sys))
704-
f, u0, p = process_DEProblem(ODEFunction{iip}, sys, u0map, parammap; has_difference=has_difference, kwargs...)
705+
f, u0, p = process_DEProblem(ODEFunction{iip}, sys, u0map, parammap; has_difference=has_difference,
706+
check_length, kwargs...)
705707
if has_continuous_events(sys)
706708
event_cb = generate_rootfinding_callback(sys; kwargs...)
707709
else
@@ -738,11 +740,11 @@ Generates an DAEProblem from an ODESystem and allows for automatically
738740
symbolically calculating numerical enhancements.
739741
"""
740742
function DiffEqBase.DAEProblem{iip}(sys::AbstractODESystem,du0map,u0map,tspan,
741-
parammap=DiffEqBase.NullParameters();kwargs...) where iip
743+
parammap=DiffEqBase.NullParameters(); check_length=true, kwargs...) where iip
742744
has_difference = any(isdifferenceeq, equations(sys))
743745
f, du0, u0, p = process_DEProblem(
744746
DAEFunction{iip}, sys, u0map, parammap;
745-
implicit_dae=true, du0map=du0map, has_difference=has_difference, kwargs...
747+
implicit_dae=true, du0map=du0map, has_difference=has_difference, check_length, kwargs...
746748
)
747749
diffvars = collect_differential_variables(sys)
748750
sts = states(sys)
@@ -774,10 +776,10 @@ numerical enhancements.
774776
struct ODEProblemExpr{iip} end
775777

776778
function ODEProblemExpr{iip}(sys::AbstractODESystem,u0map,tspan,
777-
parammap=DiffEqBase.NullParameters();
779+
parammap=DiffEqBase.NullParameters(); check_length=true,
778780
kwargs...) where iip
779781

780-
f, u0, p = process_DEProblem(ODEFunctionExpr{iip}, sys, u0map, parammap; kwargs...)
782+
f, u0, p = process_DEProblem(ODEFunctionExpr{iip}, sys, u0map, parammap; check_length, kwargs...)
781783
linenumbers = get(kwargs, :linenumbers, true)
782784

783785
ex = quote
@@ -814,11 +816,11 @@ numerical enhancements.
814816
struct DAEProblemExpr{iip} end
815817

816818
function DAEProblemExpr{iip}(sys::AbstractODESystem,du0map,u0map,tspan,
817-
parammap=DiffEqBase.NullParameters();
819+
parammap=DiffEqBase.NullParameters(); check_length=true,
818820
kwargs...) where iip
819821
f, du0, u0, p = process_DEProblem(
820822
DAEFunctionExpr{iip}, sys, u0map, parammap;
821-
implicit_dae=true, du0map=du0map, kwargs...
823+
implicit_dae=true, du0map=du0map, check_length, kwargs...
822824
)
823825
linenumbers = get(kwargs, :linenumbers, true)
824826
diffvars = collect_differential_variables(sys)
@@ -862,8 +864,9 @@ symbolically calculating numerical enhancements.
862864
"""
863865
function DiffEqBase.SteadyStateProblem{iip}(sys::AbstractODESystem,u0map,
864866
parammap=DiffEqBase.NullParameters();
865-
kwargs...) where iip
866-
f, u0, p = process_DEProblem(ODEFunction{iip}, sys, u0map, parammap; steady_state = true, kwargs...)
867+
check_length=true, kwargs...) where iip
868+
f, u0, p = process_DEProblem(ODEFunction{iip}, sys, u0map, parammap; steady_state = true,
869+
check_length, kwargs...)
867870
SteadyStateProblem{iip}(f,u0,p;kwargs...)
868871
end
869872

@@ -885,9 +888,10 @@ numerical enhancements.
885888
struct SteadyStateProblemExpr{iip} end
886889

887890
function SteadyStateProblemExpr{iip}(sys::AbstractODESystem,u0map,
888-
parammap=DiffEqBase.NullParameters();
891+
parammap=DiffEqBase.NullParameters(); check_length=true,
889892
kwargs...) where iip
890-
f, u0, p = process_DEProblem(ODEFunctionExpr{iip}, sys, u0map, parammap;steady_state = true, kwargs...)
893+
f, u0, p = process_DEProblem(ODEFunctionExpr{iip}, sys, u0map, parammap;steady_state = true,
894+
check_length, kwargs...)
891895
linenumbers = get(kwargs, :linenumbers, true)
892896
ex = quote
893897
f = $f

src/systems/diffeqs/sdesystem.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -355,9 +355,9 @@ Generates an SDEProblem from an SDESystem and allows for automatically
355355
symbolically calculating numerical enhancements.
356356
"""
357357
function DiffEqBase.SDEProblem{iip}(sys::SDESystem,u0map,tspan,parammap=DiffEqBase.NullParameters();
358-
sparsenoise = nothing,
358+
sparsenoise = nothing, check_length=true,
359359
kwargs...) where iip
360-
f, u0, p = process_DEProblem(SDEFunction{iip}, sys, u0map, parammap; kwargs...)
360+
f, u0, p = process_DEProblem(SDEFunction{iip}, sys, u0map, parammap; check_length, kwargs...)
361361
sparsenoise === nothing && (sparsenoise = get(kwargs, :sparse, false))
362362

363363
noiseeqs = get_noiseeqs(sys)
@@ -396,9 +396,10 @@ struct SDEProblemExpr{iip} end
396396

397397
function SDEProblemExpr{iip}(sys::SDESystem,u0map,tspan,
398398
parammap=DiffEqBase.NullParameters();
399-
sparsenoise = nothing,
399+
sparsenoise = nothing, check_length=true,
400400
kwargs...) where iip
401-
f, u0, p = process_DEProblem(SDEFunctionExpr{iip}, sys, u0map, parammap; kwargs...)
401+
f, u0, p = process_DEProblem(SDEFunctionExpr{iip}, sys, u0map, parammap; check_length,
402+
kwargs...)
402403
linenumbers = get(kwargs, :linenumbers, true)
403404
sparsenoise === nothing && (sparsenoise = get(kwargs, :sparse, false))
404405

src/systems/nonlinear/nonlinearsystem.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -316,8 +316,8 @@ Generates an NonlinearProblem from a NonlinearSystem and allows for automaticall
316316
symbolically calculating numerical enhancements.
317317
"""
318318
function DiffEqBase.NonlinearProblem{iip}(sys::NonlinearSystem,u0map,
319-
parammap=DiffEqBase.NullParameters();kwargs...) where iip
320-
f, u0, p = process_NonlinearProblem(NonlinearFunction{iip}, sys, u0map, parammap; kwargs...)
319+
parammap=DiffEqBase.NullParameters(); check_length=true, kwargs...) where iip
320+
f, u0, p = process_NonlinearProblem(NonlinearFunction{iip}, sys, u0map, parammap; check_length, kwargs...)
321321
NonlinearProblem{iip}(f,u0,p;kwargs...)
322322
end
323323

@@ -342,10 +342,11 @@ function NonlinearProblemExpr(sys::NonlinearSystem, args...; kwargs...)
342342
end
343343

344344
function NonlinearProblemExpr{iip}(sys::NonlinearSystem,u0map,
345-
parammap=DiffEqBase.NullParameters();
345+
parammap=DiffEqBase.NullParameters(); check_length=true,
346346
kwargs...) where iip
347347

348-
f, u0, p = process_NonlinearProblem(NonlinearFunctionExpr{iip}, sys, u0map, parammap; kwargs...)
348+
f, u0, p = process_NonlinearProblem(NonlinearFunctionExpr{iip}, sys, u0map, parammap;
349+
check_length, kwargs...)
349350
linenumbers = get(kwargs, :linenumbers, true)
350351

351352
ex = quote

test/odesystem.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -776,3 +776,14 @@ let
776776
@named sys = ODESystem(eqs, t, u, ps)
777777
@test_nowarn simpsys = structural_simplify(sys)
778778
end
779+
780+
# https://github.com/SciML/ModelingToolkit.jl/issues/1583
781+
let
782+
@parameters k
783+
@variables t A(t)
784+
D = Differential(t)
785+
eqs = [D(A) ~ -k*A]
786+
@named osys = ODESystem(eqs,t)
787+
oprob = ODEProblem(osys, [A => 1.0], (0.0,10.0), [k => 1.0]; check_length=false)
788+
@test_nowarn sol = solve(oprob, Tsit5())
789+
end

0 commit comments

Comments
 (0)