mirror of
https://github.com/NGSolve/netgen.git
synced 2025-05-11 13:10:48 +05:00
expose mesh optimization parameters, e.g. to allow only smoothing or swapping
This commit is contained in:
parent
227d297f78
commit
292f8556a4
@ -1067,9 +1067,9 @@ namespace nglib
|
|||||||
|
|
||||||
closeedgeenable = 0;
|
closeedgeenable = 0;
|
||||||
closeedgefact = 2.0;
|
closeedgefact = 2.0;
|
||||||
|
|
||||||
minedgelenenable = 0;
|
minedgelenenable = 0;
|
||||||
minedgelen = 1e-4;
|
minedgelen = 1e-4;
|
||||||
|
|
||||||
second_order = 0;
|
second_order = 0;
|
||||||
quad_dominated = 0;
|
quad_dominated = 0;
|
||||||
@ -1081,6 +1081,9 @@ namespace nglib
|
|||||||
|
|
||||||
optsteps_2d = 3;
|
optsteps_2d = 3;
|
||||||
optsteps_3d = 3;
|
optsteps_3d = 3;
|
||||||
|
|
||||||
|
optimize3d = "cmdmustm";
|
||||||
|
optimize2d = "smsmsmSmSmSm";
|
||||||
|
|
||||||
invert_tets = 0;
|
invert_tets = 0;
|
||||||
invert_trigs = 0;
|
invert_trigs = 0;
|
||||||
@ -1095,39 +1098,7 @@ namespace nglib
|
|||||||
// Reset the local meshing parameters to the default values
|
// Reset the local meshing parameters to the default values
|
||||||
DLL_HEADER void Ng_Meshing_Parameters :: Reset_Parameters()
|
DLL_HEADER void Ng_Meshing_Parameters :: Reset_Parameters()
|
||||||
{
|
{
|
||||||
uselocalh = 1;
|
(*this) = Ng_Meshing_Parameters();
|
||||||
|
|
||||||
maxh = 1000;
|
|
||||||
minh = 0;
|
|
||||||
|
|
||||||
fineness = 0.5;
|
|
||||||
grading = 0.3;
|
|
||||||
|
|
||||||
elementsperedge = 2.0;
|
|
||||||
elementspercurve = 2.0;
|
|
||||||
|
|
||||||
closeedgeenable = 0;
|
|
||||||
closeedgefact = 2.0;
|
|
||||||
|
|
||||||
minedgelenenable = 0;
|
|
||||||
minedgelen = 1e-4;
|
|
||||||
|
|
||||||
second_order = 0;
|
|
||||||
quad_dominated = 0;
|
|
||||||
|
|
||||||
meshsize_filename = 0;
|
|
||||||
|
|
||||||
optsurfmeshenable = 1;
|
|
||||||
optvolmeshenable = 1;
|
|
||||||
|
|
||||||
optsteps_2d = 3;
|
|
||||||
optsteps_3d = 3;
|
|
||||||
|
|
||||||
invert_tets = 0;
|
|
||||||
invert_trigs = 0;
|
|
||||||
|
|
||||||
check_overlap = 1;
|
|
||||||
check_overlapping_boundary = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1154,6 +1125,9 @@ namespace nglib
|
|||||||
mparam.meshsizefilename = "";
|
mparam.meshsizefilename = "";
|
||||||
mparam.optsteps2d = optsteps_2d;
|
mparam.optsteps2d = optsteps_2d;
|
||||||
mparam.optsteps3d = optsteps_3d;
|
mparam.optsteps3d = optsteps_3d;
|
||||||
|
|
||||||
|
if (strlen(optimize2d) > 0) mparam.optimize2d = optimize2d;
|
||||||
|
if (strlen(optimize3d) > 0) mparam.optimize3d = optimize3d;
|
||||||
|
|
||||||
mparam.inverttets = invert_tets;
|
mparam.inverttets = invert_tets;
|
||||||
mparam.inverttrigs = invert_trigs;
|
mparam.inverttrigs = invert_trigs;
|
||||||
@ -1216,14 +1190,18 @@ namespace nglib
|
|||||||
|
|
||||||
|
|
||||||
// ------------------ Begin - Uniform Mesh Refinement functions ---------------------
|
// ------------------ Begin - Uniform Mesh Refinement functions ---------------------
|
||||||
DLL_HEADER void Ng_Uniform_Refinement (Ng_Mesh * mesh)
|
DLL_HEADER void Ng_Uniform_Refinement (Ng_Mesh * ng_mesh)
|
||||||
{
|
{
|
||||||
Refinement ref;
|
Mesh * mesh = (Mesh*) ng_mesh;
|
||||||
ref.Refine ( * (Mesh*) mesh );
|
|
||||||
|
if (auto geom = mesh->GetGeometry())
|
||||||
|
geom->GetRefinement().Refine (*mesh);
|
||||||
|
else
|
||||||
|
Refinement().Refine (*mesh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Ng_SetRefinementFlag (Ng_Mesh * ng_mesh, int ei, int flag)
|
DLL_HEADER void Ng_SetRefinementFlag (Ng_Mesh * ng_mesh, int ei, int flag)
|
||||||
{
|
{
|
||||||
Mesh * mesh = (Mesh*) ng_mesh;
|
Mesh * mesh = (Mesh*) ng_mesh;
|
||||||
|
|
||||||
@ -1240,7 +1218,7 @@ namespace nglib
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Ng_SetSurfaceRefinementFlag (Ng_Mesh * ng_mesh, int ei, int flag)
|
DLL_HEADER void Ng_SetSurfaceRefinementFlag (Ng_Mesh * ng_mesh, int ei, int flag)
|
||||||
{
|
{
|
||||||
Mesh * mesh = (Mesh*) ng_mesh;
|
Mesh * mesh = (Mesh*) ng_mesh;
|
||||||
|
|
||||||
@ -1252,7 +1230,7 @@ namespace nglib
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Ng_Refine (Ng_Mesh * ng_mesh)
|
DLL_HEADER void Ng_Refine (Ng_Mesh * ng_mesh)
|
||||||
{
|
{
|
||||||
Mesh * mesh = (Mesh*) ng_mesh;
|
Mesh * mesh = (Mesh*) ng_mesh;
|
||||||
BisectionOptions biopt;
|
BisectionOptions biopt;
|
||||||
@ -1265,7 +1243,7 @@ namespace nglib
|
|||||||
else
|
else
|
||||||
Refinement().Bisect (*mesh, biopt);
|
Refinement().Bisect (*mesh, biopt);
|
||||||
|
|
||||||
// not sure if this is needed?
|
// \todo not sure if this is needed?
|
||||||
//mesh -> UpdateTopology();
|
//mesh -> UpdateTopology();
|
||||||
//mesh -> GetCurvedElements().SetIsHighOrder (false);
|
//mesh -> GetCurvedElements().SetIsHighOrder (false);
|
||||||
}
|
}
|
||||||
|
@ -120,6 +120,9 @@ public:
|
|||||||
int optsteps_3d; //!< Number of optimize steps to use for 3-D mesh optimization
|
int optsteps_3d; //!< Number of optimize steps to use for 3-D mesh optimization
|
||||||
int optsteps_2d; //!< Number of optimize steps to use for 2-D mesh optimization
|
int optsteps_2d; //!< Number of optimize steps to use for 2-D mesh optimization
|
||||||
|
|
||||||
|
const char* optimize3d; //!< Optimization strategy (s=swap shape, c=collapse, d=divide, m=move, M=cheap move)
|
||||||
|
const char* optimize2d; //!< Optimization strategy (s=swap tolopgical, S=swap shape, c=collapse, m=move)
|
||||||
|
|
||||||
// Philippose - 13/09/2010
|
// Philippose - 13/09/2010
|
||||||
// Added a couple more parameters into the meshing parameters list
|
// Added a couple more parameters into the meshing parameters list
|
||||||
// from Netgen into Nglib
|
// from Netgen into Nglib
|
||||||
|
Loading…
x
Reference in New Issue
Block a user