From 614d5f4548869caafeded4e81e756fffebe97063 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Tue, 7 Jul 2020 07:58:23 +0200 Subject: [PATCH] FEM: elmer unit tests, add ccx cantilever prescribed displacement example --- src/Mod/Fem/CMakeLists.txt | 1 + src/Mod/Fem/femtest/app/test_solver_elmer.py | 9 ++ ...cxcantilever_prescribeddisplacement_mm.sif | 85 +++++++++++++++++++ src/Mod/Fem/femtest/test_commands.sh | 6 ++ 4 files changed, 101 insertions(+) create mode 100644 src/Mod/Fem/femtest/data/elmer/ccxcantilever_prescribeddisplacement_mm.sif diff --git a/src/Mod/Fem/CMakeLists.txt b/src/Mod/Fem/CMakeLists.txt index abf242cf7e..9958784aaf 100755 --- a/src/Mod/Fem/CMakeLists.txt +++ b/src/Mod/Fem/CMakeLists.txt @@ -260,6 +260,7 @@ SET(FemTestsElmer_SRCS femtest/data/elmer/box_static_mm.sif femtest/data/elmer/ccxcantilever_faceload_mm.sif femtest/data/elmer/ccxcantilever_nodeload_mm.sif + femtest/data/elmer/ccxcantilever_prescribeddisplacement_mm.sif femtest/data/elmer/group_mesh.geo femtest/data/elmer/ELMERSOLVER_STARTINFO ) diff --git a/src/Mod/Fem/femtest/app/test_solver_elmer.py b/src/Mod/Fem/femtest/app/test_solver_elmer.py index 01b529fe67..27c1435717 100644 --- a/src/Mod/Fem/femtest/app/test_solver_elmer.py +++ b/src/Mod/Fem/femtest/app/test_solver_elmer.py @@ -165,6 +165,15 @@ class TestSolverElmer(unittest.TestCase): setup(self.document, "elmer") self.input_file_writing_test(get_namefromdef("test_")) + # ******************************************************************************************** + def test_ccxcantilever_prescribeddisplacement( + self + ): + fcc_print("") + from femexamples.ccx_cantilever_prescribeddisplacement import setup + setup(self.document, "elmer") + self.input_file_writing_test(get_namefromdef("test_")) + # ******************************************************************************************** def input_file_writing_test( self, diff --git a/src/Mod/Fem/femtest/data/elmer/ccxcantilever_prescribeddisplacement_mm.sif b/src/Mod/Fem/femtest/data/elmer/ccxcantilever_prescribeddisplacement_mm.sif new file mode 100644 index 0000000000..ee2711437a --- /dev/null +++ b/src/Mod/Fem/femtest/data/elmer/ccxcantilever_prescribeddisplacement_mm.sif @@ -0,0 +1,85 @@ +Check Keywords Warn + +Header + Mesh DB "." +End + +Solver 1 + Bubbles = Logical False + Calculate Pangle = Logical False + Calculate Principal = Logical False + Calculate Strains = Logical False + Calculate Stresses = Logical False + Displace mesh = Logical False + Eigen Analysis = Logical False + Eigen System Values = Integer 5 + Equation = String "Elasticity" + Exec Solver = String "Always" + Linear System Abort Not Converged = Logical False + Linear System Convergence Tolerance = Real 1e-08 + Linear System Iterative Method = String "BiCGStab" + Linear System Max Iterations = Integer 500 + Linear System Precondition Recompute = Integer 1 + Linear System Preconditioning = String "ILU0" + Linear System Residual Output = Integer 1 + Linear System Solver = String "Iterative" + Optimize Bandwidth = Logical True + Procedure = File "StressSolve" "StressSolver" + Stabilize = Logical True + Steady State Convergence Tolerance = Real 1e-05 + Variable = String "Displacement" + Variable DOFs = Integer 3 +End + +Simulation + BDF Order = Integer 1 + Coordinate Mapping(3) = Integer 1 2 3 + Coordinate System = String "Cartesian 3D" + Output Intervals = Integer 1 + Simulation Type = String "Steady state" + Steady State Max Iterations = Integer 1 + Steady State Min Iterations = Integer 0 + Timestepping Method = String "BDF" + Use Mesh Names = Logical True +End + +Constants +End + +Body 1 + Equation = Integer 1 + Material = Integer 1 + Name = String "Solid1" +End + +Material 1 + Density = Real 7.9e-06 + Heat expansion Coefficient = Real 1.2e-05 + Poisson ratio = Real 0.3 + Youngs Modulus = Real 210000000.0 +End + +Equation 1 + Active Solvers(2) = Integer 1 2 +End + +Solver 2 + Equation = String "ResultOutput" + Exec Solver = String "After simulation" + Output File Name = File "case" + Procedure = File "ResultOutputSolve" "ResultOutputSolver" + Vtu Format = Logical True +End + +Boundary Condition 1 + Displacement 1 = Real 0.0 + Displacement 2 = Real 0.0 + Displacement 3 = Real 0.0 + Name = String "Face1" +End + +Boundary Condition 2 + Displacement 3 = Real -0.25 + Name = String "Face2" +End + diff --git a/src/Mod/Fem/femtest/test_commands.sh b/src/Mod/Fem/femtest/test_commands.sh index 084318be50..e98be398e5 100644 --- a/src/Mod/Fem/femtest/test_commands.sh +++ b/src/Mod/Fem/femtest/test_commands.sh @@ -91,6 +91,7 @@ make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_calculix.TestSolverCalc make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_elmer.TestSolverElmer.test_box_static make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_elmer.TestSolverElmer.test_ccxcantilever_faceload make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_elmer.TestSolverElmer.test_ccxcantilever_nodeload +make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_elmer.TestSolverElmer.test_ccxcantilever_prescribeddisplacement # methods in FreeCAD @@ -364,3 +365,8 @@ import unittest unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName( 'femtest.app.test_solver_elmer.TestSolverElmer.test_ccxcantilever_nodeload' )) + +import unittest +unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName( + 'femtest.app.test_solver_elmer.TestSolverElmer.test_ccxcantilever_prescribeddisplacement' +))