Skip to content

Commit f72688d

Browse files
committed
add verbosity to IterativeSolversExt
1 parent 0ed707e commit f72688d

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

ext/LinearSolveIterativeSolversExt.jl

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ module LinearSolveIterativeSolversExt
33
using LinearSolve, LinearAlgebra
44
using LinearSolve: LinearCache, DEFAULT_PRECS
55
import LinearSolve: IterativeSolversJL
6+
using SciMLLogging: @SciMLMessage, Verbosity
67

78
using IterativeSolvers
89

@@ -56,23 +57,26 @@ function LinearSolve.init_cacheval(alg::IterativeSolversJL, A, b, u, Pl, Pr, max
5657

5758
iterable = if alg.generate_iterator === IterativeSolvers.cg_iterator!
5859
!LinearSolve._isidentity_struct(Pr) &&
59-
@warn "$(alg.generate_iterator) doesn't support right preconditioning"
60+
@SciMLMessage("$(alg.generate_iterator) doesn't support right preconditioning",
61+
verbose, :no_right_preconditioning, :performance)
6062
alg.generate_iterator(u, A, b, Pl;
6163
kwargs...)
6264
elseif alg.generate_iterator === IterativeSolvers.gmres_iterable!
6365
alg.generate_iterator(u, A, b; Pl = Pl, Pr = Pr, restart = restart,
6466
kwargs...)
6567
elseif alg.generate_iterator === IterativeSolvers.idrs_iterable!
6668
!!LinearSolve._isidentity_struct(Pr) &&
67-
@warn "$(alg.generate_iterator) doesn't support right preconditioning"
69+
@SciMLMessage("$(alg.generate_iterator) doesn't support right preconditioning",
70+
verbose, :no_right_preconditioning, :performance)
6871
history = IterativeSolvers.ConvergenceHistory(partial = true)
6972
history[:abstol] = abstol
7073
history[:reltol] = reltol
7174
IterativeSolvers.idrs_iterable!(history, u, A, b, s, Pl, abstol, reltol, maxiters;
7275
alg.kwargs...)
7376
elseif alg.generate_iterator === IterativeSolvers.bicgstabl_iterator!
7477
!!LinearSolve._isidentity_struct(Pr) &&
75-
@warn "$(alg.generate_iterator) doesn't support right preconditioning"
78+
@SciMLMessage("$(alg.generate_iterator) doesn't support right preconditioning",
79+
verbose, :no_right_preconditioning, :performance)
7680
alg.generate_iterator(u, A, b, alg.args...; Pl = Pl,
7781
abstol = abstol, reltol = reltol,
7882
max_mv_products = maxiters * 2,
@@ -103,14 +107,15 @@ function SciMLBase.solve!(cache::LinearCache, alg::IterativeSolversJL; kwargs...
103107
end
104108
purge_history!(cache.cacheval, cache.u, cache.b)
105109

106-
cache.verbose && println("Using IterativeSolvers.$(alg.generate_iterator)")
110+
@SciMLMessage("Using IterativeSolvers.$(alg.generate_iterator)",
111+
cache.verbose, :using_IterativeSolvers, :numerical)
107112
i = 0
108113
for iter in enumerate(cache.cacheval)
109114
i += 1
110-
cache.verbose && println("Iter: $(iter[1]), residual: $(iter[2])")
115+
@SciMLMessage("Iter: $(iter[1]), residual: $(iter[2])",
116+
cache.verbose, :IterativeSolvers_iterations, :numerical)
111117
# TODO inject callbacks KSP into solve! cb!(cache.cacheval)
112118
end
113-
cache.verbose && println()
114119

115120
resid = cache.cacheval isa IterativeSolvers.IDRSIterable ? cache.cacheval.R :
116121
cache.cacheval.residual

0 commit comments

Comments
 (0)