[petsc-users] Recursive fieldsplit PCs

Lawrence Mitchell lawrence.mitchell at imperial.ac.uk
Mon Dec 2 02:26:23 CST 2013


Dear petsc-users,

I have a 3x3 block system built as a single MatNest (with 9 Mats in it).  I'd like to treat this as a 2x2 system: 
[ A B
  C D ]

where A is 2x2 and precondition the A block with a schur complement.  Since I have a mat nest, the ISes for the three fields are just ISCreateStride(..., mat_i_rows, offset, 1, ...) and these are set on the fieldsplit pc.  If I understand the documentation correctly, I think I should now be able to do:

-pc_type fieldsplit -fieldsplit_0_fields 0,1 -fieldsplit_1_fields 2 -fieldsplit_0_pc_type field split -fieldsplit_0_pc_fieldsplit_type schur

...

However, when doing so, I get an error: "To use Schur complement preconditioner you must have exactly 2 fields".  Which suggests to me I have failed to inform PETSc that I want the first two fields to be treated as 1.

Note that I am not using a DM to build any of these objects.  I build a SNES, pull the KSP out of the SNES and then the PC out of the KSP.  I never explicitly call SetFromOptions on the PC.  Instead, before the SNES solve I call SNESSetFromOptions.  Might this be the problem?

Cheers,

Lawrence


More information about the petsc-users mailing list