From 99bca23ba1a9f0e529fe69a8637e0e359c0dc9bc Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Sun, 16 Jun 2019 18:26:19 +0200 Subject: [PATCH] FEM: concrete, rho calculation unit test --- src/Mod/Fem/TestFem.py | 4 ++ src/Mod/Fem/femtest/testresult.py | 77 +++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) diff --git a/src/Mod/Fem/TestFem.py b/src/Mod/Fem/TestFem.py index 4a127c4f79..c2412f51f5 100644 --- a/src/Mod/Fem/TestFem.py +++ b/src/Mod/Fem/TestFem.py @@ -128,6 +128,7 @@ gf() ./bin/FreeCADCmd --run-test "femtest.testresult.TestResult.test_stress_von_mises" ./bin/FreeCADCmd --run-test "femtest.testresult.TestResult.test_stress_principal_std" ./bin/FreeCADCmd --run-test "femtest.testresult.TestResult.test_stress_principal_reinforced" +./bin/FreeCADCmd --run-test "femtest.testresult.TestResult.test_rho" ./bin/FreeCADCmd --run-test "femtest.testresult.TestResult.test_disp_abs" ./bin/FreeCADCmd --run-test "femtest.testsolverframework.TestSolverFrameWork.test_solver_framework" @@ -220,6 +221,9 @@ unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.t import unittest unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.testresult.TestResult.test_stress_principal_reinforced")) +import unittest +unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.testresult.TestResult.test_rho")) + import unittest unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.testresult.TestResult.test_disp_abs")) diff --git a/src/Mod/Fem/femtest/testresult.py b/src/Mod/Fem/femtest/testresult.py index ba3fa8bc63..d03fb24588 100644 --- a/src/Mod/Fem/femtest/testresult.py +++ b/src/Mod/Fem/femtest/testresult.py @@ -351,6 +351,83 @@ class TestResult(unittest.TestCase): "Calculated principal reinforced stresses are not the expected values." ) + # ******************************************************************************************** + def test_rho( + self + ): + data = ( + ( + # Case1: Governing Eq.14 + (2.000, -2.000, 5.000, 6.000, -4.000, 2.000), + (0.02400, 0.00400, 0.01400) + ), + ( + # Case2: Governing Eq.10+ + (-3.000, -7.000, 0.000, 6.000, -4.000, 2.000), + (0.00886, 0.00000, 0.00571), + ), + ( + # Case3: Governing Eq.5 + (-1.000, -7.000, 10.000, 0.000, 0.000, 5.000), + (0.00000, 0.00000, 0.02714) + ), + ( + # Case4: Governing Eq.13 + (3.000, 0.000, 10.000, 0.000, 5.000, 0.000), + (0.01600, 0.00000, 0.03000) + ), + ( + # Case5: Governing Eq.11- + (10.000, 7.000, -3.000, 3.000, 1.000, -2.000), + (0.02533, 0.02133, 0.00000) + ), + ( + # Case6: Governing Eq.14 + (4.000, -7.000, 3.000, 7.000, 0.000, -5.000), + (0.02200, 0.01000, 0.01600) + ), + ( + # Case7: Governing Eq.14 + (8.000, -14.000, 6.000, 14.000, 0.000, -10.000), + (0.04400, 0.02000, 0.03200) + ), + ( + # Case8: Governing Eq.17 + (1.000, 0.000, 3.000, 10.000, -8.000, 7.000), + (0.02486, 0.01750, 0.01720) + ), + ( + # Case9: Governing Eq.13 + (0.000, 0.000, 0.000, 10.000, 8.000, 7.000), + (0.03600, 0.03400, 0.03000) + ), + ( + # Case10: Governing Eq.13 + (15.000, 0.000, 0.000, 0.000, 0.000, 0.000), + (0.03000, 0.00000, 0.00000) + ), + ( + # Case11: Governing Eq.13 + (0.000, 0.000, 0.000, 5.000, 0.000, 0.000), + (0.01000, 0.01000, 0.00000) + ) + ) + + from femresult.resulttools import calculate_rho as calrho + for i, case in enumerate(data): + res = calrho(case[0], 500) + rhores = ( + round(res[0], 5), + round(res[1], 5), + round(res[2], 5) + ) + # fcc_print('Case{}: {}'.format(i + 1 , rhores)) + self.assertEqual( + rhores, case[1], + "Calculated rho are not the expected Case{}." + .format(i + 1) + ) + # ******************************************************************************************** def test_disp_abs( self