[petsc-users] FieldSplit, multigrid and blocksize

Karin&NiKo niko.karin at gmail.com
Wed Dec 7 07:43:59 CST 2016


Thanks Barry.
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 :
-----------------------------------------------------------------------------------------------------------
u1x, u1y, u1z, p, u2x, u2y, u2z, p2, u3x, u3y, u3z, u4x, u4y, u4z, p4, .....
 node 1 DOF     |  node 2 DOF       | node 3 DOF  |    node 4 DOF     |
-----------------------------------------------------------------------------------------------------------

So my global matrix does not have a block-size of 4. Nevertheless the A00
matrix has a block size of 3!
Is there a way to specify that only on the A00 sub-matrix?

Nicolas



2016-12-07 14:22 GMT+01:00 Barry Smith <bsmith at mcs.anl.gov>:

>
> > On Dec 7, 2016, at 7:06 AM, Karin&NiKo <niko.karin at gmail.com> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20161207/606c58e6/attachment.html>


More information about the petsc-users mailing list