From a7dd9ed4f74ee05a082b439c6d65056fa3493a3d Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Fri, 7 May 2004 22:49:57 +0000
Subject: [PATCH] some more bgmesh cleanups

---
 Mesh/1D_Mesh.cpp       |  8 ++---
 Mesh/2D_Mesh_Aniso.cpp | 11 ++-----
 Mesh/3D_BGMesh.cpp     | 75 +++++++++++++++++++-----------------------
 3 files changed, 38 insertions(+), 56 deletions(-)

diff --git a/Mesh/1D_Mesh.cpp b/Mesh/1D_Mesh.cpp
index 3b18b4bfc9..e352d6155f 100644
--- a/Mesh/1D_Mesh.cpp
+++ b/Mesh/1D_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: 1D_Mesh.cpp,v 1.37 2004-04-18 03:36:07 geuzaine Exp $
+// $Id: 1D_Mesh.cpp,v 1.38 2004-05-07 22:49:57 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -108,15 +108,11 @@ double F_Lc(double t)
   Vertex der, point;
   double Lc, d;
 
-  if(CTX.mesh.algo == DELAUNAY_ISO && THEM->BGM.Typ == ONFILE) {
+  if(THEM->BGM.Typ == ONFILE) {
     der = InterpolateCurve(THEC, t, 1);
     point = InterpolateCurve(THEC, t, 0);
     Lc = Lc_XYZ(point.Pos.X, point.Pos.Y, point.Pos.Z, THEM);
     d = sqrt(DSQR(der.Pos.X) + DSQR(der.Pos.Y) + DSQR(der.Pos.Z));
-    if(!Lc) {
-      Msg(GERROR, "Null characteristic length in background mesh");
-      return d;
-    }
     if(CTX.mesh.constrained_bgmesh)
       return MAX(d / Lc, THEM->Metric->getLc(t, THEC));
     else
diff --git a/Mesh/2D_Mesh_Aniso.cpp b/Mesh/2D_Mesh_Aniso.cpp
index 00cfa18976..640ed3a87b 100644
--- a/Mesh/2D_Mesh_Aniso.cpp
+++ b/Mesh/2D_Mesh_Aniso.cpp
@@ -1,4 +1,4 @@
-// $Id: 2D_Mesh_Aniso.cpp,v 1.37 2004-03-23 02:14:34 geuzaine Exp $
+// $Id: 2D_Mesh_Aniso.cpp,v 1.38 2004-05-07 22:49:57 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -66,17 +66,12 @@ static double volume;
 static List_T *coquille;
 static Edge *THEEDGE;
 
-extern void LCBGM(double X, double Y, double Z, double *l);
-
 double Interpole_lcTriangle(Simplex * s, Vertex * vv)
 {
   double Xp, Yp, X[3], Y[3], det, u, v, q1, q2, q3;
 
-  if(THEM->BGM.Typ == ONFILE) {
-    double LL;
-    LCBGM(vv->Pos.X, vv->Pos.Y, 0.0, &LL);
-    return LL * CTX.mesh.lc_factor;
-  }
+  if(THEM->BGM.Typ == ONFILE)
+    return Lc_XYZ(vv->Pos.X, vv->Pos.Y, 0., THEM);
 
   Xp = vv->Pos.X;
   Yp = vv->Pos.Y;
diff --git a/Mesh/3D_BGMesh.cpp b/Mesh/3D_BGMesh.cpp
index c559a2ced9..0344ebf70c 100644
--- a/Mesh/3D_BGMesh.cpp
+++ b/Mesh/3D_BGMesh.cpp
@@ -1,4 +1,4 @@
-// $Id: 3D_BGMesh.cpp,v 1.26 2004-05-07 18:42:48 geuzaine Exp $
+// $Id: 3D_BGMesh.cpp,v 1.27 2004-05-07 22:49:57 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -84,69 +84,60 @@ void ExportLcFieldOnSurfaces(Mesh * M)
   fclose(f);
 }
 
-static double XX, YY, ZZ, D, LL;
+static Mesh *TMPM = NULL;
+static double XX, YY, ZZ, DD, LL;
 
 void findcloser(void *a, void *b)
 {
-  Vertex *v;
-  double dd;
-  v = *(Vertex **) a;
-  dd = DSQR(v->Pos.X - XX) + DSQR(v->Pos.Y - YY) + DSQR(v->Pos.Z - ZZ);
-  if(dd < D) {
-    D = dd;
+  Vertex *v = *(Vertex **) a;
+  double d = DSQR(v->Pos.X - XX) + DSQR(v->Pos.Y - YY) + DSQR(v->Pos.Z - ZZ);
+  if(d < DD) {
+    DD = d;
     LL = v->lc;
   }
 }
 
-static Mesh *TMPM = NULL;
-
-void LCBGM(double X, double Y, double Z, double *l)
-{
-  if(Pt_In_Volume(X, Y, Z, TMPM, l, .01));
-  else if(Pt_In_Volume(X, Y, Z, TMPM, l, .02));
-  else if(Pt_In_Volume(X, Y, Z, TMPM, l, .07));
-  else if(Pt_In_Volume(X, Y, Z, TMPM, l, .1));
-  else if(Pt_In_Volume(X, Y, Z, TMPM, l, .2));
-  else if(Pt_In_Volume(X, Y, Z, TMPM, l, .8));
-  else if(Pt_In_Volume(X, Y, Z, TMPM, l, 20.));
-  else {
-    XX = X;
-    YY = Y;
-    ZZ = Z;
-    D = 1.e24;
-    LL = 1;
-    Tree_Action(TMPM->Vertices, findcloser);
-    *l = LL;
-  }
-}
-
 double Lc_XYZ(double X, double Y, double Z, Mesh * m)
 {
   double l;
 
-  //l = 0.1 * fabs(cos(2 * 3.14159 * X) * cos( 2 * 3.14159 * Y))  + 0.01;
-  //return l;
-
   switch (m->BGM.Typ) {
   case FUNCTION:
+    // for testing...
+    l = 0.1 * fabs(cos(2 * 3.14159 * X) * cos( 2 * 3.14159 * Y))  + 0.01;
     break;
   case CONSTANT:
     l = m->BGM.lc;
     break;
   case ONFILE:
-    LCBGM(X, Y, Z, &l);
-    break;
-  case WITHPOINTS:
-    Msg(WARNING, "Send a mail to <gmsh@geuz.org> if you see this (Lc_XYZ)");
-    if(Pt_In_Volume(X, Y, Z, m, &l, 0.0));
-    else if(Pt_In_Volume(X, Y, Z, m, &l, 0.2));
-    else if(Pt_In_Volume(X, Y, Z, m, &l, 0.5));
+    if(Pt_In_Volume(X, Y, Z, TMPM, &l, .01));
+    else if(Pt_In_Volume(X, Y, Z, TMPM, &l, .02));
+    else if(Pt_In_Volume(X, Y, Z, TMPM, &l, .07));
+    else if(Pt_In_Volume(X, Y, Z, TMPM, &l, .1));
+    else if(Pt_In_Volume(X, Y, Z, TMPM, &l, .2));
+    else if(Pt_In_Volume(X, Y, Z, TMPM, &l, .8));
+    else if(Pt_In_Volume(X, Y, Z, TMPM, &l, 20.));
     else {
-      Msg(GERROR, "Exterior Point (%g,%g,%g)", X, Y, Z);
-      l = 1.e-25;
+      XX = X;
+      YY = Y;
+      ZZ = Z;
+      DD = 1.e24;
+      LL = 1;
+      Tree_Action(TMPM->Vertices, findcloser);
+      l = LL;
     }
     break;
+  case WITHPOINTS:
+    Msg(GERROR, "We should call Lc_XYZ with BGM.Typ == WITHPOINTS!");
+    l = 1.0;
+    break;
   }
+
+  if(l <= 0.){
+    Msg(GERROR, "Characteristic length <= 0: setting to 1.0");
+    l = 1.0;
+  }
+
   return CTX.mesh.lc_factor * l;
 }
 
-- 
GitLab