FEM: result task panel, add peeq strain results and add peeq to result stats, by sodelo

This commit is contained in:
Bernd Hahnebach 2017-02-28 11:50:40 +01:00 committed by wmayer
parent 1cfd041edb
commit a8ded939ff
4 changed files with 431 additions and 419 deletions

View File

@ -7,405 +7,408 @@
<x>0</x>
<y>0</y>
<width>446</width>
<height>898</height>
<height>696</height>
</rect>
</property>
<property name="windowTitle">
<string>Show result</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QGroupBox" name="gb_result_type">
<property name="title">
<string>Result type</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QRadioButton" name="rb_none">
<property name="text">
<string>None</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QGroupBox" name="gb_result_type">
<property name="title">
<string>Result type</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<widget class="QRadioButton" name="rb_abs_displacement">
<property name="text">
<string>Abs displacement</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QRadioButton" name="rb_none">
<property name="text">
<string>None</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QRadioButton" name="rb_y_displacement">
<property name="text">
<string>Y displacement</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QRadioButton" name="rb_x_displacement">
<property name="text">
<string>X displacement</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QRadioButton" name="rb_peeq">
<property name="text">
<string>Peeq</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QRadioButton" name="rb_z_displacement">
<property name="text">
<string>Z displacement</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QRadioButton" name="rb_temperature">
<property name="text">
<string>Temperature</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QRadioButton" name="rb_vm_stress">
<property name="text">
<string>Von Mises stress</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QRadioButton" name="rb_maxprin">
<property name="text">
<string>Max Principal stress</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QRadioButton" name="rb_minprin">
<property name="text">
<string>Min Principal stress</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QRadioButton" name="rb_max_shear_stress">
<property name="text">
<string>Max shear stress(Tresca)</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QRadioButton" name="rb_massflowrate">
<property name="text">
<string>Mass Flow Rate</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QRadioButton" name="rb_networkpressure">
<property name="text">
<string>Network Pressure</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="1">
<widget class="QRadioButton" name="rb_temperature">
<property name="text">
<string>Temperature</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QRadioButton" name="rb_abs_displacement">
<property name="text">
<string>Abs displacement</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QRadioButton" name="rb_vm_stress">
<property name="text">
<string>Von Mises stress</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QRadioButton" name="rb_x_displacement">
<property name="text">
<string>X displacement</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QRadioButton" name="rb_maxprin">
<property name="text">
<string>Max Principal stress</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QRadioButton" name="rb_y_displacement">
<property name="text">
<string>Y displacement</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QRadioButton" name="rb_minprin">
<property name="text">
<string>Min Principal stress</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QRadioButton" name="rb_z_displacement">
<property name="text">
<string>Z displacement</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QRadioButton" name="rb_max_shear_stress">
<property name="text">
<string>Max shear stress(Tresca)</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QRadioButton" name="rb_massflowrate">
<property name="text">
<string>Mass Flow Rate</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QRadioButton" name="rb_networkpressure">
<property name="text">
<string>Network Pressure</string>
</property>
</widget>
<item>
<layout class="QFormLayout" name="formLayout">
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Avg:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="Gui::InputField" name="le_avg">
<property name="readOnly">
<bool>true</bool>
</property>
<property name="unit" stdset="0">
<string notr="true">mm</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Max:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="Gui::InputField" name="le_max">
<property name="readOnly">
<bool>true</bool>
</property>
<property name="unit" stdset="0">
<string notr="true">mm</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="Gui::InputField" name="le_min">
<property name="readOnly">
<bool>true</bool>
</property>
<property name="unit" stdset="0">
<string notr="true">mm</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Min:</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_displacement">
<property name="title">
<string>Displacement</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>Min:</string>
</property>
</widget>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QCheckBox" name="cb_show_displacement">
<property name="text">
<string>Show</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QScrollBar" name="hsb_displacement_factor">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="Gui::InputField" name="le_min">
<property name="readOnly">
<bool>true</bool>
</property>
<property name="unit" stdset="0">
<string notr="true">mm</string>
</property>
</widget>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label_3">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Factor:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="sb_displacement_factor">
<property name="enabled">
<bool>false</bool>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
<property name="maximum">
<number>99999</number>
</property>
<property name="singleStep">
<number>10</number>
</property>
<property name="value">
<number>1</number>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label_7">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Slider max:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="sb_displacement_factor_max">
<property name="enabled">
<bool>false</bool>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
<property name="maximum">
<number>99999</number>
</property>
<property name="singleStep">
<number>10</number>
</property>
<property name="value">
<number>100</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_displacement_2">
<property name="title">
<string>User defined equation</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Avg:</string>
</property>
</widget>
</item>
<item>
<widget class="Gui::InputField" name="le_avg">
<property name="readOnly">
<bool>true</bool>
</property>
<property name="unit" stdset="0">
<string notr="true">mm</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Max:</string>
</property>
</widget>
</item>
<item>
<widget class="Gui::InputField" name="le_max">
<property name="readOnly">
<bool>true</bool>
</property>
<property name="unit" stdset="0">
<string notr="true">mm</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_displacement">
<property name="title">
<string>Displacement</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QCheckBox" name="cb_show_displacement">
<property name="text">
<string>Show</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QScrollBar" name="hsb_displacement_factor">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label_3">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Factor:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="sb_displacement_factor">
<property name="enabled">
<bool>false</bool>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
<property name="maximum">
<number>99999</number>
</property>
<property name="singleStep">
<number>10</number>
</property>
<property name="value">
<number>1</number>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label_7">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Slider max:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="sb_displacement_factor_max">
<property name="enabled">
<bool>false</bool>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
<property name="maximum">
<number>99999</number>
</property>
<property name="singleStep">
<number>10</number>
</property>
<property name="value">
<number>100</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_displacement_2">
<property name="title">
<string>User defined equation</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QPushButton" name="calculate">
<property name="text">
<string>Calculate and plot</string>
</property>
</widget>
</item>
<item>
<widget class="QTextEdit" name="user_def_eq">
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QPushButton" name="calculate">
<property name="text">
<string>Calculate and plot</string>
</property>
</widget>
</item>
<item>
<widget class="QTextEdit" name="user_def_eq">
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;P1-P3 # Stress intensity stress equation. Available values are numpy array format. Calculation np.funtion can be used on available values. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="user_def_head_1">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; text-decoration: underline;&quot;&gt;Available result types:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="user_def_head_2">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;displacement (x,y,z) and strain (ex,ey,ez)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<property name="indent">
<number>-1</number>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="user_def_head_3">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;stresses (sx,sy,sz) and principal stresses (P1,P2,P3)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<property name="indent">
<number>-1</number>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;P1-P3 # Stress intensity stress equation. Available values are numpy array format. Calculation np.funtion can be used on available values. &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="user_def_head_1">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; text-decoration: underline;&quot;&gt;Available result types:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="user_def_head_2">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;displacement (x,y,z) and strain (ex,ey,ez)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<property name="indent">
<number>-1</number>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="user_def_head_3">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;stresses (sx,sy,sz) and principal stresses (P1,P2,P3)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<property name="indent">
<number>-1</number>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>92</height>
</size>
</property>
</spacer>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>240</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>

