itaps-parallel Questions about iMeshP
Mark Shephard
shephard at scorec.rpi.edu
Tue Dec 22 13:40:16 CST 2009
Tim,
It is not correct to state I agreed to iRel to meet the mesh-to-model
relation need. I have since the first ITAPS meeting on Sept 11th (yes
that Sept 11th) discussed the importance of effective mesh-to-model
relationships and that they had to be a key part of what we did. Why do
we bother with the abstraction of topology if we are not going to use
it! As near as I and others can tell is it not part of the current iRel
and until we have a solution to this issue that is actually useful there
is not way that we can provide effective code.
I have heard no one other than you say that the current iRel can provide
an effective solution. Until someone that does mesh modification on a
regular basis, etc. indicates they agree and demonstrates exactly how to
do that, it is very much an open issue and a style issue.
Mark
Tim Tautges wrote:
> 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
>>>>
>>>
>>
>
More information about the itaps-parallel
mailing list