Introducing a few local preconditioners#2259
Merged
Conversation
60a3722 to
4ab62c6
Compare
Contributor
Author
|
Okay this should be ready for review now. |
sv2518
commented
Oct 28, 2021
sv2518
commented
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
Contributor
wence-
left a comment
There was a problem hiding this comment.
I think this looks nice, and had a bunch of comments that might be helpful
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
wence-
reviewed
Oct 29, 2021
4c9cc85 to
99a963d
Compare
6028656 to
ef316ff
Compare
…ents a tensor of the same shape as A, but only carries the diagonal of A.
…ugh TSFC. The diagonal is returned in vector-shape.
…ate Tensors with the diagonal option.
… matfree application of diagonal preconditioners.
…s and the codegen for Slate's Reciprocal.
aa7584b to
2327850
Compare
Contributor
Author
…thin the HyrbidizationPC. The local preconditioner options include either a) jacobi or b) a custom operator supplied by the user.
8ef78ab to
e9990b1
Compare
Contributor
Author
|
Are there any other issues or can we merge? I am pressing on this because a merge would make my work of preparing another PR easier. |
Contributor
Author
|
Ok cool, thanks! This is 5 commits behind master by now, do I need to rebase before I merge? |
Contributor
No, since the merge is clean you can just hit the button. |
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR enables us to do specify some (local) preconditioners to the (local) operators in the local solves, used in the
HybridizationPC.All local preconditioners are controlled with PETSc options. The corresponding prefix is
_lmi_which stands for local mixed inverse. There are options to control which preconditioner to use and if it is replacing the original operator (preonly) or not. All of this is locally matrix-explicit only, the locally matrix-free PR will be coming in later.The two options of local preconditioners are
a) a Jacobi preconditioner and
b) a user-supplied operator. Note that b) was originally in a separate PR, see #2240.
The first commit d8a3e15 is only refactoring and also renaming some existing options to look more PETSc like. Then there follow some infrastructural additions to Slate and its translations into lower levels, which I needed for the local diagonal preconditioners.
The last commit 10bdca7 is a big one. It includes adding more infrastructure into the
SchurComplementBuilderclass to deal with the new preconditioners, including the handling of possible options which are explained in detail in theSchurComplementBuilderclass description. Testing is part of this commit too (I test both getting the right solutions and handling the options correctly in one go)