itaps-parallel Two options from today's iMeshP phone conference

Mark Beall mbeall at simmetrix.com
Mon Jul 19 11:59:07 CDT 2010


On Jul 19, 2010, at 12:21 PM, Jason Kraftcheck wrote:

> Saurabh Tendulkar wrote:
>>
>>
>> On 07/16/10 20:00, Carl Ollivier-Gooch wrote:
>>> On 10-07-16 04:21 PM, Devine, Karen D wrote:
>>>>
>>>> A. Change the iMesh_createEnt function to include an entity set  
>>>> handle
>>>> argument PH. For serial applications, PH would be the root set;  
>>>> that is,
>>>> entities are added only to the root set. For parallel  
>>>> applications, PH
>>>> would be a part handle; the created entity would be added to the  
>>>> part
>>>> identified by the part handle. Since iMesh_createEnt is an iMesh
>>>> function
>>>> (not an iMeshP function), we would use entity set handle as the  
>>>> argument
>>>> type, so that serial users would not have to include iMeshP.h nor
>>>> link with
>>>> iMeshP. This option was generally accepted by Carl, Simmetrix,  
>>>> Sandia
>>>> and
>>>> RPI. Tim is in favor of adding the argument, but does not like the
>>>> restriction of the handle to be either the root set or a part  
>>>> handle. My
>>>> fear in allowing arbitrary entity set handles to be used is as
>>>> follows: if
>>>> a service uses the entity set handle to, say, add entities to a  
>>>> boundary
>>>> condition set, that service could not be used in parallel, as its
>>>> iMesh_createEnt calls would not add the entities to a part.
>>>>
>
> [snip]
>
>>
>> I think for A, we proposed that the argument be NULL in case of  
>> serial.
>> If we want no restriction in iMesh, then maybe we can instead pass an
>> array of entity sets to iMesh_createEnt, and then in iMeshP stipulate
>> that one of them has to be a part.

I don't really like the array idea, since I think that obscures the  
intent here. If there is a single argument that must be a part, then  
it is very simple to explain why its there and when and when not to  
pass something.

> Logically null.  Not literally 'NULL' (a bit-wise zero value).  Not  
> all
> implementations use pointer-based handles, and therefore zero is not  
> an
> invalid handle value for all implementations.  The closest thing we  
> have to
> a logical null is the root set (as everything goes into the root set  
> anyway.)
>
> - jason

Would it make sense for an implementation to define a value that means  
NULL (for here and other places that it could be of use)? Passing the  
root set here could be confusing ("ah I see, everything is always  
added to the root set since I always have to pass it here. Oh wait,  
sometimes I don't have to pass it here, does that mean that this  
entity won't be added to the root set?")

mark



More information about the itaps-parallel mailing list