New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Preconditioner reuse #21868
Labels
T: task
An enhancement to the software.
Comments
reverendbedford
added a commit
to reverendbedford/moose
that referenced
this issue
Aug 17, 2022
reverendbedford
added a commit
to reverendbedford/moose
that referenced
this issue
Aug 17, 2022
reverendbedford
added a commit
to reverendbedford/moose
that referenced
this issue
Aug 17, 2022
reverendbedford
added a commit
to reverendbedford/moose
that referenced
this issue
Aug 17, 2022
reverendbedford
added a commit
to reverendbedford/moose
that referenced
this issue
Sep 2, 2022
lynnmunday
pushed a commit
to lynnmunday/moose
that referenced
this issue
Sep 30, 2022
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Reason
Preconditioner reuse is a good trick to effectively reduce the computational cost of a simulation. The idea is that forming the preconditioner can be quite expensive, but often the structure of the problem only changes slowly over time. So you can reuse an old preconditioner at subsequent time steps quite effectively, avoiding the cost of reforming for many time steps.
As an example, imagine you use a full LU factorization as your preconditioner for GMRES. The first time you form the LU factorization the linear solve will converge in 1 iteration. If you keep reusing that LU factorization for multiple nonlinear iterations across multiple time steps it will often continue to work quite well.
Design
Use the new libmesh preconditioner reuse functionality to provide new options in the Executioner block:
reuse_preconditioner
-- a bool, if true enable preconditioner reusereuse_preconditioner_max_its
-- the heuristic is to continue to reuse the previously-constructed preconditioner until it takes this number of linear iterations to solve the linearized system. At that point reform a new preconditioner.Impact
This will add a new feature and (should) not affect any existing functionality.
The text was updated successfully, but these errors were encountered: