From 42e247b31522753a87e4bfa246142bc3aff5d1ef Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Wed, 11 Jul 2007 15:46:32 +0000 Subject: [PATCH] for akash: if there are no elements in a .msh file, create a geometry vertex for each mesh vertex --- Geo/GModelIO_Mesh.cpp | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/Geo/GModelIO_Mesh.cpp b/Geo/GModelIO_Mesh.cpp index 14ec4e9828..3132de44a8 100644 --- a/Geo/GModelIO_Mesh.cpp +++ b/Geo/GModelIO_Mesh.cpp @@ -1,4 +1,4 @@ -// $Id: GModelIO_Mesh.cpp,v 1.19 2007-05-14 12:51:09 geuzaine Exp $ +// $Id: GModelIO_Mesh.cpp,v 1.20 2007-07-11 15:46:32 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -467,21 +467,35 @@ int GModel::readMSH(const std::string &name) // store the elements in their associated elementary entity. If the // entity does not exist, create a new one. - for(int i = 0; i < (int)(sizeof(elements)/sizeof(elements[0])); i++) + bool noElements = true; + for(int i = 0; i < (int)(sizeof(elements)/sizeof(elements[0])); i++){ + noElements &= elements[i].empty(); storeElementsInEntities(this, elements[i]); + } + // special case: if there are no elements, create one geometry + // vertex for each mesh vertex + if(noElements){ + Msg(INFO, "No elements in mesh: creating geometry vertices"); + for(unsigned int i = 0; i < vertexVector.size(); i++){ + MVertex *v = vertexVector[i]; + if(v) points[v->getNum()].push_back(v); + } + for(std::map<int, MVertex*>::iterator it = vertexMap.begin(); + it != vertexMap.end(); ++it) + points[it->second->getNum()].push_back(it->second); + } + // treat points separately - { - std::map<int, std::vector<MVertex*> >::const_iterator it = points.begin(); - for(; it != points.end(); ++it){ - GVertex *v = vertexByTag(it->first); - if(!v){ - v = new gmshVertex(this, it->first); - add(v); - } - for(unsigned int i = 0; i < it->second.size(); i++) - v->mesh_vertices.push_back(it->second[i]); + for(std::map<int, std::vector<MVertex*> >::iterator it = points.begin(); + it != points.end(); ++it){ + GVertex *v = vertexByTag(it->first); + if(!v){ + v = new gmshVertex(this, it->first); + add(v); } + for(unsigned int i = 0; i < it->second.size(); i++) + v->mesh_vertices.push_back(it->second[i]); } // associate the correct geometrical entity with each mesh vertex -- GitLab