replace 'GMSH' with correct spelling 'Gmsh'

This commit is contained in:
wmayer
2017-11-15 10:11:16 +01:00
parent 09c724cc4d
commit 1f40d24fd9
9 changed files with 55 additions and 55 deletions

View File

@@ -20,7 +20,7 @@
# * *
# ***************************************************************************
__title__ = "Tools for the work with GMSH mesher"
__title__ = "Tools for the work with Gmsh mesher"
__author__ = "Bernd Hahnebach"
__url__ = "http://www.freecadweb.org"
@@ -116,7 +116,7 @@ class FemGmshTools():
self.algorithm3D = '1'
def create_mesh(self):
print("\nWe are going to start GMSH FEM mesh run!")
print("\nWe are going to start Gmsh FEM mesh run!")
print(' Part to mesh: Name --> ' + self.part_obj.Name + ', Label --> ' + self.part_obj.Label + ', ShapeType --> ' + self.part_obj.Shape.ShapeType)
print(' CharacteristicLengthMax: ' + str(self.clmax))
print(' CharacteristicLengthMin: ' + str(self.clmin))
@@ -136,7 +136,7 @@ class FemGmshTools():
def get_dimension(self):
# Dimension
# known_element_dimensions = ['From Shape', '1D', '2D', '3D']
# if not given, GMSH uses the highest available.
# if not given, Gmsh uses the highest available.
# A use case for not "From Shape" would be a surface (2D) mesh of a solid
if self.dimension == 'From Shape':
shty = self.part_obj.Shape.ShapeType
@@ -185,7 +185,7 @@ class FemGmshTools():
self.mesh_name = self.part_obj.Name + '_Mesh_TmpGmsh'
self.temp_file_mesh = tmpdir + path_sep + self.mesh_name + '.unv'
print(' ' + self.temp_file_mesh)
# GMSH input file
# Gmsh input file
self.temp_file_geo = tmpdir + path_sep + 'shape2mesh.geo'
print(' ' + self.temp_file_geo)
@@ -202,7 +202,7 @@ class FemGmshTools():
if p1.wait() == 0:
gmsh_path = p1.stdout.read().split('\n')[0]
elif p1.wait() == 1:
error_message = "GMSH binary gmsh not found in standard system binary path. Please install gmsh or set path to binary in FEM preferences tab GMSH.\n"
error_message = "Gmsh binary gmsh not found in standard system binary path. Please install Gmsh or set path to binary in FEM preferences tab Gmsh.\n"
FreeCAD.Console.PrintError(error_message)
raise Exception(error_message)
self.gmsh_bin = gmsh_path
@@ -269,7 +269,7 @@ class FemGmshTools():
if self.mesh_obj.MeshRegionList:
if part.Shape.ShapeType == "Compound" and hasattr(part, "Proxy"): # other part obj might not have a Proxy, thus an exception would be raised
if (part.Proxy.Type == "FeatureBooleanFragments" or part.Proxy.Type == "FeatureSlice" or part.Proxy.Type == "FeatureXOR"):
error_message = " The mesh to shape is a boolean split tools Compound and the mesh has mesh region list. GMSH could return unexpected meshes in such circumstances. It is strongly recommended to extract the shape to mesh from the Compound and use this one."
error_message = " The mesh to shape is a boolean split tools Compound and the mesh has mesh region list. Gmsh could return unexpected meshes in such circumstances. It is strongly recommended to extract the shape to mesh from the Compound and use this one."
FreeCAD.Console.PrintError(error_message + "\n")
# TODO: no gui popup because FreeCAD will be in a endless print loop
# as long as the pop up is on --> maybe find a better solution for
@@ -328,7 +328,7 @@ class FemGmshTools():
print (' Mesh boundary layers, we need to get the elements.')
if self.part_obj.Shape.ShapeType == 'Compound':
# see http://forum.freecadweb.org/viewtopic.php?f=18&t=18780&start=40#p149467 and http://forum.freecadweb.org/viewtopic.php?f=18&t=18780&p=149520#p149520
err = "GMSH could return unexpected meshes for a boolean split tools Compound. It is strongly recommended to extract the shape to mesh from the Compound and use this one."
err = "Gmsh could return unexpected meshes for a boolean split tools Compound. It is strongly recommended to extract the shape to mesh from the Compound and use this one."
FreeCAD.Console.PrintError(err + "\n")
for mr_obj in self.mesh_obj.MeshBoundaryLayerList:
if mr_obj.MinimumThickness and Units.Quantity(mr_obj.MinimumThickness).Value > 0:
@@ -397,7 +397,7 @@ class FemGmshTools():
for k in item:
v = item[k]
if k in set(['EdgesList', 'FacesList']):
# the element name of FreeCAD which starts with 1 (example: 'Face1'), same as GMSH
# the element name of FreeCAD which starts with 1 (example: 'Face1'), same as Gmsh
#el_id = int(el[4:]) # FIXME: strip `face` or `edge` prefix
ele_nodes = (''.join((str(el[4:]) + ', ') for el in v)).rstrip(', ')
line = prefix + '.' + str(k) + ' = {' + ele_nodes + ' };\n'
@@ -421,7 +421,7 @@ class FemGmshTools():
def write_geo(self):
geo = open(self.temp_file_geo, "w")
geo.write("// geo file for meshing with GMSH meshing software created by FreeCAD\n")
geo.write("// geo file for meshing with Gmsh meshing software created by FreeCAD\n")
geo.write("\n")
geo.write("// open brep geometry\n")
geo.write('Merge "' + self.temp_file_geometry + '";\n')
@@ -429,7 +429,7 @@ class FemGmshTools():
if self.group_elements:
# print(' We are going to have to find elements to make mesh groups for.')
geo.write("// group data\n")
# we use the element name of FreeCAD which starts with 1 (example: 'Face1'), same as GMSH
# we use the element name of FreeCAD which starts with 1 (example: 'Face1'), same as Gmsh
for group in sorted(self.group_elements.keys()): # for unit test we need them to have a fixed order
gdata = self.group_elements[group]
# print(gdata)
@@ -458,7 +458,7 @@ class FemGmshTools():
geo.write("\n")
geo.write("// Characteristic Length\n")
if self.ele_length_map:
# we use the index FreeCAD which starts with 0, we need to add 1 for the index in GMSH
# we use the index FreeCAD which starts with 0, we need to add 1 for the index in Gmsh
geo.write("// Characteristic Length according CharacteristicLengthMap\n")
for e in self.ele_length_map:
ele_nodes = (''.join((str(n + 1) + ', ') for n in self.ele_node_map[e])).rstrip(', ')
@@ -482,12 +482,12 @@ class FemGmshTools():
geo.write("Mesh.RecombineAll = 1;\n")
geo.write("\n")
geo.write("// optimize the mesh\n")
# GMSH tetra optimizer
# Gmsh tetra optimizer
if hasattr(self.mesh_obj, 'OptimizeStd') and self.mesh_obj.OptimizeStd is True:
geo.write("Mesh.Optimize = 1;\n")
else:
geo.write("Mesh.Optimize = 0;\n")
# Netgen optimizer in GMSH
# Netgen optimizer in Gmsh
if hasattr(self.mesh_obj, 'OptimizeNetgen') and self.mesh_obj.OptimizeNetgen is True:
geo.write("Mesh.OptimizeNetgen = 1;\n")
else:
@@ -532,15 +532,15 @@ class FemGmshTools():
geo.write('Save "' + self.temp_file_mesh + '";\n')
geo.write("\n\n")
geo.write("//////////////////////////////////////////////////////////////////////\n")
geo.write("// GMSH documentation:\n")
geo.write("// Gmsh documentation:\n")
geo.write("// http://gmsh.info/doc/texinfo/gmsh.html#Mesh\n")
geo.write("//\n")
geo.write("// We do not check if something went wrong, like negative jacobians etc. You can run GMSH manually yourself: \n")
geo.write("// We do not check if something went wrong, like negative jacobians etc. You can run Gmsh manually yourself: \n")
geo.write("//\n")
geo.write("// to see full GMSH log, run in bash:\n")
geo.write("// to see full Gmsh log, run in bash:\n")
geo.write("// " + self.gmsh_bin + " - " + self.temp_file_geo + "\n")
geo.write("//\n")
geo.write("// to run GMSH and keep file in GMSH GUI (with log), run in bash:\n")
geo.write("// to run Gmsh and keep file in Gmsh GUI (with log), run in bash:\n")
geo.write("// " + self.gmsh_bin + " " + self.temp_file_geo + "\n")
geo.close

View File

@@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
<string>GMSH</string>
<string>Gmsh</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
@@ -28,7 +28,7 @@
<enum>Qt::LeftToRight</enum>
</property>
<property name="title">
<string>GMSH</string>
<string>Gmsh</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
@@ -58,7 +58,7 @@
<item row="0" column="0">
<widget class="QLabel" name="l_gmsh_binary_std">
<property name="text">
<string>GMSH binary</string>
<string>Gmsh binary</string>
</property>
</widget>
</item>

View File

@@ -235,8 +235,8 @@ def makeMeshBoundaryLayer(doc, base_mesh, name="MeshBoundaryLayer"):
return obj
def makeMeshGmsh(doc, name="FEMMeshGMSH"):
'''makeMeshGmsh(document, [name]): makes a GMSH FEM mesh object'''
def makeMeshGmsh(doc, name="FEMMeshGmsh"):
'''makeMeshGmsh(document, [name]): makes a Gmsh FEM mesh object'''
obj = doc.addObject("Fem::FemMeshObjectPython", name)
import PyObjects._FemMeshGmsh
PyObjects._FemMeshGmsh._FemMeshGmsh(obj)

View File

@@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
<string>FEM Mesh by GMSH </string>
<string>FEM Mesh by Gmsh</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
@@ -143,7 +143,7 @@
</size>
</property>
<property name="title">
<string>GMSH</string>
<string>Gmsh</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_8">
<item>

