@@ -43,98 +43,95 @@ ts = collect_ivs([eq])
43
43
@test length (res) == 3
44
44
end
45
45
46
- @testset " parse_variable" begin
47
- @mtkmodel Lorenz begin
46
+ @testset " parse_variable with iv: $iv " for iv in [t, only (@independent_variables tt)]
47
+ D = Differential (iv)
48
+ function Lorenz (; name)
48
49
@variables begin
49
- x (t )
50
- y (t )
51
- z (t )
50
+ x (iv )
51
+ y (iv )
52
+ z (iv )
52
53
end
53
54
@parameters begin
54
55
σ
55
56
ρ
56
57
β
57
58
end
58
- @equations begin
59
- D (D (x)) ~ σ * (y - x)
60
- D (y) ~ x * (ρ - z) - y
61
- D (z) ~ x * y - β * z
62
- end
59
+ sys = ODESystem (
60
+ [D (D (x)) ~ σ * (y - x)
61
+ D (y) ~ x * (ρ - z) - y
62
+ D (z) ~ x * y - β * z], iv; name)
63
63
end
64
- @mtkmodel ArrSys begin
64
+ function ArrSys (; name)
65
65
@variables begin
66
- x (t )[1 : 2 ]
66
+ x (iv )[1 : 2 ]
67
67
end
68
68
@parameters begin
69
69
p[1 : 2 , 1 : 2 ]
70
70
end
71
- @equations begin
72
- D (D (x)) ~ p * x
73
- end
71
+ sys = ODESystem ([D (D (x)) ~ p * x], iv; name)
74
72
end
75
- @mtkmodel Outer begin
76
- @components begin
77
- 😄 = Lorenz ()
78
- arr = ArrSys ()
79
- end
73
+ function Outer (; name)
74
+ @named 😄 = Lorenz ()
75
+ @named arr = ArrSys ()
76
+ sys = ODESystem (Equation[], iv; name, systems = [😄, arr])
80
77
end
81
78
82
79
@mtkbuild sys = Outer ()
83
80
for (str, var) in [
84
81
# unicode system, scalar variable
85
82
(" 😄.x" , sys.😄. x),
86
- (" 😄.x(t )" , sys.😄. x),
83
+ (" 😄.x($iv )" , sys.😄. x),
87
84
(" 😄₊x" , sys.😄. x),
88
- (" 😄₊x(t )" , sys.😄. x),
85
+ (" 😄₊x($iv )" , sys.😄. x),
89
86
# derivative
90
87
(" D(😄.x)" , D (sys.😄. x)),
91
- (" D(😄.x(t ))" , D (sys.😄. x)),
88
+ (" D(😄.x($iv ))" , D (sys.😄. x)),
92
89
(" D(😄₊x)" , D (sys.😄. x)),
93
- (" D(😄₊x(t ))" , D (sys.😄. x)),
90
+ (" D(😄₊x($iv ))" , D (sys.😄. x)),
94
91
# other derivative
95
- (" 😄.xˍt " , D (sys.😄. x)),
96
- (" 😄.x(t)ˍt " , D (sys.😄. x)),
97
- (" 😄₊xˍt " , D (sys.😄. x)),
98
- (" 😄₊x(t)ˍt " , D (sys.😄. x)),
92
+ (" 😄.xˍ $iv " , D (sys.😄. x)),
93
+ (" 😄.x($iv )ˍ $iv " , D (sys.😄. x)),
94
+ (" 😄₊xˍ $iv " , D (sys.😄. x)),
95
+ (" 😄₊x($iv )ˍ $iv " , D (sys.😄. x)),
99
96
# scalar parameter
100
97
(" 😄.σ" , sys.😄. σ),
101
98
(" 😄₊σ" , sys.😄. σ),
102
99
# array variable
103
100
(" arr.x" , sys. arr. x),
104
101
(" arr₊x" , sys. arr. x),
105
- (" arr.x(t )" , sys. arr. x),
106
- (" arr₊x(t )" , sys. arr. x),
102
+ (" arr.x($iv )" , sys. arr. x),
103
+ (" arr₊x($iv )" , sys. arr. x),
107
104
# getindex
108
105
(" arr.x[1]" , sys. arr. x[1 ]),
109
106
(" arr₊x[1]" , sys. arr. x[1 ]),
110
- (" arr.x(t )[1]" , sys. arr. x[1 ]),
111
- (" arr₊x(t )[1]" , sys. arr. x[1 ]),
107
+ (" arr.x($iv )[1]" , sys. arr. x[1 ]),
108
+ (" arr₊x($iv )[1]" , sys. arr. x[1 ]),
112
109
# derivative
113
- (" D(arr.x(t ))" , D (sys. arr. x)),
114
- (" D(arr₊x(t ))" , D (sys. arr. x)),
110
+ (" D(arr.x($iv ))" , D (sys. arr. x)),
111
+ (" D(arr₊x($iv ))" , D (sys. arr. x)),
115
112
(" D(arr.x[1])" , D (sys. arr. x[1 ])),
116
113
(" D(arr₊x[1])" , D (sys. arr. x[1 ])),
117
- (" D(arr.x(t )[1])" , D (sys. arr. x[1 ])),
118
- (" D(arr₊x(t )[1])" , D (sys. arr. x[1 ])),
114
+ (" D(arr.x($iv )[1])" , D (sys. arr. x[1 ])),
115
+ (" D(arr₊x($iv )[1])" , D (sys. arr. x[1 ])),
119
116
# other derivative
120
- (" arr.xˍt " , D (sys. arr. x)),
121
- (" arr₊xˍt " , D (sys. arr. x)),
122
- (" arr.xˍt(t )" , D (sys. arr. x)),
123
- (" arr₊xˍt(t )" , D (sys. arr. x)),
124
- (" arr.xˍt [1]" , D (sys. arr. x[1 ])),
125
- (" arr₊xˍt [1]" , D (sys. arr. x[1 ])),
126
- (" arr.xˍt(t )[1]" , D (sys. arr. x[1 ])),
127
- (" arr₊xˍt(t )[1]" , D (sys. arr. x[1 ])),
128
- (" arr.x(t)ˍt " , D (sys. arr. x)),
129
- (" arr₊x(t)ˍt " , D (sys. arr. x)),
130
- (" arr.x(t)ˍt [1]" , D (sys. arr. x[1 ])),
131
- (" arr₊x(t)ˍt [1]" , D (sys. arr. x[1 ])),
117
+ (" arr.xˍ $iv " , D (sys. arr. x)),
118
+ (" arr₊xˍ $iv " , D (sys. arr. x)),
119
+ (" arr.xˍ $iv ( $iv )" , D (sys. arr. x)),
120
+ (" arr₊xˍ $iv ( $iv )" , D (sys. arr. x)),
121
+ (" arr.xˍ $iv [1]" , D (sys. arr. x[1 ])),
122
+ (" arr₊xˍ $iv [1]" , D (sys. arr. x[1 ])),
123
+ (" arr.xˍ $iv ( $iv )[1]" , D (sys. arr. x[1 ])),
124
+ (" arr₊xˍ $iv ( $iv )[1]" , D (sys. arr. x[1 ])),
125
+ (" arr.x($iv )ˍ $iv " , D (sys. arr. x)),
126
+ (" arr₊x($iv )ˍ $iv " , D (sys. arr. x)),
127
+ (" arr.x($iv )ˍ $iv [1]" , D (sys. arr. x[1 ])),
128
+ (" arr₊x($iv )ˍ $iv [1]" , D (sys. arr. x[1 ])),
132
129
# array parameter
133
130
(" arr.p" , sys. arr. p),
134
131
(" arr₊p" , sys. arr. p),
135
132
(" arr.p[1, 2]" , sys. arr. p[1 , 2 ]),
136
133
(" arr₊p[1, 2]" , sys. arr. p[1 , 2 ])
137
134
]
138
- isequal (parse_variable (sys, str), var)
135
+ @test isequal (parse_variable (sys, str), var)
139
136
end
140
137
end
0 commit comments