1
1
# # Krylov.jl
2
2
3
- struct KrylovJL{F,Tl,Tr, I,A,K} <: AbstractKrylovSubspaceMethod
3
+ struct KrylovJL{F,I,A,K} <: AbstractKrylovSubspaceMethod
4
4
KrylovAlg:: F
5
- Pl:: Tl
6
- Pr:: Tr
7
5
gmres_restart:: I
8
6
window:: I
9
7
args:: A
10
8
kwargs:: K
11
9
end
12
10
13
11
function KrylovJL (args... ; KrylovAlg = Krylov. gmres!,
14
- Pl= nothing , Pr= nothing ,
15
12
gmres_restart= 0 , window= 0 ,
16
13
kwargs... )
17
14
18
- Pl = (Pl === nothing ) ? Identity () : Pl
19
- Pr = (Pr === nothing ) ? Identity () : Pr
20
-
21
- return KrylovJL (KrylovAlg, Pl, Pr, gmres_restart, window,
15
+ return KrylovJL (KrylovAlg, gmres_restart, window,
22
16
args, kwargs)
23
17
end
24
18
@@ -105,8 +99,8 @@ function SciMLBase.solve(cache::LinearCache, alg::KrylovJL; kwargs...)
105
99
cache = set_cacheval (cache, solver)
106
100
end
107
101
108
- M = get_preconditioner (alg . Pl, cache. Pl)
109
- N = get_preconditioner (alg . Pr, cache. Pr)
102
+ M = cache. Pl
103
+ N = cache. Pr
110
104
111
105
M = (M === Identity ()) ? I : inv (M)
112
106
N = (N === Identity ()) ? I : inv (N)
@@ -145,24 +139,18 @@ end
145
139
146
140
# # IterativeSolvers.jl
147
141
148
- struct IterativeSolversJL{F,Tl,Tr, I,A,K} <: AbstractKrylovSubspaceMethod
142
+ struct IterativeSolversJL{F,I,A,K} <: AbstractKrylovSubspaceMethod
149
143
generate_iterator:: F
150
- Pl:: Tl
151
- Pr:: Tr
152
144
gmres_restart:: I
153
145
args:: A
154
146
kwargs:: K
155
147
end
156
148
157
149
function IterativeSolversJL (args... ;
158
150
generate_iterator = IterativeSolvers. gmres_iterable!,
159
- Pl= nothing , Pr= nothing ,
160
151
gmres_restart= 0 , kwargs... )
161
152
162
- Pl = (Pl === nothing ) ? Identity () : Pl
163
- Pr = (Pr === nothing ) ? Identity () : Pr
164
-
165
- return IterativeSolversJL (generate_iterator, Pl, Pr, gmres_restart,
153
+ return IterativeSolversJL (generate_iterator, gmres_restart,
166
154
args, kwargs)
167
155
end
168
156
@@ -184,9 +172,6 @@ IterativeSolversJL_MINRES(args...;kwargs...) =
184
172
kwargs... )
185
173
186
174
function init_cacheval (alg:: IterativeSolversJL , A, b, u, Pl, Pr, maxiters, abstol, reltol, verbose)
187
- Pl = get_preconditioner (alg. Pl, Pl)
188
- Pr = get_preconditioner (alg. Pr, Pr)
189
-
190
175
restart = (alg. gmres_restart == 0 ) ? min (20 , size (A,1 )) : alg. gmres_restart
191
176
192
177
kwargs = (abstol= abstol, reltol= reltol, maxiter= maxiters,
0 commit comments