[petsc-users] left and right preconditioning with a constant null space
Klaij, Christiaan
C.Klaij at marin.nl
Fri Mar 24 07:34:32 CDT 2017
I've also loaded the four blocks into matlab, computed
Sp = A11 - A10 inv(diag(A00)) A01
and confirmed that Sp has indeed a constant null space.
Chris
dr. ir. Christiaan Klaij | Senior Researcher | Research & Development
MARIN | T +31 317 49 33 44 | mailto:C.Klaij at marin.nl | http://www.marin.nl
MARIN news: http://www.marin.nl/web/News/News-items/Comfort-and-Safety-at-Sea-March-29-Rotterdam.htm
________________________________________
From: Klaij, Christiaan
Sent: Friday, March 24, 2017 9:05 AM
To: Lawrence Mitchell; Matthew Knepley
Cc: petsc-users at mcs.anl.gov
Subject: Re: [petsc-users] left and right preconditioning with a constant null space
Lawrence,
I think you mean "-fieldsplit_1_mat_null_space_test"? This
doesn't return any info, should it? Anyway, I've added a "call
MatNullSpaceTest" to the code which returns "true" for the null
space of A11.
I also tried to run with "-fieldsplit_1_ksp_constant_null_space"
so that the null space is only attached to S (and not to
A11). Unfortunately, the behaviour is still the same: convergence
in the preconditioned norm only.
Chris
________________________________________
From: Lawrence Mitchell <lawrence.mitchell at imperial.ac.uk>
Sent: Thursday, March 23, 2017 4:52 PM
To: Klaij, Christiaan; Matthew Knepley
Cc: petsc-users at mcs.anl.gov
Subject: Re: [petsc-users] left and right preconditioning with a constant null space
On 23/03/17 15:37, Klaij, Christiaan wrote:
> Yes, that's clearer, thanks! I do have is0 and is1 so I can try
> PetscObjectCompose and let you know.
>
> Note though that the viewer reports that both S and A11 have a
> null space attached... My matrix is a matnest and I've attached a
> null space to A11, so the latter works as expected. But is the viewer
> wrong for S?
No, I think this is a consequence of using a matnest and attaching a
nullspace to A11. In that case you sort of "can" set a nullspace on
the submatrix returned in MatCreateSubMatrix(Amat, is1, is1), because
you just get a reference. But if you switched to AIJ then you would
no longer get this.
So it happens that the nullspace you set on A11 /is/ transferred over
to S, but this is luck, rather than design.
So maybe there is something else wrong. Perhaps you can run with
-fieldsplit_1_ksp_test_null_space to check the nullspace matches
correctly?
Lawrence
More information about the petsc-users
mailing list