From 565d52fb02cde98ecc9f7d34bca992a12ba16ae1 Mon Sep 17 00:00:00 2001
From: Jean-Francois Remacle <jean-francois.remacle@uclouvain.be>
Date: Wed, 26 Mar 2008 20:32:40 +0000
Subject: [PATCH] *** empty log message ***

---
 Mesh/meshGFaceDelaunayInsertion.cpp | 31 ++++++++++++++++++++---------
 Mesh/meshGFaceOptimize.cpp          | 26 ++++++++++++------------
 2 files changed, 35 insertions(+), 22 deletions(-)

diff --git a/Mesh/meshGFaceDelaunayInsertion.cpp b/Mesh/meshGFaceDelaunayInsertion.cpp
index aaaddead00..bd3e46ebff 100644
--- a/Mesh/meshGFaceDelaunayInsertion.cpp
+++ b/Mesh/meshGFaceDelaunayInsertion.cpp
@@ -1,4 +1,4 @@
-// $Id: meshGFaceDelaunayInsertion.cpp,v 1.18 2008-03-26 10:33:37 remacle Exp $
+// $Id: meshGFaceDelaunayInsertion.cpp,v 1.19 2008-03-26 20:32:40 remacle Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -508,15 +508,23 @@ static void insertAPoint(GFace *gf, std::set<MTri3*,compareTri3Ptr>::iterator it
 			 std::vector<double> &vSizes, std::vector<double> &vSizesBGM,
 			 std::set<MTri3*,compareTri3Ptr> &AllTris){
   MTri3 *worst = *it;
+  MTri3 *ptin = 0;
   double uv[2];
   MTriangle *base = worst->tri();
-  bool inside = invMapUV(worst->tri(), center, Us, Vs, uv, 1.e-8);
-  if (!inside && worst->getNeigh(0))
+  bool inside = invMapUV(worst->tri(), center, Us, Vs, uv, 1.e-8);    
+  if (inside)ptin = worst;
+  if (!inside && worst->getNeigh(0)){
     inside |= invMapUV(worst->getNeigh(0)->tri(), center, Us, Vs, uv, 1.e-8);
-  if (!inside && worst->getNeigh(1))
+    if (inside)ptin = worst->getNeigh(0);
+  }
+  if (!inside && worst->getNeigh(1)){
     inside |= invMapUV(worst->getNeigh(1)->tri(), center, Us, Vs, uv, 1.e-8);
-  if (!inside && worst->getNeigh(2))
+    if (inside)ptin = worst->getNeigh(1);
+  }
+  if (!inside && worst->getNeigh(2)){
     inside |= invMapUV(worst->getNeigh(2)->tri(), center, Us, Vs, uv, 1.e-8);
+    if (inside)ptin = worst->getNeigh(2);
+  }
   if (inside) {
     // we use here local coordinates as real coordinates
     // x,y and z will be computed hereafter
@@ -525,9 +533,9 @@ static void insertAPoint(GFace *gf, std::set<MTri3*,compareTri3Ptr>::iterator it
     //    printf("the new point is %g %g\n",p.x(),p.y());
     MVertex *v = new MFaceVertex(p.x(), p.y(), p.z(), gf, center[0], center[1]);
     v->setNum(Us.size());
-    double lc1 = ((1. - uv[0] - uv[1]) * vSizes[worst->tri()->getVertex(0)->getNum()] + 
-		  uv[0] * vSizes [worst->tri()->getVertex(1)->getNum()] + 
-		  uv[1] * vSizes [worst->tri()->getVertex(2)->getNum()]); 
+    double lc1 = ((1. - uv[0] - uv[1]) * vSizes[ptin->tri()->getVertex(0)->getNum()] + 
+		  uv[0] * vSizes [ptin->tri()->getVertex(1)->getNum()] + 
+		  uv[1] * vSizes [ptin->tri()->getVertex(2)->getNum()]); 
     // double eigMetricSurface = gf->getMetricEigenvalue(SPoint2(center[0],center[1]));
     double lc = BGM_MeshSize(gf,center[0],center[1],p.x(),p.y(),p.z());
     vSizesBGM.push_back(lc);
@@ -687,6 +695,9 @@ void gmshBowyerWatsonFrontal(GFace *gf){
     }
     
     if (!worst ||worst->getRadius() < LIMIT_) break;
+    if(ITER++ % 5000 == 0)
+      Msg(DEBUG1,"%7d points created -- Worst tri radius is %8.3f",
+	  vSizes.size(), worst->getRadius());
 
     // compute circum center of that guy
     double center[2],uv[2],metric[3],r2;
@@ -744,10 +755,12 @@ void gmshBowyerWatsonFrontal(GFace *gf){
 
     //    printf("%g %g -- %g %g -- %g %g\n",midpoint[0],midpoint[1],pa[0],pa[1],newPoint[0],newPoint[1]);
     
+//     ITER++;
 //     char name[245];
 //     sprintf(name,"pt%d.pos",ITER++);
 //     _printTris (name, AllTris, Us,Vs,false);
-     insertAPoint(gf,it,newPoint,metric,Us,Vs,vSizes,vSizesBGM,AllTris);
+
+    insertAPoint(gf,it,newPoint,metric,Us,Vs,vSizes,vSizesBGM,AllTris);
     //    if (ITER++ == 5)break;
   } 
   _printTris ("frontal.pos", AllTris, Us,Vs);
diff --git a/Mesh/meshGFaceOptimize.cpp b/Mesh/meshGFaceOptimize.cpp
index 8b4da9c86e..345efb6fb3 100644
--- a/Mesh/meshGFaceOptimize.cpp
+++ b/Mesh/meshGFaceOptimize.cpp
@@ -1,4 +1,4 @@
-// $Id: meshGFaceOptimize.cpp,v 1.14 2008-03-25 20:25:35 remacle Exp $
+// $Id: meshGFaceOptimize.cpp,v 1.15 2008-03-26 20:32:40 remacle Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -52,8 +52,8 @@ static void setLcs(MTriangle *t, std::map<MVertex*,double> &vSizes)
       double l = sqrt(dx * dx + dy * dy + dz * dz);
       std::map<MVertex*,double>::iterator iti = vSizes.find(vi);	  
       std::map<MVertex*,double>::iterator itj = vSizes.find(vj);	  
-      if (iti->second < 0 || iti->second < l) iti->second = l;
-      if (itj->second < 0 || itj->second < l) itj->second = l;
+      if (iti->second < 0 || iti->second > l) iti->second = l;
+      if (itj->second < 0 || itj->second > l) itj->second = l;
     }
   }
 }
