It seems very hard to get the the parameters schurPreconditioner and schurList correct for a PETSc block preconditioner. For a block matrix like:
Is the following syntax correct for prameters schurPreconditioner and schurList?
func Pk=[P2,P2,P2];
fespace Sh(ThS, Pk);
fespace Vh(Th, Pk);
fespace Ph(Th, P1);
real[int] list(tndof);
list(0 : u2dof-1) = 0;
list(u2dof : u2dof+pndof - 1) = 1:pndof;
list(u2dof+pndof:u2dof+p2dof-1) = pndof+1:p2dof;
list(u2dof+p2dof:u2dof+p2dof+andof-1) = p2dof+1:p2dof+andof;
list(u2dof+p2dof+andof:tndof-1) = p2dof+andof+1 : p2dof+a2dof;
matrix[int] S(4);
varf vSchur(p, q) = int3(p * q);
S[0] = vSchur(Ph, Ph);
S[1] =S[0];
varf aSchur([ax,ay,az],[ahx,ahy,ahz]) = int2d(ThS)( vect(ah)'vect(a) );
S[2] = aSchur(Sh,Sh);
S[3] = S[2];
set(M, sparams = …
fields = usPETSc, names = names, schurPreconditioner = S, schurList = list);
Thanks a lot for your help in advance!


