Putting a peculiar multilevel scheme into DMMG?

Jed Brown jed at 59A2.org
Sun Dec 13 12:55:19 CST 2009

On Sun, 13 Dec 2009 12:01:39 -0600, Barry Smith <bsmith at mcs.anl.gov> wrote:
> On Dec 13, 2009, at 11:43 AM, Jed Brown wrote:
> > On Sun, 13 Dec 2009 10:11:07 -0600, Matthew Knepley  
> > <knepley at gmail.com> wrote:
> >> Not sure if you would need API additions. Can't everything you  
> >> describe be
> >> handled through defining the grid, operator, residual, and  
> >> projections?
> >
> > Yes, but DMMG doesn't seem to have an API for setting such things.
>     Hmm, doesn't the DMMG make calls on the DM to get those operators?  
> So you would provide a DM that provided the custom beasts you want?

You're right, this can be done by replacing dm->ops->refine rather than
providing an API for that manipulation inside of _n_DMMG.  I would make
this refinement produce DMs with suitable definitions for
dm->ops->getinterpolation.  There is a little nonlocal information in
that my refinement function needs to know when to produce a different
type of DM, but there is no explicit "level" argument.  Using
ops->coarsenhierarchy is better in this regard, but it can only be
selected by setting (currently unprefixed) -dmmg_refine 0
-dmmg_hierarchy.  Is there a reason the DMRefineHierarchy branch of
DMMGSetDM is commented out?  (This is actually the most natural thing
for me.)

>     Or is it that the DMMG doesn't have enough of them? That is, it  
> does not have a separate function for restriction, for interpolation,  
> for residual computer?

That's what I was thinking, but I can just have refinement produce DMs
that know how to do the right thing.

>     Regarding how I see DMMG and PCMG. PCMG has the "function slots"  
> for what MG needs. DMMG calls methods on the DM to "fill" those  
> function slots. The problem is that DMMG is not a PC, so cannot be  
> imbedded inside a larger solve; for example wanting to use DMMG on two  
> components of that three component problem.  My thought was that we  
> would move the "filling" behavior of DMMG directly into PCMG (or PC?)  
> so that a PCMG has both the "function slots" one can fill manually as  
> today or one can provide a DM and the PCMG would use methods on the DM  
> to fill up its own "function slots". It is actually a simpler model  
> than today with the DMMG and more flexible since the DMMG  
> functionality could be used anywhere in a big hierarchy of  
> pcfieldsplit, pccomposite, pcmg etc. Now if I could stop sleeping 10  
> hours a day and wasting most of my awake time on anxiety I could do  
> all this cool shit.



More information about the petsc-dev mailing list