@@ -27,37 +27,45 @@ function's documentation string.
2727function lorenz (u0= [0.0 , 10.0 , 0.0 ]; σ = 10.0 , ρ = 28.0 , β = 8 / 3 )
2828 return CDS (loop, u0, [σ, ρ, β], loop_jac)
2929end
30- @inbounds function loop (u, p, t)
31- σ = p[1 ]; ρ = p[2 ]; β = p[3 ]
32- du1 = σ* (u[2 ]- u[1 ])
33- du2 = u[1 ]* (ρ- u[3 ]) - u[2 ]
34- du3 = u[1 ]* u[2 ] - β* u[3 ]
35- return SVector {3} (du1, du2, du3)
30+ function loop (u, p, t)
31+ @inbounds begin
32+ σ = p[1 ]; ρ = p[2 ]; β = p[3 ]
33+ du1 = σ* (u[2 ]- u[1 ])
34+ du2 = u[1 ]* (ρ- u[3 ]) - u[2 ]
35+ du3 = u[1 ]* u[2 ] - β* u[3 ]
36+ return SVector {3} (du1, du2, du3)
37+ end
3638end
37- @inbounds function loop_jac (u, p, t)
38- σ, ρ, β = p
39- J = @SMatrix [- σ σ 0 ;
40- ρ - u[3 ] (- 1 ) (- u[1 ]);
41- u[2 ] u[1 ] - β]
42- return J
39+ function loop_jac (u, p, t)
40+ @inbounds begin
41+ σ, ρ, β = p
42+ J = @SMatrix [- σ σ 0 ;
43+ ρ - u[3 ] (- 1 ) (- u[1 ]);
44+ u[2 ] u[1 ] - β]
45+ return J
46+ end
4347end
4448
4549function lorenz_iip (u0= [0.0 , 10.0 , 0.0 ]; σ = 10.0 , ρ = 28.0 , β = 8 / 3 )
4650 return CDS (liip, u0, [σ, ρ, β], liip_jac)
4751end
48- @inbounds function liip (du, u, p, t)
49- σ = p[1 ]; ρ = p[2 ]; β = p[3 ]
50- du[1 ] = σ* (u[2 ]- u[1 ])
51- du[2 ] = u[1 ]* (ρ- u[3 ]) - u[2 ]
52- du[3 ] = u[1 ]* u[2 ] - β* u[3 ]
53- return nothing
52+ function liip (du, u, p, t)
53+ @inbounds begin
54+ σ = p[1 ]; ρ = p[2 ]; β = p[3 ]
55+ du[1 ] = σ* (u[2 ]- u[1 ])
56+ du[2 ] = u[1 ]* (ρ- u[3 ]) - u[2 ]
57+ du[3 ] = u[1 ]* u[2 ] - β* u[3 ]
58+ return nothing
59+ end
5460end
55- @inbounds function liip_jac (J, u, p, t)
61+ function liip_jac (J, u, p, t)
62+ @inbounds begin
5663 σ, ρ, β = p
5764 J[1 ,1 ] = - σ; J[1 , 2 ] = σ; J[1 ,3 ] = 0
5865 J[2 ,1 ] = ρ - u[3 ]; J[2 ,2 ] = - 1 ; J[2 ,3 ] = - u[1 ]
5966 J[3 ,1 ] = u[2 ]; J[3 ,2 ] = u[1 ]; J[3 ,3 ] = - β
6067 return nothing
68+ end
6169end
6270
6371
@@ -87,18 +95,20 @@ function's documentation string.
8795function roessler (u0= rand (3 ); a = 0.2 , b = 0.2 , c = 5.7 )
8896 return CDS (roessler_eom, u0, [a, b, c], roessler_jacob)
8997end
90- @inbounds function roessler_eom (u, p, t)
98+ function roessler_eom (u, p, t)
99+ @inbounds begin
91100 a, b, c = p
92101 du1 = - u[2 ]- u[3 ]
93102 du2 = u[1 ] + a* u[2 ]
94103 du3 = b + u[3 ]* (u[1 ] - c)
95104 return SVector {3, Float64} (du1, du2, du3)
105+ end
96106end
97- @inbounds function roessler_jacob (u, p, t)
107+ function roessler_jacob (u, p, t)
98108 a, b, c = p
99- return @SMatrix [0 (- 1 ) (- 1 );
100- 1 a 0 ;
101- u[3 ] 0 (u[1 ]- c)]
109+ return @SMatrix [0.0 (- 1.0 ) (- 1.0 );
110+ 1.0 a 0. 0 ;
111+ u[3 ] 0.0 (u[1 ]- c)]
102112end
103113
104114"""
@@ -189,19 +199,23 @@ function henonheiles(u0=[0, -0.25, 0.42081, 0]#=; conserveE::Bool = true=#)
189199 return CDS (hheom!, u0, nothing , hhjacob!, J)
190200end
191201function hheom! (du, u, p, t)
192- du[1 ] = u[3 ]
193- du[2 ] = u[4 ]
194- du[3 ] = - u[1 ] - 2 u[1 ]* u[2 ]
195- du[4 ] = - u[2 ] - (u[1 ]^ 2 - u[2 ]^ 2 )
196- return nothing
202+ @inbounds begin
203+ du[1 ] = u[3 ]
204+ du[2 ] = u[4 ]
205+ du[3 ] = - u[1 ] - 2 u[1 ]* u[2 ]
206+ du[4 ] = - u[2 ] - (u[1 ]^ 2 - u[2 ]^ 2 )
207+ return nothing
208+ end
197209end
198210function hhjacob! (J, u, p, t)
199- o = 0 ; i = 1
211+ @inbounds begin
212+ o = 0.0 ; i = 1.0
200213 J[1 ,:] .= (o, o, i, o)
201214 J[2 ,:] .= (o, o, o, i)
202215 J[3 ,:] .= (- i - 2 * u[2 ], - 2 * u[1 ], o, o)
203216 J[4 ,:] .= (- 2 * u[1 ], - 1 + 2 * u[2 ], o, o)
204217 return nothing
218+ end
205219end
206220
207221
0 commit comments