[petsc-dev] BDDC code

Matthew Knepley knepley at gmail.com
Tue Jan 31 09:06:33 CST 2012


On Tue, Jan 31, 2012 at 5:12 AM, Stefano Zampini
<stefano.zampini at gmail.com>wrote:

>
>
> 2012/1/31 Jed Brown <jedbrown at mcs.anl.gov>
>
>> On Thu, Jan 26, 2012 at 04:04, Stefano Zampini <stefano.zampini at gmail.com
>> > wrote:
>>
>>> I'm partially refactoring BDDC code I contributed to petsc-dev, trying
>>> to limit the extent of hand-written code and to exploit already existing
>>> PETSc code. I want to know if there are DM objects in PETSc suitable to
>>> store informations related to the local to global map of MATIS objects
>>> which I can use to manage communications between different levels (through
>>> DMCoarsen, DMGetInterpolation and DMGetMatrix). DMMesh can do the job?
>>>
>>
>> Sorry for the slow reply. The question, I think, is how to produce a
>> Galerkin coarse grid operator of type MATIS. I think we can write
>> MatPtAP_IS without too much trouble, although I don't know how it would
>> perform.
>>
>> I don't see how there is enough information in a MATIS to define
>> coarsening and interpolation algebraically.
>>
> But maybe you are thinking of making PCBDDC algebraically construct a grid
>> hierarchy? I would not be inclined to put that into DM, instead, I would
>> call PCMG functions directly.
>>
>
> About DMMesh, here is my idea: you can attach the adjacency matrix of
> subdomain connectivity through faces to a DMMesh object. Then, DM should be
> able to manage one level coarsening using MatPartitioning interface. All
> stuffs needed to manage communications between levels will then be hidden
> in the DM interface.
>

One thing: Use DMComplex instead of DMMesh. This is a pure C
reimplementation without a lot of the cruft.

  Thanks,

    Matt


> I thought about wrapping PCBDDC into PCMG: it can be done, but you will
> need to apply PCMG inside a PCIS preconditioner. The problem is that BDDC
> per se (see PCBDDCApplyInterfacePreconditioner) is a 2 level additive
> method (and this can be wrapped easily into PCMG) applied on a
> statically-condensed corrected residual (see PCApply_BDDC) (same correction
> is applied also for PCNN in PETSc). In order to wrap properly PCBDDC into
> PCMG, I think you will first need to call PCApply_IS (with the same code of
> the actual PCApply_BDDC, very similar to PCApply_NN), and inside this call
> PCApplyInterfacePreconditioner_BDDC (or PCApplyInterfacePreconditioner_NN).
> This will also imply that you can select BDDC (and NN) only by calls of the
> type
>
> KSPGetPC(ksp,&pc);
> PCSetType(pc,PCIS);
> PCISSetType(pc,PCBDDC); (or PCNN)
>
> Am I wrong?
> --
> Stefano
>



-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120131/b05993a5/attachment.html>


More information about the petsc-dev mailing list