@@ -353,6 +353,11 @@ tab::Tab
353353ηold:: Tol
354354iter:: Int
355355tmp:: uType
356+ tmp2:: uType
357+ tmp3:: uType
358+ tmp4:: uType
359+ tmp5:: uType
360+ tmp6:: uType
356361atmp:: uNoUnitsType
357362jac_config:: JC
358363linsolve1:: F1
@@ -368,94 +373,99 @@ end
368373TruncatedStacktraces. @truncate_stacktrace RadauIIA7Cache 1
369374
370375function alg_cache (alg:: RadauIIA7 , u, rate_prototype, :: Type{uEltypeNoUnits} ,
371- :: Type{uBottomEltypeNoUnits} ,
372- :: Type{tTypeNoUnits} , uprev, uprev2, f, t, dt, reltol, p, calck,
373- :: Val{true} ) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits}
374- uf = UJacobianWrapper (f, t, p)
375- uToltype = constvalue (uBottomEltypeNoUnits)
376- tab = RadauIIA7Tableau (uToltype, constvalue (tTypeNoUnits))
377-
378- κ = alg. κ != = nothing ? convert (uToltype, alg. κ) : convert (uToltype, 1 // 100 )
379-
380- z1 = zero (u)
381- z2 = zero (u)
382- z3 = zero (u)
383- z4 = zero (u)
384- z5 = zero (u)
385- w1 = zero (u)
386- w2 = zero (u)
387- w3 = zero (u)
388- w4 = zero (u)
389- w5 = zero (u)
390- dw1 = zero (u)
391- ubuff = zero (u)
392- dw23 = similar (u, Complex{eltype (u)})
393- dw45 = similar (u, Complex{eltype (u)})
394- recursivefill! (dw23, false )
395- recursivefill! (dw45, false )
396- cubuff1 = similar (u, Complex{eltype (u)})
397- cubuff2 = similar (u, Complex{eltype (u)})
398- recursivefill! (cubuff1, false )
399- recursivefill! (cubuff2, false )
400- cont1 = zero (u)
401- cont2 = zero (u)
402- cont3 = zero (u)
403- cont4 = zero (u)
404-
405- fsalfirst = zero (rate_prototype)
406- k = zero (rate_prototype)
407- k2 = zero (rate_prototype)
408- k3 = zero (rate_prototype)
409- k4 = zero (rate_prototype)
410- k5 = zero (rate_prototype)
411- fw1 = zero (rate_prototype)
412- fw2 = zero (rate_prototype)
413- fw3 = zero (rate_prototype)
414- fw4 = zero (rate_prototype)
415- fw5 = zero (rate_prototype)
416-
417- J, W1 = build_J_W (alg, u, uprev, p, t, dt, f, uEltypeNoUnits, Val (true ))
418- if J isa AbstractSciMLOperator
419- error (" Non-concrete Jacobian not yet supported by RadauIIA5." )
420- end
421- W2 = similar (J, Complex{eltype (W1)})
422- W3 = similar (J, Complex{eltype (W1)})
423- recursivefill! (W2, false )
424- recursivefill! (W3, false )
425-
426- du1 = zero (rate_prototype)
427-
428- tmp = zero (u)
429- atmp = similar (u, uEltypeNoUnits)
430- recursivefill! (atmp, false )
431- jac_config = build_jac_config (alg, f, uf, du1, uprev, u, tmp, dw1)
432-
433- linprob = LinearProblem (W1, _vec (ubuff); u0 = _vec (dw1))
434- linsolve1 = init (linprob, alg. linsolve, alias_A = true , alias_b = true ,
435- assumptions = LinearSolve. OperatorAssumptions (true ))
436- # Pl = LinearSolve.InvPreconditioner(Diagonal(_vec(weight))),
437- # Pr = Diagonal(_vec(weight)))
438- linprob = LinearProblem (W2, _vec (cubuff1); u0 = _vec (dw23))
439- linsolve2 = init (linprob, alg. linsolve, alias_A = true , alias_b = true ,
440- assumptions = LinearSolve. OperatorAssumptions (true ))
441- # Pl = LinearSolve.InvPreconditioner(Diagonal(_vec(weight))),
442- # Pr = Diagonal(_vec(weight)))
443- linprob = LinearProblem (W3, _vec (cubuff2); u0 = _vec (dw45))
444- linsolve3 = init (linprob, alg. linsolve, alias_A = true , alias_b = true ,
445- assumptions = LinearSolve. OperatorAssumptions (true ))
446- # Pl = LinearSolve.InvPreconditioner(Diagonal(_vec(weight))),
447- # Pr = Diagonal(_vec(weight)))
448-
449-
450- rtol = reltol isa Number ? reltol : zero (reltol)
451- atol = reltol isa Number ? reltol : zero (reltol)
452-
453- RadauIIA7Cache (u, uprev,
454- z1, z2, z3, z4, z5, w1, w2, w3, w4, w5,
455- dw1, ubuff, dw23, dw45, cubuff1, cubuff2, cont1, cont2, cont3, cont4,
456- du1, fsalfirst, k, k2, k3, k4, k5, fw1, fw2, fw3, fw4, fw5,
457- J, W1, W2, W3,
458- uf, tab, κ, one (uToltype), 10000 ,
459- tmp, atmp, jac_config, linsolve1, linsolve2, linsolve3, rtol, atol, dt, dt,
460- Convergence, alg. step_limiter!)
376+ :: Type{uBottomEltypeNoUnits} ,
377+ :: Type{tTypeNoUnits} , uprev, uprev2, f, t, dt, reltol, p, calck,
378+ :: Val{true} ) where {uEltypeNoUnits, uBottomEltypeNoUnits, tTypeNoUnits}
379+ uf = UJacobianWrapper (f, t, p)
380+ uToltype = constvalue (uBottomEltypeNoUnits)
381+ tab = RadauIIA7Tableau (uToltype, constvalue (tTypeNoUnits))
382+
383+ κ = alg. κ != = nothing ? convert (uToltype, alg. κ) : convert (uToltype, 1 // 100 )
384+
385+ z1 = zero (u)
386+ z2 = zero (u)
387+ z3 = zero (u)
388+ z4 = zero (u)
389+ z5 = zero (u)
390+ w1 = zero (u)
391+ w2 = zero (u)
392+ w3 = zero (u)
393+ w4 = zero (u)
394+ w5 = zero (u)
395+ dw1 = zero (u)
396+ ubuff = zero (u)
397+ dw23 = similar (u, Complex{eltype (u)})
398+ dw45 = similar (u, Complex{eltype (u)})
399+ recursivefill! (dw23, false )
400+ recursivefill! (dw45, false )
401+ cubuff1 = similar (u, Complex{eltype (u)})
402+ cubuff2 = similar (u, Complex{eltype (u)})
403+ recursivefill! (cubuff1, false )
404+ recursivefill! (cubuff2, false )
405+ cont1 = zero (u)
406+ cont2 = zero (u)
407+ cont3 = zero (u)
408+ cont4 = zero (u)
409+
410+ fsalfirst = zero (rate_prototype)
411+ k = zero (rate_prototype)
412+ k2 = zero (rate_prototype)
413+ k3 = zero (rate_prototype)
414+ k4 = zero (rate_prototype)
415+ k5 = zero (rate_prototype)
416+ fw1 = zero (rate_prototype)
417+ fw2 = zero (rate_prototype)
418+ fw3 = zero (rate_prototype)
419+ fw4 = zero (rate_prototype)
420+ fw5 = zero (rate_prototype)
421+
422+ J, W1 = build_J_W (alg, u, uprev, p, t, dt, f, uEltypeNoUnits, Val (true ))
423+ if J isa AbstractSciMLOperator
424+ error (" Non-concrete Jacobian not yet supported by RadauIIA5." )
425+ end
426+ W2 = similar (J, Complex{eltype (W1)})
427+ W3 = similar (J, Complex{eltype (W1)})
428+ recursivefill! (W2, false )
429+ recursivefill! (W3, false )
430+
431+ du1 = zero (rate_prototype)
432+
433+ tmp = zero (u)
434+ tmp2 = zero (u)
435+ tmp3 = zero (u)
436+ tmp4 = zero (u)
437+ tmp5 = zero (u)
438+ tmp6 = zero (u)
439+ atmp = similar (u, uEltypeNoUnits)
440+ recursivefill! (atmp, false )
441+ jac_config = build_jac_config (alg, f, uf, du1, uprev, u, tmp, dw1)
442+
443+ linprob = LinearProblem (W1, _vec (ubuff); u0 = _vec (dw1))
444+ linsolve1 = init (linprob, alg. linsolve, alias_A = true , alias_b = true ,
445+ assumptions = LinearSolve. OperatorAssumptions (true ))
446+ # Pl = LinearSolve.InvPreconditioner(Diagonal(_vec(weight))),
447+ # Pr = Diagonal(_vec(weight)))
448+ linprob = LinearProblem (W2, _vec (cubuff1); u0 = _vec (dw23))
449+ linsolve2 = init (linprob, alg. linsolve, alias_A = true , alias_b = true ,
450+ assumptions = LinearSolve. OperatorAssumptions (true ))
451+ # Pl = LinearSolve.InvPreconditioner(Diagonal(_vec(weight))),
452+ # Pr = Diagonal(_vec(weight)))
453+ linprob = LinearProblem (W3, _vec (cubuff2); u0 = _vec (dw45))
454+ linsolve3 = init (linprob, alg. linsolve, alias_A = true , alias_b = true ,
455+ assumptions = LinearSolve. OperatorAssumptions (true ))
456+ # Pl = LinearSolve.InvPreconditioner(Diagonal(_vec(weight))),
457+ # Pr = Diagonal(_vec(weight)))
458+
459+
460+ rtol = reltol isa Number ? reltol : zero (reltol)
461+ atol = reltol isa Number ? reltol : zero (reltol)
462+
463+ RadauIIA7Cache (u, uprev,
464+ z1, z2, z3, z4, z5, w1, w2, w3, w4, w5,
465+ dw1, ubuff, dw23, dw45, cubuff1, cubuff2, cont1, cont2, cont3, cont4,
466+ du1, fsalfirst, k, k2, k3, k4, k5, fw1, fw2, fw3, fw4, fw5,
467+ J, W1, W2, W3,
468+ uf, tab, κ, one (uToltype), 10000 ,
469+ tmp, tmp2, tmp3, tmp4, tmp5, tmp6, atmp, jac_config, linsolve1, linsolve2, linsolve3, rtol, atol, dt, dt,
470+ Convergence, alg. step_limiter!)
461471end
0 commit comments