On Sun, Dec 13, 2009 at 5:56 PM, Jed Brown <span dir="ltr"><<a href="mailto:jed@59a2.org">jed@59a2.org</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">On Sun, 13 Dec 2009 16:59:39 -0600, Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> wrote:<br>
>     It was never fully developed (i.e. things might not work). It<br>
> could be we should switch to using that one and slowly remove the<br>
> regular refine (note that one could still use the refinehierarchy one<br>
> several times to get the effect of the current refine.<br>
<br>
</div>So none of the present DMs implement refinehierarchy.  I think it would<br>
be reasonable for DMMGSetDM to always call DMRefineHierarchy where<br>
DMRefineHierarchy had a default implementation that just repeatedly<br>
called DMRefine.  If you didn't want to deprecate DMRefine, a default<br>
implementation for that could be given in terms of DMRefineHierarchy.<br>
Similarly for coarsening, this would get rid of the extra branching in<br>
DMMGSetDM.<br></blockquote><div><br>I will explain the history since I am to blame for this one. I needed coarsenHierarchy<br>because repeated coarsening can cause degradation of the meshes. Thus all<br>coarse meshes must be made at once. I added the hierarchy option, but only the<br>
coarsen branch was used.<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
It seems to me that caller of DMMGSetDM knows whether they are setting<br>
the fine or coarse mesh.  In that case, I don't see the point of the<br>
-dmmg_refine option, and would prefer an explicit argument for whether<br>
the DM is on the fine, coarse, or perhaps intermediate level.  Is there<br>
a use case where the caller of DMMGSetDM doesn't know?<br></blockquote><div><br>I guess this sounds reasonable.<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

DMCoarsenHierarchy is implemented for Mesh, but the array is currently<br>
leaking (DMMGSetDM forgets a PetscFree).  Is it indeed preferred that<br>
the caller does not allocate the array (despite knowing how much is<br>
needed) but is responsible for freeing it (I ask because this is clumsy<br>
for a single level of refinement).  Either way, I'll document the choice<br>
and fix the leak.<font color="#888888"><br></font></blockquote><div><br>Cool. I guess we could have caller allocation, but that is harder to check for<br>correctness.<br><br>   Matt<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<font color="#888888">
Jed<br>
</font></blockquote></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener<br>