[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