Skip to content
Snippets Groups Projects
Commit 0a596faf authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

fixed (?) long-standing mesh-size/geometry-size dependence in Netgen
parent bc4a340f
Branches
Tags
No related merge requests found
// $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 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
// //
...@@ -119,7 +119,7 @@ void TransferTetgenMesh(GRegion *gr, tetgenio &in, tetgenio &out, ...@@ -119,7 +119,7 @@ void TransferTetgenMesh(GRegion *gr, tetgenio &in, tetgenio &out,
std::vector<MVertex*> &numberedV) std::vector<MVertex*> &numberedV)
{ {
// Improvement has to be done here : // 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 // mesh. If those edges are classified on some
// model faces, new points SHOULD be classified // model faces, new points SHOULD be classified
// on the model face and get the right set of parametric coordinates. // on the model face and get the right set of parametric coordinates.
...@@ -595,11 +595,7 @@ void meshGRegion::operator() (GRegion *gr) ...@@ -595,11 +595,7 @@ void meshGRegion::operator() (GRegion *gr)
meshNormalsPointOutOfTheRegion(gr); meshNormalsPointOutOfTheRegion(gr);
std::vector<MVertex*> numberedV; std::vector<MVertex*> numberedV;
Ng_Mesh *ngmesh = buildNetgenStructure(gr, false, numberedV); Ng_Mesh *ngmesh = buildNetgenStructure(gr, false, numberedV);
Ng_Meshing_Parameters mp; NgAddOn_GenerateVolumeMesh(ngmesh, CTX.lc); // does not optimize
mp.maxh = 1;
mp.fineness = 1;
mp.secondorder = 0;
NgAddOn_GenerateVolumeMesh(ngmesh, &mp); // does not optimize
TransferVolumeMesh(gr, ngmesh, numberedV); TransferVolumeMesh(gr, ngmesh, numberedV);
Ng_DeleteMesh(ngmesh); Ng_DeleteMesh(ngmesh);
Ng_Exit(); Ng_Exit();
...@@ -626,11 +622,7 @@ void optimizeMeshGRegionNetgen::operator() (GRegion *gr) ...@@ -626,11 +622,7 @@ void optimizeMeshGRegionNetgen::operator() (GRegion *gr)
deMeshGRegion dem; deMeshGRegion dem;
dem(gr); dem(gr);
// optimize mesh // optimize mesh
Ng_Meshing_Parameters mp; NgAddOn_OptimizeVolumeMesh(ngmesh, CTX.lc);
mp.maxh = 1;
mp.fineness = 1;
mp.secondorder = 0;
NgAddOn_OptimizeVolumeMesh(ngmesh, &mp);
TransferVolumeMesh(gr, ngmesh, numberedV); TransferVolumeMesh(gr, ngmesh, numberedV);
Ng_DeleteMesh(ngmesh); Ng_DeleteMesh(ngmesh);
Ng_Exit(); Ng_Exit();
......
...@@ -66,39 +66,28 @@ void NgAddOn_Init () ...@@ -66,39 +66,28 @@ void NgAddOn_Init ()
} }
// generates volume mesh from surface mesh, without optimization // 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; MeshingParameters mparam;
mparam.maxh = mp->maxh; mparam.maxh = maxh;
mparam.meshsizefilename = mp->meshsize_filename;
m->CalcLocalH(); m->CalcLocalH();
MeshVolume(mparam, *m); MeshVolume(mparam, *m);
//RemoveIllegalElements(*m); //RemoveIllegalElements(*m);
//OptimizeVolume (mparam, *m); //OptimizeVolume (mparam, *m);
return NG_OK; return NG_OK;
} }
// optimizes an existing 3D mesh // 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; MeshingParameters mparam;
mparam.maxh = mp->maxh; mparam.maxh = maxh;
mparam.meshsizefilename = mp->meshsize_filename;
m->CalcLocalH(); m->CalcLocalH();
//MeshVolume (mparam, *m); //MeshVolume (mparam, *m);
RemoveIllegalElements(*m); RemoveIllegalElements(*m);
OptimizeVolume(mparam, *m); OptimizeVolume(mparam, *m);
return NG_OK; return NG_OK;
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#define _NGLIB_ADDON_H_ #define _NGLIB_ADDON_H_
void NgAddOn_Init(); void NgAddOn_Init();
Ng_Result NgAddOn_GenerateVolumeMesh(Ng_Mesh * mesh, Ng_Meshing_Parameters * mp); Ng_Result NgAddOn_GenerateVolumeMesh(Ng_Mesh *mesh, double maxh);
Ng_Result NgAddOn_OptimizeVolumeMesh(Ng_Mesh * mesh, Ng_Meshing_Parameters * mp); Ng_Result NgAddOn_OptimizeVolumeMesh(Ng_Mesh *mesh, double maxh);
#endif #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment