I'm actually not proposing putting extra intelligence into the DM, but into the ApplicationCtx<br>and the associated callbacks that the user can write.  The DM is used to propagate this information<br><div>to the deeper levels of a nested solver hierarchy by "restricting" the relevant ctx/callbacks to the split's subdm.</div><div>Restriction is a standard PETSc way of propagating information through the solver hierarchy (e.g., MG, (N)ASM),</div><div>but it hasn't been used in the FieldSplit context.  </div><div><br></div><div>Currently even a user-defined preconditioner for a Schur <span style="line-height:1.5">complement that sits at a deeper level in the hierarchy</span></div><div><span style="line-height:1.5">cannot be set very easily, especially when the solvers are configured dynamically.</span></div><div><span style="line-height:1.5"><br></span></div><div>Yes, this does place a greater emphasis on DM, but not overly so, in my view.  </div><br><div class="gmail_quote">On Wed Nov 12 2014 at 8:39:23 PM Jed Brown <<a href="mailto:jed@jedbrown.org">jed@jedbrown.org</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Dmitry Karpeyev <<a href="mailto:karpeev@mcs.anl.gov" target="_blank">karpeev@mcs.anl.gov</a>> writes:<br>
<br>
> I think the problem-specific solver configuration can be carried out by an<br>
> additional user-specified callback (attached, e.g., using PCSetUserSetUp())<br>
> called from PCSetUp().<br>
> The problem of propagating it down the hierarchy can be solved by using DMs<br>
> (even DMShell would do, as it carries an ApplicationCtx) and a consistent<br>
> use of DMFieldSplitRestrictHook (by analogy with other restriction hooks,<br>
> like DMSubDomainRestrictHook).  DMFieldSplitRestrict() would be called when<br>
> creating each split and one of the restriction hooks would transfer the<br>
> necessary contexts.<br>
><br>
> This is a bit heavyweight, but flexible and logically consistent, it seems<br>
> to me, and no worse that what has to be done to propagate things like<br>
> DMSNES/DMKSP through the MG hierarchy. (N)ASM uses something similar, too.<br>
<br>
Previously discussed.<br>
<br>
<a href="http://lists.mcs.anl.gov/pipermail/petsc-dev/2012-August/009291.html" target="_blank">http://lists.mcs.anl.gov/<u></u>pipermail/petsc-dev/2012-<u></u>August/009291.html</a><br>
<br>
It makes things more dependent on DM, but that may be less bad than the<br>
alternatives.<br>
</blockquote></div>