FEM: gmsh mesh obj, use 2nd order as standard and remove Automatic

This commit is contained in:
Bernd Hahnebach
2016-12-20 18:12:00 +01:00
committed by Yorik van Havre
parent 86e1529170
commit 4445add721
4 changed files with 8 additions and 30 deletions

View File

@@ -58,11 +58,11 @@ class FemGmshTools():
self.clmin = Units.Quantity(self.mesh_obj.CharacteristicLengthMin).Value
# order
# known_element_orders = ['Automatic', '1st', '2nd']
# known_element_orders = ['1st', '2nd']
self.order = self.mesh_obj.ElementOrder
if self.order == '1st':
self.order = '1'
elif self.order == 'Automatic' or self.order == '2nd':
elif self.order == '2nd':
self.order = '2'
else:
print('Error in order')

View File

@@ -42,23 +42,13 @@
<widget class="QComboBox" name="cb_dimension"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="l_order">
<property name="text">
<string>Mesh element order:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="cb_order"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="l_max">
<property name="text">
<string>Max element size (0.0 = Auto):</string>
</property>
</widget>
</item>
<item row="3" column="1">
<item row="2" column="1">
<widget class="Gui::InputField" name="if_max">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
@@ -95,14 +85,14 @@
</property>
</widget>
</item>
<item row="4" column="0">
<item row="3" column="0">
<widget class="QLabel" name="l_min">
<property name="text">
<string>Min element size (0.0 = Auto):</string>
</property>
</widget>
</item>
<item row="4" column="1">
<item row="3" column="1">
<widget class="Gui::InputField" name="if_min">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">

View File

@@ -34,7 +34,7 @@ class _FemMeshGmsh():
# they will be used from the task panel too, thus they need to be outside of the __init__
known_element_dimensions = ['Automatic', '1D', '2D', '3D']
known_element_orders = ['Automatic', '1st', '2nd']
known_element_orders = ['1st', '2nd']
known_mesh_algorithm_2D = ['Automatic', 'MeshAdapt', 'Delaunay', 'Frontal', 'BAMG', 'DelQuad']
known_mesh_algorithm_3D = ['Automatic', 'Delaunay', 'New Delaunay', 'Frontal', 'Frontal Delaunay', 'Frontal Hex', 'MMG3D', 'R-tree']
@@ -59,9 +59,9 @@ class _FemMeshGmsh():
obj.ElementDimension = _FemMeshGmsh.known_element_dimensions
obj.ElementDimension = 'Automatic' # according ShapeType of Part to mesh
obj.addProperty("App::PropertyEnumeration", "ElementOrder", "FEM GMSH Mesh Params", "Order of mesh elements (Auto will be 2nd)")
obj.addProperty("App::PropertyEnumeration", "ElementOrder", "FEM GMSH Mesh Params", "Order of mesh elements")
obj.ElementOrder = _FemMeshGmsh.known_element_orders
obj.ElementOrder = 'Automatic' # = 2nd
obj.ElementOrder = '2nd'
obj.addProperty("App::PropertyBool", "OptimizeStd", "FEM GMSH Mesh Params", "Optimize tetra elements")
obj.OptimizeStd = True

View File

@@ -51,11 +51,9 @@ class _TaskPanelFemMeshGmsh:
QtCore.QObject.connect(self.form.if_max, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.max_changed)
QtCore.QObject.connect(self.form.if_min, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.min_changed)
QtCore.QObject.connect(self.form.cb_dimension, QtCore.SIGNAL("activated(int)"), self.choose_dimension)
QtCore.QObject.connect(self.form.cb_order, QtCore.SIGNAL("activated(int)"), self.choose_order)
QtCore.QObject.connect(self.Timer, QtCore.SIGNAL("timeout()"), self.update_timer_text)
self.form.cb_dimension.addItems(_FemMeshGmsh._FemMeshGmsh.known_element_dimensions)
self.form.cb_order.addItems(_FemMeshGmsh._FemMeshGmsh.known_element_orders)
self.get_mesh_params()
self.get_active_analysis()
@@ -80,13 +78,11 @@ class _TaskPanelFemMeshGmsh:
def get_mesh_params(self):
self.clmax = self.mesh_obj.CharacteristicLengthMax
self.clmin = self.mesh_obj.CharacteristicLengthMin
self.order = self.mesh_obj.ElementOrder
self.dimension = self.mesh_obj.ElementDimension
def set_mesh_params(self):
self.mesh_obj.CharacteristicLengthMax = self.clmax
self.mesh_obj.CharacteristicLengthMin = self.clmin
self.mesh_obj.ElementOrder = self.order
self.mesh_obj.ElementDimension = self.dimension
def update(self):
@@ -95,8 +91,6 @@ class _TaskPanelFemMeshGmsh:
self.form.if_min.setText(self.clmin.UserString)
index_dimension = self.form.cb_dimension.findText(self.dimension)
self.form.cb_dimension.setCurrentIndex(index_dimension)
index_order = self.form.cb_order.findText(self.order)
self.form.cb_order.setCurrentIndex(index_order)
def console_log(self, message="", color="#000000"):
self.console_message_gmsh = self.console_message_gmsh + '<font color="#0000FF">{0:4.1f}:</font> <font color="{1}">{2}</font><br>'.\
@@ -123,12 +117,6 @@ class _TaskPanelFemMeshGmsh:
self.form.cb_dimension.setCurrentIndex(index)
self.dimension = str(self.form.cb_dimension.itemText(index)) # form returns unicode
def choose_order(self, index):
if index < 0:
return
self.form.cb_order.setCurrentIndex(index)
self.order = str(self.form.cb_order.itemText(index)) # form returns unicode
def run_gmsh(self):
QApplication.setOverrideCursor(Qt.WaitCursor)
self.Start = time.time()