<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: times new roman,new york,times,serif; font-size: 12pt; color: #000000'><br>Hello,<br><br>DMPlexInterpolate is very interesting!<br>Is it slow?<br><br>If I want to call DMplexInterpolate, just after DMPlexCreateFromDAG call, for the example of two triangles sharing an edge, I only have to specify cells and vertices like this in DMPlexCreateFromDAG:<br><br>PetscInt    numPoints[3]             = {4, 0, 2};<br>
PetscInt    coneSize[11]              = {3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0};<br>
PetscScalar vertexCoords[8]      = {-0.5, 0.5, 0.0, 0.0, 0.0, 1.0, 0.5, 0.5};<br><br>and let cones and coneOrientations be empty?<br><br>Cédric<br><br><hr id="zwchr"><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><b>De: </b>"Matthew Knepley" <knepley@gmail.com><br><b>À: </b>"Cedric Doucet" <cedric.doucet@inria.fr><br><b>Cc: </b>petsc-users@mcs.anl.gov<br><b>Envoyé: </b>Vendredi 31 Janvier 2014 12:21:40<br><b>Objet: </b>Re: [petsc-users] Input arguments of DMPlexCreateFromDAG<br><br><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Jan 31, 2014 at 3:23 AM, Cedric Doucet <span dir="ltr"><<a href="mailto:cedric.doucet@inria.fr" target="_blank">cedric.doucet@inria.fr</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-size:12pt;font-family:times new roman,new york,times,serif"><br>Thank you for your answer.<br>I understand well the reason why coneSize begins with faces of cells and vertices first.<br>
However, I am not sure to understand how cone points are numbered in the definition of <start>.<br>For example, in CreateSimplex2D in ex5.c (two triangles sharing an edge), we have:<br><br>PetscInt    numPoints[3]             = {4, 5, 2};<br>
PetscInt    coneSize[11]              = {3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2};<br>PetscInt    cones[16]                   = {6, 7, 8,  9, 7, 10,  2, 3,  3, 4,  4, 2,  5, 4,  3, 5};<br>PetscInt    coneOrientations[16] = {0, 0, 0,  0, -2, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0};<br>
PetscScalar vertexCoords[8]      = {-0.5, 0.5, 0.0, 0.0, 0.0, 1.0, 0.5, 0.5};<br><br>The fact that coneOrientations[4] equals -2 means that edge cones[4]=7 must be oriented in reverse order starting at vertex 1.<br>However, edge 7 is defined by vertices (3,4). Does it mean that a local numbering is used here: (3,4)~(v0,v1)?<br>
</div></div></blockquote><div><br></div><div>Yes, exactly the numbering from cones[8-9].</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-size:12pt;font-family:times new roman,new york,times,serif">
In algebraic topology, a convenient way to orient simplices is to number their vertices in ascendant order.<br>For example, an edge (i,j) is oriented so that i<j, a face (i,j,k) is oriented so that i<j<k, etc.<br>
Can we adopt the same convention here and does it simplify something?<br></div></div></blockquote><div><br></div><div>No, because we do not have exclusively simplices.</div><div><br></div><div>You can simplify by only specifying cells and vertices, which need no orientations, and then calling DMPlexInterpolate(). </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"><div><div style="font-size:12pt;font-family:times new roman,new york,times,serif">
Best regards,<br><br>Cédric Doucet<br><br><br><hr><blockquote style="padding-left:5px;font-size:12pt;font-style:normal;margin-left:5px;font-family:Helvetica,Arial,sans-serif;text-decoration:none;font-weight:normal;border-left:2px solid #1010ff">
<b>De: </b>"Matthew Knepley" <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>><br><b>À: </b>"Cedric Doucet" <<a href="mailto:cedric.doucet@inria.fr" target="_blank">cedric.doucet@inria.fr</a>><br>
<b>Cc: </b><a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a><br><b>Envoyé: </b>Jeudi 30 Janvier 2014 19:26:36<br><b>Objet: </b>Re: [petsc-users] Input arguments of DMPlexCreateFromDAG<br>
<br><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Jan 30, 2014 at 12:19 PM, Cedric Doucet <span dir="ltr"><<a href="mailto:cedric.doucet@inria.fr" target="_blank">cedric.doucet@inria.fr</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-size:12pt;font-family:times new roman,new york,times,serif">Hello,<br>I tried to use DMPlexCreateFromDAG function to create a DM structure from a hybrid mesh.<br>

To understand how it works, I look at ex5.c file.<br>Unfortunately, there are some things that I do not understand.<br>1. Why does coneSize lists faces of cells first, then faces of vertices and finally faces of edges (in 2D)? Listing faces of vertices, then faces of edges and finally faces of cells is not simpler?<br>

</div></div></blockquote><div><br></div><div>This is really about what order you number points. I wanted to support meshes with just cells and vertices, as well as</div><div>those with face and edges. I also wanted to be able to convert between them. Thus it made sense to leave the cell</div>

<div>and vertex numbers invariant under this change. I still think this is the best pragmatic alternative.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><div style="font-size:12pt;font-family:times new roman,new york,times,serif">2  What does coneOrientations contain? For two counterclockwise oriented triangles sharing an edge e={v0,v1}, I understand that {v0,v1} is the right oriented <span style="font-size:12pt">edge for the second triangle (and e for the first one) but what is the meaning of value -2? I read that it is -(o+1) with o=1 but why does o equal 1 in this case?</span></div>

</div></blockquote><div> </div><div>Right now, orientation o = <sign><start> means:</div><div><br></div><div>  <sign>: + means traverse in cone order</div><div>                 - means traverse in the reverse of cone order</div>

<div><br></div><div>  <start>: cone point to start iteration on</div><div>                if <sign> is -, then start on point -(<start>+1)</div><div><br></div><div>Thus -2 means start on point 1 and go in reverse order, so</div>

<div>for an edge that would be {1, 0} which is what you want.</div><div><br></div><div>What we should really have is <start> identify a group element from the symmetry</div><div>group of the point, and <sign> indicate inversion. However, that will be a big rewrite</div>

<div>and needs to be motivated by applications.</div><div><br></div><div>   Matt</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-size:12pt;font-family:times new roman,new york,times,serif">

Thank you very much for your help!<br>Best regards,<br>Cédric Doucet<br><br></div></div></blockquote></div><br><br clear="all"><span class="HOEnZb"><font color="#888888"><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
</font></span></div></div>
</blockquote><br></div></div></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>
</blockquote><br></div></body></html>