[MOAB-dev] exchanging both quads and edges while exchanging ghosts cells

Grindeanu, Iulian R. iulian at mcs.anl.gov
Sat Apr 19 16:28:56 CDT 2014


If you need edges, create them before ghosting; I modified your example, and it now works better

If edges get created after ghosting, they are not shared correctly between processors, some are duplicated in the file.

Or you can try merging them.

Still, I would delete them if you do not need them.
I agree it is a bug that you cannot read that file with those duplicated edges.

Iulian

________________________________
From: kanaev at ibrae.ac.ru [kanaev at ibrae.ac.ru]
Sent: Friday, April 18, 2014 2:42 PM
To: Grindeanu, Iulian R.
Subject: RE: exchanging both quads and edges while exchanging ghosts cells


I actually don't need them so writing hexas+quads should work for me

Here's a small program that reads .h5m file in parallel (you should give the name in command line) then gets edges adjacent to every cell and writes the mesh back to ptest.h5m

You can see you cannot read ptest.h5m then with the same program because of the odd edges

Anton

On Thu, 17 Apr 2014 22:10:22 +0000, "Grindeanu, Iulian R." wrote:

P {margin-top:0;margin-bottom:0;}
do you need edges or not?
what is the bug? Are edges duplicated when you ghost? can you replicate a problem in a small moab test?

Can you delete edges before writing the file?
Or when you write, write only the  hexas + quads (put in a set what you need, and write in parallel just that set)

Why can't you read in parallel after writing?

________________________________
From: kanaev at ibrae.ac.ru [kanaev at ibrae.ac.ru]
Sent: Thursday, April 17, 2014 4:18 PM
To: Grindeanu, Iulian R.
Cc: MOAB dev
Subject: exchanging both quads and edges while exchanging ghosts cells


Hello Iulian,

I exchange one layer of ghost dim 3

  result = pcomm->exchange_ghost_cells(3, // int ghost_dim,

                                     0, // int bridge_dim,

                                     1, //int num_layers,

                                     2, //int addl_ents,

                                     true); // bool store_remote_handles);



then if i do:



    result = mb->get_entities_by_dimension(0, 3, ents);

    PRINT_LAST_ERROR;



      for (moab::Range::iterator it = ents.begin(); it != ents.end(); it++) {

      EntityHandle ent = *it;

      HandleVec edges;

      result = mb->get_adjacencies(&(ent), 1, 1, true, edges);

      }



i'll have additional edges created which i don't need (because after i save file writing everything i cannot load from it in parallel afterwards)

I think i have to echange edges besides of quads during  exchange_ghost_cells but it's not an option.

How can i avoid unnecessary doubling of edges in this case?



Thanks

Anton


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/moab-dev/attachments/20140419/3962a6d3/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ptest.cpp
Type: text/x-c++src
Size: 3189 bytes
Desc: ptest.cpp
URL: <http://lists.mcs.anl.gov/pipermail/moab-dev/attachments/20140419/3962a6d3/attachment.cpp>


More information about the moab-dev mailing list