diff --git a/docs/src/basics/Logging.md b/docs/src/basics/Logging.md index 093532c8f..59affe3d1 100644 --- a/docs/src/basics/Logging.md +++ b/docs/src/basics/Logging.md @@ -49,6 +49,11 @@ sol = solve(prob; trace_level = TraceAll(), store_trace = Val(true)); sol.trace ``` +!!! note + + For `iteration == 0` only the `norm(fu, Inf)` is guaranteed to be meaningful. The other + values being meaningful are solver dependent. + ## API ```@docs diff --git a/src/gaussnewton.jl b/src/gaussnewton.jl index 6010618cf..760cbfb93 100644 --- a/src/gaussnewton.jl +++ b/src/gaussnewton.jl @@ -109,7 +109,7 @@ function SciMLBase.__init(prob::NonlinearLeastSquaresProblem{uType, iip}, alg_:: abstol, reltol, tc_cache_1 = init_termination_cache(abstol, reltol, fu1, u, termination_condition) _, _, tc_cache_2 = init_termination_cache(abstol, reltol, fu1, u, termination_condition) - trace = init_nonlinearsolve_trace(alg, u, fu1, J, du; kwargs...) + trace = init_nonlinearsolve_trace(alg, u, fu1, apply(zero, J), du; kwargs...) return GaussNewtonCache{iip}(f, alg, u, copy(u), fu1, fu2, zero(fu1), du, p, uf, linsolve, J, JᵀJ, Jᵀf, jac_cache, false, maxiters, internalnorm, ReturnCode.Default, diff --git a/src/levenberg.jl b/src/levenberg.jl index 9b11151fa..f571d7b9f 100644 --- a/src/levenberg.jl +++ b/src/levenberg.jl @@ -221,7 +221,7 @@ function SciMLBase.__init(prob::Union{NonlinearProblem{uType, iip}, tc_cache_2 = nothing end - trace = init_nonlinearsolve_trace(alg, u, fu1, J, du; kwargs...) + trace = init_nonlinearsolve_trace(alg, u, fu1, apply(zero, J), du; kwargs...) if _unwrap_val(linsolve_with_JᵀJ) mat_tmp = zero(JᵀJ) diff --git a/src/pseudotransient.jl b/src/pseudotransient.jl index bb5594526..d524b8bfc 100644 --- a/src/pseudotransient.jl +++ b/src/pseudotransient.jl @@ -95,7 +95,7 @@ function SciMLBase.__init(prob::NonlinearProblem{uType, iip}, alg_::PseudoTransi abstol, reltol, tc_cache = init_termination_cache(abstol, reltol, fu1, u, termination_condition) - trace = init_nonlinearsolve_trace(alg, u, fu1, J, du; kwargs...) + trace = init_nonlinearsolve_trace(alg, u, fu1, apply(zero, J), du; kwargs...) return PseudoTransientCache{iip}(f, alg, u, copy(u), fu1, fu2, du, p, alpha, res_norm, uf, linsolve, J, jac_cache, false, maxiters, internalnorm, ReturnCode.Default, diff --git a/src/raphson.jl b/src/raphson.jl index 7ee75e050..a203dead5 100644 --- a/src/raphson.jl +++ b/src/raphson.jl @@ -89,7 +89,7 @@ function SciMLBase.__init(prob::NonlinearProblem{uType, iip}, alg_::NewtonRaphso termination_condition) ls_cache = init_linesearch_cache(alg.linesearch, f, u, p, fu1, Val(iip)) - trace = init_nonlinearsolve_trace(alg, u, fu1, J, du; kwargs...) + trace = init_nonlinearsolve_trace(alg, u, fu1, apply(zero, J), du; kwargs...) return NewtonRaphsonCache{iip}(f, alg, u, copy(u), fu1, fu2, du, p, uf, linsolve, J, jac_cache, false, maxiters, internalnorm, ReturnCode.Default, abstol, reltol, prob, diff --git a/src/trace.jl b/src/trace.jl index cdc76361a..9977a1b04 100644 --- a/src/trace.jl +++ b/src/trace.jl @@ -205,8 +205,8 @@ function update_trace!(trace::NonlinearSolveTrace{ShT, StT}, iter, u, fu, J, δu return trace end - show_now = ShT && (iter % trace.trace_level.print_frequency == 0) - store_now = StT && (iter % trace.trace_level.store_frequency == 0) + show_now = ShT && (iter % trace.trace_level.print_frequency == 1) + store_now = StT && (iter % trace.trace_level.store_frequency == 1) (show_now || store_now) && (entry = __trace_entry(trace.trace_level, iter, u, fu, J, δu, α)) store_now && push!(trace.history, entry) @@ -226,8 +226,8 @@ function update_trace_with_invJ!(trace::NonlinearSolveTrace{ShT, StT}, iter, u, return trace end - show_now = ShT && (iter % trace.trace_level.print_frequency == 0) - store_now = StT && (iter % trace.trace_level.store_frequency == 0) + show_now = ShT && (iter % trace.trace_level.print_frequency == 1) + store_now = StT && (iter % trace.trace_level.store_frequency == 1) if show_now || store_now J_ = trace.trace_level isa TraceMinimal ? J : inv(J) entry = __trace_entry(trace.trace_level, iter, u, fu, J_, δu, α) diff --git a/src/trustRegion.jl b/src/trustRegion.jl index 53758787d..c661e51c4 100644 --- a/src/trustRegion.jl +++ b/src/trustRegion.jl @@ -340,7 +340,7 @@ function SciMLBase.__init(prob::NonlinearProblem{uType, iip}, alg_::TrustRegion, abstol, reltol, tc_cache = init_termination_cache(abstol, reltol, fu1, u, termination_condition) - trace = init_nonlinearsolve_trace(alg, u, fu1, J, du; kwargs...) + trace = init_nonlinearsolve_trace(alg, u, fu1, apply(zero, J), du; kwargs...) return TrustRegionCache{iip}(f, alg, u_prev, u, fu_prev, fu1, fu2, p, uf, linsolve, J, jac_cache, false, maxiters, internalnorm, ReturnCode.Default, abstol, reltol, prob,