FEM: replace prints with console prints

This commit is contained in:
Bernd Hahnebach
2019-09-13 08:25:41 +02:00
parent 4e1b9d0b4e
commit 98c98ff833
13 changed files with 44 additions and 39 deletions

View File

@@ -546,8 +546,8 @@ class _MaterialMechanicalNonlinear(CommandManager):
solver_object.Proxy.Type == "Fem::FemSolverCalculixCcxTools"
or solver_object.Proxy.Type == "Fem::FemSolverObjectCalculix"
):
print(
"Set MaterialNonlinearity and GeometricalNonlinearity to nonlinear for {}"
FreeCAD.Console.PrintMessage(
"Set MaterialNonlinearity and GeometricalNonlinearity to nonlinear for {}\n"
.format(solver_object.Label)
)
solver_object.MaterialNonlinearity = "nonlinear"

View File

@@ -98,10 +98,10 @@ def setup_cantileverbase(doc=None, solver="ccxtools"):
fem_mesh = Fem.FemMesh()
control = create_nodes(fem_mesh)
if not control:
print("ERROR on creating nodes")
FreeCAD.Console.PrintError("Error on creating nodes.\n")
control = create_elements(fem_mesh)
if not control:
print("ERROR on creating elements")
FreeCAD.Console.PrintError("Error on creating elements.\n")
femmesh_obj = analysis.addObject(
doc.addObject("Fem::FemMeshObject", mesh_name)
)[0]

View File

@@ -143,10 +143,10 @@ def setup_rcwall2d(doc=None, solver="ccxtools"):
fem_mesh = Fem.FemMesh()
control = create_nodes(fem_mesh)
if not control:
print("ERROR on creating nodes")
FreeCAD.Console.PrintError("Error on creating nodes.\n")
control = create_elements(fem_mesh)
if not control:
print("ERROR on creating elements")
FreeCAD.Console.PrintError("Error on creating elements.\n")
femmesh_obj = analysis.addObject(
doc.addObject("Fem::FemMeshObject", mesh_name)
)[0]

View File

@@ -204,14 +204,16 @@ def read_frd_result(
inout_nodes = []
inout_nodes_file = frd_input.rsplit('.', 1)[0] + '_inout_nodes.txt'
if os.path.exists(inout_nodes_file):
print('Read special 1DFlow nodes data form: ' + inout_nodes_file)
FreeCAD.Console.PrintMessage(
"Read special 1DFlow nodes data form: {}\n".format(inout_nodes_file)
)
f = pyopen(inout_nodes_file, "r")
lines = f.readlines()
for line in lines:
a = line.split(',')
inout_nodes.append(a)
f.close()
print(inout_nodes)
FreeCAD.Console.PrintMessage("{}\n".format(inout_nodes))
frd_file = pyopen(frd_input, "r")
nodes = {}
elements_hexa8 = {}

View File

@@ -69,7 +69,9 @@ def get_FemMeshObjectOrder(
else:
presumable_order = [el - 1 for el in edges_length_set]
else:
print("Found no edges in mesh: Element order determination does not work without them.")
FreeCAD.Console.PrintMessage(
"Found no edges in mesh: Element order determination does not work without them.\n"
)
return presumable_order

View File

@@ -460,7 +460,7 @@ def write_z88_mesh_to_file(
):
node_dof = 6 # schalenelemente
else:
print("Error: wrong z88_element_type")
FreeCAD.Console.PrintError("Error: wrong z88_element_type.\n")
return
node_count = len(femnodes_mesh)
element_count = len(femelement_table)
@@ -558,9 +558,9 @@ def get_z88_element_type(
):
import femmesh.meshtools as FemMeshTools
if not femmesh:
print("Error: No femmesh!")
FreeCAD.Console.PrintMessage("Error: No femmesh!\n")
if not femelement_table:
print("We need to get the femelement_table first!")
FreeCAD.Console.PrintMessage("We need to get the femelement_table first!\n")
femelement_table = FemMeshTools.get_femelement_table(femmesh)
# in some cases lowest key in femelement_table is not [1]
for elem in sorted(femelement_table):
@@ -574,43 +574,43 @@ def get_z88_element_type(
elif elem_length == 10:
return 16
else:
print('Tetra with neither 4 nor 10 nodes')
FreeCAD.Console.PrintMessage('Tetra with neither 4 nor 10 nodes.\n')
elif femmesh.HexaCount == femmesh.VolumeCount:
if elem_length == 8:
return 1
elif elem_length == 20:
return 10
else:
print('Hexa with neither 8 nor 20 nodes')
FreeCAD.Console.PrintMessage('Hexa with neither 8 nor 20 nodes.\n')
return 0
else:
print('no tetra, no hexa or Mixed Volume Elements')
FreeCAD.Console.PrintMessage('no tetra, no hexa or Mixed Volume Elements.\n')
elif FemMeshTools.is_face_femmesh(femmesh):
if femmesh.TriangleCount == femmesh.FaceCount:
if elem_length == 3:
print('tria3mesh, not supported by z88')
FreeCAD.Console.PrintMessage('tria3mesh, not supported by Z88.\n')
return 0
elif elem_length == 6:
return 24
else:
print('Tria with neither 3 nor 6 nodes')
FreeCAD.Console.PrintMessage('Tria with neither 3 nor 6 nodes.\n')
return 0
elif femmesh.QuadrangleCount == femmesh.FaceCount:
if elem_length == 4:
print('quad4mesh, not supported by z88')
FreeCAD.Console.PrintMessage('quad4mesh, not supported by Z88.\n')
return 0
elif elem_length == 8:
return 23
else:
print('Quad with neither 4 nor 8 nodes')
FreeCAD.Console.PrintMessage('Quad with neither 4 nor 8 nodes.\n')
return 0
else:
print('no tria, no quad')
FreeCAD.Console.PrintMessage('no tria, no quad\n')
return 0
elif FemMeshTools.is_edge_femmesh(femmesh):
print('Edge femmesh will be exported as 3D truss element nr 4')
FreeCAD.Console.PrintMessage('Edge femmesh will be exported as 3D truss element nr 4.\n')
return 4
else:
print('Neither edge nor face nor solid femmesh')
FreeCAD.Console.PrintMessage('Neither edge nor face nor solid femmesh.\n')
return 0
return 0

View File

@@ -32,9 +32,6 @@ import FreeCAD
import os
Debug = False
# ********* generic FreeCAD import and export methods *********
if open.__module__ == '__builtin__':
# because we'll redefine open below (Python2)
@@ -162,9 +159,8 @@ def read_z88_disp(
mode_results['disp'] = mode_disp
results.append(mode_results)
if Debug:
for r in results[0]['disp']:
print(r, ' --> ', results[0]['disp'][r])
for r in results[0]['disp']:
FreeCAD.Console.PrintLog("{} --> {}\n".format(r, results[0]['disp'][r]))
z88_disp_file.close()
return {'Nodes': nodes, 'Results': results}

View File

@@ -28,6 +28,8 @@ __url__ = "http://www.freecadweb.org"
# \ingroup FEM
import time
import FreeCAD
# import Mesh
@@ -154,13 +156,13 @@ def femmesh_2_mesh(myFemMesh, myResults=None):
singleFaces.append(faceCodeList[actFaceIdx])
actFaceIdx += 1
else:
print("found a last Face: ", faceCodeList[actFaceIdx])
FreeCAD.Console.PrintMessage("Found a last Face: {}\n".format(faceCodeList[actFaceIdx]))
singleFaces.append(faceCodeList[actFaceIdx])
actFaceIdx += 1
output_mesh = []
if myResults:
print(myResults.Name)
FreeCAD.Console.PrintMessage("{}\n".format(myResults.Name))
for myFace in singleFaces:
face_nodes = faceCodeDict[myFace]
dispVec0 = myResults.DisplacementVectors[myResults.NodeNumbers.index(face_nodes[0])]
@@ -195,5 +197,7 @@ def femmesh_2_mesh(myFemMesh, myResults=None):
# print("my 2. triangle: ", triangle)
end_time = time.clock()
print("Mesh by surface search method: ", end_time - start_time)
FreeCAD.Console.PrintMessage(
"Mesh by surface search method: {}\n".format(end_time - start_time)
)
return output_mesh

View File

@@ -108,7 +108,7 @@ def show_result(resultobj, result_type="Sabs", limit=None):
values = list(d[match[result_type]])
show_color_by_scalar_with_cutoff(resultobj, values, limit)
else:
print("Error, No result object given.")
FreeCAD.Console.PrintError("Error, No result object given.\n")
## Sets mesh color using list of values. Internally used by show_result function.
@@ -359,7 +359,7 @@ def get_concrete_nodes(res_obj):
for obj in res_obj.getParentGroup().Group:
if obj.isDerivedFrom("App::MaterialObjectPython") \
and femutils.is_of_type(obj, "Fem::MaterialReinforced"):
print("ReinforcedMaterial")
FreeCAD.Console.PrintMessage("ReinforcedMaterial\n")
if obj.References == []:
for iic in range(nsr):
if ic[iic] == 0:
@@ -371,7 +371,7 @@ def get_concrete_nodes(res_obj):
ic[cn - 1] = 1
elif obj.isDerivedFrom("App::MaterialObjectPython") \
and femutils.is_of_type(obj, "Fem::Material"):
print("NOT ReinforcedMaterial")
FreeCAD.Console.PrintMessage("No ReinforcedMaterial\n")
if obj.References == []:
for iic in range(nsr):
if ic[iic] == 0:

View File

@@ -298,7 +298,7 @@ class Proxy(solverbase.Proxy):
def edit(self, directory):
pattern = os.path.join(directory, "*.inp")
print(pattern)
FreeCAD.Console.PrintMessage("{}\n".format(pattern))
f = glob.glob(pattern)[0]
FemGui.open(f)

View File

@@ -31,6 +31,7 @@ import os.path
import subprocess
import tempfile
import FreeCAD
from FreeCAD import Units
import Fem
import femtools.femutils as femutils
@@ -124,7 +125,7 @@ class Writer(object):
groups.extend(self._builder.getBoundaryNames())
self._exportToUnv(groups, mesh, unvPath)
if self.testmode:
print("We are in testmode ElmerGrid may not be installed!")
FreeCAD.Console.PrintMessage("We are in testmode ElmerGrid may not be installed.\n")
else:
binary = settings.get_binary("ElmerGrid")
if binary is None:
@@ -164,7 +165,7 @@ class Writer(object):
tools.write_part_file()
tools.write_geo()
if self.testmode:
print("We are in testmode, GMSH may not be installed!")
FreeCAD.Console.PrintMessage("We are in testmode, Gmsh may not be installed.\n")
import shutil
shutil.copyfile(geoPath, os.path.join(self.directory, "group_mesh.geo"))
else:

View File

@@ -139,7 +139,7 @@ class FemInputWriter():
# because solid nodes do not have rotational degree of freedom
if self.femmesh.Volumes \
and (len(self.shellthickness_objects) > 0 or len(self.beamsection_objects) > 0):
print("We need to find the solid nodes.")
FreeCAD.Console.PrintMessage("We need to find the solid nodes.\n")
if not self.femelement_volumes_table:
self.femelement_volumes_table = meshtools.get_femelement_volumes_table(
self.femmesh

View File

@@ -78,7 +78,7 @@ class Proxy(solverbase.Proxy):
def edit(self, directory):
pattern = os.path.join(directory, "*.txt")
print(pattern)
FreeCAD.Console.PrintMessage("{}\n".format(pattern))
f = glob.glob(pattern)[0]
FemGui.open(f)