Skip to content

Commit

Permalink
Merge pull request #235 from berndhahnebach/femsmallfixes
Browse files Browse the repository at this point in the history
Femsmallfixes
  • Loading branch information
wwmayer committed Aug 6, 2016
2 parents 4062a15 + 80b6820 commit 67c1302
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 8 deletions.
Binary file modified data/examples/FemCalculixCantilever2D.FCStd
Binary file not shown.
Binary file modified data/examples/FemCalculixCantilever3D.FCStd
Binary file not shown.
4 changes: 2 additions & 2 deletions src/Mod/Fem/FemTools.py
Expand Up @@ -302,9 +302,9 @@ def check_prerequisites(self):
if not self.mesh:
message += "No mesh object defined in the analysis\n"
if self.mesh:
if self.mesh.FemMesh.VolumeCount == 0 and self.mesh.FemMesh.FaceCount > 0:
if self.mesh.FemMesh.VolumeCount == 0 and self.mesh.FemMesh.FaceCount > 0 and not self.shell_thicknesses:
message += "FEM mesh has no volume elements, either define a shell thicknesses or provide a FEM mesh with volume elements.\n"
if self.mesh.FemMesh.VolumeCount == 0 and self.mesh.FemMesh.FaceCount == 0 and self.mesh.FemMesh.EdgeCount > 0:
if self.mesh.FemMesh.VolumeCount == 0 and self.mesh.FemMesh.FaceCount == 0 and self.mesh.FemMesh.EdgeCount > 0 and not self.beam_sections:
message += "FEM mesh has no volume and no shell elements, either define a beam section or provide a FEM mesh with volume elements.\n"
if self.mesh.FemMesh.VolumeCount == 0 and self.mesh.FemMesh.FaceCount == 0 and self.mesh.FemMesh.EdgeCount == 0:
message += "FEM mesh has neither volume nor shell or edge elements. Provide a FEM mesh with elements!\n"
Expand Down
29 changes: 23 additions & 6 deletions src/Mod/Fem/_TaskPanelMechanicalMaterial.py
Expand Up @@ -29,6 +29,7 @@
import FreeCADGui
from PySide import QtGui
from PySide import QtCore
import Units


class _TaskPanelMechanicalMaterial:
Expand Down Expand Up @@ -81,6 +82,7 @@ def __init__(self, obj):
self.rebuild_list_References()

def accept(self):
# print(self.material)
self.remove_active_sel_server()
if self.has_equal_references_shape_types():
self.obj.Material = self.material
Expand Down Expand Up @@ -123,8 +125,27 @@ def goMatWeb(self):
import webbrowser
webbrowser.open("http://matweb.com")

def check_material_keys(self):
if not 'YoungsModulus' in self.material:
print('YoungsModulus not found in material data of: ' + self.material['Name'])
self.material['YoungsModulus'] = '0 MPa'
if not 'Density' in self.material:
print('Density not found in material data of: ' + self.material['Name'])
self.material['Density'] = '0 kg/m^3'
if not 'PoissonRatio' in self.material:
print('PoissonRatio not found in material data of: ' + self.material['Name'])
self.material['PoissonRatio'] = '0'
if not 'ThermalConductivity' in self.material:
print('ThermalConductivity not found in material data of: ' + self.material['Name'])
self.material['ThermalConductivity'] = '0 W/m/K'
if not 'ThermalExpansionCoefficient' in self.material:
print('ThermalExpansionCoefficient not found in material data of: ' + self.material['Name'])
self.material['ThermalExpansionCoefficient'] = '0 um/m/K'
if not 'SpecificHeat' in self.material:
print('SpecificHeat not found in material data of: ' + self.material['Name'])
self.material['SpecificHeat'] = '0 J/kg/K'

def ym_changed(self, value):
import Units
# FreeCADs standard unit for stress is kPa
old_ym = Units.Quantity(self.material['YoungsModulus']).getValueAs("kPa")
variation = 0.001
Expand All @@ -136,7 +157,6 @@ def ym_changed(self, value):
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']).getValueAs("kg/m^3")
variation = 0.001
Expand All @@ -149,7 +169,6 @@ def density_changed(self, value):
self.material = material

def pr_changed(self, value):
import Units
old_pr = Units.Quantity(self.material['PoissonRatio'])
variation = 0.001
if value:
Expand All @@ -160,7 +179,6 @@ def pr_changed(self, value):
self.material = material

def tc_changed(self, value):
import Units
old_tc = Units.Quantity(self.material['ThermalConductivity']).getValueAs("W/m/K")
variation = 0.001
if value:
Expand All @@ -172,7 +190,6 @@ def tc_changed(self, value):
self.material = material

def tec_changed(self, value):
import Units
old_tec = Units.Quantity(self.material['ThermalExpansionCoefficient']).getValueAs("um/m/K")
variation = 0.001
if value:
Expand All @@ -184,7 +201,6 @@ def tec_changed(self, value):
self.material = material

def sh_changed(self, value):
import Units
old_sh = Units.Quantity(self.material['SpecificHeat']).getValueAs("J/kg/K")
variation = 0.001
if value:
Expand All @@ -201,6 +217,7 @@ def choose_material(self, index):
mat_file_path = self.form.cb_materials.itemData(index)
self.material = self.materials[mat_file_path]
self.form.cb_materials.setCurrentIndex(index)
self.check_material_keys()
self.set_mat_params_in_combo_box(self.material)
gen_mat_desc = ""
if 'Description' in self.material:
Expand Down

0 comments on commit 67c1302

Please sign in to comment.