[petsc-dev] PCBDDCSetNullSpace
Stefano Zampini
stefano.zampini at gmail.com
Wed Sep 19 11:39:16 CDT 2012
2012/9/19 Barry Smith <bsmith at mcs.anl.gov>
>
> On Sep 19, 2012, at 8:42 AM, Stefano Zampini <stefano.zampini at gmail.com>
> wrote:
>
> >
> >
> >
> > > 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).
>
> This KSP_NORM_NATURAL is a symptom of the problem, I think you really
> do want to also have the usual removal of the null space after applying the
> preconditioner (for left preconditioning) like all other pre conditioners.
>
>
Sorry to be misleading: I didn't already test ex59 in the pure neumann case
using information passed in via PCBDDCSetNullSpace. I checked and now
KSP_NORM_NATURAL is not needed anymore. But, sure, something can be missing
in the implementation.
> Barry
>
> >
> >
> > >
> > > 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
>
>
--
Stefano
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120919/0037326b/attachment.html>
More information about the petsc-dev
mailing list