diff --git a/src/Mod/Fem/CMakeLists.txt b/src/Mod/Fem/CMakeLists.txt index 6de3ea80b4..fe12d59f8e 100755 --- a/src/Mod/Fem/CMakeLists.txt +++ b/src/Mod/Fem/CMakeLists.txt @@ -255,6 +255,7 @@ SET(FemTestsElmer_SRCS femtest/data/elmer/__init__.py femtest/data/elmer/case_mm.sif femtest/data/elmer/elmer_ccxcanti_faceload_mm.sif + femtest/data/elmer/elmer_ccxcanti_nodeload_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 617c6031e4..307481dc5a 100644 --- a/src/Mod/Fem/femtest/app/test_solver_elmer.py +++ b/src/Mod/Fem/femtest/app/test_solver_elmer.py @@ -153,6 +153,14 @@ class TestSolverElmer(unittest.TestCase): setup(self.document, "elmer") self.elmer_inputfile_writing_test("elmer_ccxcanti_faceload") + # ******************************************************************************************** + def test_elmer_ccxcanti_nodeload( + self + ): + from femexamples.ccx_cantilever_nodeload import setup + setup(self.document, "elmer") + self.elmer_inputfile_writing_test("elmer_ccxcanti_nodeload") + # ******************************************************************************************** def elmer_inputfile_writing_test( self, diff --git a/src/Mod/Fem/femtest/data/elmer/elmer_ccxcanti_nodeload_mm.sif b/src/Mod/Fem/femtest/data/elmer/elmer_ccxcanti_nodeload_mm.sif new file mode 100644 index 0000000000..c8eeb53374 --- /dev/null +++ b/src/Mod/Fem/femtest/data/elmer/elmer_ccxcanti_nodeload_mm.sif @@ -0,0 +1,120 @@ +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 + Force 1 = Real -0.0 + Force 1 Normalize by Area = Logical True + Force 2 = Real -0.0 + Force 2 Normalize by Area = Logical True + Force 3 = Real -9000000000.0 + Force 3 Normalize by Area = Logical True + Name = String "Vertex5" +End + +Boundary Condition 3 + Force 1 = Real -0.0 + Force 1 Normalize by Area = Logical True + Force 2 = Real -0.0 + Force 2 Normalize by Area = Logical True + Force 3 = Real -9000000000.0 + Force 3 Normalize by Area = Logical True + Name = String "Vertex6" +End + +Boundary Condition 4 + Force 1 = Real -0.0 + Force 1 Normalize by Area = Logical True + Force 2 = Real -0.0 + Force 2 Normalize by Area = Logical True + Force 3 = Real -9000000000.0 + Force 3 Normalize by Area = Logical True + Name = String "Vertex7" +End + +Boundary Condition 5 + Force 1 = Real -0.0 + Force 1 Normalize by Area = Logical True + Force 2 = Real -0.0 + Force 2 Normalize by Area = Logical True + Force 3 = Real -9000000000.0 + Force 3 Normalize by Area = Logical True + Name = String "Vertex8" +End + diff --git a/src/Mod/Fem/femtest/test_commands.sh b/src/Mod/Fem/femtest/test_commands.sh index 22a9f832c5..2a1aa33e77 100644 --- a/src/Mod/Fem/femtest/test_commands.sh +++ b/src/Mod/Fem/femtest/test_commands.sh @@ -83,6 +83,7 @@ make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_result.TestResult.test_rho make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_result.TestResult.test_disp_abs make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_calculix.TestSolverCalculix.test_solver_calculix make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_elmer.TestSolverElmer.test_solver_elmer +make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_elmer.TestSolverElmer.test_elmer_ccxcanti_nodeload make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_elmer.TestSolverElmer.test_elmer_ccxcanti_faceload @@ -318,6 +319,11 @@ unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName( 'femtest.app.test_solver_elmer.TestSolverElmer.test_solver_elmer' )) +import unittest +unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName( + 'femtest.app.test_solver_elmer.TestSolverElmer.test_elmer_ccxcanti_nodeload' +)) + import unittest unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName( 'femtest.app.test_solver_elmer.TestSolverElmer.test_elmer_ccxcanti_faceload'