@@ -109,73 +109,73 @@ end
109109
110110function get_KrylovJL_solver (KrylovAlg)
111111 KS = if (KrylovAlg === Krylov. lsmr!)
112- Krylov. LsmrSolver
112+ Krylov. LsmrWorkspace
113113 elseif (KrylovAlg === Krylov. cgs!)
114- Krylov. CgsSolver
114+ Krylov. CgsWorkspace
115115 elseif (KrylovAlg === Krylov. usymlq!)
116- Krylov. UsymlqSolver
116+ Krylov. UsymlqWorkspace
117117 elseif (KrylovAlg === Krylov. lnlq!)
118- Krylov. LnlqSolver
118+ Krylov. LnlqWorkspace
119119 elseif (KrylovAlg === Krylov. bicgstab!)
120- Krylov. BicgstabSolver
120+ Krylov. BicgstabWorkspace
121121 elseif (KrylovAlg === Krylov. crls!)
122- Krylov. CrlsSolver
122+ Krylov. CrlsWorkspace
123123 elseif (KrylovAlg === Krylov. lsqr!)
124- Krylov. LsqrSolver
124+ Krylov. LsqrWorkspace
125125 elseif (KrylovAlg === Krylov. minres!)
126- Krylov. MinresSolver
126+ Krylov. MinresWorkspace
127127 elseif (KrylovAlg === Krylov. cgne!)
128- Krylov. CgneSolver
128+ Krylov. CgneWorkspace
129129 elseif (KrylovAlg === Krylov. dqgmres!)
130- Krylov. DqgmresSolver
130+ Krylov. DqgmresWorkspace
131131 elseif (KrylovAlg === Krylov. symmlq!)
132- Krylov. SymmlqSolver
132+ Krylov. SymmlqWorkspace
133133 elseif (KrylovAlg === Krylov. trimr!)
134- Krylov. TrimrSolver
134+ Krylov. TrimrWorkspace
135135 elseif (KrylovAlg === Krylov. usymqr!)
136- Krylov. UsymqrSolver
136+ Krylov. UsymqrWorkspace
137137 elseif (KrylovAlg === Krylov. bilqr!)
138- Krylov. BilqrSolver
138+ Krylov. BilqrWorkspace
139139 elseif (KrylovAlg === Krylov. cr!)
140- Krylov. CrSolver
140+ Krylov. CrWorkspace
141141 elseif (KrylovAlg === Krylov. craigmr!)
142- Krylov. CraigmrSolver
142+ Krylov. CraigmrWorkspace
143143 elseif (KrylovAlg === Krylov. tricg!)
144- Krylov. TricgSolver
144+ Krylov. TricgWorkspace
145145 elseif (KrylovAlg === Krylov. craig!)
146- Krylov. CraigSolver
146+ Krylov. CraigWorkspace
147147 elseif (KrylovAlg === Krylov. diom!)
148- Krylov. DiomSolver
148+ Krylov. DiomWorkspace
149149 elseif (KrylovAlg === Krylov. lslq!)
150- Krylov. LslqSolver
150+ Krylov. LslqWorkspace
151151 elseif (KrylovAlg === Krylov. trilqr!)
152- Krylov. TrilqrSolver
152+ Krylov. TrilqrWorkspace
153153 elseif (KrylovAlg === Krylov. crmr!)
154- Krylov. CrmrSolver
154+ Krylov. CrmrWorkspace
155155 elseif (KrylovAlg === Krylov. cg!)
156- Krylov. CgSolver
156+ Krylov. CgWorkspace
157157 elseif (KrylovAlg === Krylov. cg_lanczos!)
158- Krylov. CgLanczosShiftSolver
158+ Krylov. CgLanczosShiftWorkspace
159159 elseif (KrylovAlg === Krylov. cgls!)
160- Krylov. CglsSolver
160+ Krylov. CglsWorkspace
161161 elseif (KrylovAlg === Krylov. cg_lanczos!)
162- Krylov. CgLanczosSolver
162+ Krylov. CgLanczosWorkspace
163163 elseif (KrylovAlg === Krylov. bilq!)
164- Krylov. BilqSolver
164+ Krylov. BilqWorkspace
165165 elseif (KrylovAlg === Krylov. minres_qlp!)
166- Krylov. MinresQlpSolver
166+ Krylov. MinresQlpWorkspace
167167 elseif (KrylovAlg === Krylov. qmr!)
168- Krylov. QmrSolver
168+ Krylov. QmrWorkspace
169169 elseif (KrylovAlg === Krylov. gmres!)
170- Krylov. GmresSolver
170+ Krylov. GmresWorkspace
171171 elseif (KrylovAlg === Krylov. fgmres!)
172- Krylov. FgmresSolver
172+ Krylov. FgmresWorkspace
173173 elseif (KrylovAlg === Krylov. gpmr!)
174- Krylov. GpmrSolver
174+ Krylov. GpmrWorkspace
175175 elseif (KrylovAlg === Krylov. fom!)
176- Krylov. FomSolver
176+ Krylov. FomWorkspace
177177 elseif (KrylovAlg === Krylov. minares!)
178- Krylov. MinaresSolver
178+ Krylov. MinaresWorkspace
179179 else
180180 error (" Invalid Krylov method detected" )
181181 end
@@ -196,11 +196,11 @@ function init_cacheval(alg::KrylovJL, A, b, u, Pl, Pr, maxiters::Int, abstol, re
196196 alg. KrylovAlg === Krylov. gpmr! ||
197197 alg. KrylovAlg === Krylov. fom!)
198198 if issparsematrixcsc (A)
199- KS (makeempty_SparseMatrixCSC (A), eltype (b)[], 1 )
199+ KS (makeempty_SparseMatrixCSC (A), eltype (b)[]; memory = 1 )
200200 elseif A isa Matrix
201- KS (Matrix {eltype(A)} (undef, 0 , 0 ), eltype (b)[], 1 )
201+ KS (Matrix {eltype(A)} (undef, 0 , 0 ), eltype (b)[]; memory = 1 )
202202 else
203- KS (A, b, 1 )
203+ KS (A, b; memory = 1 )
204204 end
205205 else
206206 if issparsematrixcsc (A)
@@ -220,7 +220,7 @@ function init_cacheval(alg::KrylovJL, A, b, u, Pl, Pr, maxiters::Int, abstol, re
220220 alg. KrylovAlg === Krylov. fgmres! ||
221221 alg. KrylovAlg === Krylov. gpmr! ||
222222 alg. KrylovAlg === Krylov. fom!)
223- KS (A, b, memory)
223+ KS (A, b; memory)
224224 elseif (alg. KrylovAlg === Krylov. minres! ||
225225 alg. KrylovAlg === Krylov. symmlq! ||
226226 alg. KrylovAlg === Krylov. lslq! ||
@@ -288,20 +288,20 @@ function SciMLBase.solve!(cache::LinearCache, alg::KrylovJL; kwargs...)
288288 kwargs = (atol = atol, rtol, itmax, verbose,
289289 ldiv = true , history = true , alg. kwargs... )
290290
291- if cache. cacheval isa Krylov. CgSolver
291+ if cache. cacheval isa Krylov. CgWorkspace
292292 N != = I &&
293293 @warn " $(alg. KrylovAlg) doesn't support right preconditioning."
294- Krylov. solve ! (args... ; M, kwargs... )
295- elseif cache. cacheval isa Krylov. GmresSolver
296- Krylov. solve ! (args... ; M, N, restart = alg. gmres_restart > 0 , kwargs... )
297- elseif cache. cacheval isa Krylov. BicgstabSolver
298- Krylov. solve ! (args... ; M, N, kwargs... )
299- elseif cache. cacheval isa Krylov. MinresSolver
294+ Krylov. krylov_solve ! (args... ; M, kwargs... )
295+ elseif cache. cacheval isa Krylov. GmresWorkspace
296+ Krylov. krylov_solve ! (args... ; M, N, restart = alg. gmres_restart > 0 , kwargs... )
297+ elseif cache. cacheval isa Krylov. BicgstabWorkspace
298+ Krylov. krylov_solve ! (args... ; M, N, kwargs... )
299+ elseif cache. cacheval isa Krylov. MinresWorkspace
300300 N != = I &&
301301 @warn " $(alg. KrylovAlg) doesn't support right preconditioning."
302- Krylov. solve ! (args... ; M, kwargs... )
302+ Krylov. krylov_solve ! (args... ; M, kwargs... )
303303 else
304- Krylov. solve ! (args... ; kwargs... )
304+ Krylov. krylov_solve ! (args... ; kwargs... )
305305 end
306306
307307 stats = @get_cacheval (cache, :KrylovJL_GMRES ). stats
0 commit comments