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