From 365ca3c01237d3ff417c04f67b5f031a69c8bca7 Mon Sep 17 00:00:00 2001
From: Jean-Francois Remacle <jean-francois.remacle@uclouvain.be>
Date: Sat, 10 Mar 2007 13:42:05 +0000
Subject: [PATCH] periodic splines are now working wel

---
 Mesh/meshGFace.cpp | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp
index dadd19dd1f..c7b7b94d81 100644
--- a/Mesh/meshGFace.cpp
+++ b/Mesh/meshGFace.cpp
@@ -1,4 +1,4 @@
-// $Id: meshGFace.cpp,v 1.64 2007-03-09 14:57:06 remacle Exp $
+// $Id: meshGFace.cpp,v 1.65 2007-03-10 13:42:05 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -582,7 +582,7 @@ bool recover_medge ( BDS_Mesh *m, GEdge *ge)
 // domain, including embedded points 
 // and surfaces
 
-bool gmsh2DMeshGenerator ( GFace *gf )
+bool gmsh2DMeshGenerator ( GFace *gf , bool debug = true)
 {
 
   //if (gf->tag() != 16)return true;
@@ -629,7 +629,15 @@ bool gmsh2DMeshGenerator ( GFace *gf )
     SPoint2 param;
     if(here->onWhat()->dim() == 0){
       GVertex *gv = (GVertex*)here->onWhat();
-      param = gv->reparamOnFace(gf,1);
+      if (gv->edges().size() == 1)
+	{
+	  GEdge *ge = *(gv->edges().begin());
+	  Range<double> bb = ge->parBounds(0);
+	  param = ge->reparamOnFace(gf, bb.low(), 1);	  
+	}
+      else
+	param = gv->reparamOnFace(gf,1);
+      
     }
     else if(here->onWhat()->dim() == 1){
       GEdge *ge = (GEdge*)here->onWhat();
@@ -928,6 +936,13 @@ bool gmsh2DMeshGenerator ( GFace *gf )
 
   // delete the mesh
 
+  if (debug){
+    char name[256];
+    sprintf(name,"real%d.pos",gf->tag());
+    outputScalarField(m->triangles, name,0);
+    sprintf(name,"param%d.pos",gf->tag());
+    outputScalarField(m->triangles, name,1);
+  }
   delete m;
 
 
@@ -1504,10 +1519,10 @@ void meshGFace::operator() (GFace *gf)
   // temp fix until we create MEdgeLoops in gmshFace
   Msg(DEBUG1, "Generating the mesh");
   if(gf->getNativeType() == GEntity::GmshModel || gf->edgeLoops.empty()){
-    gmsh2DMeshGenerator(gf);
+    gmsh2DMeshGenerator(gf,false);
   }
   else{
-    if(!gmsh2DMeshGeneratorPeriodic(gf))
+    if(!gmsh2DMeshGeneratorPeriodic(gf,false))
       Msg(GERROR, "Impossible to mesh face %d", gf->tag());
   }
   
-- 
GitLab