View File

@ -63,8 +63,7 @@ class _TaskPanelShowResult:
QtCore.QObject.connect(self.form.rb_max_shear_stress, QtCore.SIGNAL("toggled(bool)"), self.max_shear_selected)
QtCore.QObject.connect(self.form.rb_massflowrate, QtCore.SIGNAL("toggled(bool)"), self.massflowrate_selected)
QtCore.QObject.connect(self.form.rb_networkpressure, QtCore.SIGNAL("toggled(bool)"), self.networkpressure_selected)
QtCore.QObject.connect(self.form.user_def_eq, QtCore.SIGNAL("textchanged()"), self.user_defined_text)
QtCore.QObject.connect(self.form.calculate, QtCore.SIGNAL("clicked()"), self.calculate)
QtCore.QObject.connect(self.form.rb_peeq, QtCore.SIGNAL("toggled(bool)"), self.peeq_selected)
# displacement
QtCore.QObject.connect(self.form.cb_show_displacement, QtCore.SIGNAL("clicked(bool)"), self.show_displacement)
@ -121,6 +120,9 @@ class _TaskPanelShowResult:
elif rt == "NPress":
self.form.rb_networkpressure.setChecked(True)
self.networkpressure_selected(True)
elif rt == "Peeq":
self.form.rb_peeq.setChecked(True)
self.peeq_selected(True)
sd = FreeCAD.FEM_dialog["show_disp"]
self.form.cb_show_displacement.setChecked(sd)
@ -156,6 +158,7 @@ class _TaskPanelShowResult:
"MidPrin": (Stats[18], Stats[19], Stats[20]),
"MinPrin": (Stats[21], Stats[22], Stats[23]),
"MaxShear": (Stats[24], Stats[25], Stats[26]),
"Peeq": (Stats[27], Stats[28], Stats[29]),
"None": (0.0, 0.0, 0.0)}
return match_table[type_name]
return (0.0, 0.0, 0.0)
@ -250,6 +253,15 @@ class _TaskPanelShowResult:
self.set_result_stats("MPa", minm, avg, maxm)
QtGui.qApp.restoreOverrideCursor()
def peeq_selected(self, state):
FreeCAD.FEM_dialog["results_type"] = "Peeq"
QApplication.setOverrideCursor(Qt.WaitCursor)
if self.suitable_results:
self.mesh_obj.ViewObject.setNodeColorByScalars(self.result_obj.NodeNumbers, self.result_obj.Peeq)
(minm, avg, maxm) = self.get_result_stats("Peeq")
self.set_result_stats("", minm, avg, maxm)
QtGui.qApp.restoreOverrideCursor()
def user_defined_text(self, equation):
FreeCAD.FEM_dialog["results_type"] = "user"
self.form.user_def_eq.toPlainText()
@ -263,6 +275,7 @@ class _TaskPanelShowResult:
P2 = np.array(self.result_obj.PrincipalMed)
P3 = np.array(self.result_obj.PrincipalMin)
Von = np.array(self.result_obj.StressValues)
Peeq = np.array(self.result_obj.Peeq)
T = np.array(self.result_obj.Temperature)
MF = np.array(self.result_obj.MassFlowRate)
NP = np.array(self.result_obj.NetworkPressure)
@ -290,7 +303,7 @@ class _TaskPanelShowResult:
self.mesh_obj.ViewObject.setNodeColorByScalars(self.result_obj.NodeNumbers, UserDefinedFormula)
self.set_result_stats("", minm, avg, maxm)
QtGui.qApp.restoreOverrideCursor()
del x, y, z, T, Von, P1, P2, P3, sx, sy, sz, ex, ey, ez, MF, NP # Dummy use to get around flake8, varibles not being used
del x, y, z, T, Von, Peeq, P1, P2, P3, sx, sy, sz, ex, ey, ez, MF, NP # Dummy use to get around flake8, varibles not being used
def select_displacement_type(self, disp_type):
QApplication.setOverrideCursor(Qt.WaitCursor)
@ -358,7 +371,8 @@ class _TaskPanelShowResult:
PrincipalMin --> rb_minprin
MaxShear --> rb_max_shear_stress
MassFlowRate --> rb_massflowrate
NetworkPressure --> rb_networkpressure'''
NetworkPressure --> rb_networkpressure
Peeq --> rb_peeq'''
if len(self.result_obj.DisplacementLengths) == 0:
self.form.rb_abs_displacement.setEnabled(0)
if len(self.result_obj.DisplacementVectors) == 0:
@ -379,6 +393,8 @@ class _TaskPanelShowResult:
self.form.rb_massflowrate.setEnabled(0)
if len(self.result_obj.NetworkPressure) == 0:
self.form.rb_networkpressure.setEnabled(0)
if len(self.result_obj.Peeq) == 0:
self.form.rb_peeq.setEnabled(0)
def update(self):
self.suitable_results = False

