> On Dec 7, 2016, at 7:06 AM, Karin&NiKo <[email protected]> wrote:
> 
> Dear PETSc gurus,
> 
> I am using FieldSplit to solve a poro-mechanics problem. Thus, I am dealing 
> with 3 displacement DOF and 1 pressure DOF.
> In order to precondition the 00 block (aka the displacement block), I am 
> using a multigrid method (ml or gamg). Nevertheless, I have the feeling that 
> the multigrids performance is much lower than in the case where they are used 
> on pure displacement problems (say elasticity). Indeed, I do not know how to 
> set the block size of the 00 block when using FieldSplit!
> Could you please give me some hint on that?

   In your case you can use a block size of 4. The first field is defined by 
"components" 0, 1, and 2 and the second field (the pressure) is defined by 
component 3. Use PCFieldSplitSetFields() to set the fields and set the matrix 
block size to 4 (use AIJ matrix).  

  If the displacement block corresponds to a true displacement problem then one 
should expect similar convergence of the multigrid. BUT note that usually with 
PCFIELDSPLIT one just does a single V-cycle of multigrid (KSP type of preonly) 
on the 00 block in each iteration. Run with -ksp_view to see what the solve is 
actually doing.

> (the phrase "The fieldsplit preconditioner cannot currently be used with the 
> BAIJ or SBAIJ data formats if the blocksize is larger than 1." is not clear 
> enough for me...).

   To use fieldsplit you should use AIJ matrix, not BAIJ or SBAIJ (don't worry 
about impacting performance the fieldsplit pulls apart the blocks anyways so 
there would be no advantage to BAIJ or SBAIJ).
> 
> Thanks in advance,
> Nicolas

Reply via email to