On 19 Mar 2020, at 7:56 PM, Matthew Knepley <[email protected]> wrote:
On Fri, Mar 13, 2020 at 11:20 AM Pierre Jolivet <[email protected] <mailto:[email protected]>> wrote:
On 13 Mar 2020, at 2:36 PM, Matthew Knepley <[email protected] <mailto:[email protected]>> wrote:
On Fri, Mar 13, 2020 at 3:19 AM Pierre Jolivet <[email protected] <mailto:[email protected]>> wrote:
On 12 Mar 2020, at 11:40 PM, Matthew Knepley <[email protected] <mailto:[email protected]>> wrote:
On Thu, Mar 12, 2020 at 5:59 PM Jed Brown <[email protected] <mailto:[email protected]>> wrote: Pierre Jolivet <[email protected] <mailto:[email protected]>> writes:
Hello, Has there been any follow-up on this https://lists.mcs.anl.gov/pipermail/petsc-users/2015-January/024020.html <https://lists.mcs.anl.gov/pipermail/petsc-users/2015-January/024020.html> <https://lists.mcs.anl.gov/pipermail/petsc-users/2015-January/024020.html <https://lists.mcs.anl.gov/pipermail/petsc-users/2015-January/024020.html>>? Given a 3x3 MatNest A = [A_00,0,0 ; 0,A_11,0 ; 0,0,A_22], I’d like to setup a two-way fieldsplit coupling [A_00,0 ; 0,A_11] and [A_22] but I can’t figure out the proper options.
Are you looking for a Schur split or additive/multiplicative?
Don’t know yet which will perform best, do you have a specific solution in mind for one scenario or the other? I was mostly wondering if it was possible in a general context, not taking -pc_fieldsplit_type into account.
-pc_fieldsplit_field_0 0,1 -pc_fieldsplit_field_1 2 -pc_fieldsplit_type schur
These flags, used with my .cpp, yield: [0]PETSC ERROR: Arguments are incompatible [0]PETSC ERROR: To use Schur complement preconditioner you must have exactly 2 fields If I use -pc_fieldsplit_%d_fields <a,b,..> as advocated in the manual (instead of -pc_fieldsplit_field_%d as you suggested), I get the same error.
Okay it is -pc_fieldsplit_%d_fields. When you use this, how many fields does it think you have?
Three. In case it’s not clear, the MWE is at the bottom of my first email (nest.cpp). $ mpicxx nest.cpp -I$PETSC_DIR/$PETSC_ARCH/include -I$PETSC_DIR/include -L$PETSC_DIR/$PETSC_ARCH/lib -lpetsc $ ./a.out -pc_type fieldsplit -pc_fieldsplit_0_fields 0,1 -pc_fieldsplit_1_fields 2 -pc_fieldsplit_type schur […] [0]PETSC ERROR: Arguments are incompatible [0]PETSC ERROR: To use Schur complement preconditioner you must have exactly 2 fields […] Split info: Split number 0 Defined by IS Split number 1 Defined by IS Split number 2 Defined by IS […]
I see now. If you call PCFieldsplitSetIS(), this overrides anything else. We do not even try to discover the split. If you want a split determined by command line arguments, you have to defer the split. It looks like it can get splits from the MatNest, so just do not call SetIS().
So, I’ve commented the three PCFieldSplitSetIS. $ ./a.out -pc_type fieldsplit -pc_fieldsplit_0_fields 0,1 -pc_fieldsplit_1_fields 2 -pc_fieldsplit_block_size 3 is starting to give me something meaningful in the KSPView, i.e.: […] Split number 0 Fields 0, 1 […] Split number 1 Fields 2 But it’s surrounded by a bunch of errors such as: [0]PETSC ERROR: Arguments are incompatible [0]PETSC ERROR: Could not find index set Do I need some other command-line options? Thanks, Pierre
Thanks,
Matt
Thanks, Pierre
Matt
I believe.
Matt
Jed, in this answer https://lists.mcs.anl.gov/pipermail/petsc-users/2015-January/023993.html <https://lists.mcs.anl.gov/pipermail/petsc-users/2015-January/023993.html><https://lists.mcs.anl.gov/pipermail/petsc-users/2015-January/023993.html <https://lists.mcs.anl.gov/pipermail/petsc-users/2015-January/023993.html>>, you recommend not to use MatNest. What would you recommend instead?
See src/snes/examples/tutorials/ex28.c for my preferred approach.
I’m not using DM, so in terms of Mat, I guess this example shows that I pretty much need to reimplement the field splitting myself?
Thanks, Pierre
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
participants (1)
-
Pierre Jolivet