@@ -63,7 +63,7 @@ function initialize!(integrator, cache::RadauIIA3Cache)
63
63
end
64
64
65
65
function initialize! (integrator, cache:: RadauIIA5ConstantCache )
66
- integrator. kshortsize = 2
66
+ integrator. kshortsize = 5
67
67
integrator. k = typeof (integrator. k)(undef, integrator. kshortsize)
68
68
integrator. fsalfirst = integrator. f (integrator. uprev, integrator. p, integrator. t) # Pre-start fsal
69
69
OrdinaryDiffEqCore. increment_nf! (integrator. stats, 1 )
@@ -72,8 +72,9 @@ function initialize!(integrator, cache::RadauIIA5ConstantCache)
72
72
integrator. fsallast = zero (integrator. fsalfirst)
73
73
integrator. k[1 ] = integrator. fsalfirst
74
74
integrator. k[2 ] = integrator. fsallast
75
- integrator. f (integrator. fsalfirst, integrator. uprev, integrator. p, integrator. t)
76
- OrdinaryDiffEqCore. increment_nf! (integrator. stats, 1 )
75
+ integrator. k[3 ] = zero (integrator. fsalfirst)
76
+ integrator. k[4 ] = zero (integrator. fsalfirst)
77
+ integrator. k[5 ] = zero (integrator. fsalfirst)
77
78
nothing
78
79
end
79
80
@@ -110,8 +111,11 @@ function initialize!(integrator, cache::RadauIIA9ConstantCache)
110
111
integrator. fsallast = zero (integrator. fsalfirst)
111
112
integrator. k[1 ] = integrator. fsalfirst
112
113
integrator. k[2 ] = integrator. fsallast
113
- integrator. f (integrator. fsalfirst, integrator. uprev, integrator. p, integrator. t)
114
- OrdinaryDiffEqCore. increment_nf! (integrator. stats, 1 )
114
+ integrator. k[3 ] = zero (integrator. fsalfirst)
115
+ integrator. k[4 ] = zero (integrator. fsalfirst)
116
+ integrator. k[5 ] = zero (integrator. fsalfirst)
117
+ integrator. k[6 ] = zero (integrator. fsalfirst)
118
+ integrator. k[7 ] = zero (integrator. fsalfirst)
115
119
nothing
116
120
end
117
121
@@ -140,6 +144,23 @@ function initialize!(integrator, cache::RadauIIA9Cache)
140
144
nothing
141
145
end
142
146
147
+ function initialize! (integrator, cache:: AdaptiveRadauConstantCache )
148
+ max_stages = (integrator. alg. max_order - 1 ) ÷ 4 * 2 + 1
149
+ integrator. kshortsize = max_stages + 2
150
+ integrator. k = typeof (integrator. k)(undef, integrator. kshortsize)
151
+ integrator. fsalfirst = integrator. f (integrator. uprev, integrator. p, integrator. t) # Pre-start fsal
152
+ OrdinaryDiffEqCore. increment_nf! (integrator. stats, 1 )
153
+
154
+ # Avoid undefined entries if k is an array of arrays
155
+ integrator. fsallast = zero (integrator. fsalfirst)
156
+ integrator. k[1 ] = integrator. fsalfirst
157
+ integrator. k[2 ] = integrator. fsallast
158
+ for i in 3 : max_stages + 2
159
+ integrator. k[i] = zero (integrator. fsallast)
160
+ end
161
+ nothing
162
+ end
163
+
143
164
function initialize! (integrator, cache:: AdaptiveRadauCache )
144
165
max_stages = (integrator. alg. max_order - 1 ) ÷ 4 * 2 + 1
145
166
integrator. kshortsize = max_stages + 2
616
637
if alg. extrapolant != :constant
617
638
integrator. k[3 ] = (z2 - z3)/ c2m1
618
639
tmp = @. . (z1 - z2)/ c1mc2
619
- integrator. k[4 ] = (tmp - cache . cont1 )/ c1m1
620
- integrator. k[5 ] = cache . cont2 - (tmp - z1 / c1) / c2
640
+ integrator. k[4 ] = (tmp - integrator . k[ 3 ] )/ c1m1
641
+ integrator. k[5 ] = integrator . k[ 4 ] - (tmp - z1 / c1) / c2
621
642
end
622
643
end
623
644
0 commit comments