11using ModelingToolkit, OrdinaryDiffEq, Test
2- using ModelingToolkit: alias_elimination2
32
43@parameters t σ ρ β
54@variables x (t) y (t) z (t) a (t) u (t) F (t)
@@ -15,7 +14,7 @@ eqs = [D(x) ~ σ*(y-x),
1514
1615lorenz1 = ODESystem (eqs,t,[x,y,z,a],[σ,ρ,β],name= :lorenz1 )
1716
18- lorenz1_aliased = alias_elimination2 (lorenz1)
17+ lorenz1_aliased = alias_elimination (lorenz1)
1918@test length (equations (lorenz1_aliased)) == 3
2019@test length (states (lorenz1_aliased)) == 3
2120
@@ -47,7 +46,7 @@ lorenz2 = ODESystem(eqs2,pins=[F],observed=aliases2,name=:lorenz2)
4746connections = [lorenz1. F ~ lorenz2. u,
4847 lorenz2. F ~ lorenz1. u]
4948
50- connected = ODESystem ([lorenz2. y ~ a + lorenz1. x ],t,[a],[],observed= connections,systems= [lorenz1,lorenz2])
49+ connected = ODESystem ([lorenz2. y ~ a + lorenz1. x],t,[a],[],observed= connections,systems= [lorenz1,lorenz2])
5150
5251# Reduced Unflattened System
5352#=
@@ -62,7 +61,7 @@ connected = ODESystem(Equation[],t,[],[],observed=connections2,systems=[lorenz1,
6261
6362flattened_system = ModelingToolkit. flatten (connected)
6463
65- aliased_flattened_system = alias_elimination2 (flattened_system)
64+ aliased_flattened_system = alias_elimination (flattened_system)
6665
6766@test isequal (states (aliased_flattened_system), [
6867 lorenz1. x
@@ -83,21 +82,24 @@ aliased_flattened_system = alias_elimination2(flattened_system)
8382 lorenz2. β
8483 ]) |> isempty
8584
86- test_equal .(equations (aliased_flattened_system), [
87- D (lorenz1. x) ~ lorenz1. σ* (lorenz1. y- lorenz1. x) + lorenz2. x - lorenz2. y - lorenz2. z,
88- D (lorenz1. y) ~ lorenz1. x* (lorenz1. ρ- lorenz1. z)- (lorenz1. x + lorenz1. y - lorenz1. z),
89- D (lorenz1. z) ~ lorenz1. x* lorenz1. y - lorenz1. β* lorenz1. z,
90- D (lorenz2. x) ~ lorenz1. x + lorenz1. y - lorenz1. z,
91- D (lorenz2. y) ~ lorenz2. x* (lorenz2. ρ- lorenz2. z)- lorenz2. x,
92- D (lorenz2. z) ~ lorenz2. x* lorenz2. y - lorenz2. β* lorenz2. z])
93-
94- test_equal .(observed (aliased_flattened_system), [
95- lorenz1. F ~ lorenz2. x + - 1 * (lorenz2. y + lorenz2. z),
96- lorenz1. u ~ lorenz1. x + lorenz1. y + - 1 * lorenz1. z,
97- lorenz2. F ~ lorenz1. x + lorenz1. y + - 1 * lorenz1. z,
98- a ~ lorenz2. y + - 1 * lorenz1. x,
99- lorenz2. u ~ lorenz2. x + - 1 * (lorenz2. y + lorenz2. z),
100- ])
85+ reduced_eqs = [
86+ D (lorenz1. x) ~ lorenz1. σ* (lorenz1. y- lorenz1. x) + lorenz2. x - (a + lorenz1. x) - lorenz2. z,
87+ D (lorenz1. y) ~ lorenz1. x* (lorenz1. ρ- lorenz1. z)- (lorenz1. x + lorenz1. y - lorenz1. z),
88+ D (lorenz1. z) ~ lorenz1. x* lorenz1. y - lorenz1. β* lorenz1. z,
89+ D (lorenz2. x) ~ lorenz1. x + lorenz1. y - lorenz1. z,
90+ D (lorenz2. y) ~ lorenz2. x* (lorenz2. ρ- lorenz2. z)- lorenz2. x,
91+ D (lorenz2. z) ~ lorenz2. x* (a + lorenz1. x) - lorenz2. β* lorenz2. z
92+ ]
93+ test_equal .(equations (aliased_flattened_system), reduced_eqs)
94+
95+ observed_eqs = [
96+ lorenz2. y ~ a + lorenz1. x,
97+ lorenz1. F ~ lorenz2. u,
98+ lorenz2. F ~ lorenz1. u,
99+ lorenz1. u ~ lorenz1. x + lorenz1. y - lorenz1. z,
100+ lorenz2. u ~ lorenz2. x - lorenz2. y - lorenz2. z,
101+ ]
102+ test_equal .(observed (aliased_flattened_system), observed_eqs)
101103
102104
103105# issue #578
110112 x ~ y
111113 ];
112114 sys = ODESystem (eqs, t, [x], []);
113- asys = alias_elimination2 (ModelingToolkit. flatten (sys))
115+ asys = alias_elimination (ModelingToolkit. flatten (sys))
114116
115117 test_equal .(asys. eqs, [D (x) ~ 2 x])
116118 test_equal .(asys. observed, [y ~ x])
0 commit comments