@@ -30,112 +30,112 @@ end
3030end
3131
3232@muladd function _ode_interpolant (Θ, dt, y₀, y₁, k,
33- cache:: Union{DPRKN6ConstantCache, DPRKN6Cache} ,
34- idxs:: Nothing , T:: Type{Val{0}} , differential_vars:: Nothing )
35- @dprkn6pre0
36- return ArrayPartition (
37- duprev +
38- dt * Θ *
39- (bp1Θ * k1 + bp3Θ * k3 +
40- bp4Θ * k4 + bp5Θ * k5 + bp6Θ * k6),
41- uprev +
42- dt * Θ *
43- (duprev +
44- dt * Θ * (b1Θ * k1 + b3Θ * k3 +
45- b4Θ * k4 + b5Θ * k5 + b6Θ * k6)))
33+ cache:: Union{DPRKN6ConstantCache, DPRKN6Cache} ,
34+ idxs:: Nothing , T:: Type{Val{0}} , differential_vars:: Nothing )
35+ @dprkn6pre0
36+ return ArrayPartition (
37+ duprev +
38+ dt * Θ *
39+ (bp1Θ * k1 + bp3Θ * k3 +
40+ bp4Θ * k4 + bp5Θ * k5 + bp6Θ * k6),
41+ uprev +
42+ dt * Θ *
43+ (duprev +
44+ dt * Θ * (b1Θ * k1 + b3Θ * k3 +
45+ b4Θ * k4 + b5Θ * k5 + b6Θ * k6)))
4646end
4747
4848@muladd function _ode_interpolant (Θ, dt, y₀, y₁, k,
49- cache:: Union{DPRKN6ConstantCache, DPRKN6Cache} , idxs,
50- T:: Type{Val{0}} , differential_vars:: Nothing )
51- @dprkn6pre0
52- return ArrayPartition (
53- duprev[idxs] +
54- dt * Θ *
55- (bp1Θ * k1[idxs] + bp3Θ * k3[idxs] +
56- bp4Θ * k4[idxs] + bp5Θ * k5[idxs] + bp6Θ * k6[idxs]),
57- uprev[idxs] +
58- dt * Θ *
59- (duprev[idxs] +
60- dt * Θ *
61- (b1Θ * k1[idxs] +
62- b3Θ * k3[idxs] +
63- b4Θ * k4[idxs] + b5Θ * k5[idxs] + b6Θ * k6[idxs])))
49+ cache:: Union{DPRKN6ConstantCache, DPRKN6Cache} , idxs,
50+ T:: Type{Val{0}} , differential_vars:: Nothing )
51+ @dprkn6pre0
52+ return ArrayPartition (
53+ duprev[idxs] +
54+ dt * Θ *
55+ (bp1Θ * k1[idxs] + bp3Θ * k3[idxs] +
56+ bp4Θ * k4[idxs] + bp5Θ * k5[idxs] + bp6Θ * k6[idxs]),
57+ uprev[idxs] +
58+ dt * Θ *
59+ (duprev[idxs] +
60+ dt * Θ *
61+ (b1Θ * k1[idxs] +
62+ b3Θ * k3[idxs] +
63+ b4Θ * k4[idxs] + b5Θ * k5[idxs] + b6Θ * k6[idxs])))
6464end
6565
6666@muladd function _ode_interpolant (Θ, dt, y₀, y₁, k,
67- cache:: Union{DPRKN6ConstantCache, DPRKN6Cache} , idxs:: Number ,
68- T:: Type{Val{0}} , differential_vars:: Nothing )
69- @dprkn6pre0
70- halfsize = length (y₀) ÷ 2
71- if idxs <= halfsize
72- duprev[idxs] +
73- dt * Θ *
74- (bp1Θ * k1[idxs] + bp3Θ * k3[idxs] +
75- bp4Θ * k4[idxs] + bp5Θ * k5[idxs] + bp6Θ * k6[idxs])
76- else
77- idxs = idxs - halfsize
78- uprev[idxs] +
79- dt * Θ *
80- (duprev[idxs] +
81- dt * Θ *
82- (b1Θ * k1[idxs] +
83- b3Θ * k3[idxs] +
84- b4Θ * k4[idxs] + b5Θ * k5[idxs] + b6Θ * k6[idxs]))
85- end
67+ cache:: Union{DPRKN6ConstantCache, DPRKN6Cache} , idxs:: Number ,
68+ T:: Type{Val{0}} , differential_vars:: Nothing )
69+ @dprkn6pre0
70+ halfsize = length (y₀) ÷ 2
71+ if idxs <= halfsize
72+ duprev[idxs] +
73+ dt * Θ *
74+ (bp1Θ * k1[idxs] + bp3Θ * k3[idxs] +
75+ bp4Θ * k4[idxs] + bp5Θ * k5[idxs] + bp6Θ * k6[idxs])
76+ else
77+ idxs = idxs - halfsize
78+ uprev[idxs] +
79+ dt * Θ *
80+ (duprev[idxs] +
81+ dt * Θ *
82+ (b1Θ * k1[idxs] +
83+ b3Θ * k3[idxs] +
84+ b4Θ * k4[idxs] + b5Θ * k5[idxs] + b6Θ * k6[idxs]))
85+ end
8686end
8787
8888@muladd function _ode_interpolant! (out, Θ, dt, y₀, y₁, k,
89- cache:: Union{DPRKN6ConstantCache, DPRKN6Cache} ,
90- idxs:: Nothing , T:: Type{Val{0}} , differential_vars:: Nothing )
91- @dprkn6pre0
92- @inbounds @. . broadcast= false out. x[2 ]= uprev +
93- dt * Θ *
94- (duprev +
95- dt * Θ *
96- (b1Θ * k1 +
97- b3Θ * k3 +
98- b4Θ * k4 + b5Θ * k5 + b6Θ * k6))
99- @inbounds @. . broadcast= false out. x[1 ]= duprev +
100- dt * Θ *
101- (bp1Θ * k1 + bp3Θ * k3 +
102- bp4Θ * k4 + bp5Θ * k5 + bp6Θ * k6)
103- # for i in eachindex(out.x[1])
104- # out.x[2][i] = uprev[i] + dt*Θ*(duprev[i] + dt*Θ*(b1Θ*k1[i] +
105- # b3Θ*k3[i] +
106- # b4Θ*k4[i] + b5Θ*k5[i] + b6Θ*k6[i]))
107- # out.x[1][i] = duprev[i] + dt*Θ*(bp1Θ*k1[i] + bp3Θ*k3[i] +
108- # bp4Θ*k4[i] + bp5Θ*k5[i] + bp6Θ*k6[i])
109- # end
110- out
89+ cache:: Union{DPRKN6ConstantCache, DPRKN6Cache} ,
90+ idxs:: Nothing , T:: Type{Val{0}} , differential_vars:: Nothing )
91+ @dprkn6pre0
92+ @inbounds @. . broadcast= false out. x[2 ]= uprev +
93+ dt * Θ *
94+ (duprev +
95+ dt * Θ *
96+ (b1Θ * k1 +
97+ b3Θ * k3 +
98+ b4Θ * k4 + b5Θ * k5 + b6Θ * k6))
99+ @inbounds @. . broadcast= false out. x[1 ]= duprev +
100+ dt * Θ *
101+ (bp1Θ * k1 + bp3Θ * k3 +
102+ bp4Θ * k4 + bp5Θ * k5 + bp6Θ * k6)
103+ # for i in eachindex(out.x[1])
104+ # out.x[2][i] = uprev[i] + dt*Θ*(duprev[i] + dt*Θ*(b1Θ*k1[i] +
105+ # b3Θ*k3[i] +
106+ # b4Θ*k4[i] + b5Θ*k5[i] + b6Θ*k6[i]))
107+ # out.x[1][i] = duprev[i] + dt*Θ*(bp1Θ*k1[i] + bp3Θ*k3[i] +
108+ # bp4Θ*k4[i] + bp5Θ*k5[i] + bp6Θ*k6[i])
109+ # end
110+ out
111111end
112112
113113@muladd function _ode_interpolant! (out, Θ, dt, y₀, y₁, k,
114- cache:: Union{DPRKN6ConstantCache, DPRKN6Cache} , idxs,
115- T:: Type{Val{0}} , differential_vars:: Nothing )
116- @dprkn6pre0
117- halfsize = length (y₀) ÷ 2
118- isfirsthalf = idxs .<= halfsize
119- secondhalf = idxs .> halfsize
120- firstidxs = idxs[isfirsthalf]
121- secondidxs_shifted = idxs[secondhalf]
122- secondidxs = secondidxs_shifted .- halfsize
114+ cache:: Union{DPRKN6ConstantCache, DPRKN6Cache} , idxs,
115+ T:: Type{Val{0}} , differential_vars:: Nothing )
116+ @dprkn6pre0
117+ halfsize = length (y₀) ÷ 2
118+ isfirsthalf = idxs .<= halfsize
119+ secondhalf = idxs .> halfsize
120+ firstidxs = idxs[isfirsthalf]
121+ secondidxs_shifted = idxs[secondhalf]
122+ secondidxs = secondidxs_shifted .- halfsize
123123
124- @views @. . broadcast= false out[secondhalf]= uprev[secondidxs] +
125- dt * Θ *
126- (duprev[secondidxs] +
127- dt * Θ *
128- (b1Θ * k1[secondidxs] +
129- b3Θ * k3[secondidxs] +
130- b4Θ * k4[secondidxs] +
131- b5Θ * k5[secondidxs] +
132- b6Θ * k6[secondidxs]))
133- @views @. . broadcast= false out[isfirsthalf]= duprev[firstidxs] +
134- dt * Θ *
135- (bp1Θ * k1[firstidxs] +
136- bp3Θ * k3[firstidxs] +
137- bp4Θ * k4[firstidxs] +
138- bp5Θ * k5[firstidxs] +
139- bp6Θ * k6[firstidxs])
140- out
141- end
124+ @views @. . broadcast= false out[secondhalf]= uprev[secondidxs] +
125+ dt * Θ *
126+ (duprev[secondidxs] +
127+ dt * Θ *
128+ (b1Θ * k1[secondidxs] +
129+ b3Θ * k3[secondidxs] +
130+ b4Θ * k4[secondidxs] +
131+ b5Θ * k5[secondidxs] +
132+ b6Θ * k6[secondidxs]))
133+ @views @. . broadcast= false out[isfirsthalf]= duprev[firstidxs] +
134+ dt * Θ *
135+ (bp1Θ * k1[firstidxs] +
136+ bp3Θ * k3[firstidxs] +
137+ bp4Θ * k4[firstidxs] +
138+ bp5Θ * k5[firstidxs] +
139+ bp6Θ * k6[firstidxs])
140+ out
141+ end
0 commit comments