FEM: unit tests, add tests for von mises and prinzipal stress calculation
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user