[MOAB-dev] exchange tags over interface entities

Lorenzo Alessio Botti ihabiamx at yahoo.it
Tue Mar 6 15:06:02 CST 2012


Hi Tim,
thanks for the reply.
What I need is to have two different global ids over each interface entity, 
one global id created by the owner and one created by the (unique) sharer, 
where the same intereface entity is not owned, and then communicated to the owner.

I should be able to create an id (global_id_1) for interface entities, 
such that the interface entity has a different id on the owner and the sharer, 
modifying a bit the assign_global_ids function.
Thats the easy part.
Then I need to communicate global_id_1 (the owner communicates to the sharer and the sharer to the owner) and store it in global_id_2. 
I guess this is what you mean when you say "store in another tag on all sharers".

This is what happens with ghost entities ids where global_id_2  is simply the global id of the ghost cell. Thats why I say that I'd need a ghost
interface entity.  Might tag_reduce help me?

Thanks a lot.
Lorenzo   

> 
> 
> 
> 
> 
> On Mar 6, 2012, at 8:01 PM, Tim Tautges wrote:
> 
>> Hi Lorenzo,
>> I need you to be a little more specific:
>> 1) Do you want to push tags from owner proc to sharing, or from sharing to owner?
>> 2) Do you want to do a global id just for interface entities (which might have been created during the resolve interface step of loading) or for any/all shared entities?
>> 
>> For 1), the existing exhcange_tags functions in ParallelComm push tag values from owner to sharers, for both interface and ghost entities.  I'm going to commit very soon (this week) a function called tag_reduce, that applies on MPI_Op to tag data on all sharers from all sharers, e.g. sums values on all sharers (including owner) and stores in another tag on all sharers.
>> 
>> For 2), first, 3D entities and vertices already have global ids when they get loaded, though those might not be communicated when something gets ghosted.  To do that, call exchange_tags with the GLOBAL_ID tag.  For other entities, the ParallelComm::assign_global_ids function should do what you want.
>> 
>> - tim
>> 
>> 
>> On 03/06/2012 12:45 PM, Lorenzo Alessio Botti wrote:
>>> Hi all,
>>> I have a question about exchanging tags in parallel.
>>> I guess I'd need to create a layer of ghost interface (dim-1) entities that replicates the behavior of ghost (dim) cells.
>>> In particular what I need is a global id for interface entities which is independent of the owning processor.
>>> And of coarse each interface entity should be able to know the global id of his ghost interface entity.
>>> Is it possible?
>>> 
>>> Another possibility would be to communicate tag values over non_owned interface entities towards owned interface entities.
>>> A sort of exchange_tags that works on the opposite direction. Is it possible in some way?
>>> 
>>> Thanks a lot for help.
>>> Lorenzo
>>> 
>> 
>> -- 
>> ================================================================
>> "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 (gvoice): (608) 354-1459      1500 Engineering Dr.
>>           fax: (608) 263-4499      Madison, WI 53706
>> 
> 



More information about the moab-dev mailing list