diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp index dc17a6bf8d20869e9a8d6f99796991128b585925..478816d790e1d874faffa3de50a9ab945d03d857 100644 --- a/Geo/GModelIO_OCC.cpp +++ b/Geo/GModelIO_OCC.cpp @@ -580,21 +580,25 @@ static void applyOCCMeshConstraints(GModel *m, const void *constraints) for(GModel::viter it = m->firstVertex(); it != m->lastVertex(); ++it){ GVertex *gv = *it; if(gv->getNativeType() != GEntity::OpenCascadeModel) continue; - TopoDS_Shape *shape = (TopoDS_Shape*)gv->getNativePtr(); - if(vertexConstraints.IsBound(*shape)) { + TopoDS_Shape *s = (TopoDS_Shape*)gv->getNativePtr(); + if(vertexConstraints.IsBound(*s)) { Msg::Debug("Found mesh contraints on vertex %d", gv->tag()); - const MeshGmsh_VertexConstrain &c(vertexConstraints.Find(*shape)); + const MeshGmsh_VertexConstrain &c(vertexConstraints.Find(*s)); + // characteristic length constraint double lc = c.GetSize(); - Msg::Debug("... setting mesh size = %g", lc); - gv->setPrescribedMeshSizeAtVertex(lc); - if(!c.GetFace().IsNull()){ + if(lc >= 0.){ + Msg::Debug("... setting mesh size = %g", lc); + gv->setPrescribedMeshSizeAtVertex(lc); + } + // embedding constraint + if(c.IsEmbedded() && !c.GetFace().IsNull()){ TopoDS_Shape shape = c.GetFace(); for(GModel::fiter it2 = m->firstFace(); it2 != m->lastFace(); ++it2){ GFace *gf = *it2; if(gf->getNativeType() != GEntity::OpenCascadeModel) continue; TopoDS_Shape *shape2 = (TopoDS_Shape*)gf->getNativePtr(); if(shape.IsSame(*shape2)){ - Msg::Debug("... embedding in face %d", gf->tag()); + Msg::Debug("... embedding vertex in face %d", gf->tag()); gf->addEmbeddedVertex(gv); } } @@ -608,11 +612,12 @@ static void applyOCCMeshConstraints(GModel *m, const void *constraints) for(GModel::eiter it = m->firstEdge(); it != m->lastEdge(); ++it){ GEdge *ge = *it; if(ge->getNativeType() != GEntity::OpenCascadeModel) continue; - TopoDS_Shape *shape = (TopoDS_Shape*)ge->getNativePtr(); - if(edgeConstraints.IsBound(*shape)) { + TopoDS_Shape *s = (TopoDS_Shape*)ge->getNativePtr(); + if(edgeConstraints.IsBound(*s)) { Msg::Debug("Found mesh contraints on edge %d", ge->tag()); - const MeshGmsh_EdgeConstrain &c(edgeConstraints.Find(*shape)); - if(c.IsMeshImposed() == Standard_True){ + const MeshGmsh_EdgeConstrain &c(edgeConstraints.Find(*s)); + // prescribed mesh constraint + if(c.IsMeshImposed()){ TColStd_SequenceOfInteger nodeNum; c.GetNodesNumber(nodeNum); TColStd_SequenceOfReal nodePar; @@ -655,6 +660,19 @@ static void applyOCCMeshConstraints(GModel *m, const void *constraints) } } } + // embedding constraint + if(c.IsEmbedded() && !c.GetFace().IsNull()){ + TopoDS_Shape shape = c.GetFace(); + for(GModel::fiter it2 = m->firstFace(); it2 != m->lastFace(); ++it2){ + GFace *gf = *it2; + if(gf->getNativeType() != GEntity::OpenCascadeModel) continue; + TopoDS_Shape *shape2 = (TopoDS_Shape*)gf->getNativePtr(); + if(shape.IsSame(*shape2)){ + Msg::Debug("... embedding edge in face %d", gf->tag()); + gf->addEmbeddedEdge(ge); + } + } + } } } #endif diff --git a/doc/CREDITS.txt b/doc/CREDITS.txt index 656b0c0efeba483117dffe4300803ea055ff8806..fa80fb75473ac8243555109e14a87e82930ca968 100644 --- a/doc/CREDITS.txt +++ b/doc/CREDITS.txt @@ -20,7 +20,8 @@ with the MacOS port and the tensor display code; Pierre Badel for help with the GSL integration; Marc Ume for the original list code; Matt Gundry for the Plot3d mesh format; Jozef Vesely for help with the Tetgen integration; Koen Hillewaert for high order element mappings -and other improvements; Jacques Lechelle for the DIFFPACK mesh format. +and other improvements; Jacques Lechelle for the DIFFPACK mesh format; +Ruth Sabariego for pyramids. The AVL tree code (Common/avl.*) and the YUV image code (Graphics/gl2yuv.*) are copyright (C) 1988-1993, 1995 The Regents of @@ -104,8 +105,11 @@ machines for testing Gmsh: Juan Abanto, Olivier Adam, Guillaume Alleon, Eric Bechet, Laurent Champaney, Pascal Dupuis, Philippe Geuzaine, Johan Gyselinck, Francois Henrotte, Benoit Meys, Nicolas Moes, Osamu Nakamura, Chad Schmutzer, Jean-Luc Fl'ejou, Xavier -Dardenne, Christophe Prud'homme, Sebastien.Clerc, Jose Miguel Pasini, +Dardenne, Christophe Prud'homme, Sebastien Clerc, Jose Miguel Pasini, Philippe Lussou, Jacques Kools, Bayram Yenikaya, Peter Hornby, Krishna Mohan Gundu, Christopher Stott, Timmy Schumacher, Carl Osterwisch, -Bruno Frackowiak, Philip Kelleners, Romuald Conty, Ruth Sabariego, -Renaud Sizaire, Michel Benhamou, Emilie Marchandise, Tom De Vuyst. +Bruno Frackowiak, Philip Kelleners, Romuald Conty, Renaud Sizaire, +Michel Benhamou, Emilie Marchandise, Tom De Vuyst, Kris Van den +Abeele, Simon Vun, Simon Corbin, Thomas De-Soza, Marcus Drosson, +Antoine Dechaume, Jose Paulo Moitinho de Almeida, Thomas Pinchard, +Corrado Chisari, Axel Hackbarth, Peter Wainwright.