From caf295c8f01854110e2ae197fc2e2fdfc56009c0 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sat, 4 May 2024 17:57:52 -0400 Subject: [PATCH] Handle Klement --- src/nlsolve/klement.jl | 2 +- src/utils.jl | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/nlsolve/klement.jl b/src/nlsolve/klement.jl index c2c8b44..9ad577e 100644 --- a/src/nlsolve/klement.jl +++ b/src/nlsolve/klement.jl @@ -25,7 +25,7 @@ function SciMLBase.__solve(prob::NonlinearProblem, alg::SimpleKlement, args...; @bb δx² = similar(x) for _ in 1:maxiters - any(iszero, J) && (J = __init_identity_jacobian!!(J)) + any(any(iszero, J)) && (J = __init_identity_jacobian!!(J)) @bb @. δx = fprev / J diff --git a/src/utils.jl b/src/utils.jl index c3eadbc..7398b7f 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -22,6 +22,9 @@ __max_tdir(a, b, x0, x1) = ifelse(x1 > x0, max(a, b), min(a, b)) __standard_tag(::Nothing, f::F, x::AbstractArray{T}) where {F, T} = ForwardDiff.Tag(f, T) __standard_tag(tag::ForwardDiff.Tag, f::F, x::AbstractArray{T}) where {F, T} = tag __standard_tag(tag, f::F, x::AbstractArray{T}) where {F, T} = ForwardDiff.Tag(tag, T) +__standard_tag(::Nothing, f::F, x::T) where {F, T <: Number} = ForwardDiff.Tag(f, T) +__standard_tag(tag::ForwardDiff.Tag, f::F, x::T) where {F, T <: Number} = tag +__standard_tag(tag, f::F, x::T) where {F, T <: Number} = ForwardDiff.Tag(tag, T) __pick_forwarddiff_chunk(x) = ForwardDiff.Chunk(length(x)) function __pick_forwarddiff_chunk(x::StaticArray)