<div dir="ltr"><div><div><div><div><div>Thanks Barry. <br></div>I must emphasize that my unknowns are not numbered in a regular way : I am using a P2-P1 finite element and the middle nodes do not carry a pressure DOF. So the global numbering is somewhat like : <br>-----------------------------------------------------------------------------------------------------------<br>u1x, u1y, u1z, p, u2x, u2y, u2z, p2, u3x, u3y, u3z, u4x, u4y, u4z, p4, .....<br></div> node 1 DOF     |  node 2 DOF       | node 3 DOF  |    node 4 DOF     |<br>-----------------------------------------------------------------------------------------------------------<br><br></div>So my global matrix does not have a block-size of 4. Nevertheless the A00 matrix has a block size of 3! <br></div>Is there a way to specify that only on the A00 sub-matrix?<br><br></div>Nicolas<br><div><br><div><div><br></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-12-07 14:22 GMT+01:00 Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
> On Dec 7, 2016, at 7:06 AM, Karin&NiKo <<a href="mailto:niko.karin@gmail.com">niko.karin@gmail.com</a>> wrote:<br>
><br>
> Dear PETSc gurus,<br>
><br>
> I am using FieldSplit to solve a poro-mechanics problem. Thus, I am dealing with 3 displacement DOF and 1 pressure DOF.<br>
> 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!<br>
> Could you please give me some hint on that?<br>
<br>
</span>   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).<br>
<br>
  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.<br>
<span class=""><br>
> (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...).<br>
<br>
</span>   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).<br>
><br>
> Thanks in advance,<br>
> Nicolas<br>
<br>
</blockquote></div><br></div>