<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Nov 21, 2013 at 3:23 PM, Geoffrey Irving <span dir="ltr"><<a href="mailto:irving@naml.us" target="_blank">irving@naml.us</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Wed, Nov 20, 2013 at 3:52 PM, Matthew Knepley <<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>> wrote:<br>

> On Tue, Nov 19, 2013 at 5:27 PM, Geoffrey Irving <<a href="mailto:irving@naml.us">irving@naml.us</a>> wrote:<br>
>><br>
>> This question isn't about changing ex12, I'm just making sure I<br>
>> understand what's going on:<br>
>><br>
>> SetupSection in snes ex12 calls DMPlexLabelComplete on the "marker"<br>
>> label if Dirichlet conditions are chosen (not if Neumann is chosen).<br>
>> Specifically,<br>
>><br>
>>     if (user->bcType == DIRICHLET) {ierr = DMPlexLabelComplete(dm,<br>
>> label);CHKERRQ(ierr);}<br>
>><br>
>> It then uses the same label ("marker") to create an index set:<br>
>><br>
>>     if (user->bcType == DIRICHLET) {ierr  = DMPlexGetStratumIS(dm,<br>
>> bdLabel, 1, &bcPoints[0]);CHKERRQ(ierr);}<br>
>><br>
>> I believe 1 is the codimension.  If the index set is restricted to<br>
>> codimension 1, and DMPlexLabelComplete labels vertices based on edge<br>
>> labels, isn't the DMPlexLabelComplete call unnecessary?<br>
><br>
><br>
> 1) The value 1 is just a convention that I use for marking the boundary. In a real simulation,<br>
>      there are probably many makers and they are user specified. This is what happens in<br>
>      TS ex11.<br>
><br>
> 2) I should probably complete the label in the Neumann case, but I just forgot. The completion<br>
>      is not necessary the way my defaults mesh generators work, but is sometimes necessary<br>
>      when reading stuff in.<br>
<br>
</div>Actually, it looks like calling DMPlexLabelComplete in the Neumann<br>
case breaks with an error later.  In plexfem.c, if feBd is nonzero,<br>
DMPlexComputeCellGeometry is called on all "points", where points are<br>
actually whatever the DMLabel "boundary" spits out.<br>
DMPlexComputeGeometry bails with an exception if called on anything<br>
with dimension 0:<br>
<br>
[0]PETSC ERROR: DMPlexComputeCellGeometry() line 783 in<br>
src/dm/impls/plex/plexgeometry.c Unsupported dimension 0 in cell 2 for<br>
element geometry computation<br>
<br>
Should the "points" variable be "faces"?  Should I restrict the loops<br>
in plexfem.c to only touch codimension 1 elements?</blockquote><div><br></div><div>Definitely we should guard the feBd loop to only look at co-dimension 1 things. I think</div><div>we need to allow all points in boundary labels.</div>
<div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="HOEnZb"><font color="#888888"><br>
Geoffrey<br>
</font></span></blockquote></div><br><br clear="all"><div><br></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
</div></div>