View File

@@ -40,7 +40,7 @@ class _CommandFemAnalysis(FemCommands):
self.resources = {'Pixmap': 'fem-analysis',
'MenuText': QtCore.QT_TRANSLATE_NOOP("FEM_Analysis", "Analysis container"),
'Accel': "N, A",
'ToolTip': QtCore.QT_TRANSLATE_NOOP("FEM_Analysis", "Creates a analysis container with standard solver CalculiX")}
'ToolTip': QtCore.QT_TRANSLATE_NOOP("FEM_Analysis", "Creates an analysis container with standard solver CalculiX")}
self.is_active = 'with_document'
def Activated(self):

View File

@@ -20,7 +20,7 @@
# * *
# ***************************************************************************
__title__ = "Command GMSH Mesh From Shape"
__title__ = "Command Gmsh Mesh From Shape"
__author__ = "Bernd Hahnebach"
__url__ = "http://www.freecadweb.org"
@@ -39,17 +39,17 @@ class _CommandFemMeshGmshFromShape(FemCommands):
def __init__(self):
super(_CommandFemMeshGmshFromShape, self).__init__()
self.resources = {'Pixmap': 'fem-femmesh-gmsh-from-shape',
'MenuText': QtCore.QT_TRANSLATE_NOOP("FEM_MeshGmshFromShape", "FEM mesh from shape by GMSH"),
'ToolTip': QtCore.QT_TRANSLATE_NOOP("FEM_MeshGmshFromShape", "Create a FEM mesh from a shape by GMSH mesher")}
'MenuText': QtCore.QT_TRANSLATE_NOOP("FEM_MeshGmshFromShape", "FEM mesh from shape by Gmsh"),
'ToolTip': QtCore.QT_TRANSLATE_NOOP("FEM_MeshGmshFromShape", "Create a FEM mesh from a shape by Gmsh mesher")}
self.is_active = 'with_part_feature'
def Activated(self):
FreeCAD.ActiveDocument.openTransaction("Create FEM mesh by GMSH")
FreeCAD.ActiveDocument.openTransaction("Create FEM mesh by Gmsh")
FreeCADGui.addModule("FemGui")
sel = FreeCADGui.Selection.getSelection()
if (len(sel) == 1):
if(sel[0].isDerivedFrom("Part::Feature")):
mesh_obj_name = 'FEMMeshGMSH'
mesh_obj_name = 'FEMMeshGmsh'
# mesh_obj_name = sel[0].Name + "_Mesh" # if requested by some people add Preference for this
FreeCADGui.addModule("ObjectsFem")
FreeCADGui.doCommand("ObjectsFem.makeMeshGmsh(FreeCAD.ActiveDocument, '" + mesh_obj_name + "')")

View File

