FEM: unit tests, add tests for von mises and prinzipal stress calculation

This commit is contained in:
Bernd Hahnebach
2019-03-03 21:05:43 +01:00
committed by wmayer
parent 3ca714670f
commit 56056a491d

View File

@@ -222,6 +222,36 @@ class TestResult(unittest.TestCase):
self.assertEqual(read_mflow, expected_mflow, "Values of read mflow result data are unexpected")
self.assertEqual(read_npressure, expected_npressure, "Values of read npressure result data are unexpected")
def get_stress_values(self):
# node 5 von calculix cantilver 3D example
# doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'data/examples/FemCalculixCantilever3D.FCStd')
# doc.Box_Mesh.FemMesh.Nodes[5]
# Vector (0.0, 1000.0, 0.0)
stress = (
-4.52840E+02, # S11
-1.94075E+02, # S22
-1.94075E+02, # S33
6.11223E+01, # S12
6.92759E-05, # S23
-2.60754E+01 # S31
) # run an analysis and copy the values from frd result file
return stress
def test_stress_von_mises(self):
expected_mises = 283.2082
from feminout.importToolsFem import calculate_von_mises as vm
mises = vm(self.get_stress_values())
# fcc_print(round(mises, 4))
self.assertEqual(round(mises, 4), expected_mises, "Calculated von Mises stress is not the expected value.")
def test_stress_principal(self):
expected_principal = (-178.0076, -194.0749, -468.9075, 145.4499)
from feminout.importToolsFem import calculate_principal_stress as pr
prin = pr(self.get_stress_values())
rounded_prin = (round(prin[0], 4), round(prin[1], 4), round(prin[2], 4), round(prin[3], 4))
# fcc_print(rounded_prin)
self.assertEqual(rounded_prin, expected_principal, "Calculated principal stresses are not the expected values.")
def tearDown(self):
FreeCAD.closeDocument(self.doc_name)
pass