I think "exchange_owned_meshs" is the right one for you. You should give a pair of processor and entity information with "exchange_procs" and "exchange_ents" to the function. If you want to exchange mesh entities(entity 1~10) from p0 to p1 and mesh entities(5~17) from p2 to p0, you can make the argument list as follows. p0 : exchange_procs(1), exchange_ents(1~10) p2 : exchange_procs(0), exchange_ents(5~17) To exchange remote handle information, you can turn on "store_remote_handles" option. In addition, tag information is automatically exchanged by the function. Thanks. ----------------------------- Hong-Jun Kim Post-doc researcher MCS, Argonne National Laboratory 9700 S. Cass Ave. B240/R2147 Argonne, IL 60439 630-252-4791 [email protected] ----------------------------- ----- Original Message -----
From: "Markus Mayr" <[email protected]> To: [email protected] Sent: Monday, November 28, 2011 9:06:17 AM Subject: [MOAB-dev] Question: Exchange part of mesh so that it is available to all processes Dear list,
I have got a question regarding a distributed mesh.
Although I know this is necessarily inefficient, I would like to make a part of the mesh available to all processes, more precisely the boundary faces and vertices of my volume mesh.
I do not know which function I am supposed to use or even if there is a function that does what I want. As far as I can see, send_/recv_ functions send a message from one process to another one, so these functions probably do not what I want.
broadcast_entities might be the right thing, maybe something like broadcast_entities(mpi_rank, owned_boundary_entities) results in owned_boundary_entities containing *all* boundary entities? But on the other hand, according to the documentation all processes should know about the whole mesh, which is not the case for me. Apart from that I do not know what remote handles are.
The other option would be exchange_owned_mesh(s), I think. Is exchange_procs simply a list of all processes involved and exchange_ents a list containing the local part of each process right after calling that function? What about remote handles? Am I supposed to use exchange_owned_mesh or exchange_owned_meshs?
In either case: Can I exchange tags using the exchange_tags functions afterwards?
Maybe someone can help me?
Thanks!
Best regards, Markus Mayr