@@ -3,6 +3,7 @@ module LinearSolveIterativeSolversExt
33using LinearSolve, LinearAlgebra
44using LinearSolve: LinearCache, DEFAULT_PRECS
55import LinearSolve: IterativeSolversJL
6+ using SciMLLogging: @SciMLMessage , Verbosity
67
78using 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