@@ -64,43 +64,47 @@ KrylovJL_BICGSTAB(args...;kwargs...) =
6464KrylovJL_MINRES (args... ;kwargs... ) =
6565 KrylovJL (args... ; KrylovAlg= Krylov. minres!, kwargs... )
6666
67- const KrylovJL_solvers = Dict (
68- (Krylov. lsmr! => Krylov. LsmrSolver ),
69- (Krylov. cgs! => Krylov. CgsSolver ),
70- (Krylov. usymlq! => Krylov. UsymlqSolver ),
71- (Krylov. lnlq! => Krylov. LnlqSolver ),
72- (Krylov. bicgstab! => Krylov. BicgstabSolver ),
73- (Krylov. crls! => Krylov. CrlsSolver ),
74- (Krylov. lsqr! => Krylov. LsqrSolver ),
75- (Krylov. minres! => Krylov. MinresSolver ),
76- (Krylov. cgne! => Krylov. CgneSolver ),
77- (Krylov. dqgmres! => Krylov. DqgmresSolver ),
78- (Krylov. symmlq! => Krylov. SymmlqSolver ),
79- (Krylov. trimr! => Krylov. TrimrSolver ),
80- (Krylov. usymqr! => Krylov. UsymqrSolver ),
81- (Krylov. bilqr! => Krylov. BilqrSolver ),
82- (Krylov. cr! => Krylov. CrSolver ),
83- (Krylov. craigmr! => Krylov. CraigmrSolver ),
84- (Krylov. tricg! => Krylov. TricgSolver ),
85- (Krylov. craig! => Krylov. CraigSolver ),
86- (Krylov. diom! => Krylov. DiomSolver ),
87- (Krylov. lslq! => Krylov. LslqSolver ),
88- (Krylov. trilqr! => Krylov. TrilqrSolver ),
89- (Krylov. crmr! => Krylov. CrmrSolver ),
90- (Krylov. cg! => Krylov. CgSolver ),
91- (Krylov. cg_lanczos! => Krylov. CgLanczosShiftSolver),
92- (Krylov. cgls! => Krylov. CglsSolver ),
93- (Krylov. cg_lanczos! => Krylov. CgLanczosSolver ),
94- (Krylov. bilq! => Krylov. BilqSolver ),
95- (Krylov. minres_qlp! => Krylov. MinresQlpSolver ),
96- (Krylov. qmr! => Krylov. QmrSolver ),
97- (Krylov. gmres! => Krylov. GmresSolver ),
98- (Krylov. fom! => Krylov. FomSolver ),
99- )
67+ function get_KrylovJL_solver (KrylovAlg)
68+ solver =
69+ if (KrylovAlg === Krylov. lsmr! ) Krylov. LsmrSolver
70+ elseif (KrylovAlg === Krylov. cgs! ) Krylov. CgsSolver
71+ elseif (KrylovAlg === Krylov. usymlq! ) Krylov. UsymlqSolver
72+ elseif (KrylovAlg === Krylov. lnlq! ) Krylov. LnlqSolver
73+ elseif (KrylovAlg === Krylov. bicgstab! ) Krylov. BicgstabSolver
74+ elseif (KrylovAlg === Krylov. crls! ) Krylov. CrlsSolver
75+ elseif (KrylovAlg === Krylov. lsqr! ) Krylov. LsqrSolver
76+ elseif (KrylovAlg === Krylov. minres! ) Krylov. MinresSolver
77+ elseif (KrylovAlg === Krylov. cgne! ) Krylov. CgneSolver
78+ elseif (KrylovAlg === Krylov. dqgmres! ) Krylov. DqgmresSolver
79+ elseif (KrylovAlg === Krylov. symmlq! ) Krylov. SymmlqSolver
80+ elseif (KrylovAlg === Krylov. trimr! ) Krylov. TrimrSolver
81+ elseif (KrylovAlg === Krylov. usymqr! ) Krylov. UsymqrSolver
82+ elseif (KrylovAlg === Krylov. bilqr! ) Krylov. BilqrSolver
83+ elseif (KrylovAlg === Krylov. cr! ) Krylov. CrSolver
84+ elseif (KrylovAlg === Krylov. craigmr! ) Krylov. CraigmrSolver
85+ elseif (KrylovAlg === Krylov. tricg! ) Krylov. TricgSolver
86+ elseif (KrylovAlg === Krylov. craig! ) Krylov. CraigSolver
87+ elseif (KrylovAlg === Krylov. diom! ) Krylov. DiomSolver
88+ elseif (KrylovAlg === Krylov. lslq! ) Krylov. LslqSolver
89+ elseif (KrylovAlg === Krylov. trilqr! ) Krylov. TrilqrSolver
90+ elseif (KrylovAlg === Krylov. crmr! ) Krylov. CrmrSolver
91+ elseif (KrylovAlg === Krylov. cg! ) Krylov. CgSolver
92+ elseif (KrylovAlg === Krylov. cg_lanczos!) Krylov. CgLanczosShiftSolver
93+ elseif (KrylovAlg === Krylov. cgls! ) Krylov. CglsSolver
94+ elseif (KrylovAlg === Krylov. cg_lanczos!) Krylov. CgLanczosSolver
95+ elseif (KrylovAlg === Krylov. bilq! ) Krylov. BilqSolver
96+ elseif (KrylovAlg === Krylov. minres_qlp!) Krylov. MinresQlpSolver
97+ elseif (KrylovAlg === Krylov. qmr! ) Krylov. QmrSolver
98+ elseif (KrylovAlg === Krylov. gmres! ) Krylov. GmresSolver
99+ elseif (KrylovAlg === Krylov. fom! ) Krylov. FomSolver
100+ end
101+
102+ return solver
103+ end
100104
101105function init_cacheval (alg:: KrylovJL , A, b, u)
102106
103- KS = KrylovJL_solvers[ alg. KrylovAlg]
107+ KS = get_KrylovJL_solver ( alg. KrylovAlg)
104108
105109 solver = if (
106110 KS === Krylov. DqgmresSolver ||
0 commit comments