itaps-parallel Questions about iMeshP

Tim Tautges tautges at mcs.anl.gov
Tue Dec 22 13:20:57 CST 2009


First: it's very true that we agreed to that for iMeshP, and thanks for the reminder.  I think we should clarify the 
documentation on exactly what iMesh functions should function when passed a Part handle (which was also part of that 
agreement).

Second: whether or not the current iRel spec can support Mark B's model-mesh needs is not open.  The question is one of 
style.  Also, the current iRel spec was also agreed to, at least by Mark S; that includes the pending change eliminating 
"association" in favor of "relation".

- tim

Mark Shephard wrote:
> As a quick reminder. We had an entire boot-camp on iMeshP and it was 
> clearly decided that iMeshP was to be defined such that is was 
> independent of mesh sets and that implementations could decide if they 
> wanted to use mesh sets as the core of their implementation or not.
> 
> It is for the same reasons that that having simple and direct 
> mesh-to-model and model-to-mesh functions is of importance. This has 
> also been discussed for a long time (way back in TSTt) with an 
> indication it would be addressed. It is still open.
> 
> The current discussion continues to expand, which is useful for gaining 
> a better understanding of how ITAPS mesh sets work and how one can use 
> them for various things. However, one way or the other the issue of 
> defining the needed mesh-to-model and model-to-mesh functions is not 
> being addresses. Mark Beall has provided a specific recommendation for 
> such functions. If we want to progress on understanding how to get ITAPS 
> implementation of iMesh and iGeom working with each other, we need to 
> get back to this issue and get it resolved.
> 
> Mark
> 
> Mark Beall wrote:
>> I can give our perspective on an answer to that question. We have a 
>> partitioned mesh implementation that is not implemented using entity 
>> sets. Thus, the question is which entity set functions would we 
>> support in this case. I've broken up the entity set functions below 
>> into various groups as described below. The short summary is that our 
>> implementation will only support the four functions listed in the 
>> initial set. That may, or may not, be considered a woefully 
>> incompletely implementation of iMeshP.
>>
>> Entity set functions that make sense (meaning that I need to have this 
>> functionality for a part) for an implementation that does not 
>> implement parts as entity sets:
>> iMesh_addEntToSet
>> iMesh_rmvEntFromSet
>> iMesh_addEntArrToSet
>> iMesh_rmvEntArrFromSet
>>
>> Entity set functions that I'm not actually sure make sense as 
>> fundamental operations on entity sets. Is there any way to implement 
>> these that isn't just as efficient as they could be written through an 
>> iterator? If not, then it seems they would be better implemented once 
>> as a service that builds on the interface (and then could be used with 
>> anything that provides an iterator, not just sets).
>> iMesh_subtract
>> iMesh_intersect
>> iMesh_unite
>>
>> Entity set functions have equivalent functionality in iMeshP:
>> iMesh_createEntSet
>> iMesh_destroyEntSet
>> - these sets are not something that the user can create and destroy 
>> this way, you create and destroy parts
>>
>> iMesh_isEntContained
>> iMesh_isEntArrContained
>>
>> iMesh_initEntArrIter
>>
>> iMesh_isList
>> - parts are unordered
>>
>> Entity set functions that fundamentally don't make sense for an 
>> implementation that doesn't implement parts as entity sets. As I 
>> stated in a previous email, it doesn't make sense to enforce the 
>> semantics of set containing sets for an implementation that doesn't 
>> implement things that way.
>> iMesh_getNumEntSets
>> iMesh_getEntSets
>> iMesh_addEntSet
>> iMesh_rmvEntSet
>> iMesh_isEntSetContained
>>
>> Entity set functions that provide other functionality that I'm unsure 
>> of the value with parts. We wouldn't implement these until there was a 
>> clear demonstration of value that couldn't be obtained otherwise.
>> iMesh_addPrntChld
>> iMesh_rmvPrntChld
>> iMesh_isChildOf
>> iMesh_getNumChld
>> iMesh_getNumPrnt
>> iMesh_getChldn
>> iMesh_getPrnts
>>
>> iMesh_setEntSetData
>> iMesh_setEntSetIntData
>> iMesh_setEntSetDblData
>> iMesh_setEntSetENData
>> iMesh_getEntSetData
>> iMesh_getEntSetIntData
>> iMesh_getEntSetDblData
>> iMesh_getEntSetEH_data
>> iMesh_getAllEntSetTags
>> iMesh_rmvEntSetTag
>>
>>
>> On Dec 21, 2009, at 2:31 PM, Tim Tautges wrote:
>>
>>> I don't have a problem making parts read-only, though I question then 
>>> how one builds partitions.
>>>
>>> In terms of duplicating functions in iMesh to specialize for Parts, 
>>> if we do that, then I question why we even have an abstraction for 
>>> sets, if we're not going to use it for something like this?
>>>
>>> At minimum, before even considering adding something like that to the 
>>> interface, I'd want to see somebody write up a paragraph contrasting 
>>> Parts and entity sets and explaining why distinct things in the data 
>>> model are used.  Not for justification to me, but for explanation to 
>>> our users, who I'm certain will be asking that question.  If the 
>>> choice is so clear, it should be easy to describe in a short amount 
>>> of space.
>>>
>>> I agree that we need more documentation all around (I've just sent 
>>> out the one I wrote on iRel, to a smaller group, but if you're 
>>> curious let me know and I'll send a copy).
>>>
>>> - tim
>>>
>>> Devine, Karen D wrote:
>>>> Mark B.:  You are correct that the documentation is confusing.  Our 
>>>> hope was
>>>> that an implementation could differentiate between an entity set 
>>>> handle and
>>>> a part handle, and react differently based on the handle type.  Thus,
>>>> overloading some entity set functions to work on parts with part 
>>>> handles
>>>> would allow the iMeshP interface to be smaller.  Do you think this 
>>>> approach
>>>> is infeasible for at least some of the functions?  You are probably 
>>>> correct
>>>> that not all entity set functions make as much sense in the part 
>>>> context; we
>>>> can correct the documentation for those.
>>>> All:  What do you think of Mark B's proposal that parts be "read-only"
>>>> entity sets and have part-specific add/remove functions?  Also, we 
>>>> should go
>>>> through the iMesh interface carefully and determine for which 
>>>> functions the
>>>> overloading is appropriate and for which functions it is not.  If we 
>>>> now
>>>> agree that the entire approach is infeasible, we should define the part
>>>> functions needed to complete iMeshP.
>>>> Karen
>>>> On 12/16/09 9:30 AM, "Mark Beall" <mbeall at simmetrix.com> wrote:
>>>>> In reading things again, there is this bullet above the one I quoted:
>>>>>
>>>>> - Many iMesh functions that accept an iBase_EntitySetHandle are also
>>>>> useful in the context of a iMeshP_PartHandle. These functions are
>>>>> reinterpreted so that they can accept either an iBase_EntitySetHandle
>>>>> or an iMeshP_PartHandle.
>>>>> What, exactly, does this imply? My concern is that it means that a
>>>>> part has to behave as an entity set for a call like iMesh_addEntSet
>>>>> (which adds an entity set to an existing set). The semantics of an
>>>>> entity set say that, if I make this call, the entity set that I added
>>>>> would have to be returned if I subsequently called iMesh_getEntSets on
>>>>> that part.
>>>>> I don't really see how an implementation that doesn't represent parts
>>>>> as entity sets could reasonably be expected to do this.
>>>>> If the intention isn't to require the above to work that way, it would
>>>>> seem that it would be better to say that a part is a "read-only"
>>>>> entity set and that there be part-specific functions to add/remove
>>>>> entities to/from a part. It seems to me that this would allow
>>>>> efficient implementations whether or not they are done using entity
>>>>> sets.
>>>>> mark
>>>>> On Dec 15, 2009, at 4:06 PM, Mark Beall wrote:
>>>>>
>>>>>> On Dec 15, 2009, at 2:14 PM, Tim Tautges wrote:
>>>>>>
>>>>>>>>> 4. It is mentioned that a part can act as an entityset. Since
>>>>>>>>> entitysets
>>>>>>>>> can have parent-child and containment relationships with other
>>>>>>>>> entitysets, does this mean that parts need to have them too? If
>>>>>>>>> so, it
>>>>>>>>> is undefined what this means with respect to the partitioning. If
>>>>>>>>> not,
>>>>>>>>> what is the expected course of action when a part is used in an
>>>>>>>>> iMesh
>>>>>>>>> entityset function call which would result in a hierarchical
>>>>>>>>> relationship?
>>>>>>>>>
>>>>>>>> The only API requirement is that the functions for querying the
>>>>>>>> contents of
>>>>>>>> sets also work for parts.  Whether or not those functions that
>>>>>>>> *modify* sets
>>>>>>>> (either contents or parent/child links) can be called on a part is
>>>>>>>> implementation-dependent.
>>>>>>> Actually, the v0.8 iMeshP.h states that *all* functions in the
>>>>>>> serial interface taking sets should also work for parts.  So, I
>>>>>>> think that includes things like parent/child relations.  Same goes
>>>>>>> for contains relations. I think that does imply the need for a
>>>>>>> recursive getEntities function (which I have in a set of extensions
>>>>>>> to iMesh, BTW).
>>>>>> One thing it does say is the following:
>>>>>>
>>>>>> - In particular, entities are added to and removed from local parts
>>>>>> via the same functions that are used to manipulate entity sets. That
>>>>>> is, given a mesh instance, an entity handle, and a part handle, the
>>>>>> entity is added to or removed from the part via calls to the
>>>>>> following functions with the part handle passed as the entity set
>>>>>> handle:
>>>>>> - Add entity to part --> iMesh_addEntToSet
>>>>>> - Remove entity from part --> iMesh_rmvEntFromSet
>>>>>> - Add array of entities to part --> iMesh_addEntArrToSet
>>>>>> - Remove array of entities from part --> iMesh_rmvEntArrFromSet
>>>>>>
>>>>>> I didn't re-read the entire thing again to see if it says that all
>>>>>> other functions taking sets should also work for parts. However, if
>>>>>> that is the case, it would seem that that requires an implementation
>>>>>> that actually represents parts as entity lists.
>>>>>>
>>>>>> 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 itaps-parallel mailing list