@@ -129,7 +129,7 @@ class _TaskPanelFemMeshGmsh:
if self.mesh_obj.MeshRegionList:
if part.Shape.ShapeType == "Compound" and hasattr(part, "Proxy"): # other part obj might not have a Proxy, thus an exception would be raised
if (part.Proxy.Type == "FeatureBooleanFragments" or part.Proxy.Type == "FeatureSlice" or part.Proxy.Type == "FeatureXOR"):
error_message = "The mesh to shape is a boolean split tools Compound and the mesh has mesh region list. GMSH could return unexpected meshes in such circumstances. It is strongly recommended to extract the shape to mesh from the Compound and use this one."
error_message = "The mesh to shape is a boolean split tools Compound and the mesh has mesh region list. Gmsh could return unexpected meshes in such circumstances. It is strongly recommended to extract the shape to mesh from the Compound and use this one."
QtGui.QMessageBox.critical(None, "Shape to mesh is a BooleanFragmentsCompound and mesh regions are defined", error_message)
self.Start = time.time()
self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
@@ -139,7 +139,7 @@ class _TaskPanelFemMeshGmsh:
self.get_active_analysis()
import FemGmshTools
gmsh_mesh = FemGmshTools.FemGmshTools(self.obj, self.analysis)
self.console_log("Start GMSH ...")
self.console_log("Start Gmsh ...")
error = ''
try:
error = gmsh_mesh.create_mesh()
@@ -148,11 +148,11 @@ class _TaskPanelFemMeshGmsh:
print("Unexpected error when creating mesh: ", sys.exc_info()[0])
if error:
print(error)
self.console_log('GMSH had warnings ...')
self.console_log('Gmsh had warnings ...')
self.console_log(error, '#FF0000')
else:
self.console_log('Clean run of GMSH')
self.console_log("GMSH done!")
self.console_log('Clean run of Gmsh')
self.console_log("Gmsh done!")
self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
self.Timer.stop()
self.update()

View File

@@ -83,9 +83,9 @@ class _ViewProviderFemMeshGmsh:
if not gui_doc.getInEdit():
gui_doc.setEdit(vobj.Object.Name)
else:
FreeCAD.Console.PrintError('Activate the analysis this GMSH FEM mesh object belongs too!\n')
FreeCAD.Console.PrintError('Activate the analysis this Gmsh FEM mesh object belongs too!\n')
else:
print('GMSH FEM mesh object does not belong to the active analysis.')
print('Gmsh FEM mesh object does not belong to the active analysis.')
found_mesh_analysis = False
for o in gui_doc.Document.Objects:
if o.isDerivedFrom('Fem::FemAnalysisPython'):
@@ -93,16 +93,16 @@ class _ViewProviderFemMeshGmsh:
if m == self.Object:
found_mesh_analysis = True
FemGui.setActiveAnalysis(o)
print('The analysis the GMSH FEM mesh object belongs too was found and activated: ' + o.Name)
print('The analysis the Gmsh FEM mesh object belongs too was found and activated: ' + o.Name)
gui_doc.setEdit(vobj.Object.Name)
break
if not found_mesh_analysis:
print('GMSH FEM mesh object does not belong to an analysis. Analysis group meshing will be deactivated.')
print('Gmsh FEM mesh object does not belong to an analysis. Analysis group meshing will be deactivated.')
gui_doc.setEdit(vobj.Object.Name)
else:
FreeCAD.Console.PrintError('Active analysis is not in active document.')
else:
print('No active analysis in active document, we are going to have a look if the GMSH FEM mesh object belongs to a non active analysis.')
print('No active analysis in active document, we are going to have a look if the Gmsh FEM mesh object belongs to a non active analysis.')
found_mesh_analysis = False
for o in gui_doc.Document.Objects:
if o.isDerivedFrom('Fem::FemAnalysisPython'):
@@ -110,11 +110,11 @@ class _ViewProviderFemMeshGmsh:
if m == self.Object:
found_mesh_analysis = True
FemGui.setActiveAnalysis(o)
print('The analysis the GMSH FEM mesh object belongs to was found and activated: ' + o.Name)
print('The analysis the Gmsh FEM mesh object belongs to was found and activated: ' + o.Name)
gui_doc.setEdit(vobj.Object.Name)
break
if not found_mesh_analysis:
print('GMSH FEM mesh object does not belong to an analysis. Analysis group meshing will be deactivated.')
print('Gmsh FEM mesh object does not belong to an analysis. Analysis group meshing will be deactivated.')
gui_doc.setEdit(vobj.Object.Name)
else:
print('No analysis in the active document.')

View File

