Skip to content

Commit

Permalink
FEM: fix, transient material was used in some cases even if material …
Browse files Browse the repository at this point in the history
…was not changed
  • Loading branch information
berndhahnebach committed Feb 2, 2016
1 parent efc9b71 commit e9606a2
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 16 deletions.
6 changes: 3 additions & 3 deletions src/Mod/Fem/TaskPanelMechanicalMaterial.ui
Expand Up @@ -176,7 +176,7 @@
<double>0.100000000000000</double>
</property>
<property name="value">
<double>0.300000000000000</double>
<double>0.000000000000000</double>
</property>
</widget>
</item>
Expand All @@ -202,7 +202,7 @@
</size>
</property>
<property name="text">
<string>0 kg/m^3</string>
<string/>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
Expand All @@ -214,7 +214,7 @@
<double>2000000000.000000000000000</double>
</property>
<property name="unit" stdset="0">
<string notr="true">kg/m^3</string>
<string notr="true">kg/mm^3</string>
</property>
<property name="decimals" stdset="0">
<number>3</number>
Expand Down
36 changes: 23 additions & 13 deletions src/Mod/Fem/_TaskPanelMechanicalMaterial.py
Expand Up @@ -113,28 +113,38 @@ def goMatWeb(self):

def ym_changed(self, value):
import Units
# FreeCADs standard unit for stress is kPa
old_ym = Units.Quantity(self.material['YoungsModulus'])
if old_ym != value:
material = self.material
# FreeCAD uses kPa internall for Stress
material['YoungsModulus'] = unicode(value) + " kPa"
self.material = material
variation = 0.001
if value:
if not (1 - variation < float(old_ym) / value < 1 + variation):
# YoungsModulus has changed
material = self.material
material['YoungsModulus'] = unicode(value) + " kPa"
self.material = material

def density_changed(self, value):
import Units
# FreeCADs standard unit for density is kg/mm^3
old_density = Units.Quantity(self.material['Density'])
if old_density != value:
material = self.material
material['Density'] = unicode(value) + " kg/mm^3"
self.material = material
variation = 0.001
if value:
if not (1 - variation < float(old_density) / value < 1 + variation):
# density has changed
material = self.material
material['Density'] = unicode(value) + " kg/mm^3"
self.material = material

def pr_changed(self, value):
import Units
old_pr = Units.Quantity(self.material['PoissonRatio'])
if old_pr != value:
material = self.material
material['PoissonRatio'] = unicode(value)
self.material = material
variation = 0.001
if value:
if not (1 - variation < float(old_pr) / value < 1 + variation):
# PoissonRatio has changed
material = self.material
material['PoissonRatio'] = unicode(value)
self.material = material

def choose_material(self, index):
if index < 0:
Expand Down

0 comments on commit e9606a2

Please sign in to comment.