You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
functiongpmr!(workspace ::GpmrWorkspace{T,FC,S}, $(def_args_gpmr...); $(def_kwargs_gpmr...)) where {T <:AbstractFloat, FC <:FloatOrComplex{T}, S<:AbstractVector{FC}}
160
+
functiongpmr!(workspace ::GpmrWorkspace{T,FC,Sm,Sn}, $(def_args_gpmr...); $(def_kwargs_gpmr...)) where {T <:AbstractFloat, FC <:FloatOrComplex{T}, Sm <:AbstractVector{FC}, Sn<:AbstractVector{FC}}
krylov_solve(::Val{Symbol($krylov)}, $(def_args...); $(def_kwargs...)) where {T <:AbstractFloat, FC <:FloatOrComplex{T}} =$(krylov)($(args...); $(kwargs...))
140
140
end
141
-
elseif krylov in (:diom, :dqgmres, :fom, :gmres, :fgmres, :gpmr)
141
+
elseif krylov in (:diom, :dqgmres, :fom, :gmres, :fgmres)
142
142
@evalbegin
143
143
function$(krylov)($(def_args...); memory::Int=20, $(def_kwargs...)) where {T <:AbstractFloat, FC <:FloatOrComplex{T}}
krylov_solve(::Val{Symbol($krylov)}, $(def_args...), $(def_optargs...); window::Int=5, $(def_kwargs...)) where {T <:AbstractFloat, FC <:FloatOrComplex{T}} =$(krylov)($(args...), $(optargs...); window, $(kwargs...))
197
197
end
198
198
end
199
+
elseif krylov in (:tricg, :trimr, :gpmr)
200
+
@evalbegin
201
+
function$(krylov)($(def_args...); $(def_kwargs...)) where {T <:AbstractFloat, FC <:FloatOrComplex{T}}
202
+
start_time =time_ns()
203
+
workspace =$workspace(KrylovConstructor(b, c))
204
+
elapsed_time = start_time |> ktimer
205
+
timemax -= elapsed_time
206
+
$(krylov!)(workspace, $(args...); $(kwargs...))
207
+
workspace.stats.timer += elapsed_time
208
+
returnresults(workspace)
209
+
end
210
+
211
+
krylov_solve(::Val{Symbol($krylov)}, $(def_args...); $(def_kwargs...)) where {T <:AbstractFloat, FC <:FloatOrComplex{T}} =$(krylov)($(args...); $(kwargs...))
212
+
213
+
if!isempty($optargs)
214
+
function$(krylov)($(def_args...), $(def_optargs...); $(def_kwargs...)) where {T <:AbstractFloat, FC <:FloatOrComplex{T}}
215
+
start_time =time_ns()
216
+
workspace =$workspace(KrylovConstructor(b, c))
217
+
warm_start!(workspace, $(optargs...))
218
+
elapsed_time = start_time |> ktimer
219
+
timemax -= elapsed_time
220
+
$(krylov!)(workspace, $(args...); $(kwargs...))
221
+
workspace.stats.timer += elapsed_time
222
+
returnresults(workspace)
223
+
end
224
+
225
+
krylov_solve(::Val{Symbol($krylov)}, $(def_args...), $(def_optargs...); $(def_kwargs...)) where {T <:AbstractFloat, FC <:FloatOrComplex{T}} =$(krylov)($(args...), $(optargs...); $(kwargs...))
226
+
end
227
+
end
199
228
else
200
229
@evalbegin
201
230
function$(krylov)($(def_args...); $(def_kwargs...)) where {T <:AbstractFloat, FC <:FloatOrComplex{T}}
functiontricg!(workspace ::TricgWorkspace{T,FC,S}, $(def_args_tricg...); $(def_kwargs_tricg...)) where {T <:AbstractFloat, FC <:FloatOrComplex{T}, S<:AbstractVector{FC}}
145
+
functiontricg!(workspace ::TricgWorkspace{T,FC,Sm,Sn}, $(def_args_tricg...); $(def_kwargs_tricg...)) where {T <:AbstractFloat, FC <:FloatOrComplex{T}, Sm <:AbstractVector{FC}, Sn<:AbstractVector{FC}}
functiontrimr!(workspace ::TrimrWorkspace{T,FC,S}, $(def_args_trimr...); $(def_kwargs_trimr...)) where {T <:AbstractFloat, FC <:FloatOrComplex{T}, S<:AbstractVector{FC}}
146
+
functiontrimr!(workspace ::TrimrWorkspace{T,FC,Sm,Sn}, $(def_args_trimr...); $(def_kwargs_trimr...)) where {T <:AbstractFloat, FC <:FloatOrComplex{T}, Sm <:AbstractVector{FC}, Sn<:AbstractVector{FC}}
0 commit comments