-
Notifications
You must be signed in to change notification settings - Fork 177
Introducing a few local preconditioners #2259
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
Conversation
60a3722 to
4ab62c6
Compare
|
Okay this should be ready for review now. |
wence-
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this looks nice, and had a bunch of comments that might be helpful
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
…thin the HyrbidizationPC. The local preconditioner options include either a) jacobi or b) a custom operator supplied by the user.
8ef78ab to
e9990b1
Compare
|
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. |
wence-
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, go ahead!
|
Ok cool, thanks! This is 5 commits behind master by now, do I need to rebase before I merge? |
No, since the merge is clean you can just hit the button. |
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)