diff --git a/lib/NonlinearSolveBase/src/termination_conditions.jl b/lib/NonlinearSolveBase/src/termination_conditions.jl index de9ac1392..771c2517f 100644 --- a/lib/NonlinearSolveBase/src/termination_conditions.jl +++ b/lib/NonlinearSolveBase/src/termination_conditions.jl @@ -98,10 +98,12 @@ function SciMLBase.reinit!( length(saved_value_prototype) != 0 && (cache.saved_values = saved_value_prototype) mode = cache.mode - if u isa Number || !ArrayInterface.can_setindex(u) - cache.u = u - else - cache.u .= u + if cache.u !== nothing + if u isa Number || !ArrayInterface.can_setindex(u) + cache.u = u + else + cache.u .= u + end end cache.retcode = ReturnCode.Default diff --git a/lib/NonlinearSolveBase/test/runtests.jl b/lib/NonlinearSolveBase/test/runtests.jl index 8f4f4d8a1..95ae283cc 100644 --- a/lib/NonlinearSolveBase/test/runtests.jl +++ b/lib/NonlinearSolveBase/test/runtests.jl @@ -33,4 +33,20 @@ using InteractiveUtils, Test @test NonlinearSolveBase.Utils.faster_vcat(b, d) == vcat(sparse(b), d) end + + @testset "Termination Conditions" begin + using NonlinearSolveBase, SciMLBase + @testset "reinit! with AbsTerminationMode" begin + mode = NonlinearSolveBase.AbsTerminationMode() + u_unaliased = nothing + T = Float64 + cache = NonlinearSolveBase.NonlinearTerminationModeCache( + u_unaliased, SciMLBase.ReturnCode.Default, 1e-8, 1e-8, Inf, mode, + nothing, nothing, 0, nothing, nothing, nothing, nothing, nothing, false + ) + du = [1.0, 1.0] + u = [1.1, 1.1] + @test_nowarn SciMLBase.reinit!(cache, du, u) + end + end end