Skip to content

Commit 4fa070f

Browse files
committed
adding verbosity stuff
1 parent 7ad56e8 commit 4fa070f

File tree

23 files changed

+366
-152
lines changed

23 files changed

+366
-152
lines changed

lib/BracketingNonlinearSolve/src/BracketingNonlinearSolve.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ using PrecompileTools: @compile_workload, @setup_workload
55
using Reexport: @reexport
66

77
using CommonSolve: CommonSolve, solve
8-
using NonlinearSolveBase: NonlinearSolveBase, AbstractNonlinearSolveAlgorithm
8+
using NonlinearSolveBase: NonlinearSolveBase, AbstractNonlinearSolveAlgorithm, NonlinearVerbosity
99
using SciMLBase: SciMLBase, IntervalNonlinearProblem, ReturnCode
1010

1111
abstract type AbstractBracketingAlgorithm <: AbstractNonlinearSolveAlgorithm end

lib/BracketingNonlinearSolve/src/bisection.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ end
2121

2222
function SciMLBase.__solve(
2323
prob::IntervalNonlinearProblem, alg::Bisection, args...;
24-
maxiters = 1000, abstol = nothing, verbose::Bool = true, kwargs...
24+
maxiters = 1000, abstol = nothing, verbose::NonlinearVerbosity = NonlinearVerbosity(), kwargs...
2525
)
2626
@assert !SciMLBase.isinplace(prob) "`Bisection` only supports out-of-place problems."
2727

lib/BracketingNonlinearSolve/src/brent.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ struct Brent <: AbstractBracketingAlgorithm end
77

88
function SciMLBase.__solve(
99
prob::IntervalNonlinearProblem, alg::Brent, args...;
10-
maxiters = 1000, abstol = nothing, verbose::Bool = true, kwargs...
10+
maxiters = 1000, abstol = nothing, verbose = NonlinearVerbosity(), kwargs...
1111
)
1212
@assert !SciMLBase.isinplace(prob) "`Brent` only supports out-of-place problems."
1313

lib/BracketingNonlinearSolve/src/falsi.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ struct Falsi <: AbstractBracketingAlgorithm end
77

88
function SciMLBase.__solve(
99
prob::IntervalNonlinearProblem, alg::Falsi, args...;
10-
maxiters = 1000, abstol = nothing, verbose::Bool = true, kwargs...
10+
maxiters = 1000, abstol = nothing, verbose = NonlinearVerbosity(), kwargs...
1111
)
1212
@assert !SciMLBase.isinplace(prob) "`False` only supports out-of-place problems."
1313

lib/BracketingNonlinearSolve/src/itp.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ end
5858

5959
function SciMLBase.__solve(
6060
prob::IntervalNonlinearProblem, alg::ITP, args...;
61-
maxiters = 1000, abstol = nothing, verbose::Bool = true, kwargs...
61+
maxiters = 1000, abstol = nothing, verbose::NonlinearVerbosity = NonlinearVerbosity(), kwargs...
6262
)
6363
@assert !SciMLBase.isinplace(prob) "`ITP` only supports out-of-place problems."
6464

lib/BracketingNonlinearSolve/src/ridder.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ struct Ridder <: AbstractBracketingAlgorithm end
77

88
function SciMLBase.__solve(
99
prob::IntervalNonlinearProblem, alg::Ridder, args...;
10-
maxiters = 1000, abstol = nothing, verbose::Bool = true, kwargs...
10+
maxiters = 1000, abstol = nothing, verbose::NonlinearVerbosity = NonlinearVerbosity(), kwargs...
1111
)
1212
@assert !SciMLBase.isinplace(prob) "`Ridder` only supports out-of-place problems."
1313

lib/NonlinearSolveBase/Project.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd"
2222
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
2323
SciMLJacobianOperators = "19f34311-ddf3-4b8b-af20-060888a46c0e"
2424
SciMLOperators = "c0aeaf25-5076-4817-a8d5-81caf7dfa961"
25+
SciMLVerbosity = "a05b3ec9-34a1-438a-b0a1-c0adb433119f"
2526
StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c"
2627
SymbolicIndexingInterface = "2efcf032-c050-4f8e-a9bb-153293bab1f5"
2728
TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"

