From 0a596fafc9014bb3db7752fa2a386c94ebf82342 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Thu, 12 Jun 2008 10:04:23 +0000
Subject: [PATCH] fixed (?) long-standing mesh-size/geometry-size dependence in
 Netgen

---
 Mesh/meshGRegion.cpp           | 16 ++++------------
 contrib/Netgen/nglib_addon.cpp | 35 ++++++++++++----------------------
 contrib/Netgen/nglib_addon.h   |  4 ++--
 3 files changed, 18 insertions(+), 37 deletions(-)

diff --git a/Mesh/meshGRegion.cpp b/Mesh/meshGRegion.cpp
index c9dfebc0e8..089cb8067e 100644
--- a/Mesh/meshGRegion.cpp
+++ b/Mesh/meshGRegion.cpp
@@ -1,4 +1,4 @@
-// $Id: meshGRegion.cpp,v 1.50 2008-06-10 12:59:12 remacle Exp $
+// $Id: meshGRegion.cpp,v 1.51 2008-06-12 10:04:23 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -119,7 +119,7 @@ void TransferTetgenMesh(GRegion *gr, tetgenio &in, tetgenio &out,
                         std::vector<MVertex*> &numberedV)
 {
   // Improvement has to be done here :
-  // netgen splits some of the existing edges of the 
+  // tetgen splits some of the existing edges of the 
   // mesh. If those edges are classified on some
   // model faces, new points SHOULD be classified
   // on the model face and get the right set of parametric coordinates.
@@ -595,11 +595,7 @@ void meshGRegion::operator() (GRegion *gr)
     meshNormalsPointOutOfTheRegion(gr);
     std::vector<MVertex*> numberedV;
     Ng_Mesh *ngmesh = buildNetgenStructure(gr, false, numberedV);
-    Ng_Meshing_Parameters mp;
-    mp.maxh = 1;
-    mp.fineness = 1;
-    mp.secondorder = 0;
-    NgAddOn_GenerateVolumeMesh(ngmesh, &mp); // does not optimize
+    NgAddOn_GenerateVolumeMesh(ngmesh, CTX.lc); // does not optimize
     TransferVolumeMesh(gr, ngmesh, numberedV);
     Ng_DeleteMesh(ngmesh);
     Ng_Exit();
@@ -626,11 +622,7 @@ void optimizeMeshGRegionNetgen::operator() (GRegion *gr)
   deMeshGRegion dem;
   dem(gr);
   // optimize mesh
-  Ng_Meshing_Parameters mp;
-  mp.maxh = 1;
-  mp.fineness = 1;
-  mp.secondorder = 0;
-  NgAddOn_OptimizeVolumeMesh(ngmesh, &mp);
+  NgAddOn_OptimizeVolumeMesh(ngmesh, CTX.lc);
   TransferVolumeMesh(gr, ngmesh, numberedV);
   Ng_DeleteMesh(ngmesh);
   Ng_Exit();
diff --git a/contrib/Netgen/nglib_addon.cpp b/contrib/Netgen/nglib_addon.cpp
index 739a028812..80c62b7ec0 100644
--- a/contrib/Netgen/nglib_addon.cpp
+++ b/contrib/Netgen/nglib_addon.cpp
@@ -54,7 +54,7 @@ class mystreambuf: public streambuf
 };
 
 // replaces the standard Ng_Init
-void NgAddOn_Init ()
+void NgAddOn_Init()
 {
   //mycout = &cout;
   //myerr = &cerr;
@@ -62,43 +62,32 @@ void NgAddOn_Init ()
 
   mycout = new ostream(new mystreambuf());
   myerr = new ostream(new mystreambuf());
-  testout = new ofstream ("/dev/null");
+  testout = new ofstream("/dev/null");
 }
 
 // generates volume mesh from surface mesh, without optimization
-Ng_Result NgAddOn_GenerateVolumeMesh (Ng_Mesh * mesh, Ng_Meshing_Parameters * mp)
+Ng_Result NgAddOn_GenerateVolumeMesh(Ng_Mesh *mesh, double maxh)
 {
-  Mesh * m = (Mesh*)mesh;
-  
-  
+  Mesh *m = (Mesh*)mesh;
   MeshingParameters mparam;
-  mparam.maxh = mp->maxh;
-  mparam.meshsizefilename = mp->meshsize_filename;
-
+  mparam.maxh = maxh;
   m->CalcLocalH();
-
-  MeshVolume (mparam, *m);
-  //RemoveIllegalElements (*m);
+  MeshVolume(mparam, *m);
+  //RemoveIllegalElements(*m);
   //OptimizeVolume (mparam, *m);
-
   return NG_OK;
 }
 
 // optimizes an existing 3D mesh
-Ng_Result NgAddOn_OptimizeVolumeMesh (Ng_Mesh * mesh, Ng_Meshing_Parameters * mp)
+Ng_Result NgAddOn_OptimizeVolumeMesh(Ng_Mesh *mesh, double maxh)
 {
-  Mesh * m = (Mesh*)mesh;
-
+  Mesh *m = (Mesh*)mesh;
   MeshingParameters mparam;
-  mparam.maxh = mp->maxh;
-  mparam.meshsizefilename = mp->meshsize_filename;
-
+  mparam.maxh = maxh;
   m->CalcLocalH();
-
   //MeshVolume (mparam, *m);
-  RemoveIllegalElements (*m);
-  OptimizeVolume (mparam, *m);
-
+  RemoveIllegalElements(*m);
+  OptimizeVolume(mparam, *m);
   return NG_OK;
 }
 
diff --git a/contrib/Netgen/nglib_addon.h b/contrib/Netgen/nglib_addon.h
index 32c39b147f..b587bdd004 100644
--- a/contrib/Netgen/nglib_addon.h
+++ b/contrib/Netgen/nglib_addon.h
@@ -2,7 +2,7 @@
 #define _NGLIB_ADDON_H_
 
 void NgAddOn_Init();
-Ng_Result NgAddOn_GenerateVolumeMesh(Ng_Mesh * mesh, Ng_Meshing_Parameters * mp);
-Ng_Result NgAddOn_OptimizeVolumeMesh(Ng_Mesh * mesh, Ng_Meshing_Parameters * mp);
+Ng_Result NgAddOn_GenerateVolumeMesh(Ng_Mesh *mesh, double maxh);
+Ng_Result NgAddOn_OptimizeVolumeMesh(Ng_Mesh *mesh, double maxh);
 
 #endif
-- 
GitLab