Skip to content

Commit 632f426

Browse files
committed
Add tests
1 parent 68ba2f8 commit 632f426

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

src/systems/diffeqs/first_order_transform.jl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@ function ode_order_lowering(eqs, iv, states)
1616
diff_vars = []
1717
alge_eqs = Equation[]
1818

19-
for (i, (eq, ss)) enumerate(zip(eqs, states))
20-
if _iszero(eq.lhs)
19+
for (i, eq) enumerate(eqs)
20+
if !isdiffeq(eq)
2121
push!(alge_eqs, eq)
2222
else
2323
var, maxorder = var_from_nested_derivative(eq.lhs)
24-
# only save to the dict when we need to lower the order to save memory
2524
maxorder > get(var_order, var, 1) && (var_order[var] = maxorder)
2625
var′ = lower_varname(var, iv, maxorder - 1)
2726
rhs′ = diff2term(eq.rhs)

test/odesystem.jl

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ eqs = [D(x) ~ -A*x,
145145
D(y) ~ A*x - B*_x]
146146
de = ODESystem(eqs)
147147
@test begin
148-
local f
148+
local f, du
149149
f = eval(generate_function(de, [x,y], [A,B,C])[2])
150150
du = [0.0,0.0]
151151
f(du, [1.0,2.0], [1,2,3], 0.0)
@@ -225,3 +225,12 @@ using ModelingToolkit
225225
@derivatives D'~t
226226
sys = ODESystem([D(x) ~ a])
227227
@test sys.eqs[1].rhs isa Sym
228+
229+
# issue 708
230+
@parameters t a
231+
@variables x(t) y(t) z(t)
232+
@derivatives D'~t
233+
sys = ODESystem([D(x) ~ y, 0 ~ x + z, 0 ~ x - y], t, [z, y, x], [])
234+
sys2 = ode_order_lowering(sys)
235+
M = ModelingToolkit.calculate_massmatrix(sys2)
236+
@test M == Diagonal([1, 0, 0])

0 commit comments

Comments
 (0)