From: Jens O. <oe...@st...> - 2003-11-26 21:32:18
|
Hi, I'm having a little bit trouble. The problem is the execution of my code in parallel. In the current implementation processor 0 reads in the mesh. After that the mesh is distributed to every other processor. In the read method of the class UnvMeshInterface is a call for close_foreign_id_maps() so that the id_maps are closed after that, but only on processor 0. If you now try to read in mesh data in parallel, the programm would tell you something like this: src/mesh/mesh_data.C:257: void MeshData::read(const std::string&): Assertion `_elem_id_map_closed && _node_id_map_closed' failed. This is correct, since on processor 1, 2 and so on are the id_maps not closed. If now try to close the id_maps with a little hack in Mesh::read you will see, that there are no _elem_id, _id_elem, _node_id and _id_node on these processors. A solution for this could be to distribute these things with the mesh and to call close_foreign_id_maps() in Mesh::read. Or to change the read implementation Mesh and MeshData classes. In my opinion this should be reading in the mesh on processor 0 and than close the id_maps. After this processor 0 reads in the mesh data. At least the mesh and mesh data should be distributed to every processor. Am I'm right or did i misunderstood something? I've tried to run example 12 on 2 or 3 processor. I got nearly the same error message so I think that it's not my implementation of the TetGen interface, which is more or less like UnvMeshInterface class. Any hints or comments are welcome. Best regards Jens. PS: Would you like to add the TetGen methods after some more tests from my side? -- |