[petsc-users] left and right preconditioning with a constant null space

Lawrence Mitchell lawrence.mitchell at imperial.ac.uk
Thu Mar 23 05:57:09 CDT 2017



On 23/03/17 08:42, Klaij, Christiaan wrote:
> Matt, Lawrence
> 
> 
> The same problem happens when using gmres with rtol 1e-6 in the
> schur complement (attachment "left_schur"). I'm not sure what
> this tells us. If I understand Lawrence correctly, the null space
> may be attached to the wrong matrix (A11 instead of Sp)?

I think I misread the code.

Because you can only attach nullspaces to either Amat or Pmat, you
can't control the nullspace for (say) Amat[1,1] or Pmat[1,1] because
MatCreateSubMatrix doesn't know anything about nullspaces.

So the steps inside pcfieldsplit are:

createsubmatrices(Amat) -> A, B, C, D

setup schur matrix S <= D - C A^{-1} B

Transfer nullspaces onto S.

How to transfer the nullspaces?  Well, as mentioned, I can't put
anything on the submatrices (because I have no way of accessing them).
 So instead, I need to hang the nullspace on the IS that defines the S
block:

So if you have:

is0, is1

You do:

PetscObjectCompose((PetscObject)is1, "nullspace", nullspace);

Before going into the preconditioner.

If you're doing this through a DM, then DMCreateSubDM controls the
transfer of nullspaces, the default implementation DTRT in the case of
sections.  See DMCreateSubDM_Section_Private.

Clearer?

Lawrence

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20170323/021b9f34/attachment.pgp>


More information about the petsc-users mailing list