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
No related branches found
No related tags found
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
//
......@@ -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();
......
......@@ -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;
}
......
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment