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()
{
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(DisplacementVectors,(), "Fem",Prop_None,"List of displacement vectors");
ADD_PROPERTY_TYPE(DisplacementLengths,(0), "Fem",Prop_None,"List of displacement lengths");

View File

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

View File

@ -134,10 +134,10 @@ class FemTools(QtCore.QRunnable, QtCore.QObject):
filtered_values.append(v)
else:
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):
self.mesh.ViewObject.setNodeDisplacementByVectors(self.result_object.ElementNumbers,
self.mesh.ViewObject.setNodeDisplacementByVectors(self.result_object.NodeNumbers,
self.result_object.DisplacementVectors)
self.mesh.ViewObject.applyDisplacement(displacement_factor)

View File

@ -136,7 +136,7 @@ class _ResultControlTaskPanel:
FreeCAD.FEM_dialog["results_type"] = "Sabs"
QApplication.setOverrideCursor(Qt.WaitCursor)
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")
self.set_result_stats("MPa", minm, avg, maxm)
QtGui.qApp.restoreOverrideCursor()
@ -145,13 +145,13 @@ class _ResultControlTaskPanel:
QApplication.setOverrideCursor(Qt.WaitCursor)
if disp_type == "Uabs":
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:
match = {"U1": 0, "U2": 1, "U3": 2}
d = zip(*self.result_object.DisplacementVectors)
displacements = list(d[match[disp_type]])
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)
self.set_result_stats("mm", minm, avg, maxm)
QtGui.qApp.restoreOverrideCursor()
@ -180,7 +180,7 @@ class _ResultControlTaskPanel:
self.update_displacement()
FreeCAD.FEM_dialog["result_object"] = self.result_object
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()
QtGui.qApp.restoreOverrideCursor()
@ -207,7 +207,7 @@ class _ResultControlTaskPanel:
self.suitable_results = False
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
else:
if not self.MeshObject.FemMesh.VolumeCount:

View File

@ -214,7 +214,7 @@ def importFrd(filename, Analysis=None):
if len(disp) > 0:
results.DisplacementVectors = map((lambda x: x * scale), disp.values())
results.ElementNumbers = disp.keys()
results.NodeNumbers = disp.keys()
if(MeshObject):
results.Mesh = MeshObject
@ -231,10 +231,10 @@ def importFrd(filename, Analysis=None):
else:
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 {} != {}"
.format(results.ElementNumbers, len(results.StressValues)))
results.ElementNumbers = stress.keys()
.format(results.NodeNumbers, len(results.StressValues)))
results.NodeNumbers = stress.keys()
x_min, y_min, z_min = map(min, zip(*displacement))
sum_list = map(sum, zip(*displacement))