Skip to content

Commit fa0041f

Browse files
committed
fix
2 parents 74e9d56 + f497ae0 commit fa0041f

File tree

2 files changed

+59
-2
lines changed

2 files changed

+59
-2
lines changed

test/odesystem.jl

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1553,9 +1553,66 @@ end
15531553
@test all(x -> any(isapprox(x, atol = 1e-6), sol2.t), expected_tstops)
15541554
end
15551555

1556-
let
1556+
@testset "Validate input types" begin
15571557
@parameters p d
15581558
@variables X(t)::Int64
15591559
eq = D(X) ~ p - d*X
15601560
@test_throws Exception @mtkbuild osys = ODESystem([eq], t)
15611561
end
1562+
1563+
@testset "dae_order_lowering basic test" begin
1564+
@parameters a
1565+
@variables x(t) y(t) z(t)
1566+
@named dae_sys = ODESystem([
1567+
D(x) ~ y,
1568+
0 ~ x + z,
1569+
0 ~ x - y + z
1570+
], t, [z, y, x], [])
1571+
1572+
lowered_dae_sys = dae_order_lowering(dae_sys)
1573+
@variables x1(t) y1(t) z1(t)
1574+
expected_eqs = [
1575+
0 ~ x + z,
1576+
0 ~ x - y + z,
1577+
Differential(t)(x) ~ y
1578+
]
1579+
lowered_eqs = equations(lowered_dae_sys)
1580+
sorted_lowered_eqs = sort(lowered_eqs, by=string)
1581+
sorted_expected_eqs = sort(expected_eqs, by=string)
1582+
@test sorted_lowered_eqs == sorted_expected_eqs
1583+
1584+
expected_vars = Set([z, y, x])
1585+
lowered_vars = Set(unknowns(lowered_dae_sys))
1586+
@test lowered_vars == expected_vars
1587+
end
1588+
1589+
@testset "dae_order_lowering test with structural_simplify" begin
1590+
@variables x(t) y(t) z(t)
1591+
@parameters M b k
1592+
eqs = [
1593+
D(D(x)) ~ -b / M * D(x) - k / M * x,
1594+
0 ~ y - D(x),
1595+
0 ~ z - x
1596+
]
1597+
ps = [M, b, k]
1598+
default_u0 = [
1599+
D(x) => 0.0, x => 10.0, y => 0.0, z => 10.0
1600+
]
1601+
default_p = [M => 1.0, b => 1.0, k => 1.0]
1602+
@named dae_sys = ODESystem(eqs, t, [x, y, z], ps; defaults = [default_u0; default_p])
1603+
1604+
simplified_dae_sys = structural_simplify(dae_sys)
1605+
1606+
lowered_dae_sys = dae_order_lowering(simplified_dae_sys)
1607+
lowered_dae_sys = complete(lowered_dae_sys)
1608+
1609+
tspan = (0.0, 10.0)
1610+
prob = ODEProblem(lowered_dae_sys, nothing, tspan)
1611+
sol = solve(prob, Tsit5())
1612+
1613+
@test sol.t[end] == tspan[end]
1614+
@test sum(abs, sol.u[end]) < 1
1615+
1616+
prob = ODEProblem{false}(lowered_dae_sys; u0_constructor = x -> SVector(x...))
1617+
@test prob.u0 isa SVector
1618+
end

test/sdesystem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -870,7 +870,7 @@ end
870870
end
871871

872872
# Test validating types of states
873-
let
873+
@testset "Validate input types" begin
874874
@parameters p d
875875
@variables X(t)::Int64
876876
@brownian z

0 commit comments

Comments
 (0)