Skip to content

Commit 79a6ddf

Browse files
committed
proper inbounds
1 parent bb9a56c commit 79a6ddf

File tree

1 file changed

+44
-30
lines changed

1 file changed

+44
-30
lines changed

src/continuous_famous_systems.jl

Lines changed: 44 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -27,37 +27,45 @@ function's documentation string.
2727
function lorenz(u0=[0.0, 10.0, 0.0]; σ = 10.0, ρ = 28.0, β = 8/3)
2828
return CDS(loop, u0, [σ, ρ, β], loop_jac)
2929
end
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
3638
end
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
4347
end
4448

4549
function lorenz_iip(u0=[0.0, 10.0, 0.0]; σ = 10.0, ρ = 28.0, β = 8/3)
4650
return CDS(liip, u0, [σ, ρ, β], liip_jac)
4751
end
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
5460
end
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
6169
end
6270

6371

@@ -87,18 +95,20 @@ function's documentation string.
8795
function roessler(u0=rand(3); a = 0.2, b = 0.2, c = 5.7)
8896
return CDS(roessler_eom, u0, [a, b, c], roessler_jacob)
8997
end
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
96106
end
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)]
102112
end
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)
190200
end
191201
function hheom!(du, u, p, t)
192-
du[1] = u[3]
193-
du[2] = u[4]
194-
du[3] = -u[1] - 2u[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] - 2u[1]*u[2]
206+
du[4] = -u[2] - (u[1]^2 - u[2]^2)
207+
return nothing
208+
end
197209
end
198210
function 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
205219
end
206220

207221

0 commit comments

Comments
 (0)