diff --git a/src/Mod/Fem/MechanicalMaterial.py b/src/Mod/Fem/MechanicalMaterial.py
index 8e40f959a8..3abf9f6786 100644
--- a/src/Mod/Fem/MechanicalMaterial.py
+++ b/src/Mod/Fem/MechanicalMaterial.py
@@ -133,6 +133,7 @@ class _MechanicalMaterialTaskPanel:
QtCore.QObject.connect(self.form.cb_materials, QtCore.SIGNAL("activated(int)"), self.choose_material)
QtCore.QObject.connect(self.form.input_fd_young_modulus, QtCore.SIGNAL("valueChanged(double)"), self.ym_changed)
QtCore.QObject.connect(self.form.spinBox_poisson_ratio, QtCore.SIGNAL("valueChanged(double)"), self.pr_changed)
+ QtCore.QObject.connect(self.form.input_fd_density, QtCore.SIGNAL("valueChanged(double)"), self.density_changed)
self.previous_material = self.obj.Material
self.import_materials()
previous_mat_path = self.get_material_path(self.previous_material)
@@ -171,6 +172,14 @@ class _MechanicalMaterialTaskPanel:
material['YoungsModulus'] = unicode(value) + " kPa"
self.obj.Material = material
+ def density_changed(self, value):
+ import Units
+ old_density = Units.Quantity(self.obj.Material['Density'])
+ if old_density != value:
+ material = self.obj.Material
+ material['Density'] = unicode(value) + " kg/mm^3"
+ self.obj.Material = material
+
def pr_changed(self, value):
import Units
old_pr = Units.Quantity(self.obj.Material['PoissonRatio'])
@@ -212,6 +221,8 @@ class _MechanicalMaterialTaskPanel:
print ' YM = ', matmap['YoungsModulus']
if 'PoissonRatio' in matmap:
print ' PR = ', matmap['PoissonRatio']
+ if 'Density' in matmap:
+ print ' RO = ', matmap['Density']
def set_mat_params_in_combo_box(self, matmap):
if 'YoungsModulus' in matmap:
@@ -221,6 +232,11 @@ class _MechanicalMaterialTaskPanel:
self.form.input_fd_young_modulus.setText("{} {}".format(ym_with_new_unit, ym_new_unit))
if 'PoissonRatio' in matmap:
self.form.spinBox_poisson_ratio.setValue(float(matmap['PoissonRatio']))
+ if 'Density' in matmap:
+ density_new_unit = "kg/m^3"
+ density = FreeCAD.Units.Quantity(matmap['Density'])
+ density_with_new_unit = density.getValueAs(density_new_unit)
+ self.form.input_fd_density.setText("{} {}".format(density_with_new_unit, density_new_unit))
def add_transient_material(self, material):
material_name = self.get_material_name(material)
diff --git a/src/Mod/Fem/MechanicalMaterial.ui b/src/Mod/Fem/MechanicalMaterial.ui
index b708345d76..8607b012db 100644
--- a/src/Mod/Fem/MechanicalMaterial.ui
+++ b/src/Mod/Fem/MechanicalMaterial.ui
@@ -6,8 +6,8 @@
0
0
- 188
- 124
+ 253
+ 275
@@ -36,6 +36,9 @@
-
+
+ QFormLayout::AllNonFixedFieldsGrow
+
-
@@ -60,18 +63,18 @@
Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+ 2.000000000000000
+
+
+ 2000000000.000000000000000
+
Pa
3
-
- 2000000000.000000000
-
-
- 2.000000000000000
-
0.000000000000000
@@ -115,6 +118,50 @@
+ -
+
+
+ Density
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 80
+ 20
+
+
+
+ 0 kg/m^3
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+ 2.000000000000000
+
+
+ 2000000000.000000000000000
+
+
+ kg/m^3
+
+
+ 3
+
+
+ 0.000000000000000
+
+
+
-
diff --git a/src/Mod/Fem/ccxInpWriter.py b/src/Mod/Fem/ccxInpWriter.py
index 0f4673b271..7a2c398ba7 100644
--- a/src/Mod/Fem/ccxInpWriter.py
+++ b/src/Mod/Fem/ccxInpWriter.py
@@ -122,8 +122,12 @@ class inp_writer:
# write material properties
f.write('*MATERIAL, NAME=' + mat_name + '\n')
f.write('*ELASTIC \n')
- f.write('{}, '.format(YM_in_MPa))
+ f.write('{}, \n'.format(YM_in_MPa))
f.write('{0:.3f}\n'.format(PR))
+ density = FreeCAD.Units.Quantity(mat_obj.Material['Density'])
+ density_in_kg_per_mm3 = density.getValueAs('t/mm^3')
+ f.write('*DENSITY \n')
+ f.write('{}, \n'.format(density_in_kg_per_mm3))
# write element properties
if len(self.material_objects) == 1:
f.write('*SOLID SECTION, ELSET=' + mat_obj_name + ', MATERIAL=' + mat_name + '\n')
diff --git a/src/Mod/Material/StandardMaterial/ABS.FCMat b/src/Mod/Material/StandardMaterial/ABS.FCMat
index ad7a923c7a..601438d554 100644
--- a/src/Mod/Material/StandardMaterial/ABS.FCMat
+++ b/src/Mod/Material/StandardMaterial/ABS.FCMat
@@ -24,6 +24,7 @@ SpecificPrice= 3
YoungsModulus=2320 MPa
; http://en.wikipedia.org/wiki/Ultimate_tensile_strength in
UltimateTensileStrength= 38 MPa
+Density=1070 kg/m^3
[FEM]
PoissonRatio = 0.35
diff --git a/src/Mod/Material/StandardMaterial/CalculiX.FCMat b/src/Mod/Material/StandardMaterial/CalculiX.FCMat
index f161e9c0c4..4eda172337 100644
--- a/src/Mod/Material/StandardMaterial/CalculiX.FCMat
+++ b/src/Mod/Material/StandardMaterial/CalculiX.FCMat
@@ -9,6 +9,7 @@ Father=Metal
[Mechanical]
; youngs modulus (or E-Module)
YoungsModulus=210000 MPa
+Density=1000 kg/m^3
[FEM]
PoissonRatio = 0.3
diff --git a/src/Mod/Material/StandardMaterial/Concrete-Generic.FCMat b/src/Mod/Material/StandardMaterial/Concrete-Generic.FCMat
index db87a1c9f3..25ba107651 100644
--- a/src/Mod/Material/StandardMaterial/Concrete-Generic.FCMat
+++ b/src/Mod/Material/StandardMaterial/Concrete-Generic.FCMat
@@ -19,6 +19,7 @@ CompressiveStrength=25 MPa
YoungsModulus=32000 MPa
Elasticity=
FractureToughness=
+Density=2000 kg/m^3
[FEM]
PoissonRatio=0.17
diff --git a/src/Mod/Material/StandardMaterial/None.FCMat b/src/Mod/Material/StandardMaterial/None.FCMat
index 3ce480dc35..ca121de334 100644
--- a/src/Mod/Material/StandardMaterial/None.FCMat
+++ b/src/Mod/Material/StandardMaterial/None.FCMat
@@ -22,6 +22,7 @@ SpecificPrice = 0.0
YoungsModulus=0 MPa
; http://en.wikipedia.org/wiki/Ultimate_tensile_strength in
UltimateTensileStrength= 0 MPa
+Density=0 kg/m^3
[FEM]
PoissonRatio = 0.0
diff --git a/src/Mod/Material/StandardMaterial/PLA.FCMat b/src/Mod/Material/StandardMaterial/PLA.FCMat
index 2d577b5889..aa182dd1aa 100644
--- a/src/Mod/Material/StandardMaterial/PLA.FCMat
+++ b/src/Mod/Material/StandardMaterial/PLA.FCMat
@@ -24,6 +24,7 @@ SpecificPrice= 4
YoungsModulus=3640 MPa
; http://en.wikipedia.org/wiki/Ultimate_tensile_strength
UltimateTensileStrength= 49.6 MPa
+Density=1300 kg/m^3
[FEM]
diff --git a/src/Mod/Material/StandardMaterial/Steel-Generic.FCMat b/src/Mod/Material/StandardMaterial/Steel-Generic.FCMat
index 488df4b3a9..3f4bff1d52 100644
--- a/src/Mod/Material/StandardMaterial/Steel-Generic.FCMat
+++ b/src/Mod/Material/StandardMaterial/Steel-Generic.FCMat
@@ -30,6 +30,7 @@ CompressiveStrength=
Elasticity=
; http://en.wikipedia.org/wiki/Fracture_toughness
FractureToughness:
+Density=7900 kg/m^3
[FEM]
PoissonRatio = 0.3
diff --git a/src/Mod/Material/StandardMaterial/Wood-Generic.FCMat b/src/Mod/Material/StandardMaterial/Wood-Generic.FCMat
index d6a600be8f..0a33ea9b32 100644
--- a/src/Mod/Material/StandardMaterial/Wood-Generic.FCMat
+++ b/src/Mod/Material/StandardMaterial/Wood-Generic.FCMat
@@ -18,6 +18,7 @@ CompressiveStrength=
YoungsModulus=12000 MPa
Elasticity=
FractureToughness=
+Density=0.7 kg/m^3
[FEM]
PoissonRatio=0.05