@@ -54,42 +54,38 @@ jac = calculate_jacobian(de)
54
54
jacfun = eval (jac_expr[2 ])
55
55
56
56
de = complete (de)
57
- for f in [
58
- ODEFunction (de, [x, y, z], [σ, ρ, β], tgrad = true , jac = true ),
59
- eval (ODEFunctionExpr (de, [x, y, z], [σ, ρ, β], tgrad = true , jac = true ))
60
- ]
61
- # system
62
- @test f. sys === de
63
-
64
- # iip
65
- du = zeros (3 )
66
- u = collect (1 : 3 )
67
- p = ModelingToolkit. MTKParameters (de, [σ, ρ, β] .=> 4.0 : 6.0 )
68
- f. f (du, u, p, 0.1 )
69
- @test du == [4 , 0 , - 16 ]
70
-
71
- # oop
72
- du = @SArray zeros (3 )
73
- u = SVector (1 : 3 ... )
74
- p = ModelingToolkit. MTKParameters (de, SVector {3} ([σ, ρ, β] .=> 4.0 : 6.0 ))
75
- @test f. f (u, p, 0.1 ) === @SArray [4.0 , 0.0 , - 16.0 ]
76
-
77
- # iip vs oop
78
- du = zeros (3 )
79
- g = similar (du)
80
- J = zeros (3 , 3 )
81
- u = collect (1 : 3 )
82
- p = ModelingToolkit. MTKParameters (de, [σ, ρ, β] .=> 4.0 : 6.0 )
83
- f. f (du, u, p, 0.1 )
84
- @test du == f (u, p, 0.1 )
85
- f. tgrad (g, u, p, t)
86
- @test g == f. tgrad (u, p, t)
87
- f. jac (J, u, p, t)
88
- @test J == f. jac (u, p, t)
89
- end
57
+ f = ODEFunction (de, [x, y, z], [σ, ρ, β], tgrad = true , jac = true )
58
+ # system
59
+ @test f. sys === de
60
+
61
+ # iip
62
+ du = zeros (3 )
63
+ u = collect (1 : 3 )
64
+ p = ModelingToolkit. MTKParameters (de, [σ, ρ, β] .=> 4.0 : 6.0 )
65
+ f. f (du, u, p, 0.1 )
66
+ @test du == [4 , 0 , - 16 ]
67
+
68
+ # oop
69
+ du = @SArray zeros (3 )
70
+ u = SVector (1 : 3 ... )
71
+ p = ModelingToolkit. MTKParameters (de, SVector {3} ([σ, ρ, β] .=> 4.0 : 6.0 ))
72
+ @test f. f (u, p, 0.1 ) === @SArray [4.0 , 0.0 , - 16.0 ]
73
+
74
+ # iip vs oop
75
+ du = zeros (3 )
76
+ g = similar (du)
77
+ J = zeros (3 , 3 )
78
+ u = collect (1 : 3 )
79
+ p = ModelingToolkit. MTKParameters (de, [σ, ρ, β] .=> 4.0 : 6.0 )
80
+ f. f (du, u, p, 0.1 )
81
+ @test du == f (u, p, 0.1 )
82
+ f. tgrad (g, u, p, t)
83
+ @test g == f. tgrad (u, p, t)
84
+ f. jac (J, u, p, t)
85
+ @test J == f. jac (u, p, t)
90
86
91
87
# check iip_config
92
- f = eval ( ODEFunctionExpr ( de, [x, y, z], [σ, ρ, β], iip_config = (false , true ) ))
88
+ f = ODEFunction ( de, [x, y, z], [σ, ρ, β], iip_config = (false , true ))
93
89
du = zeros (3 )
94
90
u = collect (1 : 3 )
95
91
p = ModelingToolkit. MTKParameters (de, [σ, ρ, β] .=> 4.0 : 6.0 )
@@ -146,7 +142,7 @@ eqs = [D(x) ~ σ′ * (y - x),
146
142
@named de = ODESystem (eqs, t)
147
143
test_diffeq_inference (" global iv-varying" , de, t, (x, y, z), (σ′, ρ, β))
148
144
149
- f = eval ( generate_function (de, [x, y, z], [σ′, ρ, β])[2 ])
145
+ f = generate_function (de, [x, y, z], [σ′, ρ, β], expression = Val{ false } )[2 ]
150
146
du = [0.0 , 0.0 , 0.0 ]
151
147
f (du, [1.0 , 2.0 , 3.0 ], [x -> x + 7 , 2 , 3 ], 5.0 )
152
148
@test du ≈ [11 , - 3 , - 7 ]
@@ -157,15 +153,15 @@ eqs = [D(x) ~ σ(t - 1) * (y - x),
157
153
D (z) ~ x * y - β * z * κ]
158
154
@named de = ODESystem (eqs, t)
159
155
test_diffeq_inference (" single internal iv-varying" , de, t, (x, y, z), (σ, ρ, β))
160
- f = eval ( generate_function (de, [x, y, z], [σ, ρ, β])[2 ])
156
+ f = generate_function (de, [x, y, z], [σ, ρ, β], expression = Val{ false } )[2 ]
161
157
du = [0.0 , 0.0 , 0.0 ]
162
158
f (du, [1.0 , 2.0 , 3.0 ], [x -> x + 7 , 2 , 3 ], 5.0 )
163
159
@test du ≈ [11 , - 3 , - 7 ]
164
160
165
161
eqs = [D (x) ~ x + 10 σ (t - 1 ) + 100 σ (t - 2 ) + 1000 σ (t^ 2 )]
166
162
@named de = ODESystem (eqs, t)
167
163
test_diffeq_inference (" many internal iv-varying" , de, t, (x,), (σ,))
168
- f = eval ( generate_function (de, [x], [σ])[2 ])
164
+ f = generate_function (de, [x], [σ], expression = Val{ false } )[2 ]
169
165
du = [0.0 ]
170
166
f (du, [1.0 ], [t -> t + 2 ], 5.0 )
171
167
@test du ≈ [27561 ]
@@ -218,11 +214,11 @@ eqs = [D(x) ~ -A * x,
218
214
@named de = ODESystem (eqs, t)
219
215
@test begin
220
216
local f, du
221
- f = eval ( generate_function (de, [x, y], [A, B, C])[2 ])
217
+ f = generate_function (de, [x, y], [A, B, C], expression = Val{ false } )[2 ]
222
218
du = [0.0 , 0.0 ]
223
219
f (du, [1.0 , 2.0 ], [1 , 2 , 3 ], 0.0 )
224
220
du ≈ [- 1 , - 1 / 3 ]
225
- f = eval ( generate_function (de, [x, y], [A, B, C])[1 ])
221
+ f = generate_function (de, [x, y], [A, B, C], expression = Val{ false } )[1 ]
226
222
du ≈ f ([1.0 , 2.0 ], [1 , 2 , 3 ], 0.0 )
227
223
end
228
224
0 commit comments