> 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/>
