Skip to content

Commit 9dbd20e

Browse files
add history purging
1 parent de0b093 commit 9dbd20e

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "LinearSolve"
22
uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae"
33
authors = ["SciML"]
4-
version = "0.2.3"
4+
version = "0.2.4"
55

66
[deps]
77
ArrayInterface = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"

src/iterative_wrappers.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ function SciMLBase.solve(cache::LinearCache, alg::IterativeSolversJL; kwargs...)
205205
solver = init_cacheval(alg, cache.A, cache.b, cache.u, cache.Pl, cache.Pr, cache.maxiters, cache.abstol, cache.reltol, cache.verbose)
206206
cache = set_cacheval(cache, solver)
207207
end
208+
purge_history!(cache.cacheval, cache.u, cache.b)
208209

209210
cache.verbose && println("Using IterativeSolvers.$(alg.generate_iterator)")
210211
for iter in enumerate(cache.cacheval)
@@ -215,3 +216,14 @@ function SciMLBase.solve(cache::LinearCache, alg::IterativeSolversJL; kwargs...)
215216

216217
return SciMLBase.build_linear_solution(alg,cache.u,nothing,cache)
217218
end
219+
220+
function purge_history!(iter::IterativeSolvers.GMRESIterable, x, b)
221+
iter.k = 1
222+
iter.x = x
223+
iter.b = b
224+
225+
iter.residual.current = IterativeSolvers.init!(iter.arnoldi, iter.x, iter.b, iter.Pl, iter.Ax, initially_zero = true)
226+
IterativeSolvers.init_residual!(iter.residual, iter.residual.current)
227+
iter.β = iter.residual.current
228+
nothing
229+
end

0 commit comments

Comments
 (0)