@@ -64,43 +64,47 @@ KrylovJL_BICGSTAB(args...;kwargs...) =
64
64
KrylovJL_MINRES (args... ;kwargs... ) =
65
65
KrylovJL (args... ; KrylovAlg= Krylov. minres!, kwargs... )
66
66
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
100
104
101
105
function init_cacheval (alg:: KrylovJL , A, b, u)
102
106
103
- KS = KrylovJL_solvers[ alg. KrylovAlg]
107
+ KS = get_KrylovJL_solver ( alg. KrylovAlg)
104
108
105
109
solver = if (
106
110
KS === Krylov. DqgmresSolver ||
0 commit comments