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