Skip to content

Commit 5283d7b

Browse files
fix composite handling of nothing fsal
1 parent 20e46e7 commit 5283d7b

File tree

1 file changed

+38
-38
lines changed

1 file changed

+38
-38
lines changed

lib/OrdinaryDiffEqCore/src/perform_step/composite_perform_step.jl

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -33,41 +33,41 @@ function initialize!(integrator, cache::DefaultCache)
3333
u = integrator.u
3434
if cache.current == 1
3535
fsalfirst, fsallast = get_fsalfirstlast(cache.cache1, u)
36-
integrator.fsalfirst = fsalfirst
37-
integrator.fsallast = fsallast
36+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
37+
!isnothing(fsallast) && integrator.fsallast = fsallast
3838
initialize!(integrator, cache.cache1)
3939
elseif cache.current == 2
4040
fsalfirst, fsallast = get_fsalfirstlast(cache.cache2, u)
41-
integrator.fsalfirst = fsalfirst
42-
integrator.fsallast = fsallast
41+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
42+
!isnothing(fsallast) && integrator.fsallast = fsallast
4343
initialize!(integrator, cache.cache2)
4444
# the controller was initialized by default for algs[1]
4545
reset_alg_dependent_opts!(integrator.opts.controller, algs[1], algs[2])
4646
elseif cache.current == 3
4747
fsalfirst, fsallast = get_fsalfirstlast(cache.cache3, u)
48-
integrator.fsalfirst = fsalfirst
49-
integrator.fsallast = fsallast
48+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
49+
!isnothing(fsallast) && integrator.fsallast = fsallast
5050
initialize!(integrator, cache.cache3)
5151
# the controller was initialized by default for algs[1]
5252
reset_alg_dependent_opts!(integrator.opts.controller, algs[1], algs[3])
5353
elseif cache.current == 4
5454
fsalfirst, fsallast = get_fsalfirstlast(cache.cache4, u)
55-
integrator.fsalfirst = fsalfirst
56-
integrator.fsallast = fsallast
55+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
56+
!isnothing(fsallast) && integrator.fsallast = fsallast
5757
initialize!(integrator, cache.cache4)
5858
# the controller was initialized by default for algs[1]
5959
reset_alg_dependent_opts!(integrator.opts.controller, algs[1], algs[4])
6060
elseif cache.current == 5
6161
fsalfirst, fsallast = get_fsalfirstlast(cache.cache5, u)
62-
integrator.fsalfirst = fsalfirst
63-
integrator.fsallast = fsallast
62+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
63+
!isnothing(fsallast) && integrator.fsallast = fsallast
6464
initialize!(integrator, cache.cache5)
6565
# the controller was initialized by default for algs[1]
6666
reset_alg_dependent_opts!(integrator.opts.controller, algs[1], algs[5])
6767
elseif cache.current == 6
6868
fsalfirst, fsallast = get_fsalfirstlast(cache.cache6, u)
69-
integrator.fsalfirst = fsalfirst
70-
integrator.fsallast = fsallast
69+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
70+
!isnothing(fsallast) && integrator.fsallast = fsallast
7171
initialize!(integrator, cache.cache6)
7272
# the controller was initialized by default for algs[1]
7373
reset_alg_dependent_opts!(integrator.opts.controller, algs[1], algs[6])
@@ -80,21 +80,21 @@ function initialize!(integrator, cache::CompositeCache)
8080
u = integrator.u
8181
if cache.current == 1
8282
fsalfirst, fsallast = get_fsalfirstlast(cache.caches[1], u)
83-
integrator.fsalfirst = fsalfirst
84-
integrator.fsallast = fsallast
83+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
84+
!isnothing(fsallast) && integrator.fsallast = fsallast
8585
initialize!(integrator, @inbounds(cache.caches[1]))
8686
elseif cache.current == 2
8787
fsalfirst, fsallast = get_fsalfirstlast(cache.caches[2], u)
88-
integrator.fsalfirst = fsalfirst
89-
integrator.fsallast = fsallast
88+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
89+
!isnothing(fsallast) && integrator.fsallast = fsallast
9090
initialize!(integrator, @inbounds(cache.caches[2]))
9191
# the controller was initialized by default for integrator.alg.algs[1]
9292
reset_alg_dependent_opts!(integrator.opts.controller, integrator.alg.algs[1],
9393
integrator.alg.algs[2])
9494
else
9595
fsalfirst, fsallast = get_fsalfirstlast(cache.caches[cache.current], u)
96-
integrator.fsalfirst = fsalfirst
97-
integrator.fsallast = fsallast
96+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
97+
!isnothing(fsallast) && integrator.fsallast = fsallast
9898
initialize!(integrator, @inbounds(cache.caches[cache.current]))
9999
reset_alg_dependent_opts!(integrator.opts.controller, integrator.alg.algs[1],
100100
integrator.alg.algs[cache.current])
@@ -107,13 +107,13 @@ function initialize!(integrator, cache::CompositeCache{Tuple{T1, T2}, F}) where
107107
u = integrator.u
108108
if cache.current == 1
109109
fsalfirst, fsallast = get_fsalfirstlast(cache.caches[1], u)
110-
integrator.fsalfirst = fsalfirst
111-
integrator.fsallast = fsallast
110+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
111+
!isnothing(fsallast) && integrator.fsallast = fsallast
112112
initialize!(integrator, @inbounds(cache.caches[1]))
113113
elseif cache.current == 2
114114
fsalfirst, fsallast = get_fsalfirstlast(cache.caches[2], u)
115-
integrator.fsalfirst = fsalfirst
116-
integrator.fsallast = fsallast
115+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
116+
!isnothing(fsallast) && integrator.fsallast = fsallast
117117
initialize!(integrator, @inbounds(cache.caches[2]))
118118
reset_alg_dependent_opts!(integrator.opts.controller, integrator.alg.algs[1],
119119
integrator.alg.algs[2])
@@ -173,13 +173,13 @@ function choose_algorithm!(integrator,
173173
cache.current = new_current
174174
if new_current == 1
175175
fsalfirst, fsallast = get_fsalfirstlast(cache.caches[1], u)
176-
integrator.fsalfirst = fsalfirst
177-
integrator.fsallast = fsallast
176+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
177+
!isnothing(fsallast) && integrator.fsallast = fsallast
178178
initialize!(integrator, @inbounds(cache.caches[1]))
179179
elseif new_current == 2
180180
fsalfirst, fsallast = get_fsalfirstlast(cache.caches[2], u)
181-
integrator.fsalfirst = fsalfirst
182-
integrator.fsallast = fsallast
181+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
182+
!isnothing(fsallast) && integrator.fsallast = fsallast
183183
initialize!(integrator, @inbounds(cache.caches[2]))
184184
end
185185
if old_current == 1 && new_current == 2
@@ -206,38 +206,38 @@ function choose_algorithm!(integrator, cache::DefaultCache)
206206
init_ith_default_cache(cache, algs, new_current)
207207
if new_current == 1
208208
fsalfirst, fsallast = get_fsalfirstlast(cache.cache1, u)
209-
integrator.fsalfirst = fsalfirst
210-
integrator.fsallast = fsallast
209+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
210+
!isnothing(fsallast) && integrator.fsallast = fsallast
211211
initialize!(integrator, @inbounds(cache.cache1))
212212
new_cache = cache.cache1
213213
elseif new_current == 2
214214
fsalfirst, fsallast = get_fsalfirstlast(cache.cache2, u)
215-
integrator.fsalfirst = fsalfirst
216-
integrator.fsallast = fsallast
215+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
216+
!isnothing(fsallast) && integrator.fsallast = fsallast
217217
initialize!(integrator, @inbounds(cache.cache2))
218218
new_cache = cache.cache2
219219
elseif new_current == 3
220220
fsalfirst, fsallast = get_fsalfirstlast(cache.cache3, u)
221-
integrator.fsalfirst = fsalfirst
222-
integrator.fsallast = fsallast
221+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
222+
!isnothing(fsallast) && integrator.fsallast = fsallast
223223
initialize!(integrator, @inbounds(cache.cache3))
224224
new_cache = cache.cache3
225225
elseif new_current == 4
226226
fsalfirst, fsallast = get_fsalfirstlast(cache.cache4, u)
227-
integrator.fsalfirst = fsalfirst
228-
integrator.fsallast = fsallast
227+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
228+
!isnothing(fsallast) && integrator.fsallast = fsallast
229229
initialize!(integrator, @inbounds(cache.cache4))
230230
new_cache = cache.cache4
231231
elseif new_current == 5
232232
fsalfirst, fsallast = get_fsalfirstlast(cache.cache5, u)
233-
integrator.fsalfirst = fsalfirst
234-
integrator.fsallast = fsallast
233+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
234+
!isnothing(fsallast) && integrator.fsallast = fsallast
235235
initialize!(integrator, @inbounds(cache.cache5))
236236
new_cache = cache.cache5
237237
elseif new_current == 6
238238
fsalfirst, fsallast = get_fsalfirstlast(cache.cache6, u)
239-
integrator.fsalfirst = fsalfirst
240-
integrator.fsallast = fsallast
239+
!isnothing(fsalfirst) && integrator.fsalfirst = fsalfirst
240+
!isnothing(fsallast) && integrator.fsallast = fsallast
241241
initialize!(integrator, @inbounds(cache.cache6))
242242
new_cache = cache.cache6
243243
end

0 commit comments

Comments
 (0)