1
1
using ModelingToolkit, OrdinaryDiffEq, Test
2
- using ModelingToolkit: alias_elimination2
3
2
4
3
@parameters t σ ρ β
5
4
@variables x (t) y (t) z (t) a (t) u (t) F (t)
@@ -15,7 +14,7 @@ eqs = [D(x) ~ σ*(y-x),
15
14
16
15
lorenz1 = ODESystem (eqs,t,[x,y,z,a],[σ,ρ,β],name= :lorenz1 )
17
16
18
- lorenz1_aliased = alias_elimination2 (lorenz1)
17
+ lorenz1_aliased = alias_elimination (lorenz1)
19
18
@test length (equations (lorenz1_aliased)) == 3
20
19
@test length (states (lorenz1_aliased)) == 3
21
20
@@ -47,7 +46,7 @@ lorenz2 = ODESystem(eqs2,pins=[F],observed=aliases2,name=:lorenz2)
47
46
connections = [lorenz1. F ~ lorenz2. u,
48
47
lorenz2. F ~ lorenz1. u]
49
48
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])
51
50
52
51
# Reduced Unflattened System
53
52
#=
@@ -62,7 +61,7 @@ connected = ODESystem(Equation[],t,[],[],observed=connections2,systems=[lorenz1,
62
61
63
62
flattened_system = ModelingToolkit. flatten (connected)
64
63
65
- aliased_flattened_system = alias_elimination2 (flattened_system)
64
+ aliased_flattened_system = alias_elimination (flattened_system)
66
65
67
66
@test isequal (states (aliased_flattened_system), [
68
67
lorenz1. x
@@ -83,21 +82,24 @@ aliased_flattened_system = alias_elimination2(flattened_system)
83
82
lorenz2. β
84
83
]) |> isempty
85
84
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)
101
103
102
104
103
105
# issue #578
110
112
x ~ y
111
113
];
112
114
sys = ODESystem (eqs, t, [x], []);
113
- asys = alias_elimination2 (ModelingToolkit. flatten (sys))
115
+ asys = alias_elimination (ModelingToolkit. flatten (sys))
114
116
115
117
test_equal .(asys. eqs, [D (x) ~ 2 x])
116
118
test_equal .(asys. observed, [y ~ x])
0 commit comments