diff --git a/Makefile b/Makefile index c28577b603d1ef6f5a3b1c7508043ffef05e5791..3e7785e8fc292e48a6e191b3baf3be816d3fede1 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.313 2003-12-03 21:06:38 geuzaine Exp $ +# $Id: Makefile,v 1.314 2003-12-04 15:55:27 geuzaine Exp $ # # Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle # @@ -171,6 +171,7 @@ distrib-win: clean all package-win distrib-msg objdump -p bin/gmsh.exe | grep DLL distrib-mac: clean all package-mac distrib-msg + ${POSTBUILD} otool -L bin/gmsh package-unix: diff --git a/Mesh/SMS.cpp b/Mesh/SMS.cpp index e5a0823825e5a56b7369c721c3f6404a04df0443..043b6ddfc127986bb843d121ec66fd16507ed9dc 100644 --- a/Mesh/SMS.cpp +++ b/Mesh/SMS.cpp @@ -1,4 +1,4 @@ -// $Id: SMS.cpp,v 1.15 2003-06-14 04:37:42 geuzaine Exp $ +// $Id: SMS.cpp,v 1.16 2003-12-04 15:55:27 geuzaine Exp $ // // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle // @@ -32,14 +32,6 @@ extern Context_T CTX; -/* - Reads a SMS mesh file format. - Fills the Mesh structure and says - the interface that the state of the current - mesh is 3. - -*/ - #define ENTITY_VERTEX 0 #define ENTITY_EDGE 1 #define ENTITY_FACE 2 @@ -73,7 +65,7 @@ void Read_VTK_File(char *file, Mesh * m) sscanf(line, "%s %d %s", dumline1, &NbVertices, dumline2); Surface *surf = Create_Surface(1, MSH_SURF_DISCRETE); - surf->Generatrices = List_Create(1, 1, sizeof(Curve *)); + surf->Dirty = 1; Tree_Add(m->Surfaces, &surf); for(i = 0; i < NbVertices; i++) { @@ -95,8 +87,8 @@ void Read_VTK_File(char *file, Mesh * m) v4 = NULL; } else { - printf("no quads man !\n"); - exit(-1); + Msg(GERROR, "No quads in VTK file, man!"); + return; } Simplex *s = Create_Simplex(v1, v2, v3, v4); s->V[0] = v1; @@ -108,7 +100,7 @@ void Read_VTK_File(char *file, Mesh * m) } else { surf = Create_Surface(1, MSH_SURF_DISCRETE); - surf->Generatrices = List_Create(1, 1, sizeof(Curve *)); + surf->Dirty = 1; Tree_Add(m->Surfaces, &surf); } Tree_Add(surf->Simplexes, &s); @@ -119,6 +111,7 @@ void Read_VTK_File(char *file, Mesh * m) m->status = 2; Volume *vol = Create_Volume(1, MSH_VOLUME); + vol->Dirty = 1; vol->Surfaces = List_Create(1, 1, sizeof(Surface *)); List_Add(vol->Surfaces, &surf); Tree_Add(m->Volumes, &vol); @@ -138,12 +131,11 @@ void Read_Mesh_SMS(Mesh * m, FILE * in) List_T *AllEdges, *AllFaces; Vertex *v1 = NULL, *v2 = NULL, *v3 = NULL, *v4 = NULL; - fscanf(in, "%s %d", line, &Dummy); fscanf(in, "%d %d %d %d %d", &NbRegions, &NbFaces, &NbEdges, &NbVertices, &NbPoints); - Msg(INFO, "reading a mesh in scorec format"); + Msg(INFO, "Reading a mesh in scorec format"); Msg(INFO, "%d Vertices", NbVertices); for(i = 0; i < NbVertices; i++) { @@ -155,7 +147,12 @@ void Read_Mesh_SMS(Mesh * m, FILE * in) Tree_Add(m->Vertices, &vert); switch (GEntityType) { case 0: - Tree_Add(m->Points, &vert); + { + // we need to make a new one: vertices in m->Vertices and + // m->Points should never point to the same memory location + Vertex *pnt = Create_Vertex(i, x, y, z, 1.0, 1.0); + Tree_Add(m->Points, &pnt); + } break; case 1: fscanf(in, "%le", &u); @@ -169,7 +166,7 @@ void Read_Mesh_SMS(Mesh * m, FILE * in) } } - Msg(INFO, "%d Edges", NbEdges); + Msg(INFO, "%d edges", NbEdges); AllEdges = List_Create(NbEdges, 1, sizeof(Edge)); Edge e; @@ -206,18 +203,13 @@ void Read_Mesh_SMS(Mesh * m, FILE * in) if((c = FindCurve(GEntityId, m))) { } else { - c = - Create_Curve(GEntityId, MSH_SEGM_DISCRETE, 1, NULL, NULL, -1, -1, - 0, 1); - c->beg = v1; - c->end = v2; + c = Create_Curve(GEntityId, MSH_SEGM_DISCRETE, 1, NULL, NULL, -1, -1, 0, 1); + c->Dirty = 1; Tree_Add(m->Curves, &c); } s->iEnt = GEntityId; - // List_Add(v1->ListCurves,&c); - // List_Add(v2->ListCurves,&c); - Tree_Add(c->Simplexes, &s); s->Num = i; + Tree_Add(c->Simplexes, &s); } } } @@ -225,11 +217,12 @@ void Read_Mesh_SMS(Mesh * m, FILE * in) AllFaces = List_Create(NbFaces, 1, sizeof(Simplex *)); Volume *vol = Create_Volume(1, MSH_VOLUME); + vol->Dirty = 1; vol->Surfaces = List_Create(1, 1, sizeof(Surface *)); Tree_Add(m->Volumes, &vol); FACE_DIMENSION = 2; - Msg(INFO, "%d Faces", NbFaces); + Msg(INFO, "%d faces", NbFaces); for(int i = 0; i < NbFaces; i++) { fscanf(in, "%d", &GEntityId); if(GEntityId) { @@ -283,7 +276,7 @@ void Read_Mesh_SMS(Mesh * m, FILE * in) v4 = e.V[1]; } else { - Msg(FATAL, "Read mesh SMS exiting"); + Msg(GERROR, "Wrong number pf edges on face (%d)", NbEdgesOnFace); } for(int j = 0; j < nbPts; j++) { switch (GEntityType) { @@ -314,9 +307,9 @@ void Read_Mesh_SMS(Mesh * m, FILE * in) } else { surf = Create_Surface(GEntityId + 10000, MSH_SURF_DISCRETE); + surf->Dirty = 1; if(!NbRegions) List_Add(vol->Surfaces, &surf); - surf->Generatrices = List_Create(1, 1, sizeof(Curve *)); Tree_Add(m->Surfaces, &surf); } Tree_Add(surf->Vertices, &s->V[0]); @@ -328,7 +321,7 @@ void Read_Mesh_SMS(Mesh * m, FILE * in) } - Msg(INFO, "%d Region", NbRegions); + Msg(INFO, "%d region", NbRegions); for(int i = 0; i < NbRegions; i++) { fscanf(in, "%d", &GEntityId); @@ -349,11 +342,11 @@ void Read_Mesh_SMS(Mesh * m, FILE * in) v4 = myS2->V[hh]; } if(!v1 || !v2 || !v3 || !v4) { - printf("%d\n", NbFacesOnRegion); - printf("%p %p %p %p\n", v1, v2, v3, v4); - printf("%p %p %p \n", myS1->V[0], myS1->V[1], myS1->V[2]); - printf("%p %p %p \n", myS2->V[0], myS2->V[1], myS2->V[2]); - assert(1 == 0); + Msg(GERROR, "%d\n", NbFacesOnRegion); + Msg(GERROR, "%p %p %p %p\n", v1, v2, v3, v4); + Msg(GERROR, "%p %p %p \n", myS1->V[0], myS1->V[1], myS1->V[2]); + Msg(GERROR, "%p %p %p \n", myS2->V[0], myS2->V[1], myS2->V[2]); + return; } Simplex *s = Create_Simplex(v1, v2, v3, v4); @@ -361,6 +354,7 @@ void Read_Mesh_SMS(Mesh * m, FILE * in) } else { vol = Create_Volume(GEntityId, MSH_VOLUME); + vol->Dirty = 1; Tree_Add(m->Volumes, &vol); } s->iEnt = GEntityId; @@ -369,16 +363,22 @@ void Read_Mesh_SMS(Mesh * m, FILE * in) } } + List_Delete(AllEdges); List_Delete(AllFaces); - - if(NbRegions) + if(Tree_Nbr(m->Volumes)) { m->status = 3; - else if(NbFaces) + } + else if(Tree_Nbr(m->Surfaces)) { m->status = 2; - else if(NbEdges) + } + else if(Tree_Nbr(m->Curves)) { m->status = 1; - Msg(INFO, "Done."); + } + else if(Tree_Nbr(m->Points)) + m->status = 0; + else + m->status = -1; } #if 0