[petsc-users] Nullspaces for schur complement PCs

Dmitry Karpeyev karpeev at mcs.anl.gov
Wed Nov 12 20:15:19 CST 2014


On Wed Nov 12 2014 at 7:49:28 PM Jed Brown <jed at jedbrown.org> wrote:

> Barry Smith <bsmith at mcs.anl.gov> writes:
> >    Perhaps we need a generic way of attaching null spaces to parts of
> >    matrices and to parts of matrices in different basis (which is what
> >    a Schur complement is). So (and this is likely overly simplistic)
> >    one could supply a null space, an index set, and a flag indicating
> >    either "part of the matrix" or the "Schur complement of the matrix
> >    with respect to an index set".  These provided null spaces could
> >    then be used by the preconditioners (like Fieldsplit) that
> >    manipulate parts of the matrix or Schur complement.
>
> Yes, this is conceptually right, but it looks to me like it gets hairy
> for recursive splitting.
>

I don't think we can anticipate every possible solver configuration and
hang enough additional information on the objects we passed down a
deeply-nested solver hierarchy.  Even if we could, we could end up with
very long lists of flags and objects, and complicated case statements to
sift through the flags attached to the Mat.  Also, what if the split in
question is a couple of levels down the solver hierarchy (not at all out of
the question for many multiphysics problems)?  The user doesn't get to
create that Mat or PC and, therefore, doesn't have an opportunity to pass
down the necessary extra information.

I think the problem-specific solver configuration can be carried out by an
additional user-specified callback (attached, e.g., using PCSetUserSetUp())
called from PCSetUp().
The problem of propagating it down the hierarchy can be solved by using DMs
(even DMShell would do, as it carries an ApplicationCtx) and a consistent
use of DMFieldSplitRestrictHook (by analogy with other restriction hooks,
like DMSubDomainRestrictHook).  DMFieldSplitRestrict() would be called when
creating each split and one of the restriction hooks would transfer the
necessary contexts.

This is a bit heavyweight, but flexible and logically consistent, it seems
to me, and no worse that what has to be done to propagate things like
DMSNES/DMKSP through the MG hierarchy. (N)ASM uses something similar, too.

Dmitry.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20141113/3241548b/attachment.html>


More information about the petsc-users mailing list