@@ -206,21 +206,25 @@ function build_nlsolver(
206
206
if nlalg isa NonlinearSolveAlg
207
207
α = tTypeNoUnits (α)
208
208
dt = tTypeNoUnits (dt)
209
- if isdae
210
- nlf = (ztmp, z, p) -> begin
211
- tmp, ustep, γ, α, tstep, k, invγdt, _p, dt, f = p
212
- _compute_rhs! (tmp, ztmp, ustep, γ, α, tstep, k, invγdt, _p, dt, f, z)[1 ]
213
- end
214
- nlp_params = (tmp, ustep, γ, α, tstep, k, invγdt, p, dt, f)
209
+ prob = if __has_nlprob_data (f)
210
+ f. nlprob_data. nlprob
215
211
else
216
- nlf = (ztmp, z, p) -> begin
217
- tmp, ustep, γ, α, tstep, k, invγdt, method, _p, dt, f = p
218
- _compute_rhs! (
219
- tmp, ztmp, ustep, γ, α, tstep, k, invγdt, method, _p, dt, f, z)[1 ]
212
+ if isdae
213
+ nlf = (ztmp, z, p) -> begin
214
+ tmp, ustep, γ, α, tstep, k, invγdt, _p, dt, f = p
215
+ _compute_rhs! (tmp, ztmp, ustep, γ, α, tstep, k, invγdt, _p, dt, f, z)[1 ]
216
+ end
217
+ nlp_params = (tmp, ustep, γ, α, tstep, k, invγdt, p, dt, f)
218
+ else
219
+ nlf = (ztmp, z, p) -> begin
220
+ tmp, ustep, γ, α, tstep, k, invγdt, method, _p, dt, f = p
221
+ _compute_rhs! (
222
+ tmp, ztmp, ustep, γ, α, tstep, k, invγdt, method, _p, dt, f, z)[1 ]
223
+ end
224
+ nlp_params = (tmp, ustep, γ, α, tstep, k, invγdt, DIRK, p, dt, f)
220
225
end
221
- nlp_params = (tmp, ustep, γ, α, tstep, k, invγdt, DIRK, p, dt, f )
226
+ NonlinearProblem ( NonlinearFunction (nlf), ztmp, nlp_params )
222
227
end
223
- prob = NonlinearProblem (NonlinearFunction (nlf), ztmp, nlp_params)
224
228
cache = init (prob, nlalg. alg)
225
229
nlcache = NonlinearSolveCache (ustep, tstep, k, atmp, invγdt, prob, cache)
226
230
else
@@ -291,20 +295,24 @@ function build_nlsolver(
291
295
if nlalg isa NonlinearSolveAlg
292
296
α = tTypeNoUnits (α)
293
297
dt = tTypeNoUnits (dt)
294
- if isdae
295
- nlf = (z, p) -> begin
296
- tmp, α, tstep, invγdt, _p, dt, uprev, f = p
297
- _compute_rhs (tmp, α, tstep, invγdt, p, dt, uprev, f, z)[1 ]
298
- end
299
- nlp_params = (tmp, α, tstep, invγdt, _p, dt, uprev, f)
298
+ prob = if __has_nlprob_data (f)
299
+ f. nlprob_data. nlprob
300
300
else
301
- nlf = (z, p) -> begin
302
- tmp, γ, α, tstep, invγdt, method, _p, dt, f = p
303
- _compute_rhs (tmp, γ, α, tstep, invγdt, method, _p, dt, f, z)[1 ]
301
+ if isdae
302
+ nlf = (z, p) -> begin
303
+ tmp, α, tstep, invγdt, _p, dt, uprev, f = p
304
+ _compute_rhs (tmp, α, tstep, invγdt, p, dt, uprev, f, z)[1 ]
305
+ end
306
+ nlp_params = (tmp, α, tstep, invγdt, _p, dt, uprev, f)
307
+ else
308
+ nlf = (z, p) -> begin
309
+ tmp, γ, α, tstep, invγdt, method, _p, dt, f = p
310
+ _compute_rhs (tmp, γ, α, tstep, invγdt, method, _p, dt, f, z)[1 ]
311
+ end
312
+ nlp_params = (tmp, γ, α, tstep, invγdt, DIRK, p, dt, f)
304
313
end
305
- nlp_params = (tmp, γ, α, tstep, invγdt, DIRK, p, dt, f )
314
+ NonlinearProblem ( NonlinearFunction (nlf), copy (ztmp), nlp_params )
306
315
end
307
- prob = NonlinearProblem (NonlinearFunction (nlf), copy (ztmp), nlp_params)
308
316
cache = init (prob, nlalg. alg)
309
317
nlcache = NonlinearSolveCache (
310
318
nothing , tstep, nothing , nothing , invγdt, prob, cache)
0 commit comments