Thank you Pierre and Matt. In fact, I see how to do it programmatically but I would like to give the user the capability to do it from the command-line options juste it can be done with strided splits. @Matt : can you please elaborate a little bit on the solution you proposed please ? Thanks for your precious help, Nicolas Le sam. 17 avr. 2021 à 20:07, Matthew Knepley <[email protected]> a écrit :
On Sat, Apr 17, 2021 at 1:14 PM Pierre Jolivet <[email protected]> wrote:
Dear Nicolas, Here is how I would do it: - if your Pmat type is MATNEST, that’s quite easy, see https://www.mcs.anl.gov/petsc/petsc-current/src/ksp/ksp/tutorials/ex81.c.htm... - otherwise, you’ll need to first define a 2-way field splitting (with v+p and t), then fetch the appropriate (0,0) block with PCFieldSplitGetSubKSP(), and define an inner 2-way field splitting (with v and p).
Or you can define a DMShell that gives back these splits for the fields. That is how Firedrake does it.
Thanks,
Matt
Thanks, Pierre
On 17 Apr 2021, at 6:53 PM, Karin&NiKo <[email protected]> wrote:
Dear PETSc users,
I use the fieldsplit PC in an application where the splits are programmatically defined by IS using PCFieldSplitSetIS. Then the user can specify its own PC at runtime using PETSc options. My question : is it possible to define nested splits in this case as it can be done with strided splits (see snes/examples/tutorials/ex19.c with test suffix fieldsplit_4).
In order to be perfectly clear : let's say I have a 3 fields problem : velocity (v split), pressure (p split) and temperature (t split). What I would like to do is something like the following but it fails :
-ksp_type fgmres -pc_fieldsplit_type multiplicative -pc_type fieldsplit -pc_fieldsplit_0_fields fieldsplit_v_, fieldsplit_p_ -pc_fieldsplit_1_fields fieldsplit_t_
-prefix_push fieldsplit_0_ -ksp_type fgmres -pc_fieldsplit_schur_factorization_type upper -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_precondition a11 -prefix_pop
-prefix_push fieldsplit_1_ -ksp_type fgmres -pc_type jacobi -prefix_pop
-prefix_push fieldsplit_v_ -ksp_type fgmres -pc_type gamg -prefix_pop
-prefix_push fieldsplit_p_ -ksp_type fgmres -pc_type jacobi -prefix_pop
I thank you for your help, Nicolas
-- 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/>