@@ -2,7 +2,7 @@ using ModelingToolkit, StaticArrays, LinearAlgebra
22using DiffEqBase
33using Test
44
5- # Define some variables
5+ # Calculus
66@parameters t σ ρ β
77@variables x y z
88
2929@test all (isequal .(ModelingToolkit. gradient (eqs[1 ],[x,y,z]),[σ * - 1 ,σ,0 ]))
3030@test all (isequal .(ModelingToolkit. hessian (eqs[1 ],[x,y,z]),0 ))
3131
32+ # Function building
33+
3234@parameters σ () ρ () β ()
3335@variables x y z
34-
3536eqs = [σ* (y- x),
3637 x* (ρ- z)- y,
3738 x* y - β* z]
39+ f = eval (ModelingToolkit. build_function (eqs,[x,y,z],[σ,ρ,β]))
40+ out = [1.0 ,2 ,3 ]
41+ o1 = f ([1.0 ,2 ,3 ],[1.0 ,2 ,3 ])
42+ f (out,[1.0 ,2 ,3 ],[1.0 ,2 ,3 ])
43+ @test all (o1 .== out)
3844
39- ModelingToolkit. build_function (eqs,[x,y,z],[σ,ρ,β])
45+ function test_worldage ()
46+ @parameters σ () ρ () β ()
47+ @variables x y z
48+ eqs = [σ* (y- x),
49+ x* (ρ- z)- y,
50+ x* y - β* z]
51+ _f = eval (ModelingToolkit. build_function (eqs,[x,y,z],[σ,ρ,β]))
52+ f (u,p) = ModelingToolkit. fast_invokelatest (_f,typeof (u),u,p)
53+ f (du,u,p) = ModelingToolkit. fast_invokelatest (_f,Nothing,du,u,p)
54+ out = [1.0 ,2 ,3 ]
55+ o1 = f ([1.0 ,2 ,3 ],[1.0 ,2 ,3 ])
56+ f (out,[1.0 ,2 ,3 ],[1.0 ,2 ,3 ])
57+ end
58+ test_worldage ()
4059
4160mac = @I begin
4261 @parameters σ () ρ () β ()
@@ -45,17 +64,17 @@ mac = @I begin
4564 eqs = [σ* (y- x),
4665 x* (ρ- z)- y,
4766 x* y - β* z]
48-
4967 ModelingToolkit. build_function (eqs,[x,y,z],[σ,ρ,β])
5068end
5169f = @ICompile
5270out = [1.0 ,2 ,3 ]
53- f ([1.0 ,2 ,3 ],[1.0 ,2 ,3 ])
71+ o1 = f ([1.0 ,2 ,3 ],[1.0 ,2 ,3 ])
5472f (out,[1.0 ,2 ,3 ],[1.0 ,2 ,3 ])
73+ @test all (o1 .== out)
5574
5675mac = @I begin
57- @parameters σ () ρ () β ()
58- @variables x () y () z ()
76+ @parameters σ ρ β
77+ @variables x y z
5978
6079 eqs = [σ* (y- x),
6180 x* (ρ- z)- y,
@@ -65,6 +84,44 @@ mac = @I begin
6584end
6685f = @ICompile
6786out = zeros (3 ,3 )
68- f ([1.0 ,2 ,3 ],[1.0 ,2 ,3 ])
87+ o1 = f ([1.0 ,2 ,3 ],[1.0 ,2 ,3 ])
6988f (out,[1.0 ,2 ,3 ],[1.0 ,2 ,3 ])
70- out
89+ @test all (out .== o1)
90+
91+ # # No parameters
92+ @variables x y z
93+ eqs = [(y- x)^ 2 ,
94+ x* (x- z)- y,
95+ x* y - y* z]
96+ f = eval (ModelingToolkit. build_function (eqs,[x,y,z]))
97+ out = zeros (3 )
98+ o1 = f ([1.0 ,2 ,3 ])
99+ f (out,[1.0 ,2 ,3 ])
100+ @test all (out .== o1)
101+
102+ function test_worldage ()
103+ @variables x y z
104+ eqs = [(y- x)^ 2 ,
105+ x* (x- z)- y,
106+ x* y - y* z]
107+ _f = eval (ModelingToolkit. build_function (eqs,[x,y,z]))
108+ f (u) = ModelingToolkit. fast_invokelatest (_f,typeof (u),u)
109+ f (du,u) = ModelingToolkit. fast_invokelatest (_f,Nothing,du,u)
110+ out = zeros (3 )
111+ o1 = f ([1.0 ,2 ,3 ])
112+ f (out,[1.0 ,2 ,3 ])
113+ end
114+ test_worldage ()
115+
116+ mac = @I begin
117+ @variables x y z
118+ eqs = [(y- x)^ 2 ,
119+ x* (x- z)- y,
120+ x* y - y* z]
121+ ModelingToolkit. build_function (eqs,[x,y,z])
122+ end
123+ f = @ICompile
124+ out = zeros (3 )
125+ o1 = f ([1.0 ,2 ,3 ])
126+ f (out,[1.0 ,2 ,3 ])
127+ @test all (out .== o1)
0 commit comments