View File

@ -174,6 +174,21 @@ def importFrd(filename, analysis=None, result_name_prefix=None):
.format(results.NodeNumbers, len(results.StressValues)))
results.NodeNumbers = stress.keys()
# Read Equivalent Plastic strain if they exist
if 'peeq' in result_set:
Peeq = result_set['peeq']
if len(Peeq) > 0:
if len(Peeq.values()) != len(disp.values()):
Pe = []
Pe_extra_nodes = Peeq.values()
nodes = len(disp.values())
for i in range(nodes):
Pe_value = Pe_extra_nodes[i]
Pe.append(Pe_value)
results.Peeq = Pe
else:
results.Peeq = Peeq.values()
x_min, y_min, z_min = map(min, zip(*displacement))
sum_list = map(sum, zip(*displacement))
x_avg, y_avg, z_avg = [i / no_of_values for i in sum_list]
@ -193,6 +208,14 @@ def importFrd(filename, analysis=None, result_name_prefix=None):
ms_min = min(results.MaxShear)
ms_avg = sum(results.MaxShear) / no_of_values
ms_max = max(results.MaxShear)
if results.Peeq:
peeq_max = max(results.Peeq)
peeq_min = min(results.Peeq)
peeq_avg = sum(results.Peeq) / no_of_values
else:
peeq_max = 0
peeq_min = 0
peeq_avg = 0
disp_abs = []
for d in displacement:
@ -211,24 +234,8 @@ def importFrd(filename, analysis=None, result_name_prefix=None):
p1_min, p1_avg, p1_max,
p2_min, p2_avg, p2_max,
p3_min, p3_avg, p3_max,
ms_min, ms_avg, ms_max]
except:
pass
# Read Equivalent Plastic strain if they exist
try:
Peeq = result_set['peeq']
if len(Peeq) > 0:
if len(Peeq.values()) != len(disp.values()):
Pe = []
Pe_extra_nodes = Peeq.values()
nodes = len(disp.values())
for i in range(nodes):
Pe_value = Pe_extra_nodes[i]
Pe.append(Pe_value)
results.Peeq = Pe
else:
results.Peeq = Peeq.values()
ms_min, ms_avg, ms_max,
peeq_min, peeq_avg, peeq_max]
except:
pass

