iRel proposal: removing non-one-to-one relation functions

Tim Tautges tautges at mcs.anl.gov
Tue Oct 26 13:31:08 CDT 2010


Just asked Jim to do that, hopefully by the end of this aft (asked him to check to make sure that Seegyoung's comments 
are accounted for first, just to make sure).

- tim

On 10/26/2010 01:09 PM, fabien delalondre wrote:
> Tim,
>
> Can you please upload your latest version on svn (not sure redmine is yet
> fully functional though) and I ll try to provide a use case to see if the
> current interface meets my needs.
>
> Thank you.
>
> Fabien
>
>> As was stated previously, we are still waiting for Tim to provide the
>> up-dated iRel.h documentation to reflect the things discussed at the
>> bootcamp that are needed by implementations other than MOAB. These items
>> have been agreed to (twice now) but still not included in iRel.h. Until
>> those items are settled it does not make sense to consider other changes
>> that may influence the things we are waiting for.
>>
>> Tim - When with the updated iRel.h file be provided? If you can not get
>> to it, there are others that could likely edit the iRel.h to reflect the
>> things that were agreed to at the boot camp.
>>
>> Mark
>>
>>
>> On 10/26/10 1:39 PM, James Porter wrote:
>>> I haven't seen any responses to this. I'm hoping this is because no one
>>> has a problem with it. I'll give it a few more days for comments, but if
>>> no one pipes up, I'll make the proposed changes.
>>>
>>> - Jim
>>>
>>> On Mon, 2010-10-04 at 14:55 -0500, James Porter wrote:
>>>> Currently in iRel, there are a handful of functions to get/set
>>>> relations
>>>> that aren't one-to-one (e.g. iRel_getEntEntArrRelation). It's my
>>>> understanding that these are only meant to work in, say, Entity<->Set
>>>> relations, and that the entity array returned is the contents of the
>>>> set
>>>> related to the entity on the left side. That is, it's equivalent to
>>>> calling iRel_getEntSetRelation and then i(Mesh|Geom)_getEntities on the
>>>> set you get back.
>>>>
>>>> I propose that these functions be removed. Here's why:
>>>>
>>>> Note 1: most of this is based on my discussion with Tim Tautges and our
>>>> implementation, Lasso, so hopefully I'm not just misinterpreting the
>>>> spec.
>>>>
>>>> Note 2: I use "left-" and "right-" prefixes to denote which side of the
>>>> relation an entity or set is on.
>>>>
>>>> 1) Problems with setting relations
>>>>
>>>> The biggest problem with these functions is in setting relations. What
>>>> you're actually doing is updating the contents of the related set to
>>>> contain those new elements. That is, if left-ent A is related to
>>>> right-set B, setting a relation between A and [C,D,...,Z] (where C-Z
>>>> are
>>>> right-ents) actually inserts C-Z into B. That's certainly not what I'd
>>>> expect initially; I would expect iRel to only affect stuff in its own
>>>> area (e.g. relation tags set on each interface). It gets worse because
>>>> it's not clear what you should do when the set B doesn't exist (throw
>>>> an
>>>> error? create a new set? Lasso does the former, currently).
>>>>
>>>> This also presents further problems because there's no corresponding
>>>> iRel_setEntSetArrRelation function, even though a set could be
>>>> contained
>>>> in a set just as easily as an entity.
>>>>
>>>> 2) Confusion about iRel's capabilities
>>>>
>>>> iRel really creates one-to-one (possibly asymmetric) relations, but
>>>> these functions seem to imply that one-to-many or even many-to-many
>>>> relationships are possible. This is not, as far as I can tell, the
>>>> intention.
>>>>
>>>> 3) Not that useful
>>>>
>>>> In most cases, these functions only save a single line of code. If
>>>> you're trying to be truly generic (i.e. you don't know what the
>>>> set-side
>>>> interface is), it's a little more complicated, but not much.
>>>>
>>>> 4) Hurts clarity of Python interfaces
>>>>
>>>> This is a mostly selfish reason, since I'm the developers of the ITAPS
>>>> Python interfaces, but if all relation functions are one-to-one, I'm
>>>> able to simplify the Python iRel interface's functions to "getRelation"
>>>> and "setRelation", since I know a priori the type of element that
>>>> should
>>>> be returned when you call getRelation.
>>>>
>>>> - Jim
>>>>
>>>
>>>
>>
>>
>
>
>

-- 
================================================================
"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