lib/NonlinearSolveBase/ext/NonlinearSolveBaseLinearSolveExt.jl

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,26 @@ using SciMLBase: ReturnCode, LinearProblem, LinearAliasSpecifier
88

99
using LinearAlgebra: ColumnNorm
1010

11-
using NonlinearSolveBase: NonlinearSolveBase, LinearSolveJLCache, LinearSolveResult, Utils
11+
using NonlinearSolveBase: NonlinearSolveBase, LinearSolveJLCache, LinearSolveResult, Utils, NonlinearVerbosity
1212

1313
function (cache::LinearSolveJLCache)(;
1414
A = nothing, b = nothing, linu = nothing,
15-
reuse_A_if_factorization = false, verbose = true, kwargs...
15+
reuse_A_if_factorization = false, verbose = NonlinearVerbosity(), kwargs...
1616
)
1717
cache.stats.nsolve += 1
1818

1919
update_A!(cache, A, reuse_A_if_factorization)
2020
b !== nothing && setproperty!(cache.lincache, :b, b)
2121
linu !== nothing && NonlinearSolveBase.set_lincache_u!(cache, linu)
22-
22+
2323
linres = solve!(cache.lincache)
2424
cache.lincache = linres.cache
25+
#Main.@infiltrate
2526
# Unfortunately LinearSolve.jl doesn't have the most uniform ReturnCode handling
26-
if linres.retcode === ReturnCode.Failure
27+
if linres.retcode === ReturnCode.Failure || linres.retcode === ReturnCode.Stalled
2728
structured_mat = ArrayInterface.isstructured(cache.lincache.A)
2829
is_gpuarray = ArrayInterface.device(cache.lincache.A) isa ArrayInterface.GPU
29-
30+
#Main.@infiltrate
3031
if !(cache.linsolve isa QRFactorization{ColumnNorm}) && !is_gpuarray &&
3132
!structured_mat
3233
if verbose

lib/NonlinearSolveBase/src/NonlinearSolveBase.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ using SciMLBase: SciMLBase, ReturnCode, AbstractODEIntegrator, AbstractNonlinear
2323
LinearAliasSpecifier, ImmutableNonlinearProblem
2424
using SciMLJacobianOperators: JacobianOperator, StatefulJacobianOperator
2525
using SciMLOperators: AbstractSciMLOperator, IdentityOperator
26+
using SciMLVerbosity: @match, @SciMLMessage, Verbosity, AbstractVerbositySpecifier
2627
using SymbolicIndexingInterface: SymbolicIndexingInterface
2728

2829
using LinearAlgebra: LinearAlgebra, Diagonal, norm, ldiv!, diagind, mul!
@@ -46,6 +47,7 @@ include("timer_outputs.jl")
4647
include("tracing.jl")
4748
include("wrappers.jl")
4849
include("polyalg.jl")
50+
include("verbosity.jl")
4951

5052
include("descent/common.jl")
5153
include("descent/newton.jl")
@@ -85,6 +87,8 @@ export DescentResult, SteepestDescent, NewtonDescent, DampedNewtonDescent, Dogle
8587

8688
export NonlinearSolvePolyAlgorithm
8789

90+
export NonlinearVerbosity, NonlinearPerformanceVerbosity, NonlinearErrorControlVerbosity, NonlinearNumericalVerbosity
91+
8892
export pickchunksize
8993

9094
end

lib/NonlinearSolveBase/src/descent/damped_newton.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,16 @@ function InternalAPI.init(
135135
A, b = Utils.maybe_symmetric(J_damped), Utils.safe_vec(Jᵀfu)
136136
rhs_cache = nothing
137137
end
138+
139+
if !haskey(linsolve_kwargs, :verbose)
140+
if kwargs[:verbose].linear_verbosity isa Verbosity.Type
141+
linsolve_kwargs = merge(
142+
linsolve_kwargs, (; verbose = LinearVerbosity(kwargs[:verbose])))
143+
else
144+
linsolve_kwargs = merge(
145+
linsolve_kwargs, (; verbose = kwargs[:verbose].linear_verbosity))
146+
end
147+
end
138148

139149
lincache = construct_linear_solver(
140150
alg, alg.linsolve, A, b, Utils.safe_vec(u);

0 commit comments

Comments
 (0)