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