View File

@ -105,22 +105,7 @@ def import_z88_disp(filename, analysis=None, result_name_prefix=None):
# set stats of not imported values to 0
s_max = s_min = s_avg = 0
p1_min = p1_avg = p1_max = p2_min = p2_avg = p2_max = p3_min = p3_avg = p3_max = 0
ms_min = ms_avg = ms_max = 0
# s_max = max(results.StressValues)
# s_min = min(results.StressValues)
# s_avg = sum(results.StressValues) / no_of_values
# p1_min = min(results.PrincipalMax)
# p1_avg = sum(results.PrincipalMax) / no_of_values
# p1_max = max(results.PrincipalMax)
# p2_min = min(results.PrincipalMed)
# p2_avg = sum(results.PrincipalMed) / no_of_values
# p2_max = max(results.PrincipalMed)
# p3_min = min(results.PrincipalMin)
# p3_avg = sum(results.PrincipalMin) / no_of_values
# p3_max = max(results.PrincipalMin)
# ms_min = min(results.MaxShear)
# ms_avg = sum(results.MaxShear) / no_of_values
# ms_max = max(results.MaxShear)
ms_min = ms_avg = ms_max = peeq_min = peeq_avg = peeq_max = 0
disp_abs = []
for d in displacement:
@ -139,7 +124,8 @@ def import_z88_disp(filename, analysis=None, result_name_prefix=None):
p1_min, p1_avg, p1_max,
p2_min, p2_avg, p2_max,
p3_min, p3_avg, p3_max,
ms_min, ms_avg, ms_max]
ms_min, ms_avg, ms_max,
peeq_min, peeq_avg, peeq_max]
analysis_object.Member = analysis_object.Member + [results]
if(FreeCAD.GuiUp):