On Mon, May 28, 2012 at 5:02 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote:
> This is an enormous amount of new code and changes to put in during a code > freeze, but my test case works now. We can revert, if it starts causing problems. The extra code is due to the API chance, hence several new interface functions. > A couple comments from looking at the patch: > > I'm not sure I like the direction of the link in DMSetEmbedding(DM dm, IS > embedding, DM ambientdm). Normally the composite DM knows how to fit its > pieces together, but the sub-DM does not have "upward links" to the global > problem. > This is to be able to combine domain and field splits: sometimes a subDM has to know how to "relativize" itself with respect to another subDM. > > There are dead links in your documentation because you reference functions > that don't exist (were renamed), e.g. DMCreateDecomposition() in the > DMSetEmbedding() man page. There may be more. You should generate the docs > and check the man pages. > > How does your interface support "Neumann" subdomains? > I think this issue is orthogonal to the definition of the decomposition, since there has to be additional support at the PC and Mat level to assemble the Neumann subproblems. At this point you would have to do some combination of PCASMSetModifySubmatrices() with nullspace removal. > > Your DMCreateDomainDecomposition() seems to provide nominally overlapping > index sets, but how do we determine what part is owned? (RASM, especially, > needs both an overlapping decomposition and a (non-overlapping) partition. > My intent was to have these be nonoverlapping and expand them with another call (e.g., DMDomainDecompositionIncreaseOverlap(). The current API plays better with GASM, since that PC assumes that the basic subdomains are nonoverlapping. That fix will have to wait for the next release, I guess. Dmitry. > > On Mon, May 28, 2012 at 4:32 PM, Dmitry Karpeev <karpeev at mcs.anl.gov>wrote: > >> I refactored the code to get rid of field/domain decomposition mixing. >> The use of DM in ASM is reenabled here: >> http://petsc.cs.iit.edu/petsc/petsc-dev/rev/2e2ee6a01d1a >> I didn't see any errors related to it in alltest, but I'll keep an eye on >> the nightlies. >> >> Dmitry. >> >> >> On Sun, May 27, 2012 at 9:40 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote: >> >>> In particular, read through my first email in this thread. I explain how >>> your implementation leads to several instances of either the wrong >>> algorithm or a crash. >>> >>> I pushed SNES runex48_5, it is a basic test of PCASM using AIJ, BAIJ, >>> and SBAIJ. >>> >>> If you revert http://petsc.cs.iit.edu/petsc/petsc-dev/rev/d9a0e3f9dacd, >>> the AIJ test will take much more iterations and the other two will crash. >>> >>> >>> On Sun, May 27, 2012 at 9:02 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote: >>> >>>> ./ex48 -pc_type asm >>>> >>>> does the wrong algorithm. >>>> On May 27, 2012 8:56 PM, "Dmitry Karpeev" <karpeev at mcs.anl.gov> wrote: >>>> >>>>> I think I have a fix and want to reenable DM to serve up >>>>> decompositions to PCASM. >>>>> Was there a particular test that was failing? I don't see any >>>>> decomposition-related errors in alltest. >>>>> Dmitry. >>>>> >>>>> On Sat, May 26, 2012 at 10:38 PM, Jed Brown <jedbrown at >>>>> mcs.anl.gov>wrote: >>>>> >>>>>> On Sat, May 26, 2012 at 10:24 PM, Dmitry Karpeev <karpeev at mcs.anl.gov >>>>>> > wrote: >>>>>> >>>>>>> How about having a DM-specific function for that designation? >>>>>>>> >>>>>>> DMXXXGetFieldSplits()/DMXXXGetDomainDecompositions(), for example? >>>>>>> >>>>>> >>>>>> For the C interface, maybe configure a named set with DMXxxSet... and >>>>>> tell PCASM to use it. For the options database interface, maybe have the >>>>>> option processed by DMXxx code instead of by PCASM. I don't know, this >>>>>> might be just as bad. >>>>>> >>>>>> >>>>>>> I think that would work, if the implementation defined only a small >>>>>>> number of decompositions. >>>>>>> If instead there is a short grammar defining well-formed strings >>>>>>> naming such decompositions, I'm not sure how to >>>>>>> communicate that to the user, other than in documentation. I have >>>>>>> DMLibMeshGetVars() to return all vars. FieldSplits >>>>>>> can be defined as arbitrary groupings of those. Each split will >>>>>>> then advertise only the vars in the groupings that defines the split. >>>>>>> >>>>>> >>>>>> I still don't know what to do about a nonlinear change of basis. >>>>>> Advertising var names seems reasonable to me. >>>>>> >>>>>> Note that ASM domains are essentially vertex-oriented which is >>>>>> different from element-centered domains (natural for non-overlapping >>>>>> methods). >>>>>> >>>>> >>>>> >>> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120528/2266db6f/attachment.html>