@@ -29,7 +29,7 @@ __url__ = "http://www.freecadweb.org"
class _FemMeshGmsh():
"""A Fem::FemMeshObject python type, add GMSH specific properties
"""A Fem::FemMeshObject python type, add Gmsh specific properties
"""
# they will be used from the task panel too, thus they need to be outside of the __init__
@@ -55,43 +55,43 @@ class _FemMeshGmsh():
obj.addProperty("App::PropertyLink", "Part", "FEM Mesh", "Part object to mesh")
obj.Part = None
obj.addProperty("App::PropertyLength", "CharacteristicLengthMax", "FEM GMSH Mesh Params", "Max mesh element size (0.0 = infinity)")
obj.addProperty("App::PropertyLength", "CharacteristicLengthMax", "FEM Gmsh Mesh Params", "Max mesh element size (0.0 = infinity)")
obj.CharacteristicLengthMax = 0.0 # will be 1e+22
obj.addProperty("App::PropertyLength", "CharacteristicLengthMin", "FEM GMSH Mesh Params", "Min mesh element size")
obj.addProperty("App::PropertyLength", "CharacteristicLengthMin", "FEM Gmsh Mesh Params", "Min mesh element size")
obj.CharacteristicLengthMin = 0.0
obj.addProperty("App::PropertyEnumeration", "ElementDimension", "FEM GMSH Mesh Params", "Dimension of mesh elements (Auto = according ShapeType of part to mesh)")
obj.addProperty("App::PropertyEnumeration", "ElementDimension", "FEM Gmsh Mesh Params", "Dimension of mesh elements (Auto = according ShapeType of part to mesh)")
obj.ElementDimension = _FemMeshGmsh.known_element_dimensions
obj.ElementDimension = 'From Shape' # according ShapeType of Part to mesh
obj.addProperty("App::PropertyEnumeration", "ElementOrder", "FEM GMSH Mesh Params", "Order of mesh elements")
obj.addProperty("App::PropertyEnumeration", "ElementOrder", "FEM Gmsh Mesh Params", "Order of mesh elements")
obj.ElementOrder = _FemMeshGmsh.known_element_orders
obj.ElementOrder = '2nd'
obj.addProperty("App::PropertyBool", "OptimizeStd", "FEM GMSH Mesh Params", "Optimize tetra elements")
obj.addProperty("App::PropertyBool", "OptimizeStd", "FEM Gmsh Mesh Params", "Optimize tetra elements")
obj.OptimizeStd = True
obj.addProperty("App::PropertyBool", "OptimizeNetgen", "FEM GMSH Mesh Params", "Optimize tetra elements by use of Netgen")
obj.addProperty("App::PropertyBool", "OptimizeNetgen", "FEM Gmsh Mesh Params", "Optimize tetra elements by use of Netgen")
obj.OptimizeNetgen = False
obj.addProperty("App::PropertyBool", "HighOrderOptimize", "FEM GMSH Mesh Params", "Optimize hight order meshes")
obj.addProperty("App::PropertyBool", "HighOrderOptimize", "FEM Gmsh Mesh Params", "Optimize hight order meshes")
obj.HighOrderOptimize = False
obj.addProperty("App::PropertyBool", "RecombineAll", "FEM GMSH Mesh Params", "Apply recombination algorithm to all surfaces")
obj.addProperty("App::PropertyBool", "RecombineAll", "FEM Gmsh Mesh Params", "Apply recombination algorithm to all surfaces")
obj.RecombineAll = False
obj.addProperty("App::PropertyBool", "CoherenceMesh", "FEM GMSH Mesh Params", "Removes all duplicate mesh vertices")
obj.addProperty("App::PropertyBool", "CoherenceMesh", "FEM Gmsh Mesh Params", "Removes all duplicate mesh vertices")
obj.CoherenceMesh = True
obj.addProperty("App::PropertyFloat", "GeometryTolerance", "FEM GMSH Mesh Params", "Geometrical Tolerance (0.0 = GMSH std = 1e-08)")
obj.addProperty("App::PropertyFloat", "GeometryTolerance", "FEM Gmsh Mesh Params", "Geometrical Tolerance (0.0 = GMSH std = 1e-08)")
obj.GeometryTolerance = 1e-06
obj.addProperty("App::PropertyEnumeration", "Algorithm2D", "FEM GMSH Mesh Params", "mesh algorithm 2D")
obj.addProperty("App::PropertyEnumeration", "Algorithm2D", "FEM Gmsh Mesh Params", "mesh algorithm 2D")
obj.Algorithm2D = _FemMeshGmsh.known_mesh_algorithm_2D
obj.Algorithm2D = 'Automatic' # ?
obj.addProperty("App::PropertyEnumeration", "Algorithm3D", "FEM GMSH Mesh Params", "mesh algorithm 3D")
obj.addProperty("App::PropertyEnumeration", "Algorithm3D", "FEM Gmsh Mesh Params", "mesh algorithm 3D")
obj.Algorithm3D = _FemMeshGmsh.known_mesh_algorithm_3D
obj.Algorithm3D = 'Automatic' # ?