Note, for best performance with ML and GAMG you want to give it the near kernel for the 00 block. These are the 6 "rigid body modes" or zero energy modes. PETSc provides some tools to do that (eg, MatNullSpaceCreateRigidBody).
On Wed, Dec 7, 2016 at 4:45 PM, Lawrence Mitchell < [email protected]> wrote: > > > On 07/12/16 13:43, Karin&NiKo wrote: > > 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? > > I presume you are defining the splits by providing ISes. You need to > set the block size on the IS that defines the A00 block appropriately, > then the submatrix will have it. > > Lawrence > >
