[MOAB-dev] Boundary nodes and faces

Vijay S. Mahadevan vijay.m at gmail.com
Thu Aug 15 02:26:03 CDT 2013


This was actually simpler than I thought. Couple of lines solved the issue:

skinner.find_skin(fileset, elocal, false, bndyfaces, bndyelems);
pcomm->filter_pstatus(bndyfaces,PSTATUS_NOT_OWNED,PSTATUS_NOT);
mbiface->get_connectivity(bndyfaces, bndyvtx, false);

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.
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 ?

Vijay


On Wed, Aug 14, 2013 at 10:01 PM, Vijay S. Mahadevan <vijay.m at gmail.com>wrote:

> Tim, Iulian,
>
> 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.
>
> 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.
>
> Shall update soon.
> Vijay
>
>
> On Wed, Aug 14, 2013 at 9:50 PM, Tim Tautges <tautges at mcs.anl.gov> wrote:
>
>> Note, I've added this to the MOAB faq, http://trac.mcs.anl.gov/**
>> projects/ITAPS/wiki/**ParallelGeomSkin<http://trac.mcs.anl.gov/projects/ITAPS/wiki/ParallelGeomSkin>
>> .
>>
>> - tim
>>
>>
>> On 08/14/2013 09:31 PM, Tim Tautges wrote:
>>
>>> This is tricky.  As you say, if you get the local skin, that'll include
>>> interior entities shared with/ghosted from other
>>> procs.  If you get the skin and remove the shared entities, that'll
>>> remove the vertices that are on the geometric skin
>>> but also shared with other procs.  The right way to do this is:
>>>
>>> - get the highest-dimensional entities on the skin (1d if in 2d, 2d if
>>> in 3d)
>>> - remove any shared entities from that range (because if it's shared,
>>> then by definition there will be d+1 - dimensional
>>> entities on the other proc)
>>> - 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
>>> on get_adjacencies), put in tmp range, then do the same for vertices,
>>> also put in tmp range
>>> - merge the tmp range with the original range
>>>
>>> Like I said, tricky, but welcome to parallel mesh.
>>>
>>
>> --
>> ==============================**==============================**====
>> "You will keep in perfect peace him whose mind is
>>   steadfast, because he trusts in you."               Isaiah 26:3
>>
>>              Tim Tautges            Argonne National Laboratory
>>          (tautges at mcs.anl.gov)      (telecommuting from UW-Madison)
>>  phone (gvoice): (608) 354-1459      1500 Engineering Dr.
>>             fax: (608) 263-4499      Madison, WI 53706
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/moab-dev/attachments/20130815/8a8c065b/attachment-0001.html>


More information about the moab-dev mailing list