[petsc-dev] PCBDDCSetNullSpace

Stefano Zampini stefano.zampini at gmail.com
Wed Sep 19 08:42:54 CDT 2012


> Uh, the PC shouldn't be putting any contribution in the null space of the
> operator.
> >
>

The partially subassembled problem which defines the BDDC preconditioner
inherits the kernel from the problem. This null space should propagate
completely to the coarse problem and not on the dual space. To take care
of, you only need to use a pseudo-inverse for the coarse solution, thus the
choice of removing the coarse null space before and after the coarse
solution step. At present, the outcome of PCApply_BDDC could have a nonzero
component on the null space. In my experiences, this does not have an
impact on the Krylov convergence, except for the fact that you need to use
KSP_NORM_NATURAL for KSP tests (see src/ksp/ksp/examples/tutorials/ex59.c).


>
> >
> > You have to do basically the same thing on coarse levels of multigrid. I
> guess what you're saying is that a side-effect of this treatment in BDDC is
> that the preconditioner already has zero component in the direction of the
> null space so the explicit removal is not necessary? If we're just trying
> to avoid the explicit projection in KSP_PCApply*, I would prefer to add an
> attribute to PC saying that it "handles the null space internally".
> >
> > (I hate having new implementation-specific interfaces that basically do
> the same thing from the user's perspective, thus I want to find a way for
> MatSetNullSpace() to do the right thing.)
>
>    We could modify KSP_RemoveNullSpace() to inquire of the PC inside the
> KSP if the null space should be applied and BDDC could simply say no.
>
>
I agree with your solution. I was already inclined to do that, but I
decided to don't change by myself the KSP interface; thus I temporary pass
the null space info using PCBDDC APIs.

 --
Stefano
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120919/1657b857/attachment.html>


More information about the petsc-dev mailing list