[FEM] add support for 3D recombinations (#4706)

* [FEM] add support for 3D recombinations

currently we only support surface recombinations but for some applications 3D recombinations are useful as well

* add support for the recombination algorithms

using a sensible algorithm is important to get useful results, see https://wiki.freecadweb.org/FEM_MeshGmshFromShape#Properties
where I described examples
This commit is contained in:
Uwe
2021-04-13 07:32:44 +02:00
committed by GitHub
parent d4e01609fe
commit 1e5c0fcef7
2 changed files with 47 additions and 2 deletions

View File

@@ -60,6 +60,12 @@ class MeshGmsh(base_fempythonobject.BaseFemPythonObject):
"R-tree",
"HXT"
]
known_mesh_RecombinationAlgorithms = [
"Simple",
"Blossom",
"Simple full-quad",
"Blossom full-quad"
]
known_mesh_HighOrderOptimizers = [
"None",
"Optimization",
@@ -169,7 +175,7 @@ class MeshGmsh(base_fempythonobject.BaseFemPythonObject):
"App::PropertyBool",
"OptimizeStd",
"FEM Gmsh Mesh Params",
"Optimize tetra elements"
"Optimize tetrahedral elements"
)
obj.OptimizeStd = True
@@ -201,6 +207,25 @@ class MeshGmsh(base_fempythonobject.BaseFemPythonObject):
)
obj.RecombineAll = False
if not hasattr(obj, "Recombine3DAll"):
obj.addProperty(
"App::PropertyBool",
"Recombine3DAll",
"FEM Gmsh Mesh Params",
"Apply recombination algorithm to all volumes"
)
obj.Recombine3DAll = False
if not hasattr(obj, "RecombinationAlgorithm"):
obj.addProperty(
"App::PropertyEnumeration",
"RecombinationAlgorithm",
"FEM Gmsh Mesh Params",
"Recombination algorithm"
)
obj.RecombinationAlgorithm = MeshGmsh.known_mesh_RecombinationAlgorithms
obj.RecombinationAlgorithm = "Simple"
if not hasattr(obj, "CoherenceMesh"):
obj.addProperty(
"App::PropertyBool",