Skip to content

Commit b4a1c7c

Browse files
committed
made krylov alg selector a function
1 parent 1dd66ec commit b4a1c7c

File tree

1 file changed

+38
-34
lines changed

1 file changed

+38
-34
lines changed

src/wrappers.jl

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -64,43 +64,47 @@ KrylovJL_BICGSTAB(args...;kwargs...) =
6464
KrylovJL_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

101105
function 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

Comments
 (0)