From 2d40c82435a7ee4ce60fbf1ae3f8ac2da6f4b583 Mon Sep 17 00:00:00 2001 From: Sudhanshu Dubey Date: Mon, 13 Jul 2020 16:44:51 +0200 Subject: [PATCH] FEM: unit tests, add z88 writing test framework --- src/Mod/Fem/CMakeLists.txt | 16 + src/Mod/Fem/TestFemApp.py | 2 + src/Mod/Fem/femtest/app/test_solver_z88.py | 142 +++++++ src/Mod/Fem/femtest/data/z88/__init__.py | 0 .../data/z88/ccxcantilever_faceload/51.txt | 1 + .../data/z88/ccxcantilever_faceload/z88.dyn | 49 +++ .../z88/ccxcantilever_faceload/z88elp.txt | 2 + .../data/z88/ccxcantilever_faceload/z88i1.txt | 387 ++++++++++++++++++ .../data/z88/ccxcantilever_faceload/z88i2.txt | 53 +++ .../data/z88/ccxcantilever_faceload/z88i5.txt | 1 + .../z88/ccxcantilever_faceload/z88int.txt | 2 + .../z88/ccxcantilever_faceload/z88man.txt | 36 ++ .../z88/ccxcantilever_faceload/z88mat.txt | 2 + src/Mod/Fem/femtest/test_commands.sh | 8 + 14 files changed, 701 insertions(+) create mode 100644 src/Mod/Fem/femtest/app/test_solver_z88.py create mode 100644 src/Mod/Fem/femtest/data/z88/__init__.py create mode 100644 src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/51.txt create mode 100644 src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88.dyn create mode 100644 src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88elp.txt create mode 100644 src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88i1.txt create mode 100644 src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88i2.txt create mode 100644 src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88i5.txt create mode 100644 src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88int.txt create mode 100644 src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88man.txt create mode 100644 src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88mat.txt diff --git a/src/Mod/Fem/CMakeLists.txt b/src/Mod/Fem/CMakeLists.txt index e6f824b72a..42ee9d0084 100755 --- a/src/Mod/Fem/CMakeLists.txt +++ b/src/Mod/Fem/CMakeLists.txt @@ -214,6 +214,7 @@ SET(FemTestsApp_SRCS femtest/app/test_result.py femtest/app/test_solver_calculix.py femtest/app/test_solver_elmer.py + femtest/app/test_solver_z88.py ) SET(FemTestsFiles_SRCS @@ -286,6 +287,19 @@ SET(FemTestsOpen_SRCS femtest/data/open/all_objects_de9b3fb438.FCStd ) +SET(FemTestsZ88_SRCS + femtest/data/z88/__init__.py + femtest/data/z88/ccxcantilever_faceload/51.txt + femtest/data/z88/ccxcantilever_faceload/z88.dyn + femtest/data/z88/ccxcantilever_faceload/z88elp.txt + femtest/data/z88/ccxcantilever_faceload/z88i1.txt + femtest/data/z88/ccxcantilever_faceload/z88i2.txt + femtest/data/z88/ccxcantilever_faceload/z88i5.txt + femtest/data/z88/ccxcantilever_faceload/z88int.txt + femtest/data/z88/ccxcantilever_faceload/z88man.txt + femtest/data/z88/ccxcantilever_faceload/z88mat.txt +) + SET(FemTools_SRCS femtools/__init__.py femtools/ccxtools.py @@ -321,6 +335,7 @@ SET(FemAllScripts ${FemTestsElmer_SRCS} ${FemTestsMesh_SRCS} ${FemTestsOpen_SRCS} + ${FemTestsZ88_SRCS} ${FemTools_SRCS} ) @@ -353,6 +368,7 @@ INSTALL(FILES ${FemTestsCcx_SRCS} DESTINATION Mod/Fem/femtest/data/calculix) INSTALL(FILES ${FemTestsElmer_SRCS} DESTINATION Mod/Fem/femtest/data/elmer) INSTALL(FILES ${FemTestsMesh_SRCS} DESTINATION Mod/Fem/femtest/data/mesh) INSTALL(FILES ${FemTestsOpen_SRCS} DESTINATION Mod/Fem/femtest/data/open) +INSTALL(FILES ${FemTestsZ88_SRCS} DESTINATION Mod/Fem/femtest/data/z88) INSTALL(FILES ${FemTools_SRCS} DESTINATION Mod/Fem/femtools) diff --git a/src/Mod/Fem/TestFemApp.py b/src/Mod/Fem/TestFemApp.py index 09f280a9bd..211cd365bf 100644 --- a/src/Mod/Fem/TestFemApp.py +++ b/src/Mod/Fem/TestFemApp.py @@ -37,6 +37,7 @@ from femtest.app.test_result import TestResult as FemTest10 from femtest.app.test_ccxtools import TestCcxTools as FemTest11 from femtest.app.test_solver_calculix import TestSolverCalculix as FemTest12 from femtest.app.test_solver_elmer import TestSolverElmer as FemTest13 +from femtest.app.test_solver_z88 import TestSolverZ88 as FemTest14 # dummy usage to get flake8 and lgtm quiet False if FemTest01.__name__ else True @@ -52,3 +53,4 @@ False if FemTest10.__name__ else True False if FemTest11.__name__ else True False if FemTest12.__name__ else True False if FemTest13.__name__ else True +False if FemTest14.__name__ else True diff --git a/src/Mod/Fem/femtest/app/test_solver_z88.py b/src/Mod/Fem/femtest/app/test_solver_z88.py new file mode 100644 index 0000000000..9d4d877e39 --- /dev/null +++ b/src/Mod/Fem/femtest/app/test_solver_z88.py @@ -0,0 +1,142 @@ +# *************************************************************************** +# * Copyright (c) 2018 Bernd Hahnebach * +# * Copyright (c) 2020 Sudhanshu Dubey * +# * * +# * This file is part of the FreeCAD CAx development system. * +# * * +# * This program is free software; you can redistribute it and/or modify * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * +# * the License, or (at your option) any later version. * +# * for detail see the LICENCE text file. * +# * * +# * This program is distributed in the hope that it will be useful, * +# * but WITHOUT ANY WARRANTY; without even the implied warranty of * +# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +# * GNU Library General Public License for more details. * +# * * +# * You should have received a copy of the GNU Library General Public * +# * License along with this program; if not, write to the Free Software * +# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +# * USA * +# * * +# *************************************************************************** + +__title__ = "Solver z88 FEM unit tests" +__author__ = "Bernd Hahnebach" +__url__ = "http://www.freecadweb.org" + +import unittest +from os import listdir +from os.path import join + +import FreeCAD + +import femsolver.run +from . import support_utils as testtools +from .support_utils import fcc_print + + +class TestSolverZ88(unittest.TestCase): + fcc_print("import TestSolverZ88") + + # ******************************************************************************************** + def setUp( + self + ): + # setUp is executed before every test + + # new document + self.document = FreeCAD.newDocument(self.__class__.__name__) + + # more inits + self.mesh_name = "Mesh" + + # ******************************************************************************************** + def tearDown( + self + ): + # tearDown is executed after every test + FreeCAD.closeDocument(self.document.Name) + + # ******************************************************************************************** + def test_00print( + self + ): + # since method name starts with 00 this will be run first + # this test just prints a line with stars + + fcc_print("\n{0}\n{1} run FEM TestSolverFrameWork tests {2}\n{0}".format( + 100 * "*", + 10 * "*", + 55 * "*" + )) + + # ******************************************************************************************** + def test_solver_z88( + self + ): + from femexamples.ccx_cantilever_faceload import setup + setup(self.document, "z88") + self.z88_inputfile_writing_test("ccxcantilever_faceload") + + # ******************************************************************************************** + def z88_inputfile_writing_test( + self, + base_name + ): + + self.document.recompute() + + # start + fcc_print( + "\n------------- Start of FEM Z88 tests for {} -------" + .format(base_name) + ) + + # get analysis working directory and save FreeCAD file + working_dir = testtools.get_fem_test_tmp_dir("solver_z88_" + base_name) + save_fc_file = join(working_dir, base_name + ".FCStd") + fcc_print("Save FreeCAD file to {} ...".format(save_fc_file)) + self.document.saveAs(save_fc_file) + + # write input file + machine = self.document.SolverZ88.Proxy.createMachine( + self.document.SolverZ88, + working_dir, + True # set testmode to True + ) + machine.target = femsolver.run.PREPARE + machine.start() + machine.join() # wait for the machine to finish + + # compare input file with the given one + test_path = join(testtools.get_fem_test_home_dir(), "z88", base_name) + test_files = [f for f in listdir(test_path)] + for test_file in test_files: + inpfile_given = join( + test_path, + test_file + ) + inpfile_totest = join( + working_dir, + test_file + ) + fcc_print( + "Comparing {} to {}" + .format(inpfile_given, inpfile_totest) + ) + ret = testtools.compare_inp_files( + inpfile_given, + inpfile_totest + ) + self.assertFalse( + ret, + "Z88 write_inp_file for {0} test failed.\n{1}".format(base_name, ret) + ) + + # end + fcc_print( + "--------------- End of FEM Z88 tests for {} ---------" + .format(base_name) + ) diff --git a/src/Mod/Fem/femtest/data/z88/__init__.py b/src/Mod/Fem/femtest/data/z88/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/51.txt b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/51.txt new file mode 100644 index 0000000000..d5022434bd --- /dev/null +++ b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/51.txt @@ -0,0 +1 @@ +210000.0 0.300 diff --git a/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88.dyn b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88.dyn new file mode 100644 index 0000000000..82ffff0d69 --- /dev/null +++ b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88.dyn @@ -0,0 +1,49 @@ +DYNAMIC START +--------------------------------------------------------------------------- +Z88 new version 14OS Z88 neue Version 14OS +--------------------------------------------------------------------------- + +--------------------------------------------------------------------------- +LANGUAGE SPRACHE +--------------------------------------------------------------------------- +GERMAN + +--------------------------------------------------------------------------- +Entries for mesh generator Z88N Daten fuer Netzgenerator +--------------------------------------------------------------------------- + NET START + MAXSE 40000 + MAXESS 800 + MAXKSS 4000 + MAXAN 15 + NET END + +--------------------------------------------------------------------------- +Common entries for all modules gemeinsame Daten fuer alle Module +--------------------------------------------------------------------------- + + COMMON START + MAXGS 50000000 + MAXKOI 1200000 + MAXK 60000 + MAXE 300000 + MAXNFG 200000 + MAXMAT 32 + MAXPEL 32 + MAXJNT 32 + MAXPR 10000 + MAXRBD 15000 + MAXIEZ 6000000 + MAXGP 2000000 + COMMON END + +--------------------------------------------------------------------------- +Entries for Cuthill-McKee Z88H Daten fuer Cuthill- McKee Programm +--------------------------------------------------------------------------- + CUTKEE START + MAXGRA 200 + MAXNDL 1000 + CUTKEE END + + +DYNAMIC END diff --git a/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88elp.txt b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88elp.txt new file mode 100644 index 0000000000..162d6cc8ac --- /dev/null +++ b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88elp.txt @@ -0,0 +1,2 @@ +1 +1 79 0 0 0 0 0 0 0 diff --git a/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88i1.txt b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88i1.txt new file mode 100644 index 0000000000..9810520f91 --- /dev/null +++ b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88i1.txt @@ -0,0 +1,387 @@ +3 228 79 684 0 written by FreeCAD +1 3 8000.000000 1000.000000 0.000000 +2 3 8000.000000 1000.000000 1000.000000 +3 3 8000.000000 0.000000 0.000000 +4 3 8000.000000 0.000000 1000.000000 +5 3 0.000000 1000.000000 0.000000 +6 3 0.000000 1000.000000 1000.000000 +7 3 0.000000 0.000000 0.000000 +8 3 0.000000 0.000000 1000.000000 +9 3 728.000000 1000.000000 1000.000000 +10 3 1456.000000 1000.000000 1000.000000 +11 3 2184.000000 1000.000000 1000.000000 +12 3 2912.000000 1000.000000 1000.000000 +13 3 3640.000000 1000.000000 1000.000000 +14 3 4368.000000 1000.000000 1000.000000 +15 3 5096.000000 1000.000000 1000.000000 +16 3 5824.000000 1000.000000 1000.000000 +17 3 6552.000000 1000.000000 1000.000000 +18 3 7280.000000 1000.000000 1000.000000 +19 3 728.000000 0.000000 1000.000000 +20 3 1456.000000 0.000000 1000.000000 +21 3 2184.000000 0.000000 1000.000000 +22 3 2912.000000 0.000000 1000.000000 +23 3 3640.000000 0.000000 1000.000000 +24 3 4368.000000 0.000000 1000.000000 +25 3 5096.000000 0.000000 1000.000000 +26 3 5824.000000 0.000000 1000.000000 +27 3 6552.000000 0.000000 1000.000000 +28 3 7280.000000 0.000000 1000.000000 +29 3 728.000000 1000.000000 0.000000 +30 3 1456.000000 1000.000000 0.000000 +31 3 2184.000000 1000.000000 0.000000 +32 3 2912.000000 1000.000000 0.000000 +33 3 3640.000000 1000.000000 0.000000 +34 3 4368.000000 1000.000000 0.000000 +35 3 5096.000000 1000.000000 0.000000 +36 3 5824.000000 1000.000000 0.000000 +37 3 6552.000000 1000.000000 0.000000 +38 3 7280.000000 1000.000000 0.000000 +39 3 728.000000 0.000000 0.000000 +40 3 1456.000000 0.000000 0.000000 +41 3 2184.000000 0.000000 0.000000 +42 3 2912.000000 0.000000 0.000000 +43 3 3640.000000 0.000000 0.000000 +44 3 4368.000000 0.000000 0.000000 +45 3 5096.000000 0.000000 0.000000 +46 3 5824.000000 0.000000 0.000000 +47 3 6552.000000 0.000000 0.000000 +48 3 7280.000000 0.000000 0.000000 +49 3 8000.000000 500.000000 500.000000 +50 3 0.000000 500.000000 500.000000 +51 3 4732.000000 500.000001 499.999999 +52 3 0.000000 500.000000 1000.000000 +53 3 364.000000 1000.000000 1000.000000 +54 3 1092.000000 1000.000000 1000.000000 +55 3 1820.000000 1000.000000 1000.000000 +56 3 2548.000000 1000.000000 1000.000000 +57 3 3276.000000 1000.000000 1000.000000 +58 3 4004.000000 1000.000000 1000.000000 +59 3 4732.000000 1000.000000 1000.000000 +60 3 5460.000000 1000.000000 1000.000000 +61 3 6188.000000 1000.000000 1000.000000 +62 3 6916.000000 1000.000000 1000.000000 +63 3 7640.000000 1000.000000 1000.000000 +64 3 8000.000000 500.000000 1000.000000 +65 3 364.000000 0.000000 1000.000000 +66 3 1092.000000 0.000000 1000.000000 +67 3 1820.000000 0.000000 1000.000000 +68 3 2548.000000 0.000000 1000.000000 +69 3 3276.000000 0.000000 1000.000000 +70 3 4004.000000 0.000000 1000.000000 +71 3 4732.000000 0.000000 1000.000000 +72 3 5460.000000 0.000000 1000.000000 +73 3 6188.000000 0.000000 1000.000000 +74 3 6916.000000 0.000000 1000.000000 +75 3 7640.000000 0.000000 1000.000000 +76 3 0.000000 500.000000 0.000000 +77 3 364.000000 1000.000000 0.000000 +78 3 1092.000000 1000.000000 0.000000 +79 3 1820.000000 1000.000000 0.000000 +80 3 2548.000000 1000.000000 0.000000 +81 3 3276.000000 1000.000000 0.000000 +82 3 4004.000000 1000.000000 0.000000 +83 3 4732.000000 1000.000000 0.000000 +84 3 5460.000000 1000.000000 0.000000 +85 3 6188.000000 1000.000000 0.000000 +86 3 6916.000000 1000.000000 0.000000 +87 3 7640.000000 1000.000000 0.000000 +88 3 8000.000000 500.000000 0.000000 +89 3 364.000000 0.000000 0.000000 +90 3 1092.000000 0.000000 0.000000 +91 3 1820.000000 0.000000 0.000000 +92 3 2548.000000 0.000000 0.000000 +93 3 3276.000000 0.000000 0.000000 +94 3 4004.000000 0.000000 0.000000 +95 3 4732.000000 0.000000 0.000000 +96 3 5460.000000 0.000000 0.000000 +97 3 6188.000000 0.000000 0.000000 +98 3 6916.000000 0.000000 0.000000 +99 3 7640.000000 0.000000 0.000000 +100 3 8000.000000 1000.000000 500.000000 +101 3 0.000000 1000.000000 500.000000 +102 3 8000.000000 0.000000 500.000000 +103 3 0.000000 0.000000 500.000000 +104 3 364.000000 500.000000 1000.000000 +105 3 728.000000 500.000000 1000.000000 +106 3 1092.000000 500.000000 1000.000000 +107 3 1456.000000 500.000000 1000.000000 +108 3 1820.000000 500.000000 1000.000000 +109 3 2184.000000 500.000000 1000.000000 +110 3 2548.000000 500.000000 1000.000000 +111 3 3276.000000 500.000000 1000.000000 +112 3 3640.000000 500.000000 1000.000000 +113 3 4004.000000 500.000000 1000.000000 +114 3 4368.000000 500.000000 1000.000000 +115 3 4732.000000 500.000000 1000.000000 +116 3 5096.000000 500.000000 1000.000000 +117 3 5460.000000 500.000000 1000.000000 +118 3 5824.000000 500.000000 1000.000000 +119 3 6188.000000 500.000000 1000.000000 +120 3 6552.000000 500.000000 1000.000000 +121 3 6916.000000 500.000000 1000.000000 +122 3 7640.000000 500.000000 1000.000000 +123 3 2912.000000 500.000000 1000.000000 +124 3 7280.000000 500.000000 1000.000000 +125 3 364.000000 500.000000 0.000000 +126 3 1092.000000 500.000000 0.000000 +127 3 728.000000 500.000000 0.000000 +128 3 1820.000000 500.000000 0.000000 +129 3 1456.000000 500.000000 0.000000 +130 3 2548.000000 500.000000 0.000000 +131 3 2184.000000 500.000000 0.000000 +132 3 3640.000000 500.000000 0.000000 +133 3 3276.000000 500.000000 0.000000 +134 3 4004.000000 500.000000 0.000000 +135 3 5096.000000 500.000000 0.000000 +136 3 4732.000000 500.000000 0.000000 +137 3 5460.000000 500.000000 0.000000 +138 3 6188.000000 500.000000 0.000000 +139 3 5824.000000 500.000000 0.000000 +140 3 6916.000000 500.000000 0.000000 +141 3 6552.000000 500.000000 0.000000 +142 3 7640.000000 500.000000 0.000000 +143 3 2912.000000 500.000000 0.000000 +144 3 4368.000000 500.000000 0.000000 +145 3 7280.000000 500.000000 0.000000 +146 3 364.000000 1000.000000 500.000000 +147 3 728.000000 1000.000000 500.000000 +148 3 1092.000000 1000.000000 500.000000 +149 3 1456.000000 1000.000000 500.000000 +150 3 1820.000000 1000.000000 500.000000 +151 3 2184.000000 1000.000000 500.000000 +152 3 2548.000000 1000.000000 500.000000 +153 3 3276.000000 1000.000000 500.000000 +154 3 3640.000000 1000.000000 500.000000 +155 3 4004.000000 1000.000000 500.000000 +156 3 4368.000000 1000.000000 500.000000 +157 3 4732.000000 1000.000000 500.000000 +158 3 5096.000000 1000.000000 500.000000 +159 3 5460.000000 1000.000000 500.000000 +160 3 5824.000000 1000.000000 500.000000 +161 3 6188.000000 1000.000000 500.000000 +162 3 6552.000000 1000.000000 500.000000 +163 3 6916.000000 1000.000000 500.000000 +164 3 7640.000000 1000.000000 500.000000 +165 3 2912.000000 1000.000000 500.000000 +166 3 7280.000000 1000.000000 500.000000 +167 3 364.000000 0.000000 500.000000 +168 3 1092.000000 0.000000 500.000000 +169 3 728.000000 0.000000 500.000000 +170 3 1820.000000 0.000000 500.000000 +171 3 1456.000000 0.000000 500.000000 +172 3 2548.000000 0.000000 500.000000 +173 3 2184.000000 0.000000 500.000000 +174 3 3640.000000 0.000000 500.000000 +175 3 3276.000000 0.000000 500.000000 +176 3 4004.000000 0.000000 500.000000 +177 3 5096.000000 0.000000 500.000000 +178 3 4732.000000 0.000000 500.000000 +179 3 5460.000000 0.000000 500.000000 +180 3 6188.000000 0.000000 500.000000 +181 3 5824.000000 0.000000 500.000000 +182 3 6916.000000 0.000000 500.000000 +183 3 6552.000000 0.000000 500.000000 +184 3 7640.000000 0.000000 500.000000 +185 3 2912.000000 0.000000 500.000000 +186 3 4368.000000 0.000000 500.000000 +187 3 7280.000000 0.000000 500.000000 +188 3 8000.000000 250.000000 250.000000 +189 3 8000.000000 250.000000 750.000000 +190 3 8000.000000 750.000000 750.000000 +191 3 8000.000000 750.000000 250.000000 +192 3 0.000000 250.000000 750.000000 +193 3 0.000000 250.000000 250.000000 +194 3 0.000000 750.000000 250.000000 +195 3 0.000000 750.000000 750.000000 +196 3 1456.000000 500.000000 500.000000 +197 3 6552.000000 500.000000 500.000000 +198 3 6916.000000 500.000000 500.000000 +199 3 2184.000000 500.000000 500.000000 +200 3 2548.000000 500.000000 500.000000 +201 3 2912.000000 500.000000 500.000000 +202 3 1820.000000 500.000000 500.000000 +203 3 7640.000000 750.000000 250.000000 +204 3 7640.000000 750.000000 750.000000 +205 3 7280.000000 500.000000 500.000000 +206 3 7640.000000 250.000000 250.000000 +207 3 5460.000000 500.000000 500.000000 +208 3 5096.000000 500.000000 500.000000 +209 3 6188.000000 500.000000 500.000000 +210 3 5824.000000 500.000000 500.000000 +211 3 364.000000 750.000000 250.000000 +212 3 364.000000 750.000000 750.000000 +213 3 364.000000 250.000000 250.000000 +214 3 1092.000000 500.000000 500.000000 +215 3 728.000000 500.000000 500.000000 +216 3 364.000000 250.000000 750.000000 +217 3 4550.000000 250.000001 249.999999 +218 3 4550.000000 750.000001 249.999999 +219 3 4550.000000 750.000001 749.999999 +220 3 4368.000000 500.000000 500.000000 +221 3 4550.000000 250.000001 749.999999 +222 3 4914.000000 250.000001 749.999999 +223 3 4914.000000 750.000001 749.999999 +224 3 3276.000000 500.000000 500.000000 +225 3 3640.000000 500.000000 500.000000 +226 3 4004.000000 500.000000 500.000000 +227 3 4914.000000 750.000001 249.999999 +228 3 4914.000000 250.000001 249.999999 +149 16 +40 19 20 10 168 66 171 106 107 196 +150 16 +10 31 40 30 150 128 196 79 129 149 +151 16 +38 17 47 18 163 197 140 62 198 166 +152 16 +32 41 12 11 130 200 165 199 56 152 +153 16 +12 32 42 41 165 143 201 130 92 200 +154 16 +42 21 22 12 172 68 185 110 123 201 +155 16 +10 31 11 40 150 151 55 128 202 196 +156 16 +11 12 21 41 56 110 109 200 173 199 +157 16 +20 41 40 11 170 91 171 199 202 108 +158 16 +20 41 11 21 170 199 108 173 109 67 +159 16 +32 11 31 41 152 151 80 199 131 130 +160 16 +11 10 40 20 55 196 202 107 171 108 +161 16 +38 17 37 47 163 162 86 197 141 140 +162 16 +38 18 48 49 166 205 145 204 206 203 +163 16 +46 15 36 45 207 159 139 208 137 96 +164 16 +47 16 37 46 209 161 141 210 138 97 +165 16 +18 4 49 2 122 189 204 64 190 63 +166 16 +18 17 47 27 62 197 198 120 183 121 +167 16 +38 18 47 48 166 198 140 205 98 145 +168 16 +12 23 22 42 111 69 123 175 185 201 +169 16 +26 47 17 27 180 197 119 183 120 73 +170 16 +50 29 6 9 211 146 195 147 53 212 +171 16 +27 48 47 18 182 98 183 205 198 121 +172 16 +8 7 50 39 103 193 192 89 213 167 +173 16 +40 9 30 39 214 148 129 215 126 90 +174 16 +42 21 12 41 172 110 201 173 200 92 +175 16 +50 9 39 29 212 215 213 147 127 211 +176 16 +29 7 39 50 125 89 127 193 213 211 +177 16 +31 11 40 41 151 202 128 199 91 131 +178 16 +47 16 17 37 209 61 197 161 162 141 +179 16 +40 9 10 30 214 54 196 148 149 129 +180 16 +2 38 1 49 164 87 100 203 191 190 +181 16 +2 38 49 18 164 203 190 166 204 63 +182 16 +48 49 3 38 206 188 99 203 142 145 +183 16 +38 49 3 1 203 188 142 191 88 87 +184 16 +49 4 48 3 189 184 206 102 99 188 +185 16 +28 48 18 4 187 205 124 184 122 75 +186 16 +49 18 48 4 204 205 206 122 184 189 +187 16 +7 50 29 5 193 211 125 194 77 76 +188 16 +50 6 29 5 195 146 211 101 77 194 +189 16 +50 9 6 19 212 53 195 105 104 216 +190 16 +50 19 39 9 216 169 213 105 215 212 +191 16 +50 19 6 8 216 104 195 65 52 192 +192 16 +40 9 19 10 214 105 168 54 106 196 +193 16 +51 44 14 34 217 220 219 144 156 218 +194 16 +51 24 14 44 221 114 219 186 220 217 +195 16 +25 15 51 24 116 223 222 115 221 71 +196 16 +43 12 13 32 224 57 225 165 153 133 +197 16 +43 12 42 23 224 201 93 111 175 174 +198 16 +43 12 23 13 224 111 174 57 112 225 +199 16 +43 12 32 42 224 165 133 201 143 93 +200 16 +34 13 44 14 155 226 144 58 220 156 +201 16 +14 24 51 15 114 221 219 115 223 59 +202 16 +23 24 44 14 70 186 176 114 220 113 +203 16 +33 32 43 13 81 133 132 153 225 154 +204 16 +34 33 43 13 82 132 134 154 225 155 +205 16 +35 14 51 15 157 219 227 59 223 158 +206 16 +25 45 51 15 177 228 222 208 223 116 +207 16 +44 43 23 13 94 174 176 225 112 226 +208 16 +35 34 51 14 83 218 227 156 219 157 +209 16 +46 15 16 36 207 60 210 159 160 139 +210 16 +36 35 45 15 84 135 137 158 208 159 +211 16 +37 36 46 16 85 139 138 160 210 161 +212 16 +25 26 46 16 72 181 179 118 210 117 +213 16 +47 16 26 17 209 118 180 61 119 197 +214 16 +47 16 46 26 209 210 97 118 181 180 +215 16 +27 28 48 18 74 187 182 124 205 121 +216 16 +35 34 45 51 83 136 135 218 228 227 +217 16 +13 14 23 44 58 113 112 220 176 226 +218 16 +44 25 51 24 178 222 217 71 221 186 +219 16 +44 45 51 25 95 228 217 177 222 178 +220 16 +46 15 25 16 207 116 179 60 117 210 +221 16 +46 15 45 25 207 208 96 116 177 179 +222 16 +50 8 39 19 192 167 213 65 169 216 +223 16 +35 51 45 15 227 228 135 223 208 158 +224 16 +34 44 13 43 144 226 155 94 225 134 +225 16 +51 44 34 45 217 144 218 95 136 228 +226 16 +9 29 30 39 147 78 148 127 126 215 +227 16 +40 9 39 19 214 215 90 105 169 168 diff --git a/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88i2.txt b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88i2.txt new file mode 100644 index 0000000000..2c30681eec --- /dev/null +++ b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88i2.txt @@ -0,0 +1,53 @@ +52 +1 3 1 -0.0 +2 3 1 -0.0 +3 3 1 -0.0 +4 3 1 -0.0 +5 1 2 0 +5 2 2 0 +5 3 2 0 +6 1 2 0 +6 2 2 0 +6 3 2 0 +7 1 2 0 +7 2 2 0 +7 3 2 0 +8 1 2 0 +8 2 2 0 +8 3 2 0 +49 3 1 -0.0 +50 1 2 0 +50 2 2 0 +50 3 2 0 +52 1 2 0 +52 2 2 0 +52 3 2 0 +64 3 1 -750000.0000000001 +76 1 2 0 +76 2 2 0 +76 3 2 0 +88 3 1 -750000.0000000001 +100 3 1 -750000.0000000001 +101 1 2 0 +101 2 2 0 +101 3 2 0 +102 3 1 -750000.0000000001 +103 1 2 0 +103 2 2 0 +103 3 2 0 +188 3 1 -1500000.0000000002 +189 3 1 -1500000.0000000002 +190 3 1 -1500000.0000000002 +191 3 1 -1500000.0000000002 +192 1 2 0 +192 2 2 0 +192 3 2 0 +193 1 2 0 +193 2 2 0 +193 3 2 0 +194 1 2 0 +194 2 2 0 +194 3 2 0 +195 1 2 0 +195 2 2 0 +195 3 2 0 diff --git a/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88i5.txt b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88i5.txt new file mode 100644 index 0000000000..2142470504 --- /dev/null +++ b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88i5.txt @@ -0,0 +1 @@ + 0 diff --git a/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88int.txt b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88int.txt new file mode 100644 index 0000000000..a6d9720f4e --- /dev/null +++ b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88int.txt @@ -0,0 +1,2 @@ +1 +1 79 4 0 diff --git a/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88man.txt b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88man.txt new file mode 100644 index 0000000000..2e6001a049 --- /dev/null +++ b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88man.txt @@ -0,0 +1,36 @@ +DYNAMIC START +--------------------------------------------------------------------------- +Z88V14OS +--------------------------------------------------------------------------- + +--------------------------------------------------------------------------- +GLOBAL +--------------------------------------------------------------------------- + +GLOBAL START + IBFLAG 0 + IPFLAG 0 + IHFLAG 0 +GLOBAL END + +--------------------------------------------------------------------------- +LINEAR SOLVER +--------------------------------------------------------------------------- + +SOLVER START + MAXIT 10000 + EPS 1e-007 + RALPHA 0.0001 + ROMEGA 1.1 +SOLVER END + +--------------------------------------------------------------------------- +STRESS +--------------------------------------------------------------------------- + +STRESS START + KDFLAG 0 + ISFLAG 0 +STRESS END + +DYNAMIC END diff --git a/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88mat.txt b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88mat.txt new file mode 100644 index 0000000000..03cb37caf3 --- /dev/null +++ b/src/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88mat.txt @@ -0,0 +1,2 @@ +1 +1 79 51.txt diff --git a/src/Mod/Fem/femtest/test_commands.sh b/src/Mod/Fem/femtest/test_commands.sh index 4b75775cb0..57b2d23101 100644 --- a/src/Mod/Fem/femtest/test_commands.sh +++ b/src/Mod/Fem/femtest/test_commands.sh @@ -17,6 +17,7 @@ make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_open make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_result make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_calculix make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_elmer +make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_z88 # classes @@ -34,6 +35,7 @@ make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_open.TestObjectOpen make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_result.TestResult make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_calculix.TestSolverCalculix make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_elmer.TestSolverElmer +make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_z88.TestSolverZ88 # methods @@ -94,6 +96,7 @@ make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_elmer.TestSolverElmer.t 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 +make -j 4 && ./bin/FreeCADCmd -t femtest.app.test_solver_z88.TestSolverZ88.test_solver_z88 # methods in FreeCAD @@ -382,3 +385,8 @@ import unittest unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName( 'femtest.app.test_solver_elmer.TestSolverElmer.test_ccxcantilever_prescribeddisplacement' )) + +import unittest +unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName( + 'femtest.app.test_solver_z88.TestSolverZ88.test_solver_z88' +))