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

Reply via email to