Entity sets - containment and parent-child

Mark Shephard shephard at scorec.rpi.edu
Mon Nov 16 10:55:49 CST 2009


I am not convinced that having lots of people reading lots of old emails 
is useful.

Please, what is needed is defining the solutions and/or clear 
documentation that supports doing what proiple need to do and tells them 
clearly how they can go about doing it.

Mark

Tim Tautges wrote:
> [On a separate note, I've got a request in to restore tstt-interface 
> email archives from before Oct or so; if you know of a working link to 
> those, please forward, as I've lost mine]
> 
> These things have all been discussed and thought about, but they're 
> buried in the list archives.  However, a careful read of the iRel header 
> (http://www.itaps.org/software/iRel_html/index.html) would be 
> beneficial.  Looking back at that, maybe some examples there would help.
> 
> In particular, what you're requesting (the ability to get a mesh 
> entity's corresponding model entity) is what's referred to as an 
> "entity-entity" relation.  The ability to represent both set-based and 
> entity-based relations is a "both"-type relation.  What is missing from 
> iRel, but asked about by me some time ago, is a function to change 
> relation types dynamically.  Without going into a lot of detail, going 
> from an entity-set to an entity-entity relation can have dramatic memory 
> costs; going from an entity-entity to an entity-set type can have 
> dramatic execution time costs.  We need to enable both, because both 
> types are important to various types of use cases.
> 
> Please read through the email exchange over the last several weeks 
> between Carl and me, discussing maintenance of sets under mesh 
> modification.
> 
> - tim
> 
> Mark Beall wrote:
>> I think the concept of an entity set is useful for some things. We 
>> have something similar that we use internally in our code when we need 
>> to do operations on a portion of a mesh. The are somewhat different 
>> than what I see here as an entity set since what we're really relying 
>> on is their behavior when the mesh is modified - removing entities 
>> that are deleted and adding new ones that are created, but then, the 
>> only purpose we have them for is to keep track of things when we are 
>> modifying a mesh.
>>
>> We're struggling a bit to figure out how to effectively interface some 
>> of the concepts in ITAPS to how we deal with things.  I'm not trying 
>> to judge things, but, at times it seems to be that ITAPS is a bit 
>> closer to being a specification of an implementation for some things 
>> than specifying an interface.
>>
>> For some of the things you list that you use entity sets for 
>> (geometric topology, parallel partitions) we have very concrete 
>> expressions of those concepts within our implementation. They don't 
>> build on a common foundation since the ways they are used and the 
>> rules on how they must be used are quite different.
>>
>> In our world, a mesh is always classified on a model. The model may be 
>> a proper geometric model or could just be topology. Various attributes 
>> (boundary conditions, material properties, etc.) are always specified 
>> on the model rather than the mesh. The relation between the mesh and 
>> model is stored bidirectionally and is always consistent (except in 
>> the middle of very low level operations on the mesh which are atomic 
>> operations anyhow).
>>
>> For us, access to data such as entities in a mesh, entities classified 
>> on a model entity, partition boundaries, etc. are all done through 
>> iterators. You never explicitly deal with the "list of entities", only 
>> iterators that are created that can return the entities of interest. 
>> To me, this is a nice way to hide the implementation - the iterators 
>> could be iterating over a single list, a set of lists, or calculating 
>> the data on the fly - the interface is still the same.
>>
>> I've been looking at iRel to understand how classification works here 
>> (actually reverse classification - the set of mesh entities on a model 
>> entity - I don't see a concept anywhere that would give you what model 
>> entity a mesh entity is classified on). It seems that we can emulate 
>> the entity sets that need to be returned by having a type of entity 
>> set that is implemented by one of our iterators. However that entity 
>> set certainly won't be modifiable since you can't arbitrarily modify 
>> that relationship (and since it's bidirectional, it has to be done 
>> correctly -  which for us is to set the classification of the mesh 
>> entity which then updates the reverse classification information).
>>
>> There are some similar issues in iMeshP since, again, the way we 
>> represent partitions (what iMeshP calls Parts) is very explicit in our 
>> code (they are actually the same data structure as a serial mesh, but 
>> with some extra iterators that allow access to entities on the 
>> partition boundaries). I'm going to wait to go into these questions 
>> until Saurabh gets back from his vacation since he's just started 
>> looking into this.
>>
>> The reason I asked the question on how entity sets would be used to 
>> represent the relation between the mesh and the model is that, in the 
>> way we approach things, that's a fundamental property which affects 
>> just about any code that modifies the mesh (e.g. you can't do a swap 
>> of a mesh edge classified on a model edge since the result would break 
>> our rules for a valid mesh). I haven't seen anything in the 
>> documentation that describes what, if any, rules there are like that 
>> in the ITAPS world. Your rules might be quite different than ours, but 
>> I think there have to be some, somewhere...
>>
>> mark
>>
>> On Nov 13, 2009, at 2:13 PM, Tim Tautges wrote:
>>
>>>> 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.
>>
>>
> 



More information about the tstt-interface mailing list