FEM: Replace invalid ElementNumbers with NodeNumbers

Signed-off-by: Przemo Firszt <przemo@firszt.eu>
This commit is contained in:
Przemo Firszt 2015-11-02 16:18:55 +00:00
parent a85c68aa65
commit d025f1e109
5 changed files with 13 additions and 13 deletions

View File

@ -37,7 +37,7 @@ PROPERTY_SOURCE(Fem::FemResultObject, App::DocumentObject)
FemResultObject::FemResultObject() FemResultObject::FemResultObject()
{ {
ADD_PROPERTY_TYPE(ElementNumbers,(0), "Data",Prop_None,"Numbers of the result elements"); ADD_PROPERTY_TYPE(NodeNumbers,(0), "Data",Prop_None,"Numbers of the result nodes");
ADD_PROPERTY_TYPE(Stats,(0), "Fem",Prop_None,"Statistics of the results"); ADD_PROPERTY_TYPE(Stats,(0), "Fem",Prop_None,"Statistics of the results");
ADD_PROPERTY_TYPE(DisplacementVectors,(), "Fem",Prop_None,"List of displacement vectors"); ADD_PROPERTY_TYPE(DisplacementVectors,(), "Fem",Prop_None,"List of displacement vectors");
ADD_PROPERTY_TYPE(DisplacementLengths,(0), "Fem",Prop_None,"List of displacement lengths"); ADD_PROPERTY_TYPE(DisplacementLengths,(0), "Fem",Prop_None,"List of displacement lengths");

View File

@ -42,7 +42,7 @@ public:
FemResultObject(void); FemResultObject(void);
virtual ~FemResultObject(); virtual ~FemResultObject();
App::PropertyIntegerList ElementNumbers; App::PropertyIntegerList NodeNumbers;
/// Link to the corresponding mesh /// Link to the corresponding mesh
App::PropertyLink Mesh; App::PropertyLink Mesh;
/// Stats of analysis /// Stats of analysis

View File

@ -134,10 +134,10 @@ class FemTools(QtCore.QRunnable, QtCore.QObject):
filtered_values.append(v) filtered_values.append(v)
else: else:
filtered_values = values filtered_values = values
self.mesh.ViewObject.setNodeColorByScalars(self.result_object.ElementNumbers, filtered_values) self.mesh.ViewObject.setNodeColorByScalars(self.result_object.NodeNumbers, filtered_values)
def show_displacement(self, displacement_factor=0.0): def show_displacement(self, displacement_factor=0.0):
self.mesh.ViewObject.setNodeDisplacementByVectors(self.result_object.ElementNumbers, self.mesh.ViewObject.setNodeDisplacementByVectors(self.result_object.NodeNumbers,
self.result_object.DisplacementVectors) self.result_object.DisplacementVectors)
self.mesh.ViewObject.applyDisplacement(displacement_factor) self.mesh.ViewObject.applyDisplacement(displacement_factor)

View File

@ -136,7 +136,7 @@ class _ResultControlTaskPanel:
FreeCAD.FEM_dialog["results_type"] = "Sabs" FreeCAD.FEM_dialog["results_type"] = "Sabs"
QApplication.setOverrideCursor(Qt.WaitCursor) QApplication.setOverrideCursor(Qt.WaitCursor)
if self.suitable_results: if self.suitable_results:
self.MeshObject.ViewObject.setNodeColorByScalars(self.result_object.ElementNumbers, self.result_object.StressValues) self.MeshObject.ViewObject.setNodeColorByScalars(self.result_object.NodeNumbers, self.result_object.StressValues)
(minm, avg, maxm) = self.get_result_stats("Sabs") (minm, avg, maxm) = self.get_result_stats("Sabs")
self.set_result_stats("MPa", minm, avg, maxm) self.set_result_stats("MPa", minm, avg, maxm)
QtGui.qApp.restoreOverrideCursor() QtGui.qApp.restoreOverrideCursor()
@ -145,13 +145,13 @@ class _ResultControlTaskPanel:
QApplication.setOverrideCursor(Qt.WaitCursor) QApplication.setOverrideCursor(Qt.WaitCursor)
if disp_type == "Uabs": if disp_type == "Uabs":
if self.suitable_results: if self.suitable_results:
self.MeshObject.ViewObject.setNodeColorByScalars(self.result_object.ElementNumbers, self.result_object.DisplacementLengths) self.MeshObject.ViewObject.setNodeColorByScalars(self.result_object.NodeNumbers, self.result_object.DisplacementLengths)
else: else:
match = {"U1": 0, "U2": 1, "U3": 2} match = {"U1": 0, "U2": 1, "U3": 2}
d = zip(*self.result_object.DisplacementVectors) d = zip(*self.result_object.DisplacementVectors)
displacements = list(d[match[disp_type]]) displacements = list(d[match[disp_type]])
if self.suitable_results: if self.suitable_results:
self.MeshObject.ViewObject.setNodeColorByScalars(self.result_object.ElementNumbers, displacements) self.MeshObject.ViewObject.setNodeColorByScalars(self.result_object.NodeNumbers, displacements)
(minm, avg, maxm) = self.get_result_stats(disp_type) (minm, avg, maxm) = self.get_result_stats(disp_type)
self.set_result_stats("mm", minm, avg, maxm) self.set_result_stats("mm", minm, avg, maxm)
QtGui.qApp.restoreOverrideCursor() QtGui.qApp.restoreOverrideCursor()
@ -180,7 +180,7 @@ class _ResultControlTaskPanel:
self.update_displacement() self.update_displacement()
FreeCAD.FEM_dialog["result_object"] = self.result_object FreeCAD.FEM_dialog["result_object"] = self.result_object
if self.suitable_results: if self.suitable_results:
self.MeshObject.ViewObject.setNodeDisplacementByVectors(self.result_object.ElementNumbers, self.result_object.DisplacementVectors) self.MeshObject.ViewObject.setNodeDisplacementByVectors(self.result_object.NodeNumbers, self.result_object.DisplacementVectors)
self.update_displacement() self.update_displacement()
QtGui.qApp.restoreOverrideCursor() QtGui.qApp.restoreOverrideCursor()
@ -207,7 +207,7 @@ class _ResultControlTaskPanel:
self.suitable_results = False self.suitable_results = False
if self.result_object: if self.result_object:
if self.MeshObject.FemMesh.NodeCount == len(self.result_object.ElementNumbers): if self.MeshObject.FemMesh.NodeCount == len(self.result_object.NodeNumbers):
self.suitable_results = True self.suitable_results = True
else: else:
if not self.MeshObject.FemMesh.VolumeCount: if not self.MeshObject.FemMesh.VolumeCount:

View File

@ -214,7 +214,7 @@ def importFrd(filename, Analysis=None):
if len(disp) > 0: if len(disp) > 0:
results.DisplacementVectors = map((lambda x: x * scale), disp.values()) results.DisplacementVectors = map((lambda x: x * scale), disp.values())
results.ElementNumbers = disp.keys() results.NodeNumbers = disp.keys()
if(MeshObject): if(MeshObject):
results.Mesh = MeshObject results.Mesh = MeshObject
@ -231,10 +231,10 @@ def importFrd(filename, Analysis=None):
else: else:
results.StressValues = mstress results.StressValues = mstress
if (results.ElementNumbers != 0 and results.ElementNumbers != stress.keys()): if (results.NodeNumbers != 0 and results.NodeNumbers != stress.keys()):
print ("Inconsistent FEM results: element number for Stress doesn't equal element number for Displacement {} != {}" print ("Inconsistent FEM results: element number for Stress doesn't equal element number for Displacement {} != {}"
.format(results.ElementNumbers, len(results.StressValues))) .format(results.NodeNumbers, len(results.StressValues)))
results.ElementNumbers = stress.keys() results.NodeNumbers = stress.keys()
x_min, y_min, z_min = map(min, zip(*displacement)) x_min, y_min, z_min = map(min, zip(*displacement))
sum_list = map(sum, zip(*displacement)) sum_list = map(sum, zip(*displacement))