<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><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;"><div dir="ltr">This was actually simpler than I thought. Couple of lines solved the issue:<div><br></div><div><div>skinner.find_skin(fileset, elocal, false, bndyfaces, bndyelems);</div><div>pcomm->filter_pstatus(bndyfaces,PSTATUS_NOT_OWNED,PSTATUS_NOT);</div>

<div>mbiface->get_connectivity(bndyfaces, bndyvtx, false);</div></div><div><br></div><div>I thought that the bndyelems range would contain all the element handles that contain the face after the find_skin call. But this is not the case.</div></div></blockquote>I think this is not correct; <br>You are using your fork, I assume, that accepts the fileset as input;<br> there are bndyfaces and bndyelems returned; bndyelems is for "reversed entities"<br>If you passed that as NULL (default) all entities are returned in bndyfaces; if it is not null, the forward and reverse entities are returned separately.<br>(forward and reverse with respect to the adjacent entity in elocal range)<br>Still, you are filtering out non-owned entities; you should remove shared entities; <br><br>If in 3d, you do not have to worry about multishared, usually you cannot have faces that are "multishared", for a correct mesh.<br><br>It is possible that a face is owned, but shared, it will be then in the interior of domain (between parts, but not on the true boundary)<br><br>do this:<br>rval = pcomm->get_shared_entities(-1, shared_ents);// will return all shared entities, including edges, vertices, but you do not care<br>result = subtract(bndyfaces, shared_ents); // the result will be just faces that are on true boundary<br><br><br> > My next related question (but not about the skinner though) is 
whether I can do the reverse lookup of the element to which a face 
belongs to ? 

<div><br></div><div id="DWT890">You can do adjacency call, toward dimension 3 (from 2); you will get adjacent element; <br>get_adjacencies(const EntityHandle *from_entities,<br>                                      const int num_entities,<br>                                      const int to_dimension,<br>                                      const bool create_if_missing,<br>                                      Range &adj_entities,<br>                                      const int operation_type = Interface::INTERSECT) = 0;<br><br>if on true boundary, you will have exactly one element adjacent to a face:<br></div>get_adjacencies(&face,<br>                                      1,<br>                                      3,<br>                                      false,<br>                                      elemRange);<br>elemRange will have one element<br><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;"><div dir="ltr"><div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Aug 14, 2013 at 10:01 PM, Vijay S. Mahadevan <span dir="ltr"><<a href="mailto:vijay.m@gmail.com" target="_blank">vijay.m@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Tim, Iulian,<div><br></div><div>Thanks for the pointers. I think going from the highest-dimension down and removing shared entities from the list makes sense. I have a partial implementation that already does this and will check whether this algorithm yields what I need. </div>


<div><br></div><div>I was originally thinking that Skinner:: find_geometric_skin would give me the boundary vertices but doing it by the process of elimination might be the right way since there is no reliance on GEOM_DIMENSION tag being explicitly defined.</div>


<div><br></div><div>Shall update soon.</div><span class="HOEnZb"><font color="#888888"><div>Vijay</div></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Aug 14, 2013 at 9:50 PM, Tim Tautges <span dir="ltr"><<a href="mailto:tautges@mcs.anl.gov" target="_blank">tautges@mcs.anl.gov</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Note, I've added this to the MOAB faq, <a href="http://trac.mcs.anl.gov/projects/ITAPS/wiki/ParallelGeomSkin" target="_blank">http://trac.mcs.anl.gov/<u></u>projects/ITAPS/wiki/<u></u>ParallelGeomSkin</a>.<span><font color="#888888"><br>



<br>
- tim</font></span><div><br>
<br>
On 08/14/2013 09:31 PM, Tim Tautges wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This is tricky.  As you say, if you get the local skin, that'll include interior entities shared with/ghosted from other<br>
procs.  If you get the skin and remove the shared entities, that'll remove the vertices that are on the geometric skin<br>
but also shared with other procs.  The right way to do this is:<br>
<br>
- get the highest-dimensional entities on the skin (1d if in 2d, 2d if in 3d)<br>
- remove any shared entities from that range (because if it's shared, then by definition there will be d+1 - dimensional<br>
entities on the other proc)<br>
- if you're in 3d and you also want skin edges, get the edges adj to the entities in the range (remember the UNION arg<br>
on get_adjacencies), put in tmp range, then do the same for vertices, also put in tmp range<br>
- merge the tmp range with the original range<br>
<br>
Like I said, tricky, but welcome to parallel mesh.<br>
</blockquote>
<br></div><div><div>
-- <br>
==============================<u></u>==============================<u></u>====<br>
"You will keep in perfect peace him whose mind is<br>
  steadfast, because he trusts in you."               Isaiah 26:3<br>
<br>
             Tim Tautges            Argonne National Laboratory<br>
         (<a href="mailto:tautges@mcs.anl.gov" target="_blank">tautges@mcs.anl.gov</a>)      (telecommuting from UW-Madison)<br>
 phone (gvoice): <a href="tel:%28608%29%20354-1459" target="_blank">(608) 354-1459</a>      1500 Engineering Dr.<br>
            fax: <a href="tel:%28608%29%20263-4499" target="_blank">(608) 263-4499</a>      Madison, WI 53706<br>
<br>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</blockquote><br></div></body></html>