@@ -84,17 +84,17 @@ void buidMeshGenerationDataStructures(GFace *gf, std::set<MTri3*, compareTri3Ptr
   for (unsigned int i = 0;i < gf->triangles.size(); i++)
     setLcsInit(gf->triangles[i], vSizesMap);
 
-  std::list<GEdge*>::iterator it = edges.begin();
-  while (it != edges.end()){
-    GEdge *ge = *it ;
-    for (int i=0;i<ge->lines.size();i++){
-      setLcs(ge->lines[i], vSizesMap);      
-    }
-    ++it;
-  }
+//   std::list<GEdge*>::iterator it = edges.begin();
+//   while (it != edges.end()){
+//     GEdge *ge = *it ;
+//     for (int i=0;i<ge->lines.size();i++){
+//       setLcs(ge->lines[i], vSizesMap);      
+//     }
+//     ++it;
+//   }
 
-  //  for (unsigned int i = 0;i < gf->triangles.size(); i++)
-  //    setLcs(gf->triangles[i], vSizesMap);
+  for (unsigned int i = 0;i < gf->triangles.size(); i++)
+    setLcs(gf->triangles[i], vSizesMap);
 
   int NUM = 0;
   for (std::map<MVertex*, double>::iterator it = vSizesMap.begin();
-- 
GitLab