Hi,
I got an error with NonlinearSolve.jl v4.12.0 when specifying a trace level different than TraceMinimal(). The following code is taken from the diagnostics API page of the documentation.
using NonlinearSolve
function nlfunc(resid, u0, p)
resid[1] = u0[1] * u0[1] - p
resid[2] = u0[2] * u0[2] - p
resid[3] = u0[3] * u0[3] - p
nothing
end
prob = NonlinearProblem(nlfunc, [1.0, 3.0, 5.0], 2.0)
solve(prob; show_trace = Val(true), trace_level = TraceAll())
Here is the full trace.
Algorithm: NewtonRaphson(
descent = NewtonDescent(),
autodiff = AutoForwardDiff(),
vjp_autodiff = AutoFiniteDiff(
fdtype = Val{:forward}(),
fdjtype = Val{:forward}(),
fdhtype = Val{:hcentral}(),
dir = true
),
jvp_autodiff = AutoForwardDiff(),
concrete_jac = Val{false}()
)
---- ------------- ----------- -------
Iter f(u) inf-norm Step 2-norm cond(J)
---- ------------- ----------- -------
0 2.30000000e+01 0.00000000e+00 5.00000000e+00
ERROR: MethodError: Cannot `convert` an object of type
Nothing to an object of type
AbstractArray
The function `convert` exists, but no method is defined for this combination of argument types.
Closest candidates are:
convert(::Type{T}, ::T) where T
@ Base Base.jl:126
convert(::Type{T}, ::T) where T<:AbstractArray
@ Base abstractarray.jl:16
convert(::Type{T}, ::LinearAlgebra.Factorization) where T<:AbstractArray
@ LinearAlgebra ~/.julia/juliaup/julia-1.11.4+0.x64.linux.gnu/share/julia/stdlib/v1.11/LinearAlgebra/src/factorization.jl:104
...
Stacktrace:
[1] #update_trace!#56
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/tracing.jl:207 [inlined]
[2] update_trace!
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/tracing.jl:186 [inlined]
[3] #update_trace!#57
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/tracing.jl:227 [inlined]
[4] update_trace!
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/tracing.jl:220 [inlined]
[5] step!(cache::NonlinearSolveFirstOrder.GeneralizedFirstOrderAlgorithmCache{…}; recompute_jacobian::Nothing)
@ NonlinearSolveFirstOrder ~/.julia/packages/NonlinearSolveFirstOrder/gwWsK/src/solve.jl:333
[6] step!
@ ~/.julia/packages/NonlinearSolveFirstOrder/gwWsK/src/solve.jl:232 [inlined]
[7] #step!#163
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:500 [inlined]
[8] step!
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:494 [inlined]
[9] solve!(cache::NonlinearSolveFirstOrder.GeneralizedFirstOrderAlgorithmCache{…})
@ NonlinearSolveBase ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:240
[10] __solve(::NonlinearProblem{…}, ::GeneralizedFirstOrderAlgorithm{…}; kwargs::@Kwargs{…})
@ NonlinearSolveBase ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:228
[11] __solve
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:223 [inlined]
[12] macro expansion
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:419 [inlined]
[13] __generated_polysolve(::NonlinearProblem{…}, ::NonlinearSolvePolyAlgorithm{…}; stats::SciMLBase.NLStats, alias_u0::Bool, verbose::Bool, initializealg::NonlinearSolveBase.NonlinearSolveDefaultInit, kwargs::@Kwargs{…})
@ NonlinearSolveBase ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:376
[14] __generated_polysolve
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:376 [inlined]
[15] #__solve#152
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:349 [inlined]
[16] __solve
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:346 [inlined]
[17] #__solve#18
@ ~/.julia/packages/NonlinearSolve/JTN4J/src/default.jl:27 [inlined]
[18] __solve
@ ~/.julia/packages/NonlinearSolve/JTN4J/src/default.jl:24 [inlined]
[19] #__solve#153
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:360 [inlined]
[20] __solve
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:352 [inlined]
[21] #solve_call#139
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:154 [inlined]
[22] solve_call
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:120 [inlined]
[23] solve_up(::NonlinearProblem{…}, ::Nothing, ::Vector{…}, ::Float64; originator::SciMLBase.ChainRulesOriginator, kwargs::@Kwargs{…})
@ NonlinearSolveBase ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:108
[24] solve_up
@ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:101 [inlined]
[25] solve(::NonlinearProblem{…}; sensealg::Nothing, u0::Nothing, p::Nothing, wrap::Val{…}, kwargs::@Kwargs{…})
@ NonlinearSolveBase ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:81
[26] top-level scope
@ ~/Documents/code/julia/RadialCalderon/experiments_private/ex1/ex.jl:45
Some type information was truncated. Use `show(err)` to see complete types.
I have the same error with TraceWithJacobianConditionNumber()
but no error with TraceMinimal()
.
Is this part of the documentation outdated or is this an actual bug?
Thanks in advance!