Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Proposed Changes
https://hal.science/hal-00650239v2/document
Deflation is the state-of-the-art way of reducing the size of the Krylov subspace needed by linear solvers.
The TLDR is that deflation approaches reserve a certain number of basis vectors to compute and refine on each restart cycle. When applied to RFGMRES this "memory" keeps the solver from stalling (the linear residual plateaus).
In addition to deflation, this particular method claims to be suitable for subspace recycling, that is, using information from a previous linear solve to accelerate the convergence for a new matrix, RHS, or both. This sounded interesting to explore for problems with expensive linear solves, such as nonlinear elasticity, and CFD with Newton-Krylov.
I'm not using it for NK yet. A bit more testing is needed. For the testcase I modified, the speedup compared with plain RFGMRES is ~3x (from 170 to 64 linear iterations). So the deflation part is working as it should.
PR Checklist
pre-commit run --allto format old commits.