diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index 4a8dc74873d2fdd06f57ae0609abd899b72b692d..d77767094d64f6b46e35c018ee4411fdc57b0511 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -1,4 +1,4 @@ -// $Id: GUI.cpp,v 1.187 2002-08-06 06:39:30 geuzaine Exp $ +// $Id: GUI.cpp,v 1.188 2002-08-06 21:14:35 geuzaine Exp $ // // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle // @@ -1004,7 +1004,8 @@ void GUI::create_graphic_window(int argc, char **argv){ #endif g_window->resizable(new Dummy_Box(x,0,width-x,glheight)); - + //g_window->resizable(g_opengl_window); + g_window->position(CTX.gl_position[0],CTX.gl_position[1]); g_window->end(); } diff --git a/Mesh/Read_Mesh.cpp b/Mesh/Read_Mesh.cpp index 5e0c969a9e9845b015e2c67026598303c5d38d01..7091a7d39f26742ee81edaca35a425f4799b6641 100644 --- a/Mesh/Read_Mesh.cpp +++ b/Mesh/Read_Mesh.cpp @@ -1,4 +1,4 @@ -// $Id: Read_Mesh.cpp,v 1.45 2002-06-23 09:34:01 geuzaine Exp $ +// $Id: Read_Mesh.cpp,v 1.46 2002-08-06 21:14:35 geuzaine Exp $ // // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle // @@ -49,6 +49,37 @@ extern Context_T CTX; #define NB_NOD_MAX_ELM 20 +int comparePhysicalGroup(const void *a, const void *b){ + PhysicalGroup *q, *w; + int cmp; + + q = *(PhysicalGroup **) a; + w = *(PhysicalGroup **) b; + cmp = q->Typ - w->Typ; + + if(cmp) + return cmp; + else + return (q->Num - w->Num); +} + +void addPhysicalGroup(Mesh *M, int Type, int Physical, int Elementary){ + PhysicalGroup PG, *pg, **ppg; + pg = &PG; + pg->Typ = Type; + pg->Num = Physical; + if((ppg=(PhysicalGroup**)List_PQuery(M->PhysicalGroups, &pg, + comparePhysicalGroup))){ + List_Replace((*ppg)->Entities, &Elementary, fcmp_int); + } + else{ + List_T *tmp = List_Create(1,1,sizeof(int)); + List_Add(tmp, &Elementary); + Add_PhysicalGroup(Physical, Type, tmp, M); + List_Delete(tmp); + } +} + /* Note: the 'Dirty' flag only has an influence if one doesn't load the geometry along with the mesh (since we make Tree_Insert for the geometrical entities). And that's what we want. */ @@ -132,7 +163,7 @@ void Read_Mesh_MSH (Mesh *M, FILE *File_GEO){ &Num, &Type, &Physical, &Elementary, &Nbr_Nodes) ; //jf: &Num, &Type, &Elementary, &Physical, &Nbr_Nodes) ; - for (j = 0 ; j < Nbr_Nodes ; j++) + for (j = 0 ; j < Nbr_Nodes ; j++) fscanf(File_GEO, "%d", &verts[j].Num) ; switch(Type){ @@ -143,6 +174,7 @@ void Read_Mesh_MSH (Mesh *M, FILE *File_GEO){ NULL, -1, -1, 0., 1.); c->Dirty=1; Tree_Add(M->Curves, &c); + addPhysicalGroup(M, MSH_PHYSICAL_LINE, Physical, abs(Elementary)); } else c = *cc; @@ -153,6 +185,7 @@ void Read_Mesh_MSH (Mesh *M, FILE *File_GEO){ s = Create_Surface(Elementary, MSH_SURF_PLAN); s->Dirty=1; Tree_Add(M->Surfaces, &s); + addPhysicalGroup(M, MSH_PHYSICAL_SURFACE, Physical, Elementary); } else s = *ss; @@ -164,6 +197,7 @@ void Read_Mesh_MSH (Mesh *M, FILE *File_GEO){ v = Create_Volume(Elementary, MSH_VOLUME); v->Dirty=1; Tree_Add(M->Volumes, &v); + addPhysicalGroup(M, MSH_PHYSICAL_VOLUME, Physical, Elementary); } else v = *vv;