Skip to content

Commit 4a3f7d4

Browse files
Merge pull request #1508 from SciML/myb/error
Better error msg when independent variable detection fails
2 parents 25cd160 + b86ef52 commit 4a3f7d4

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

src/utils.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ end
185185

186186
iv_from_nested_derivative(x::Term, op=Differential) = operation(x) isa op ? iv_from_nested_derivative(arguments(x)[1], op) : arguments(x)[1]
187187
iv_from_nested_derivative(x::Sym, op=Differential) = x
188-
iv_from_nested_derivative(x, op=Differential) = missing
188+
iv_from_nested_derivative(x, op=Differential) = nothing
189189

190190
hasdefault(v) = hasmetadata(v, Symbolics.VariableDefaultValue)
191191
getdefault(v) = value(getmetadata(v, Symbolics.VariableDefaultValue))
@@ -252,9 +252,9 @@ isdifferenceeq(eq) = isdifference(eq.lhs)
252252

253253
iv_from_nested_difference(x::Term) = operation(x) isa Difference ? iv_from_nested_difference(arguments(x)[1]) : arguments(x)[1]
254254
iv_from_nested_difference(x::Sym) = x
255-
iv_from_nested_difference(x) = missing
255+
iv_from_nested_difference(x) = nothing
256256

257-
var_from_nested_difference(x, i=0) = (missing, missing)
257+
var_from_nested_difference(x, i=0) = (nothing, nothing)
258258
var_from_nested_difference(x::Term,i=0) = operation(x) isa Difference ? var_from_nested_difference(arguments(x)[1], i + 1) : (x, i)
259259
var_from_nested_difference(x::Sym,i=0) = (x, i)
260260

test/odesystem.jl

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ D = Differential(t)
358358
eqs = [D(x1) ~ -x1]
359359
@named sys = ODESystem(eqs,t,[x1,x2],[])
360360
@test_throws ArgumentError ODEProblem(sys, [1.0,1.0], (0.0,1.0))
361-
@test_nowarn ODEProblem(sys, [1.0,1.0], (0.0,1.0), check_length=false)
361+
@test_nowarn ODEProblem(sys, [1.0,1.0], (0.0,1.0), check_length=false)
362362

363363
# check inputs
364364
let
@@ -508,8 +508,8 @@ prob = ODEProblem(outersys, [sys.x=>1.0; collect(sys.ms).=>1:3], (0, 1.0))
508508

509509
# observed variable handling
510510
@variables t x(t) RHS(t)
511-
@parameters τ
512-
D = Differential(t)
511+
@parameters τ
512+
D = Differential(t)
513513
@named fol = ODESystem([D(x) ~ (1 - x)/τ]; observed=[RHS ~ (1 - x)/τ])
514514
@test isequal(RHS, @nonamespace fol.RHS)
515515
RHS2 = RHS
@@ -589,14 +589,14 @@ eqs[end] = D(D(z)) ~ α*x - β*y
589589
@named sys = ODESystem(eqs, t, us, ps; defaults=defs, preface=preface)
590590
prob = ODEProblem(sys, [], (0.0, 1.0))
591591
sol = solve(prob, Euler(); dt=0.1)
592-
592+
593593
@test c[1] == length(sol)
594594
end
595-
595+
596596
let
597597
@parameters t
598598
D = Differential(t)
599-
@variables x[1:2](t) = zeros(2)
599+
@variables x[1:2](t) = zeros(2)
600600
@variables y(t) = 0
601601
@parameters k = 1
602602
eqs= [
@@ -631,8 +631,8 @@ let
631631
@test isapprox(sol[x[1]][end], 2, atol=1e-3)
632632

633633
# no initial conditions for D(x[1]) and D(x[2]) provided
634-
@test_throws ArgumentError prob = DAEProblem(sys, Pair[], Pair[], (0, 50))
635-
634+
@test_throws ArgumentError prob = DAEProblem(sys, Pair[], Pair[], (0, 50))
635+
636636
prob = ODEProblem(sys, Pair[x[1] => 0], (0, 50))
637637
sol = solve(prob, Rosenbrock23())
638638
@test isapprox(sol[x[1]][end], 1, atol=1e-3)
@@ -650,4 +650,10 @@ let
650650
tspan = (0.0,1.0)
651651
prob = ODEProblem(sys, u0map, tspan, pmap)
652652
@test prob.p === Tuple([(Dict(pmap))[k] for k in values(parameters(sys))])
653-
end
653+
end
654+
655+
let
656+
@variables t s(t) I(t) r(t)
657+
@parameters N
658+
@test_throws Any @named tmp = ODESystem([s + I + r ~ N])
659+
end

0 commit comments

Comments
 (0)