@@ -20,11 +20,13 @@ eqs = [D(x) ~ σ*(y-x),
20
20
D (z) ~ x* y - β* z]
21
21
de = DiffEqSystem (eqs)
22
22
test_diffeq_inference (" standard" , de, :t , (:x , :y , :z ), (:σ , :ρ , :β ))
23
- generate_function (de)
24
- generate_function (de; version= ModelingToolkit. SArrayFunction)
23
+ generate_function (de, [x,y,z], [σ,ρ,β] )
24
+ generate_function (de, [x,y,z], [σ,ρ,β] ; version= ModelingToolkit. SArrayFunction)
25
25
jac_expr = generate_jacobian (de)
26
26
jac = calculate_jacobian (de)
27
- f = ODEFunction (de)
27
+ @test_broken begin
28
+ f = ODEFunction (de)
29
+ end
28
30
ModelingToolkit. generate_ode_iW (de)
29
31
30
32
@testset " time-varying parameters" begin
@@ -35,24 +37,34 @@ ModelingToolkit.generate_ode_iW(de)
35
37
de = DiffEqSystem (eqs)
36
38
test_diffeq_inference (" global iv-varying" , de, :t , (:x , :y , :z ), (:σ′ , :ρ , :β ))
37
39
@test begin
38
- f = eval (generate_function (de))
40
+ f = eval (generate_function (de, [x,y,z], [σ′,ρ,β] ))
39
41
du = [0.0 ,0.0 ,0.0 ]
40
42
f (du, [1.0 ,2.0 ,3.0 ], [x-> x+ 7 ,2 ,3 ], 5.0 )
41
- du ≈ [12 , - 3 , - 7 ]
43
+ du ≈ [11 , - 3 , - 7 ]
42
44
end
43
45
44
46
@parameters σ
45
47
eqs = [D (x) ~ σ (t- 1 )* (y- x),
46
48
D (y) ~ x* (ρ- z)- y,
47
49
D (z) ~ x* y - β* z]
48
50
de = DiffEqSystem (eqs)
49
- test_diffeq_inference (" internal iv-varying" , de, :t , (:x , :y , :z ), (:σ , :ρ , :β ))
51
+ test_diffeq_inference (" single internal iv-varying" , de, :t , (:x , :y , :z ), (:σ , :ρ , :β ))
50
52
@test begin
51
- f = eval (generate_function (de))
53
+ f = eval (generate_function (de, [x,y,z], [σ,ρ,β] ))
52
54
du = [0.0 ,0.0 ,0.0 ]
53
55
f (du, [1.0 ,2.0 ,3.0 ], [x-> x+ 7 ,2 ,3 ], 5.0 )
54
56
du ≈ [11 , - 3 , - 7 ]
55
57
end
58
+
59
+ eqs = [D (x) ~ x + 10 σ (t- 1 ) + 100 σ (t- 2 ) + 1000 σ (t^ 2 )]
60
+ de = DiffEqSystem (eqs)
61
+ test_diffeq_inference (" many internal iv-varying" , de, :t , (:x ,), (:σ ,))
62
+ @test begin
63
+ f = eval (generate_function (de, [x], [σ]))
64
+ du = [0.0 ]
65
+ f (du, [1.0 ], [t -> t + 2 ], 5.0 )
66
+ du ≈ [27561 ]
67
+ end
56
68
end
57
69
58
70
@test_broken begin
@@ -78,9 +90,11 @@ eqs = [D(x) ~ σ*a,
78
90
D (y) ~ x* (ρ- z)- y,
79
91
D (z) ~ x* y - β* z]
80
92
de = DiffEqSystem (eqs)
81
- generate_function (de)
93
+ generate_function (de, [x,y,z], [σ,ρ,β] )
82
94
jac = calculate_jacobian (de)
83
- f = ODEFunction (de)
95
+ @test_broken begin
96
+ f = ODEFunction (de)
97
+ end
84
98
85
99
@test_broken begin
86
100
# Define a nonlinear system
@@ -95,7 +109,7 @@ for el in (:vs, :ps)
95
109
@test names2 == names
96
110
end
97
111
98
- generate_function (ns)
112
+ generate_function (ns, [x,y,z], [σ,ρ,β] )
99
113
end
100
114
101
115
@derivatives D' ~ t
@@ -105,7 +119,7 @@ eqs = [D(x) ~ -A*x,
105
119
D (y) ~ A* x - B* _x]
106
120
de = DiffEqSystem (eqs)
107
121
@test begin
108
- f = eval (generate_function (de))
122
+ f = eval (generate_function (de, [x,y], [A,B,C] ))
109
123
du = [0.0 ,0.0 ]
110
124
f (du, [1.0 ,2.0 ], [1 ,2 ,3 ], 0.0 )
111
125
du ≈ [- 1 , - 1 / 3 ]
@@ -133,7 +147,7 @@ jac = calculate_jacobian(ns)
133
147
@test isequal (jac[3 ,2 ], x)
134
148
@test isequal (jac[3 ,3 ], - 1 * β)
135
149
end
136
- nlsys_func = generate_function (ns)
150
+ nlsys_func = generate_function (ns, [x,y,z], [σ,ρ,β] )
137
151
jac_func = generate_jacobian (ns)
138
152
f = @eval eval (nlsys_func)
139
153
@@ -143,7 +157,7 @@ eqs = [0 ~ σ*a,
143
157
0 ~ x* (ρ- z)- y,
144
158
0 ~ x* y - β* z]
145
159
ns = NonlinearSystem (eqs,[x,y,z],[σ,ρ,β])
146
- nlsys_func = generate_function (ns)
160
+ nlsys_func = generate_function (ns, [x,y,z], [σ,ρ,β] )
147
161
jac = calculate_jacobian (ns)
148
162
jac = generate_jacobian (ns)
149
163
end
0 commit comments