Entity sets - containment and parent-child

Tim Tautges tautges at mcs.anl.gov
Fri Nov 13 13:13:28 CST 2009



Mark Beall wrote:
> OK. However, I could do the same thing with two entity sets. In your 
> first example, I could use one to describe the mesh classified on the 
> model face and another to describe the mesh on the boundary of the model 
> face. If I modify your example a bit to include another division of the 
> mesh on the model face, say, a partitioning of it, then I need another 
> entity set anyhow. Essentially having the parent-child relationship 
> gives you some, but not all, of the functionality of another entity set 
> in that one set.
> 

It's not that parent/child relations between sets are the only way one could do something, it's rather that they are an 
abstraction that makes convenient many relationships that occur in metadata that comes with meshes.  You could eliminate 
sets entirely, representing them with tags instead.  But, that wouldn't be easy to traverse, and would probably be 
inefficient too.  And, in your example above, if I understand it correctly, you'd need to embed some sort of 
relationship between the model face owned mesh set and the model face bounding mesh set.  Parent/child relations allow 
you to represent that graph explicitly.

> Two other questions that your answer brings up:
> 
> 1) If you want to decompose your "model face" set into multiple subsets, 
> wouldn't it be best to have the iterators on entity sets be capable of 
> doing a "deep" traversal of the entity set (returning all of entities in 
> the entity set, even if they are contained in a entity set contained in 
> the entity set). It would seem that if entity sets are going to be used 
> in the way you describe, everyone would have to write that code anyhow 
> since they don't know what they will be given.
> 

Yeah, that's quite common.  In fact, I use various iMesh extension functions, and that's one of them.  See 
http://trac.mcs.anl.gov/projects/ITAPS/browser/MOAB/trunk/tools/iMesh/iMesh_extensions.h for the complete list.

> 2) Has anyone defined how entity sets would be used to describe the 
> relation between a mesh and a model? Since there is more than one 
> possible way to do that (you add the mesh of the edge around a face as 
> children of the entity set for the mesh face and I add them as entity 
> sets in the entity set for the mesh face), it would seem that it needs 
> to be defined otherwise no one will be able to write code that uses that 
> information.

TTYTT, I've had trouble enough just convincing the group that sets themselves were useful.  In my thinking, what you 
describe above is a convention for how data gets embedded in the data model.  I follow various types of conventions for 
e.g. geometric topology, boundary conditions and materials, parallel partitions, and various other things.  I've not 
been able to convince others about the utility of conventions for options to use for loading mesh in parallel.  And 
finally, there are many cases where there's not a single "right" convention.  For example, storing model-mesh 
relationships in sets is very memory efficient, but time-inefficient if you're querying individual entities for their 
model equivalents.  One specific thing I've mulled over proposing is some common functionality for converting, or 
copying, set membership to tags, and vice versa.  You'd do the set-to-tag conversion e.g. in preparation for smoothing 
or adapting, then the reverse after that was done and you wanted to recover memory.

- tim

> 
> 
> On Nov 12, 2009, at 12:36 PM, Tim Tautges wrote:
> 
>> I figured you'd ask that next.  The two that come to mind most readily:
>>
>> a) I use entity sets to represent geometric topology groupings in the 
>> mesh, and parent/child relations between those to represent the 
>> topological relationships between the original geometric entities.  
>> So, I have "model face" sets, whose contents are the mesh owned by 
>> that model face, and children corresponding to the bounding model 
>> edges.  Instead of directly including the mesh faces in a model face 
>> set, say I want to preserve a grouping of those faces, e.g. the 
>> original rectangles of faces composing an "E" or "L" shaped structured 
>> mesh.  This would most naturally be stored as rectangle sets of faces 
>> contained in the model face set.  Similar examples can be made for 
>> swept meshes in 3d.
>>
>> b) Parts in a parallel mesh: parent-child relations can be used to 
>> represent the relationship between parts and their boundaries.  If you 
>> construct a partition using e.g. material sets or model volume sets, 
>> then a part set will have both child sets (the boundaries of the part) 
>> and contained sets (the model volumes composing the part).
>>
>> - tim
>>
>> Mark Beall wrote:
>>> I'd be interested in knowing the various use cases for using entity 
>>> set containment vs. a parent-child relationship. It seems to me that 
>>> they are just about identical, so I'm curious when one would use one 
>>> vs. the other.
>>> mark
>>
>> -- 
>> ================================================================
>> "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: (608) 263-8485      1500 Engineering Dr.
>>           fax: (608) 263-4499      Madison, WI 53706
>>
> 
> 

-- 
================================================================
"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: (608) 263-8485      1500 Engineering Dr.
            fax: (608) 263-4499      Madison, WI 53706



More information about the tstt-interface mailing list