[FEM]implement Gmsh mesh property "MeshSizeFromCurvature"
This commit is contained in:
@@ -708,11 +708,17 @@ class GmshTools():
|
||||
geo.write("Mesh.CharacteristicLengthMin = " + str(0) + ";\n")
|
||||
else:
|
||||
geo.write("Mesh.CharacteristicLengthMin = " + str(self.clmin) + ";\n")
|
||||
if hasattr(self.mesh_obj, "MeshSizeFromCurvature"):
|
||||
geo.write(
|
||||
"Mesh.MeshSizeFromCurvature = " + str(self.mesh_obj.MeshSizeFromCurvature) +
|
||||
"; // number of elements per 2*pi radians, 0 to deactivate\n"
|
||||
)
|
||||
geo.write("\n")
|
||||
if hasattr(self.mesh_obj, "RecombineAll") and self.mesh_obj.RecombineAll is True:
|
||||
geo.write("// other mesh options\n")
|
||||
geo.write("Mesh.RecombineAll = 1;\n")
|
||||
geo.write("\n")
|
||||
|
||||
geo.write("// optimize the mesh\n")
|
||||
# Gmsh tetra optimizer
|
||||
if hasattr(self.mesh_obj, "OptimizeStd") and self.mesh_obj.OptimizeStd is True:
|
||||
@@ -727,15 +733,16 @@ class GmshTools():
|
||||
# higher order mesh optimizing
|
||||
if hasattr(self.mesh_obj, "HighOrderOptimize") and self.mesh_obj.HighOrderOptimize is True:
|
||||
geo.write(
|
||||
"Mesh.HighOrderOptimize = 1; // for more HighOrderOptimize "
|
||||
"Mesh.HighOrderOptimize = 1; // for more HighOrderOptimize "
|
||||
"parameter check http://gmsh.info/doc/texinfo/gmsh.html\n"
|
||||
)
|
||||
else:
|
||||
geo.write(
|
||||
"Mesh.HighOrderOptimize = 0; // for more HighOrderOptimize "
|
||||
"Mesh.HighOrderOptimize = 0; // for more HighOrderOptimize "
|
||||
"parameter check http://gmsh.info/doc/texinfo/gmsh.html\n"
|
||||
)
|
||||
geo.write("\n")
|
||||
|
||||
geo.write("// mesh order\n")
|
||||
geo.write("Mesh.ElementOrder = " + self.order + ";\n")
|
||||
if self.order == "2":
|
||||
|
||||
@@ -212,6 +212,15 @@ class MeshGmsh(base_fempythonobject.BaseFemPythonObject):
|
||||
# https://forum.freecadweb.org/viewtopic.php?t=41738
|
||||
# https://forum.freecadweb.org/viewtopic.php?f=18&t=45260&start=20#p389494
|
||||
|
||||
if not hasattr(obj, "MeshSizeFromCurvature"):
|
||||
obj.addProperty(
|
||||
"App::PropertyIntegerConstraint",
|
||||
"MeshSizeFromCurvature",
|
||||
"FEM Gmsh Mesh Params",
|
||||
"number of elements per 2*pi radians, 0 to deactivate"
|
||||
)
|
||||
obj.MeshSizeFromCurvature = (12, 0, 10000, 1)
|
||||
|
||||
if not hasattr(obj, "Algorithm2D"):
|
||||
obj.addProperty(
|
||||
"App::PropertyEnumeration",
|
||||
|
||||
@@ -14,11 +14,12 @@ Physical Volume("Solid1") = {1};
|
||||
// min, max Characteristic Length
|
||||
Mesh.CharacteristicLengthMax = 1e+22;
|
||||
Mesh.CharacteristicLengthMin = 8.0;
|
||||
Mesh.MeshSizeFromCurvature = 12; // number of elements per 2*pi radians, 0 to deactivate
|
||||
|
||||
// optimize the mesh
|
||||
Mesh.Optimize = 1;
|
||||
Mesh.OptimizeNetgen = 0;
|
||||
Mesh.HighOrderOptimize = 0; // for more HighOrderOptimize parameter check http://gmsh.info/doc/texinfo/gmsh.html
|
||||
Mesh.HighOrderOptimize = 0; // for more HighOrderOptimize parameter check http://gmsh.info/doc/texinfo/gmsh.html
|
||||
|
||||
// mesh order
|
||||
Mesh.ElementOrder = 2;
|
||||
|
||||
Reference in New Issue
Block a user