PCFieldSplit and Schur

francois pacull fpacull at fluorem.com
Tue Nov 24 10:46:01 CST 2009


Dear PETSc team,

I am having a little bit of trouble with the Schur option of 
PCFieldSplit: I would like to apply some special treatments respectively 
to the five first and the two last equations over seven for each grid 
node of a CFD linear system...

In the present case, the KSP is "gmres" (or "fgmres" if the PC is 
changing), the PC is "asm" (the subdomain IS is defined with 
PCASMSetLocalSubdomains in order to always include all the fields 
associated to the grid points of the overlap), the SUBKSP is "preonly" 
and the SUBPC is "fieldsplit".

So far the FieldSplit options PC_COMPOSITE_ADDITIVE and 
PC_COMPOSITE_MULTIPLICATIVE work well with fieldsplit_0 and fieldsplit_1 
set to KSPPREONLY and PCILU in the following way:

PCFieldSplitGetSubKSP(SubPC,number_of_split,&FieldSplitKSP);
... [for the fields 0,1,2,3,4 (fieldsplit_0)]
KSPSetType(FieldSplitKSP[0],KSPPREONLY);
KSPGetPC(FieldSplitKSP[0],&FieldSplitPC0);
PCSetType(FieldSplitPC0,PCILU);
... [for the fields 5 and 6 (fieldsplit_1)]
KSPSetType(FieldSplitKSP[1],KSPPREONLY);
KSPGetPC(FieldSplitKSP[1],&FieldSplitPC1);
PCSetType(FieldSplitPC1,PCILU);
...

They also work well when I set the FieldSplitKSP[0] and/or 
FieldSplitKSP[1] to KSPGMRES. However, I always get a segmentation 
violation when I try to use the FieldSplit option PC_COMPOSITE_SCHUR... 
I guess that I am missing something: is there more options to set in 
this Schur case?
So far I did not turn on the Schur complement preconditioner option: 
PCFieldSplitSchurPrecondition(subpc,PETSC_FALSE);
Is there a book or article describing the methods implemented in this 
FieldSplit option?

The version is petsc-3.0.0-p7...

Thank you for your help,
Regards,
francois pacull.



More information about the petsc-users mailing list