<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Nov 22, 2013 at 12:11 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 Fri, Nov 22, 2013 at 3:08 AM, Matthew Knepley <<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>> wrote:<br>

> On Thu, Nov 21, 2013 at 8:12 PM, Geoffrey Irving <<a href="mailto:irving@naml.us">irving@naml.us</a>> wrote:<br>
>><br>
>> What are the orientation semantics of DMPlex?  I figured if I listed<br>
>> the edges of each triangle in counterclockwise order it would come out<br>
>> right, but it appears to be right for some triangles and wrong for<br>
>> others.  Do I always have to call DMPlexSetConeOrientation?<br>
>><br>
>> Unfortunately, I haven't yet grasped the documentation for<br>
>> DMPlexSetConeOrientation.<br>
><br>
> This is because I have kept changing my mind. There is the way it is, and<br>
> the way I want it to be now. So, the way it is:<br>
><br>
>   All cone arrows have an orientation attached. This indicates the order in<br>
> which the _next_ cone (of that cone point) should be read out. The order<br>
> is cyclic. A positive integer p means "start from vertex p instead of 0". A<br>
> negative integer q means "start from -(q+1) and go backward".<br>
<br>
</div>Can't the order only be meaningfully described as cyclic only if the<br>
child element has dimension 2 (triangles) where the element boundary<br>
is topologically S^1?  A cyclic order doesn't make any sense for<br>
tetrahedra (boundary S^2) or for segments (S^1), both of which have<br>
trivial fundamental group.  If I have a triangle (0 1 2) pointing to<br>
child segment (0 1), wouldn't orientation values 0 and -1 refer to the<br>
same traversal?<br></blockquote><div><br></div><div>There is a problem with the word "orientation", since it does not mean what</div><div>is traditional in topology. Rather it means something close to a label for the</div>
<div>element of the symmetric group associated with the cell. So it really is</div><div>PetscInt.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Since only one bit is ideally conveyed here, namely the sign of the<br>
permutation required to reorient the child to match the parent, would<br>
it be better to have orientations be PetscBool?  Is it too late for<br>
that kind of API change?<br>
<div class="im"><br>
> The important thing to remember here is that this is ordering only the cone<br>
> points, and is composed with higher level ordering when reading out the<br>
> full closure is 3D. I have considered changing the semantics for negative<br>
> values to start at -(coneSize-q+1) since then negation does what you think<br>
> it should (go backwards from the guy just before), but then all the routines<br>
> needs to know the coneSize which is not great.<br>
><br>
> The reason that your example does not work is that triangles on opposite sides<br>
> of an edge must have the opposite orientation for that edge. For example, an<br>
> edge e = {v0, v1} lies between two triangles. Now the cone of e will always come<br>
> out {v0, v1}. In triangle 0 that is fine, but in triangle 1 it needs to be {v1, v0} if all<br>
> triangles are oriented counter-clockwise, so we need orientation -2 for that edge<br>
> in the cone of triangle 1.<br>
<br>
</div>Thanks, I should be good to go.  It might be useful to have a<br>
consistency checking routine for users to run to make sure their<br>
custom created DMPlex is valid.</blockquote><div><br></div><div>I do have DMPlexOrient(). We should probably add DMPlexCheckOrientation() which</div><div>does exactly the same thing except mismatches are not corrected.</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>