Fem: Add second order linear option to Netgen mesh
This commit is contained in:
@@ -111,6 +111,7 @@ NetgenTools.run_netgen(**{params})
|
||||
"heal": self.obj.HealShape,
|
||||
"params": self.get_meshing_parameters(),
|
||||
"second_order": self.obj.SecondOrder,
|
||||
"second_order_linear": self.obj.SecondOrderLinear,
|
||||
"result_file": self.result_file,
|
||||
"mesh_region": self.get_mesh_region(),
|
||||
}
|
||||
@@ -122,10 +123,16 @@ NetgenTools.run_netgen(**{params})
|
||||
return self.process
|
||||
|
||||
@staticmethod
|
||||
def run_netgen(brep_file, threads, heal, params, second_order, result_file, mesh_region):
|
||||
import pyngcore as ngcore
|
||||
from netgen import meshing
|
||||
|
||||
def run_netgen(
|
||||
brep_file,
|
||||
threads,
|
||||
heal,
|
||||
params,
|
||||
second_order,
|
||||
second_order_linear,
|
||||
result_file,
|
||||
mesh_region,
|
||||
):
|
||||
geom = occ.OCCGeometry(brep_file)
|
||||
ngcore.SetNumThreads(threads)
|
||||
|
||||
@@ -148,6 +155,8 @@ NetgenTools.run_netgen(**{params})
|
||||
mesh = geom.GenerateMesh(mp=meshing.MeshingParameters(**params))
|
||||
|
||||
if second_order:
|
||||
if second_order_linear:
|
||||
mesh.SetGeometry(None)
|
||||
mesh.SecondOrder()
|
||||
|
||||
coords = mesh.Coordinates()
|
||||
@@ -323,20 +332,20 @@ NetgenTools.run_netgen(**{params})
|
||||
return params
|
||||
|
||||
def get_mesh_region(self):
|
||||
import Part
|
||||
from Part import Shape as PartShape
|
||||
|
||||
d = []
|
||||
result = []
|
||||
for reg in self.obj.MeshRegionList:
|
||||
for s, sub_list in reg.References:
|
||||
if s.isDerivedFrom("App::GeoFeature") and isinstance(
|
||||
s.getPropertyOfGeometry(), Part.Shape
|
||||
s.getPropertyOfGeometry(), PartShape
|
||||
):
|
||||
geom = s.getPropertyOfGeometry()
|
||||
sub_sh = [s.getSubObject(_) for _ in sub_list]
|
||||
res = geom.findSubShape(sub_sh)
|
||||
sub_obj = [s.getSubObject(_) for _ in sub_list]
|
||||
sub_sh = geom.findSubShape(sub_obj)
|
||||
l = reg.CharacteristicLength.getValueAs("mm").Value
|
||||
d.append((res, l))
|
||||
return d
|
||||
result.append((sub_sh, l))
|
||||
return result
|
||||
|
||||
@staticmethod
|
||||
def version():
|
||||
|
||||
@@ -413,6 +413,15 @@ class MeshNetgen(base_fempythonobject.BaseFemPythonObject):
|
||||
value=True,
|
||||
)
|
||||
)
|
||||
prop.append(
|
||||
_PropHelper(
|
||||
type="App::PropertyBool",
|
||||
name="SecondOrderLinear",
|
||||
group="Mesh Parameters",
|
||||
doc="Second order nodes are created by linear interpolation",
|
||||
value=False,
|
||||
)
|
||||
)
|
||||
prop.append(
|
||||
_PropHelper(
|
||||
type="App::PropertyInteger",
|
||||
|
||||
Reference in New Issue
Block a user