From bf45cb16ee1715ccfdfeb5c3403c536724e46aa0 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Tue, 6 Jun 2017 16:55:50 +0100 Subject: [PATCH] FEM: unit tests, use FreeCADs native Python API to create the meshes --- src/Mod/Fem/App/CMakeLists.txt | 8 +- src/Mod/Fem/CMakeLists.txt | 15 +- src/Mod/Fem/TestFem.py | 35 +- src/Mod/Fem/test_files/__init__.py | 29 ++ src/Mod/Fem/test_files/ccx/__init__.py | 29 ++ src/Mod/Fem/test_files/ccx/cube_mesh.py | 417 ++++++++++++++++++++ src/Mod/Fem/test_files/ccx/mesh_points.csv | 280 ------------- src/Mod/Fem/test_files/ccx/mesh_volumes.csv | 129 ------ src/Mod/Fem/test_files/ccx/spine_mesh.py | 65 +++ 9 files changed, 567 insertions(+), 440 deletions(-) create mode 100644 src/Mod/Fem/test_files/__init__.py create mode 100644 src/Mod/Fem/test_files/ccx/__init__.py create mode 100644 src/Mod/Fem/test_files/ccx/cube_mesh.py delete mode 100644 src/Mod/Fem/test_files/ccx/mesh_points.csv delete mode 100644 src/Mod/Fem/test_files/ccx/mesh_volumes.csv create mode 100644 src/Mod/Fem/test_files/ccx/spine_mesh.py diff --git a/src/Mod/Fem/App/CMakeLists.txt b/src/Mod/Fem/App/CMakeLists.txt index 32b30a0478..2289e5bf2b 100644 --- a/src/Mod/Fem/App/CMakeLists.txt +++ b/src/Mod/Fem/App/CMakeLists.txt @@ -172,8 +172,9 @@ SET(FemGuiScripts_SRCS ) SET(FemTests_SRCS - test_files/ccx/mesh_points.csv - test_files/ccx/mesh_volumes.csv + test_files/__init__.py + test_files/ccx/__init__.py + test_files/ccx/cube_mesh.py test_files/ccx/cube_frequency.inp test_files/ccx/cube_frequency.dat test_files/ccx/cube_frequency.frd @@ -183,8 +184,7 @@ SET(FemTests_SRCS test_files/ccx/cube_static.frd test_files/ccx/cube_static_expected_values test_files/ccx/cube.fcstd - test_files/ccx/spine_points.csv - test_files/ccx/spine_volumes.csv + test_files/ccx/spine_mesh.py test_files/ccx/spine_thermomech.inp test_files/ccx/spine_thermomech.dat test_files/ccx/spine_thermomech.frd diff --git a/src/Mod/Fem/CMakeLists.txt b/src/Mod/Fem/CMakeLists.txt index c5af09758a..ba98c69d5a 100755 --- a/src/Mod/Fem/CMakeLists.txt +++ b/src/Mod/Fem/CMakeLists.txt @@ -129,8 +129,16 @@ INSTALL( INSTALL( FILES # changes on the file list here needs to be made in App/CMakeLists.txt as well - test_files/ccx/mesh_points.csv - test_files/ccx/mesh_volumes.csv + test_files/__init__.py + DESTINATION + Mod/Fem/test_files +) + +INSTALL( + FILES + # changes on the file list here needs to be made in App/CMakeLists.txt as well + test_files/ccx/__init__.py + test_files/ccx/cube_mesh.py test_files/ccx/cube_frequency.inp test_files/ccx/cube_frequency.dat test_files/ccx/cube_frequency.frd @@ -140,8 +148,7 @@ INSTALL( test_files/ccx/cube_static.frd test_files/ccx/cube_static_expected_values test_files/ccx/cube.fcstd - test_files/ccx/spine_points.csv - test_files/ccx/spine_volumes.csv + test_files/ccx/spine_mesh.py test_files/ccx/spine_thermomech.inp test_files/ccx/spine_thermomech.dat test_files/ccx/spine_thermomech.frd diff --git a/src/Mod/Fem/TestFem.py b/src/Mod/Fem/TestFem.py index 66ae61acdb..3e74fc9a53 100644 --- a/src/Mod/Fem/TestFem.py +++ b/src/Mod/Fem/TestFem.py @@ -55,11 +55,6 @@ thermomech_save_fc_file = thermomech_analysis_dir + '/' + thermomech_base_name + thermomech_analysis_inp_file = test_file_dir + '/' + thermomech_base_name + '.inp' thermomech_expected_values = test_file_dir + "/spine_thermomech_expected_values" -mesh_points_file = test_file_dir + '/mesh_points.csv' -mesh_volumes_file = test_file_dir + '/mesh_volumes.csv' -spine_points_file = test_file_dir + '/spine_points.csv' -spine_volumes_file = test_file_dir + '/spine_volumes.csv' - class FemTest(unittest.TestCase): def setUp(self): @@ -166,7 +161,12 @@ class FemCcxAnalysisTest(unittest.TestCase): analysis.Member = analysis.Member + [pressure_constraint] fcc_print('Checking FEM new mesh...') - mesh = import_csv_mesh(mesh_points_file, mesh_volumes_file) + from test_files.ccx.cube_mesh import create_nodes_cube, create_elements_cube + mesh = Fem.FemMesh() + ret = create_nodes_cube(mesh) + self.assertTrue(ret, "Import of mesh nodes failed") + ret = create_elements_cube(mesh) + self.assertTrue(ret, "Import of mesh volumes failed") mesh_object = self.active_doc.addObject('Fem::FemMeshObject', mesh_name) mesh_object.FemMesh = mesh self.assertTrue(mesh, "FemTest of new mesh failed") @@ -337,7 +337,12 @@ class FemCcxAnalysisTest(unittest.TestCase): analysis.Member = analysis.Member + [heatflux_constraint] fcc_print('Checking FEM new mesh...') - mesh = import_csv_mesh(spine_points_file, spine_volumes_file) + from test_files.ccx.spine_mesh import create_nodes_spine, create_elements_spine + mesh = Fem.FemMesh() + ret = create_nodes_spine(mesh) + self.assertTrue(ret, "Import of mesh nodes failed") + ret = create_elements_spine(mesh) + self.assertTrue(ret, "Import of mesh volumes failed") mesh_object = self.active_doc.addObject('Fem::FemMeshObject', mesh_name) mesh_object.FemMesh = mesh self.assertTrue(mesh, "FemTest of new mesh failed") @@ -407,22 +412,6 @@ def fcc_print(message): FreeCAD.Console.PrintMessage('{} \n'.format(message)) -def import_csv_mesh(import_points_file, import_volumes_file): - import csv - the_fem_mesh = Fem.FemMesh() - with open(import_points_file, 'r') as points_file: - reader = csv.reader(points_file) - for p in reader: - the_fem_mesh.addNode(float(p[1]), float(p[2]), float(p[3]), int(p[0])) - with open(import_volumes_file, 'r') as volumes_file: - reader = csv.reader(volumes_file) - for v in reader: - the_fem_mesh.addVolume([int(v[2]), int(v[1]), int(v[3]), int(v[4]), int(v[5]), - int(v[7]), int(v[6]), int(v[9]), int(v[8]), int(v[10])], - int(v[0])) - return the_fem_mesh - - def compare_inp_files(file_name1, file_name2): file1 = open(file_name1, 'r') f1 = file1.readlines() diff --git a/src/Mod/Fem/test_files/__init__.py b/src/Mod/Fem/test_files/__init__.py new file mode 100644 index 0000000000..e6b1283a31 --- /dev/null +++ b/src/Mod/Fem/test_files/__init__.py @@ -0,0 +1,29 @@ +# *************************************************************************** +# * * +# * Copyright (c) 2017 - Bernd Hahnebach * +# * * +# * 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__ = "Fem test cases" +__author__ = "Bernd Hahnebach" +__url__ = "http://www.freecadweb.org" + +## @package test_files +# \ingroup Fem +# \brief Fem test cases diff --git a/src/Mod/Fem/test_files/ccx/__init__.py b/src/Mod/Fem/test_files/ccx/__init__.py new file mode 100644 index 0000000000..2ac9d02513 --- /dev/null +++ b/src/Mod/Fem/test_files/ccx/__init__.py @@ -0,0 +1,29 @@ +# *************************************************************************** +# * * +# * Copyright (c) 2017 - Bernd Hahnebach * +# * * +# * 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__ = "Fem ccx test cases" +__author__ = "Bernd Hahnebach" +__url__ = "http://www.freecadweb.org" + +## @package ccx +# \ingroup Fem +# \brief Fem ccx test cases diff --git a/src/Mod/Fem/test_files/ccx/cube_mesh.py b/src/Mod/Fem/test_files/ccx/cube_mesh.py new file mode 100644 index 0000000000..5061e21e4f --- /dev/null +++ b/src/Mod/Fem/test_files/ccx/cube_mesh.py @@ -0,0 +1,417 @@ +def create_nodes_cube(femmesh): + # nodes + femmesh.addNode(0.0, 0.0, 0.0, 1) + femmesh.addNode(0.0, 0.0, 10.0, 2) + femmesh.addNode(0.0, 10.0, 0.0, 3) + femmesh.addNode(0.0, 10.0, 10.0, 4) + femmesh.addNode(10.0, 0.0, 0.0, 5) + femmesh.addNode(10.0, 0.0, 10.0, 6) + femmesh.addNode(10.0, 10.0, 0.0, 7) + femmesh.addNode(10.0, 10.0, 10.0, 8) + femmesh.addNode(0.0, 0.0, 5.0, 9) + femmesh.addNode(0.0, 0.0, 2.5, 10) + femmesh.addNode(0.0, 0.0, 7.5, 11) + femmesh.addNode(0.0, 5.0, 0.0, 12) + femmesh.addNode(0.0, 2.5, 0.0, 13) + femmesh.addNode(0.0, 7.5, 0.0, 14) + femmesh.addNode(0.0, 10.0, 5.0, 15) + femmesh.addNode(0.0, 10.0, 2.5, 16) + femmesh.addNode(0.0, 10.0, 7.5, 17) + femmesh.addNode(0.0, 5.0, 10.0, 18) + femmesh.addNode(0.0, 2.5, 10.0, 19) + femmesh.addNode(0.0, 7.5, 10.0, 20) + femmesh.addNode(10.0, 0.0, 5.0, 21) + femmesh.addNode(10.0, 0.0, 2.5, 22) + femmesh.addNode(10.0, 0.0, 7.5, 23) + femmesh.addNode(10.0, 5.0, 0.0, 24) + femmesh.addNode(10.0, 2.5, 0.0, 25) + femmesh.addNode(10.0, 7.5, 0.0, 26) + femmesh.addNode(10.0, 10.0, 5.0, 27) + femmesh.addNode(10.0, 10.0, 2.5, 28) + femmesh.addNode(10.0, 10.0, 7.5, 29) + femmesh.addNode(10.0, 5.0, 10.0, 30) + femmesh.addNode(10.0, 2.5, 10.0, 31) + femmesh.addNode(10.0, 7.5, 10.0, 32) + femmesh.addNode(5.0, 0.0, 0.0, 33) + femmesh.addNode(2.5, 0.0, 0.0, 34) + femmesh.addNode(7.5, 0.0, 0.0, 35) + femmesh.addNode(5.0, 0.0, 10.0, 36) + femmesh.addNode(2.5, 0.0, 10.0, 37) + femmesh.addNode(7.5, 0.0, 10.0, 38) + femmesh.addNode(5.0, 10.0, 0.0, 39) + femmesh.addNode(2.5, 10.0, 0.0, 40) + femmesh.addNode(7.5, 10.0, 0.0, 41) + femmesh.addNode(5.0, 10.0, 10.0, 42) + femmesh.addNode(2.5, 10.0, 10.0, 43) + femmesh.addNode(7.5, 10.0, 10.0, 44) + femmesh.addNode(0.0, 5.0, 5.0, 45) + femmesh.addNode(0.0, 2.5, 7.5, 46) + femmesh.addNode(0.0, 2.5, 2.5, 47) + femmesh.addNode(0.0, 7.5, 7.5, 48) + femmesh.addNode(0.0, 7.5, 2.5, 49) + femmesh.addNode(0.0, 1.25, 8.75, 50) + femmesh.addNode(0.0, 1.25, 6.25, 51) + femmesh.addNode(0.0, 2.5, 5.0, 52) + femmesh.addNode(0.0, 3.75, 6.25, 53) + femmesh.addNode(0.0, 1.25, 3.75, 54) + femmesh.addNode(0.0, 1.25, 1.25, 55) + femmesh.addNode(0.0, 3.75, 3.75, 56) + femmesh.addNode(0.0, 3.75, 1.25, 57) + femmesh.addNode(0.0, 5.0, 2.5, 58) + femmesh.addNode(0.0, 6.25, 1.25, 59) + femmesh.addNode(0.0, 8.75, 1.25, 60) + femmesh.addNode(0.0, 6.25, 3.75, 61) + femmesh.addNode(0.0, 3.75, 8.75, 62) + femmesh.addNode(0.0, 5.0, 7.5, 63) + femmesh.addNode(0.0, 8.75, 6.25, 64) + femmesh.addNode(0.0, 8.75, 8.75, 65) + femmesh.addNode(0.0, 6.25, 6.25, 66) + femmesh.addNode(0.0, 7.5, 5.0, 67) + femmesh.addNode(0.0, 6.25, 8.75, 68) + femmesh.addNode(0.0, 8.75, 3.75, 69) + femmesh.addNode(10.0, 5.0, 5.0, 70) + femmesh.addNode(10.0, 2.5, 7.5, 71) + femmesh.addNode(10.0, 7.5, 7.5, 72) + femmesh.addNode(10.0, 7.5, 2.5, 73) + femmesh.addNode(10.0, 2.5, 2.5, 74) + femmesh.addNode(10.0, 6.25, 8.75, 75) + femmesh.addNode(10.0, 8.75, 8.75, 76) + femmesh.addNode(10.0, 8.75, 6.25, 77) + femmesh.addNode(10.0, 5.0, 7.5, 78) + femmesh.addNode(10.0, 6.25, 6.25, 79) + femmesh.addNode(10.0, 7.5, 5.0, 80) + femmesh.addNode(10.0, 6.25, 1.25, 81) + femmesh.addNode(10.0, 8.75, 1.25, 82) + femmesh.addNode(10.0, 8.75, 3.75, 83) + femmesh.addNode(10.0, 6.25, 3.75, 84) + femmesh.addNode(10.0, 5.0, 2.5, 85) + femmesh.addNode(10.0, 3.75, 1.25, 86) + femmesh.addNode(10.0, 1.25, 1.25, 87) + femmesh.addNode(10.0, 1.25, 3.75, 88) + femmesh.addNode(10.0, 3.75, 3.75, 89) + femmesh.addNode(10.0, 2.5, 5.0, 90) + femmesh.addNode(10.0, 3.75, 8.75, 91) + femmesh.addNode(10.0, 1.25, 8.75, 92) + femmesh.addNode(10.0, 3.75, 6.25, 93) + femmesh.addNode(10.0, 1.25, 6.25, 94) + femmesh.addNode(5.0, 0.0, 5.0, 95) + femmesh.addNode(7.5, 0.0, 7.5, 96) + femmesh.addNode(7.5, 0.0, 2.5, 97) + femmesh.addNode(2.5, 0.0, 2.5, 98) + femmesh.addNode(2.5, 0.0, 7.5, 99) + femmesh.addNode(1.25, 0.0, 1.25, 100) + femmesh.addNode(1.25, 0.0, 3.75, 101) + femmesh.addNode(2.5, 0.0, 5.0, 102) + femmesh.addNode(3.75, 0.0, 3.75, 103) + femmesh.addNode(3.75, 0.0, 6.25, 104) + femmesh.addNode(1.25, 0.0, 6.25, 105) + femmesh.addNode(1.25, 0.0, 8.75, 106) + femmesh.addNode(6.25, 0.0, 6.25, 107) + femmesh.addNode(6.25, 0.0, 8.75, 108) + femmesh.addNode(5.0, 0.0, 7.5, 109) + femmesh.addNode(7.5, 0.0, 5.0, 110) + femmesh.addNode(8.75, 0.0, 6.25, 111) + femmesh.addNode(8.75, 0.0, 8.75, 112) + femmesh.addNode(6.25, 0.0, 3.75, 113) + femmesh.addNode(8.75, 0.0, 3.75, 114) + femmesh.addNode(5.0, 0.0, 2.5, 115) + femmesh.addNode(6.25, 0.0, 1.25, 116) + femmesh.addNode(8.75, 0.0, 1.25, 117) + femmesh.addNode(3.75, 0.0, 1.25, 118) + femmesh.addNode(3.75, 0.0, 8.75, 119) + femmesh.addNode(5.0, 10.0, 5.0, 120) + femmesh.addNode(7.5, 10.0, 2.5, 121) + femmesh.addNode(2.5, 10.0, 2.5, 122) + femmesh.addNode(7.5, 10.0, 7.5, 123) + femmesh.addNode(2.5, 10.0, 7.5, 124) + femmesh.addNode(6.25, 10.0, 8.75, 125) + femmesh.addNode(6.25, 10.0, 6.25, 126) + femmesh.addNode(5.0, 10.0, 7.5, 127) + femmesh.addNode(8.75, 10.0, 8.75, 128) + femmesh.addNode(3.75, 10.0, 8.75, 129) + femmesh.addNode(3.75, 10.0, 6.25, 130) + femmesh.addNode(1.25, 10.0, 8.75, 131) + femmesh.addNode(6.25, 10.0, 1.25, 132) + femmesh.addNode(5.0, 10.0, 2.5, 133) + femmesh.addNode(6.25, 10.0, 3.75, 134) + femmesh.addNode(8.75, 10.0, 1.25, 135) + femmesh.addNode(8.75, 10.0, 3.75, 136) + femmesh.addNode(7.5, 10.0, 5.0, 137) + femmesh.addNode(1.25, 10.0, 3.75, 138) + femmesh.addNode(2.5, 10.0, 5.0, 139) + femmesh.addNode(3.75, 10.0, 3.75, 140) + femmesh.addNode(1.25, 10.0, 1.25, 141) + femmesh.addNode(3.75, 10.0, 1.25, 142) + femmesh.addNode(8.75, 10.0, 6.25, 143) + femmesh.addNode(1.25, 10.0, 6.25, 144) + femmesh.addNode(5.0, 5.0, 0.0, 145) + femmesh.addNode(2.5, 7.5, 0.0, 146) + femmesh.addNode(7.5, 7.5, 0.0, 147) + femmesh.addNode(7.5, 2.5, 0.0, 148) + femmesh.addNode(2.5, 2.5, 0.0, 149) + femmesh.addNode(1.25, 3.75, 0.0, 150) + femmesh.addNode(1.25, 1.25, 0.0, 151) + femmesh.addNode(2.5, 5.0, 0.0, 152) + femmesh.addNode(1.25, 6.25, 0.0, 153) + femmesh.addNode(3.75, 6.25, 0.0, 154) + femmesh.addNode(3.75, 3.75, 0.0, 155) + femmesh.addNode(1.25, 8.75, 0.0, 156) + femmesh.addNode(3.75, 1.25, 0.0, 157) + femmesh.addNode(3.75, 8.75, 0.0, 158) + femmesh.addNode(5.0, 7.5, 0.0, 159) + femmesh.addNode(6.25, 8.75, 0.0, 160) + femmesh.addNode(6.25, 6.25, 0.0, 161) + femmesh.addNode(8.75, 8.75, 0.0, 162) + femmesh.addNode(8.75, 6.25, 0.0, 163) + femmesh.addNode(7.5, 5.0, 0.0, 164) + femmesh.addNode(8.75, 3.75, 0.0, 165) + femmesh.addNode(6.25, 3.75, 0.0, 166) + femmesh.addNode(6.25, 1.25, 0.0, 167) + femmesh.addNode(5.0, 2.5, 0.0, 168) + femmesh.addNode(8.75, 1.25, 0.0, 169) + femmesh.addNode(5.0, 5.0, 10.0, 170) + femmesh.addNode(7.5, 7.5, 10.0, 171) + femmesh.addNode(7.5, 2.5, 10.0, 172) + femmesh.addNode(2.5, 7.5, 10.0, 173) + femmesh.addNode(2.5, 2.5, 10.0, 174) + femmesh.addNode(3.75, 8.75, 10.0, 175) + femmesh.addNode(1.25, 8.75, 10.0, 176) + femmesh.addNode(3.75, 6.25, 10.0, 177) + femmesh.addNode(5.0, 7.5, 10.0, 178) + femmesh.addNode(6.25, 8.75, 10.0, 179) + femmesh.addNode(8.75, 8.75, 10.0, 180) + femmesh.addNode(6.25, 6.25, 10.0, 181) + femmesh.addNode(6.25, 1.25, 10.0, 182) + femmesh.addNode(6.25, 3.75, 10.0, 183) + femmesh.addNode(5.0, 2.5, 10.0, 184) + femmesh.addNode(8.75, 1.25, 10.0, 185) + femmesh.addNode(8.75, 3.75, 10.0, 186) + femmesh.addNode(7.5, 5.0, 10.0, 187) + femmesh.addNode(1.25, 6.25, 10.0, 188) + femmesh.addNode(2.5, 5.0, 10.0, 189) + femmesh.addNode(3.75, 1.25, 10.0, 190) + femmesh.addNode(3.75, 3.75, 10.0, 191) + femmesh.addNode(1.25, 1.25, 10.0, 192) + femmesh.addNode(1.25, 3.75, 10.0, 193) + femmesh.addNode(8.75, 6.25, 10.0, 194) + femmesh.addNode(3.75, 6.25, 6.25, 195) + femmesh.addNode(6.25, 3.75, 3.75, 196) + femmesh.addNode(1.25, 1.25, 2.5, 197) + femmesh.addNode(2.5, 1.25, 3.75, 198) + femmesh.addNode(4.375, 1.875, 3.125, 199) + femmesh.addNode(5.625, 1.875, 4.375, 200) + femmesh.addNode(3.125, 3.125, 3.125, 201) + femmesh.addNode(6.25, 7.5, 1.25, 202) + femmesh.addNode(7.5, 8.75, 1.25, 203) + femmesh.addNode(6.875, 6.875, 3.125, 204) + femmesh.addNode(6.875, 5.625, 1.875, 205) + femmesh.addNode(5.625, 4.375, 1.875, 206) + femmesh.addNode(8.75, 7.5, 3.75, 207) + femmesh.addNode(8.75, 8.75, 2.5, 208) + femmesh.addNode(7.5, 6.25, 8.75, 209) + femmesh.addNode(8.75, 7.5, 8.75, 210) + femmesh.addNode(8.75, 3.75, 7.5, 211) + femmesh.addNode(8.75, 2.5, 8.75, 212) + femmesh.addNode(3.75, 2.5, 8.75, 213) + femmesh.addNode(2.5, 1.25, 8.75, 214) + femmesh.addNode(1.25, 2.5, 1.25, 215) + femmesh.addNode(2.5, 3.75, 1.25, 216) + femmesh.addNode(8.75, 7.5, 6.25, 217) + femmesh.addNode(8.75, 8.75, 7.5, 218) + femmesh.addNode(7.5, 7.5, 5.0, 219) + femmesh.addNode(5.625, 6.875, 4.375, 220) + femmesh.addNode(8.125, 4.375, 4.375, 221) + femmesh.addNode(7.5, 5.0, 7.5, 222) + femmesh.addNode(6.875, 3.125, 6.875, 223) + femmesh.addNode(5.625, 4.375, 6.875, 224) + femmesh.addNode(5.0, 2.5, 7.5, 225) + femmesh.addNode(3.125, 3.125, 6.875, 226) + femmesh.addNode(4.375, 3.125, 5.625, 227) + femmesh.addNode(4.375, 5.625, 8.125, 228) + femmesh.addNode(2.5, 5.0, 2.5, 229) + femmesh.addNode(3.125, 4.375, 4.375, 230) + femmesh.addNode(5.625, 8.125, 6.875, 231) + femmesh.addNode(6.875, 5.625, 5.625, 232) + femmesh.addNode(4.375, 8.125, 5.625, 233) + femmesh.addNode(2.5, 2.5, 5.0, 234) + femmesh.addNode(5.0, 7.5, 2.5, 235) + femmesh.addNode(4.375, 5.625, 3.125, 236) + femmesh.addNode(1.875, 5.625, 5.625, 237) + femmesh.addNode(5.0, 5.0, 5.0, 238) + femmesh.addNode(8.75, 2.5, 1.25, 239) + femmesh.addNode(8.125, 4.375, 1.875, 240) + femmesh.addNode(8.125, 3.125, 3.125, 241) + femmesh.addNode(6.875, 3.125, 1.875, 242) + femmesh.addNode(8.75, 1.25, 2.5, 243) + femmesh.addNode(8.125, 1.875, 4.375, 244) + femmesh.addNode(6.875, 1.875, 3.125, 245) + femmesh.addNode(7.5, 1.25, 1.25, 246) + femmesh.addNode(5.625, 1.875, 1.875, 247) + femmesh.addNode(2.5, 8.75, 8.75, 248) + femmesh.addNode(3.125, 8.125, 6.875, 249) + femmesh.addNode(3.125, 6.875, 8.125, 250) + femmesh.addNode(4.375, 8.125, 8.125, 251) + femmesh.addNode(1.25, 8.75, 7.5, 252) + femmesh.addNode(1.875, 8.125, 5.625, 253) + femmesh.addNode(1.875, 6.875, 6.875, 254) + femmesh.addNode(1.25, 7.5, 8.75, 255) + femmesh.addNode(1.875, 5.625, 8.125, 256) + femmesh.addNode(3.125, 8.125, 4.375, 257) + femmesh.addNode(6.875, 1.875, 5.625, 258) + femmesh.addNode(1.875, 4.375, 6.875, 259) + femmesh.addNode(1.25, 8.75, 2.5, 260) + femmesh.addNode(1.25, 7.5, 1.25, 261) + femmesh.addNode(8.75, 7.5, 1.25, 262) + femmesh.addNode(7.5, 1.25, 8.75, 263) + femmesh.addNode(1.25, 2.5, 8.75, 264) + femmesh.addNode(2.5, 1.25, 1.25, 265) + femmesh.addNode(1.25, 1.25, 7.5, 266) + femmesh.addNode(7.5, 8.75, 8.75, 267) + femmesh.addNode(2.5, 8.75, 1.25, 268) + femmesh.addNode(8.75, 1.25, 7.5, 269) + femmesh.addNode(8.75, 6.25, 2.5, 270) + femmesh.addNode(1.25, 6.25, 2.5, 271) + femmesh.addNode(3.125, 6.875, 3.125, 272) + femmesh.addNode(3.75, 2.5, 1.25, 273) + femmesh.addNode(6.25, 1.25, 7.5, 274) + femmesh.addNode(8.75, 2.5, 6.25, 275) + femmesh.addNode(1.25, 2.5, 6.25, 276) + femmesh.addNode(6.25, 7.5, 8.75, 277) + femmesh.addNode(3.75, 8.75, 2.5, 278) + femmesh.addNode(2.5, 3.75, 8.75, 279) + femmesh.addNode(1.25, 7.5, 3.75, 280) + return True + + +def create_elements_cube(femmesh): + # elements + femmesh.addVolume([98L, 95L, 47L, 196L, 103L, 198L, 197L, 199L, 200L, 201L], 1) + femmesh.addVolume([121L, 147L, 145L, 196L, 203L, 161L, 202L, 204L, 205L, 206L], 2) + femmesh.addVolume([70L, 73L, 27L, 121L, 84L, 83L, 80L, 207L, 208L, 136L], 3) + femmesh.addVolume([170L, 72L, 30L, 171L, 209L, 75L, 187L, 181L, 210L, 194L], 4) + femmesh.addVolume([98L, 9L, 47L, 95L, 101L, 54L, 197L, 103L, 102L, 198L], 5) + femmesh.addVolume([70L, 172L, 30L, 71L, 211L, 186L, 78L, 93L, 212L, 91L], 6) + femmesh.addVolume([99L, 170L, 36L, 174L, 213L, 184L, 119L, 214L, 191L, 190L], 7) + femmesh.addVolume([47L, 12L, 149L, 145L, 57L, 150L, 215L, 216L, 152L, 155L], 8) + femmesh.addVolume([27L, 70L, 123L, 72L, 80L, 217L, 143L, 77L, 79L, 218L], 9) + femmesh.addVolume([147L, 39L, 121L, 145L, 160L, 132L, 203L, 161L, 159L, 202L], 10) + femmesh.addVolume([120L, 70L, 121L, 196L, 219L, 207L, 134L, 220L, 221L, 204L], 11) + femmesh.addVolume([172L, 70L, 170L, 196L, 211L, 222L, 183L, 223L, 221L, 224L], 12) + femmesh.addVolume([99L, 95L, 170L, 195L, 104L, 225L, 213L, 226L, 227L, 228L], 13) + femmesh.addVolume([45L, 145L, 47L, 196L, 229L, 216L, 56L, 230L, 206L, 201L], 14) + femmesh.addVolume([123L, 70L, 120L, 195L, 217L, 219L, 126L, 231L, 232L, 233L], 15) + femmesh.addVolume([45L, 47L, 95L, 196L, 56L, 198L, 234L, 230L, 201L, 200L], 16) + femmesh.addVolume([120L, 121L, 145L, 196L, 134L, 202L, 235L, 220L, 204L, 206L], 17) + femmesh.addVolume([39L, 145L, 120L, 121L, 159L, 235L, 133L, 132L, 202L, 134L], 18) + femmesh.addVolume([120L, 70L, 27L, 121L, 219L, 80L, 137L, 134L, 207L, 136L], 19) + femmesh.addVolume([47L, 9L, 45L, 95L, 54L, 52L, 56L, 198L, 102L, 234L], 20) + femmesh.addVolume([27L, 70L, 120L, 123L, 80L, 219L, 137L, 143L, 217L, 126L], 21) + femmesh.addVolume([47L, 45L, 12L, 145L, 56L, 58L, 57L, 216L, 229L, 152L], 22) + femmesh.addVolume([95L, 170L, 36L, 99L, 225L, 184L, 109L, 104L, 213L, 119L], 23) + femmesh.addVolume([45L, 195L, 145L, 196L, 237L, 236L, 229L, 230L, 238L, 206L], 24) + femmesh.addVolume([45L, 95L, 195L, 196L, 234L, 227L, 237L, 230L, 200L, 238L], 25) + femmesh.addVolume([95L, 170L, 195L, 196L, 225L, 228L, 227L, 200L, 224L, 238L], 26) + femmesh.addVolume([170L, 70L, 195L, 196L, 222L, 232L, 228L, 224L, 221L, 238L], 27) + femmesh.addVolume([120L, 195L, 70L, 196L, 233L, 232L, 219L, 220L, 238L, 221L], 28) + femmesh.addVolume([120L, 145L, 195L, 196L, 235L, 236L, 233L, 220L, 206L, 238L], 29) + femmesh.addVolume([24L, 74L, 148L, 196L, 86L, 239L, 165L, 240L, 241L, 242L], 30) + femmesh.addVolume([74L, 21L, 97L, 196L, 88L, 114L, 243L, 241L, 244L, 245L], 31) + femmesh.addVolume([33L, 148L, 97L, 196L, 167L, 246L, 116L, 247L, 242L, 245L], 32) + femmesh.addVolume([124L, 173L, 42L, 195L, 248L, 175L, 129L, 249L, 250L, 251L], 33) + femmesh.addVolume([15L, 48L, 124L, 195L, 64L, 252L, 144L, 253L, 254L, 249L], 34) + femmesh.addVolume([48L, 18L, 173L, 195L, 68L, 188L, 255L, 254L, 256L, 250L], 35) + femmesh.addVolume([70L, 74L, 24L, 196L, 89L, 86L, 85L, 221L, 241L, 240L], 36) + femmesh.addVolume([18L, 170L, 173L, 195L, 189L, 177L, 188L, 256L, 228L, 250L], 37) + femmesh.addVolume([74L, 70L, 21L, 196L, 89L, 90L, 88L, 241L, 221L, 244L], 38) + femmesh.addVolume([123L, 120L, 42L, 195L, 126L, 127L, 125L, 231L, 233L, 251L], 39) + femmesh.addVolume([173L, 170L, 42L, 195L, 177L, 178L, 175L, 250L, 228L, 251L], 40) + femmesh.addVolume([124L, 42L, 120L, 195L, 129L, 127L, 130L, 249L, 251L, 233L], 41) + femmesh.addVolume([122L, 15L, 120L, 195L, 138L, 139L, 140L, 257L, 253L, 233L], 42) + femmesh.addVolume([15L, 124L, 120L, 195L, 144L, 130L, 139L, 253L, 249L, 233L], 43) + femmesh.addVolume([48L, 15L, 45L, 195L, 64L, 67L, 66L, 254L, 253L, 237L], 44) + femmesh.addVolume([147L, 24L, 145L, 196L, 163L, 164L, 161L, 205L, 240L, 206L], 45) + femmesh.addVolume([97L, 95L, 33L, 196L, 113L, 115L, 116L, 245L, 200L, 247L], 46) + femmesh.addVolume([98L, 33L, 95L, 196L, 118L, 115L, 103L, 199L, 247L, 200L], 47) + femmesh.addVolume([96L, 95L, 21L, 196L, 107L, 110L, 111L, 258L, 200L, 244L], 48) + femmesh.addVolume([95L, 97L, 21L, 196L, 113L, 114L, 110L, 200L, 245L, 244L], 49) + femmesh.addVolume([33L, 145L, 148L, 196L, 168L, 166L, 167L, 247L, 206L, 242L], 50) + femmesh.addVolume([145L, 24L, 148L, 196L, 164L, 165L, 166L, 206L, 240L, 242L], 51) + femmesh.addVolume([45L, 18L, 48L, 195L, 63L, 68L, 66L, 237L, 256L, 254L], 52) + femmesh.addVolume([18L, 45L, 46L, 195L, 63L, 53L, 62L, 256L, 237L, 259L], 53) + femmesh.addVolume([124L, 48L, 173L, 195L, 252L, 255L, 248L, 249L, 254L, 250L], 54) + femmesh.addVolume([97L, 148L, 74L, 196L, 246L, 239L, 243L, 245L, 242L, 241L], 55) + femmesh.addVolume([24L, 74L, 5L, 148L, 86L, 87L, 25L, 165L, 239L, 169L], 56) + femmesh.addVolume([49L, 3L, 122L, 15L, 60L, 141L, 260L, 69L, 16L, 138L], 57) + femmesh.addVolume([12L, 146L, 49L, 3L, 153L, 261L, 59L, 14L, 156L, 60L], 58) + femmesh.addVolume([124L, 15L, 4L, 48L, 144L, 17L, 131L, 252L, 64L, 65L], 59) + femmesh.addVolume([1L, 149L, 47L, 12L, 151L, 215L, 55L, 13L, 150L, 57L], 60) + femmesh.addVolume([7L, 147L, 73L, 24L, 162L, 262L, 82L, 26L, 163L, 81L], 61) + femmesh.addVolume([172L, 36L, 6L, 96L, 182L, 38L, 185L, 263L, 108L, 112L], 62) + femmesh.addVolume([47L, 98L, 1L, 9L, 197L, 100L, 55L, 54L, 101L, 10L], 63) + femmesh.addVolume([174L, 2L, 46L, 18L, 192L, 50L, 264L, 193L, 19L, 62L], 64) + femmesh.addVolume([149L, 1L, 98L, 33L, 151L, 100L, 265L, 157L, 34L, 118L], 65) + femmesh.addVolume([173L, 48L, 4L, 18L, 255L, 65L, 176L, 188L, 68L, 20L], 66) + femmesh.addVolume([72L, 30L, 171L, 8L, 75L, 194L, 210L, 76L, 32L, 180L], 67) + femmesh.addVolume([21L, 97L, 5L, 74L, 114L, 117L, 22L, 88L, 243L, 87L], 68) + femmesh.addVolume([46L, 9L, 2L, 99L, 51L, 11L, 50L, 266L, 105L, 106L], 69) + femmesh.addVolume([123L, 8L, 171L, 42L, 128L, 180L, 267L, 125L, 44L, 179L], 70) + femmesh.addVolume([5L, 97L, 33L, 148L, 117L, 116L, 35L, 169L, 246L, 167L], 71) + femmesh.addVolume([174L, 99L, 2L, 36L, 214L, 106L, 192L, 190L, 119L, 37L], 72) + femmesh.addVolume([124L, 173L, 4L, 42L, 248L, 176L, 131L, 129L, 175L, 43L], 73) + femmesh.addVolume([122L, 3L, 146L, 39L, 141L, 156L, 268L, 142L, 40L, 158L], 74) + femmesh.addVolume([72L, 8L, 123L, 27L, 76L, 128L, 218L, 77L, 29L, 143L], 75) + femmesh.addVolume([172L, 71L, 6L, 30L, 212L, 92L, 185L, 186L, 91L, 31L], 76) + femmesh.addVolume([121L, 147L, 7L, 39L, 203L, 162L, 135L, 132L, 160L, 41L], 77) + femmesh.addVolume([121L, 73L, 27L, 7L, 208L, 83L, 136L, 135L, 82L, 28L], 78) + femmesh.addVolume([6L, 71L, 96L, 21L, 92L, 269L, 112L, 23L, 94L, 111L], 79) + femmesh.addVolume([49L, 146L, 122L, 3L, 261L, 268L, 260L, 60L, 156L, 141L], 80) + femmesh.addVolume([46L, 2L, 174L, 99L, 50L, 192L, 264L, 266L, 106L, 214L], 81) + femmesh.addVolume([171L, 123L, 72L, 8L, 267L, 218L, 210L, 180L, 128L, 76L], 82) + femmesh.addVolume([73L, 7L, 121L, 147L, 82L, 135L, 208L, 262L, 162L, 203L], 83) + femmesh.addVolume([4L, 173L, 124L, 48L, 176L, 248L, 131L, 65L, 255L, 252L], 84) + femmesh.addVolume([172L, 96L, 6L, 71L, 263L, 112L, 185L, 212L, 269L, 92L], 85) + femmesh.addVolume([5L, 74L, 97L, 148L, 87L, 243L, 117L, 169L, 239L, 246L], 86) + femmesh.addVolume([98L, 1L, 149L, 47L, 100L, 151L, 265L, 197L, 55L, 215L], 87) + femmesh.addVolume([121L, 147L, 70L, 73L, 203L, 270L, 207L, 208L, 262L, 84L], 88) + femmesh.addVolume([147L, 121L, 70L, 196L, 203L, 207L, 270L, 205L, 204L, 221L], 89) + femmesh.addVolume([70L, 147L, 24L, 73L, 270L, 163L, 85L, 84L, 262L, 81L], 90) + femmesh.addVolume([147L, 70L, 24L, 196L, 270L, 85L, 163L, 205L, 221L, 240L], 91) + femmesh.addVolume([195L, 146L, 45L, 145L, 272L, 271L, 237L, 236L, 154L, 229L], 92) + femmesh.addVolume([45L, 12L, 146L, 49L, 58L, 153L, 271L, 61L, 59L, 261L], 93) + femmesh.addVolume([45L, 146L, 12L, 145L, 271L, 153L, 58L, 229L, 154L, 152L], 94) + femmesh.addVolume([47L, 98L, 145L, 149L, 197L, 273L, 216L, 215L, 265L, 155L], 95) + femmesh.addVolume([47L, 145L, 98L, 196L, 216L, 273L, 197L, 201L, 206L, 199L], 96) + femmesh.addVolume([98L, 33L, 145L, 149L, 118L, 168L, 273L, 265L, 157L, 155L], 97) + femmesh.addVolume([98L, 145L, 33L, 196L, 273L, 168L, 118L, 199L, 206L, 247L], 98) + femmesh.addVolume([196L, 95L, 172L, 96L, 200L, 274L, 223L, 258L, 107L, 263L], 99) + femmesh.addVolume([196L, 172L, 95L, 170L, 223L, 274L, 200L, 224L, 183L, 225L], 100) + femmesh.addVolume([95L, 36L, 172L, 96L, 109L, 182L, 274L, 107L, 108L, 263L], 101) + femmesh.addVolume([95L, 172L, 36L, 170L, 274L, 182L, 109L, 225L, 183L, 184L], 102) + femmesh.addVolume([70L, 96L, 172L, 71L, 275L, 263L, 211L, 93L, 269L, 212L], 103) + femmesh.addVolume([70L, 172L, 96L, 196L, 211L, 263L, 275L, 221L, 223L, 258L], 104) + femmesh.addVolume([21L, 96L, 70L, 71L, 111L, 275L, 90L, 94L, 269L, 93L], 105) + femmesh.addVolume([21L, 70L, 96L, 196L, 90L, 275L, 111L, 244L, 221L, 258L], 106) + femmesh.addVolume([195L, 45L, 99L, 95L, 237L, 276L, 226L, 227L, 234L, 104L], 107) + femmesh.addVolume([195L, 99L, 45L, 46L, 226L, 276L, 237L, 259L, 266L, 53L], 108) + femmesh.addVolume([45L, 9L, 99L, 95L, 52L, 105L, 276L, 234L, 102L, 104L], 109) + femmesh.addVolume([45L, 99L, 9L, 46L, 276L, 105L, 52L, 53L, 266L, 51L], 110) + femmesh.addVolume([170L, 123L, 72L, 171L, 277L, 218L, 209L, 181L, 267L, 210L], 111) + femmesh.addVolume([170L, 42L, 123L, 171L, 178L, 125L, 277L, 181L, 179L, 267L], 112) + femmesh.addVolume([42L, 170L, 123L, 195L, 178L, 277L, 125L, 251L, 228L, 231L], 113) + femmesh.addVolume([70L, 170L, 123L, 72L, 222L, 277L, 217L, 79L, 209L, 218L], 114) + femmesh.addVolume([70L, 123L, 170L, 195L, 217L, 277L, 222L, 232L, 231L, 228L], 115) + femmesh.addVolume([146L, 120L, 195L, 122L, 278L, 233L, 272L, 268L, 140L, 257L], 116) + femmesh.addVolume([120L, 146L, 195L, 145L, 278L, 272L, 233L, 235L, 154L, 236L], 117) + femmesh.addVolume([146L, 39L, 120L, 122L, 158L, 133L, 278L, 268L, 142L, 140L], 118) + femmesh.addVolume([39L, 146L, 120L, 145L, 158L, 278L, 133L, 159L, 154L, 235L], 119) + femmesh.addVolume([99L, 46L, 170L, 174L, 266L, 279L, 213L, 214L, 264L, 191L], 120) + femmesh.addVolume([99L, 170L, 46L, 195L, 213L, 279L, 266L, 226L, 228L, 259L], 121) + femmesh.addVolume([46L, 18L, 170L, 174L, 62L, 189L, 279L, 264L, 193L, 191L], 122) + femmesh.addVolume([46L, 170L, 18L, 195L, 279L, 189L, 62L, 259L, 228L, 256L], 123) + femmesh.addVolume([30L, 70L, 170L, 172L, 78L, 222L, 187L, 186L, 211L, 183L], 124) + femmesh.addVolume([30L, 170L, 70L, 72L, 187L, 222L, 78L, 75L, 209L, 79L], 125) + femmesh.addVolume([45L, 122L, 146L, 195L, 280L, 268L, 271L, 237L, 257L, 272L], 126) + femmesh.addVolume([45L, 146L, 122L, 49L, 271L, 268L, 280L, 61L, 261L, 260L], 127) + femmesh.addVolume([15L, 122L, 45L, 195L, 138L, 280L, 67L, 253L, 257L, 237L], 128) + femmesh.addVolume([15L, 45L, 122L, 49L, 67L, 280L, 138L, 69L, 61L, 260L], 129) + return True diff --git a/src/Mod/Fem/test_files/ccx/mesh_points.csv b/src/Mod/Fem/test_files/ccx/mesh_points.csv deleted file mode 100644 index ac61f4b474..0000000000 --- a/src/Mod/Fem/test_files/ccx/mesh_points.csv +++ /dev/null @@ -1,280 +0,0 @@ -1, 0, 0, 0 -2, 0, 0, 10 -3, 0, 10, 0 -4, 0, 10, 10 -5, 10, 0, 0 -6, 10, 0, 10 -7, 10, 10, 0 -8, 10, 10, 10 -9, 0, 0, 5 -10, 0, 0, 2.5 -11, 0, 0, 7.5 -12, 0, 5, 0 -13, 0, 2.5, 0 -14, 0, 7.5, 0 -15, 0, 10, 5 -16, 0, 10, 2.5 -17, 0, 10, 7.5 -18, 0, 5, 10 -19, 0, 2.5, 10 -20, 0, 7.5, 10 -21, 10, 0, 5 -22, 10, 0, 2.5 -23, 10, 0, 7.5 -24, 10, 5, 0 -25, 10, 2.5, 0 -26, 10, 7.5, 0 -27, 10, 10, 5 -28, 10, 10, 2.5 -29, 10, 10, 7.5 -30, 10, 5, 10 -31, 10, 2.5, 10 -32, 10, 7.5, 10 -33, 5, 0, 0 -34, 2.5, 0, 0 -35, 7.5, 0, 0 -36, 5, 0, 10 -37, 2.5, 0, 10 -38, 7.5, 0, 10 -39, 5, 10, 0 -40, 2.5, 10, 0 -41, 7.5, 10, 0 -42, 5, 10, 10 -43, 2.5, 10, 10 -44, 7.5, 10, 10 -45, 0, 5, 5 -46, 0, 2.5, 7.5 -47, 0, 2.5, 2.5 -48, 0, 7.5, 7.5 -49, 0, 7.5, 2.5 -50, 0, 1.25, 8.75 -51, 0, 1.25, 6.25 -52, 0, 2.5, 5 -53, 0, 3.75, 6.25 -54, 0, 1.25, 3.75 -55, 0, 1.25, 1.25 -56, 0, 3.75, 3.75 -57, 0, 3.75, 1.25 -58, 0, 5, 2.5 -59, 0, 6.25, 1.25 -60, 0, 8.75, 1.25 -61, 0, 6.25, 3.75 -62, 0, 3.75, 8.75 -63, 0, 5, 7.5 -64, 0, 8.75, 6.25 -65, 0, 8.75, 8.75 -66, 0, 6.25, 6.25 -67, 0, 7.5, 5 -68, 0, 6.25, 8.75 -69, 0, 8.75, 3.75 -70, 10, 5, 5 -71, 10, 2.5, 7.5 -72, 10, 7.5, 7.5 -73, 10, 7.5, 2.5 -74, 10, 2.5, 2.5 -75, 10, 6.25, 8.75 -76, 10, 8.75, 8.75 -77, 10, 8.75, 6.25 -78, 10, 5, 7.5 -79, 10, 6.25, 6.25 -80, 10, 7.5, 5 -81, 10, 6.25, 1.25 -82, 10, 8.75, 1.25 -83, 10, 8.75, 3.75 -84, 10, 6.25, 3.75 -85, 10, 5, 2.5 -86, 10, 3.75, 1.25 -87, 10, 1.25, 1.25 -88, 10, 1.25, 3.75 -89, 10, 3.75, 3.75 -90, 10, 2.5, 5 -91, 10, 3.75, 8.75 -92, 10, 1.25, 8.75 -93, 10, 3.75, 6.25 -94, 10, 1.25, 6.25 -95, 5, 0, 5 -96, 7.5, 0, 7.5 -97, 7.5, 0, 2.5 -98, 2.5, 0, 2.5 -99, 2.5, 0, 7.5 -100, 1.25, 0, 1.25 -101, 1.25, 0, 3.75 -102, 2.5, 0, 5 -103, 3.75, 0, 3.75 -104, 3.75, 0, 6.25 -105, 1.25, 0, 6.25 -106, 1.25, 0, 8.75 -107, 6.25, 0, 6.25 -108, 6.25, 0, 8.75 -109, 5, 0, 7.5 -110, 7.5, 0, 5 -111, 8.75, 0, 6.25 -112, 8.75, 0, 8.75 -113, 6.25, 0, 3.75 -114, 8.75, 0, 3.75 -115, 5, 0, 2.5 -116, 6.25, 0, 1.25 -117, 8.75, 0, 1.25 -118, 3.75, 0, 1.25 -119, 3.75, 0, 8.75 -120, 5, 10, 5 -121, 7.5, 10, 2.5 -122, 2.5, 10, 2.5 -123, 7.5, 10, 7.5 -124, 2.5, 10, 7.5 -125, 6.25, 10, 8.75 -126, 6.25, 10, 6.25 -127, 5, 10, 7.5 -128, 8.75, 10, 8.75 -129, 3.75, 10, 8.75 -130, 3.75, 10, 6.25 -131, 1.25, 10, 8.75 -132, 6.25, 10, 1.25 -133, 5, 10, 2.5 -134, 6.25, 10, 3.75 -135, 8.75, 10, 1.25 -136, 8.75, 10, 3.75 -137, 7.5, 10, 5 -138, 1.25, 10, 3.75 -139, 2.5, 10, 5 -140, 3.75, 10, 3.75 -141, 1.25, 10, 1.25 -142, 3.75, 10, 1.25 -143, 8.75, 10, 6.25 -144, 1.25, 10, 6.25 -145, 5, 5, 0 -146, 2.5, 7.5, 0 -147, 7.5, 7.5, 0 -148, 7.5, 2.5, 0 -149, 2.5, 2.5, 0 -150, 1.25, 3.75, 0 -151, 1.25, 1.25, 0 -152, 2.5, 5, 0 -153, 1.25, 6.25, 0 -154, 3.75, 6.25, 0 -155, 3.75, 3.75, 0 -156, 1.25, 8.75, 0 -157, 3.75, 1.25, 0 -158, 3.75, 8.75, 0 -159, 5, 7.5, 0 -160, 6.25, 8.75, 0 -161, 6.25, 6.25, 0 -162, 8.75, 8.75, 0 -163, 8.75, 6.25, 0 -164, 7.5, 5, 0 -165, 8.75, 3.75, 0 -166, 6.25, 3.75, 0 -167, 6.25, 1.25, 0 -168, 5, 2.5, 0 -169, 8.75, 1.25, 0 -170, 5, 5, 10 -171, 7.5, 7.5, 10 -172, 7.5, 2.5, 10 -173, 2.5, 7.5, 10 -174, 2.5, 2.5, 10 -175, 3.75, 8.75, 10 -176, 1.25, 8.75, 10 -177, 3.75, 6.25, 10 -178, 5, 7.5, 10 -179, 6.25, 8.75, 10 -180, 8.75, 8.75, 10 -181, 6.25, 6.25, 10 -182, 6.25, 1.25, 10 -183, 6.25, 3.75, 10 -184, 5, 2.5, 10 -185, 8.75, 1.25, 10 -186, 8.75, 3.75, 10 -187, 7.5, 5, 10 -188, 1.25, 6.25, 10 -189, 2.5, 5, 10 -190, 3.75, 1.25, 10 -191, 3.75, 3.75, 10 -192, 1.25, 1.25, 10 -193, 1.25, 3.75, 10 -194, 8.75, 6.25, 10 -195, 3.75, 6.25, 6.25 -196, 6.25, 3.75, 3.75 -197, 1.25, 1.25, 2.5 -198, 2.5, 1.25, 3.75 -199, 4.375, 1.875, 3.125 -200, 5.625, 1.875, 4.375 -201, 3.125, 3.125, 3.125 -202, 6.25, 7.5, 1.25 -203, 7.5, 8.75, 1.25 -204, 6.875, 6.875, 3.125 -205, 6.875, 5.625, 1.875 -206, 5.625, 4.375, 1.875 -207, 8.75, 7.5, 3.75 -208, 8.75, 8.75, 2.5 -209, 7.5, 6.25, 8.75 -210, 8.75, 7.5, 8.75 -211, 8.75, 3.75, 7.5 -212, 8.75, 2.5, 8.75 -213, 3.75, 2.5, 8.75 -214, 2.5, 1.25, 8.75 -215, 1.25, 2.5, 1.25 -216, 2.5, 3.75, 1.25 -217, 8.75, 7.5, 6.25 -218, 8.75, 8.75, 7.5 -219, 7.5, 7.5, 5 -220, 5.625, 6.875, 4.375 -221, 8.125, 4.375, 4.375 -222, 7.5, 5, 7.5 -223, 6.875, 3.125, 6.875 -224, 5.625, 4.375, 6.875 -225, 5, 2.5, 7.5 -226, 3.125, 3.125, 6.875 -227, 4.375, 3.125, 5.625 -228, 4.375, 5.625, 8.125 -229, 2.5, 5, 2.5 -230, 3.125, 4.375, 4.375 -231, 5.625, 8.125, 6.875 -232, 6.875, 5.625, 5.625 -233, 4.375, 8.125, 5.625 -234, 2.5, 2.5, 5 -235, 5, 7.5, 2.5 -236, 4.375, 5.625, 3.125 -237, 1.875, 5.625, 5.625 -238, 5, 5, 5 -239, 8.75, 2.5, 1.25 -240, 8.125, 4.375, 1.875 -241, 8.125, 3.125, 3.125 -242, 6.875, 3.125, 1.875 -243, 8.75, 1.25, 2.5 -244, 8.125, 1.875, 4.375 -245, 6.875, 1.875, 3.125 -246, 7.5, 1.25, 1.25 -247, 5.625, 1.875, 1.875 -248, 2.5, 8.75, 8.75 -249, 3.125, 8.125, 6.875 -250, 3.125, 6.875, 8.125 -251, 4.375, 8.125, 8.125 -252, 1.25, 8.75, 7.5 -253, 1.875, 8.125, 5.625 -254, 1.875, 6.875, 6.875 -255, 1.25, 7.5, 8.75 -256, 1.875, 5.625, 8.125 -257, 3.125, 8.125, 4.375 -258, 6.875, 1.875, 5.625 -259, 1.875, 4.375, 6.875 -260, 1.25, 8.75, 2.5 -261, 1.25, 7.5, 1.25 -262, 8.75, 7.5, 1.25 -263, 7.5, 1.25, 8.75 -264, 1.25, 2.5, 8.75 -265, 2.5, 1.25, 1.25 -266, 1.25, 1.25, 7.5 -267, 7.5, 8.75, 8.75 -268, 2.5, 8.75, 1.25 -269, 8.75, 1.25, 7.5 -270, 8.75, 6.25, 2.5 -271, 1.25, 6.25, 2.5 -272, 3.125, 6.875, 3.125 -273, 3.75, 2.5, 1.25 -274, 6.25, 1.25, 7.5 -275, 8.75, 2.5, 6.25 -276, 1.25, 2.5, 6.25 -277, 6.25, 7.5, 8.75 -278, 3.75, 8.75, 2.5 -279, 2.5, 3.75, 8.75 -280, 1.25, 7.5, 3.75 diff --git a/src/Mod/Fem/test_files/ccx/mesh_volumes.csv b/src/Mod/Fem/test_files/ccx/mesh_volumes.csv deleted file mode 100644 index 3048d7b7ad..0000000000 --- a/src/Mod/Fem/test_files/ccx/mesh_volumes.csv +++ /dev/null @@ -1,129 +0,0 @@ -1, 95, 98, 47, 196, 103, 197, 198, 200, 199, 201, -2, 147, 121, 145, 196, 203, 202, 161, 205, 204, 206, -3, 73, 70, 27, 121, 84, 80, 83, 208, 207, 136, -4, 72, 170, 30, 171, 209, 187, 75, 210, 181, 194, -5, 9, 98, 47, 95, 101, 197, 54, 102, 103, 198, -6, 172, 70, 30, 71, 211, 78, 186, 212, 93, 91, -7, 170, 99, 36, 174, 213, 119, 184, 191, 214, 190, -8, 12, 47, 149, 145, 57, 215, 150, 152, 216, 155, -9, 70, 27, 123, 72, 80, 143, 217, 79, 77, 218, -10, 39, 147, 121, 145, 160, 203, 132, 159, 161, 202, -11, 70, 120, 121, 196, 219, 134, 207, 221, 220, 204, -12, 70, 172, 170, 196, 211, 183, 222, 221, 223, 224, -13, 95, 99, 170, 195, 104, 213, 225, 227, 226, 228, -14, 145, 45, 47, 196, 229, 56, 216, 206, 230, 201, -15, 70, 123, 120, 195, 217, 126, 219, 232, 231, 233, -16, 47, 45, 95, 196, 56, 234, 198, 201, 230, 200, -17, 121, 120, 145, 196, 134, 235, 202, 204, 220, 206, -18, 145, 39, 120, 121, 159, 133, 235, 202, 132, 134, -19, 70, 120, 27, 121, 219, 137, 80, 207, 134, 136, -20, 9, 47, 45, 95, 54, 56, 52, 102, 198, 234, -21, 70, 27, 120, 123, 80, 137, 219, 217, 143, 126, -22, 45, 47, 12, 145, 56, 57, 58, 229, 216, 152, -23, 170, 95, 36, 99, 225, 109, 184, 213, 104, 119, -24, 195, 45, 145, 196, 237, 229, 236, 238, 230, 206, -25, 95, 45, 195, 196, 234, 237, 227, 200, 230, 238, -26, 170, 95, 195, 196, 225, 227, 228, 224, 200, 238, -27, 70, 170, 195, 196, 222, 228, 232, 221, 224, 238, -28, 195, 120, 70, 196, 233, 219, 232, 238, 220, 221, -29, 145, 120, 195, 196, 235, 233, 236, 206, 220, 238, -30, 74, 24, 148, 196, 86, 165, 239, 241, 240, 242, -31, 21, 74, 97, 196, 88, 243, 114, 244, 241, 245, -32, 148, 33, 97, 196, 167, 116, 246, 242, 247, 245, -33, 173, 124, 42, 195, 248, 129, 175, 250, 249, 251, -34, 48, 15, 124, 195, 64, 144, 252, 254, 253, 249, -35, 18, 48, 173, 195, 68, 255, 188, 256, 254, 250, -36, 74, 70, 24, 196, 89, 85, 86, 241, 221, 240, -37, 170, 18, 173, 195, 189, 188, 177, 228, 256, 250, -38, 70, 74, 21, 196, 89, 88, 90, 221, 241, 244, -39, 120, 123, 42, 195, 126, 125, 127, 233, 231, 251, -40, 170, 173, 42, 195, 177, 175, 178, 228, 250, 251, -41, 42, 124, 120, 195, 129, 130, 127, 251, 249, 233, -42, 15, 122, 120, 195, 138, 140, 139, 253, 257, 233, -43, 124, 15, 120, 195, 144, 139, 130, 249, 253, 233, -44, 15, 48, 45, 195, 64, 66, 67, 253, 254, 237, -45, 24, 147, 145, 196, 163, 161, 164, 240, 205, 206, -46, 95, 97, 33, 196, 113, 116, 115, 200, 245, 247, -47, 33, 98, 95, 196, 118, 103, 115, 247, 199, 200, -48, 95, 96, 21, 196, 107, 111, 110, 200, 258, 244, -49, 97, 95, 21, 196, 113, 110, 114, 245, 200, 244, -50, 145, 33, 148, 196, 168, 167, 166, 206, 247, 242, -51, 24, 145, 148, 196, 164, 166, 165, 240, 206, 242, -52, 18, 45, 48, 195, 63, 66, 68, 256, 237, 254, -53, 45, 18, 46, 195, 63, 62, 53, 237, 256, 259, -54, 48, 124, 173, 195, 252, 248, 255, 254, 249, 250, -55, 148, 97, 74, 196, 246, 243, 239, 242, 245, 241, -56, 74, 24, 5, 148, 86, 25, 87, 239, 165, 169, -57, 3, 49, 122, 15, 60, 260, 141, 16, 69, 138, -58, 146, 12, 49, 3, 153, 59, 261, 156, 14, 60, -59, 15, 124, 4, 48, 144, 131, 17, 64, 252, 65, -60, 149, 1, 47, 12, 151, 55, 215, 150, 13, 57, -61, 147, 7, 73, 24, 162, 82, 262, 163, 26, 81, -62, 36, 172, 6, 96, 182, 185, 38, 108, 263, 112, -63, 98, 47, 1, 9, 197, 55, 100, 101, 54, 10, -64, 2, 174, 46, 18, 192, 264, 50, 19, 193, 62, -65, 1, 149, 98, 33, 151, 265, 100, 34, 157, 118, -66, 48, 173, 4, 18, 255, 176, 65, 68, 188, 20, -67, 30, 72, 171, 8, 75, 210, 194, 32, 76, 180, -68, 97, 21, 5, 74, 114, 22, 117, 243, 88, 87, -69, 9, 46, 2, 99, 51, 50, 11, 105, 266, 106, -70, 8, 123, 171, 42, 128, 267, 180, 44, 125, 179, -71, 97, 5, 33, 148, 117, 35, 116, 246, 169, 167, -72, 99, 174, 2, 36, 214, 192, 106, 119, 190, 37, -73, 173, 124, 4, 42, 248, 131, 176, 175, 129, 43, -74, 3, 122, 146, 39, 141, 268, 156, 40, 142, 158, -75, 8, 72, 123, 27, 76, 218, 128, 29, 77, 143, -76, 71, 172, 6, 30, 212, 185, 92, 91, 186, 31, -77, 147, 121, 7, 39, 203, 135, 162, 160, 132, 41, -78, 73, 121, 27, 7, 208, 136, 83, 82, 135, 28, -79, 71, 6, 96, 21, 92, 112, 269, 94, 23, 111, -80, 146, 49, 122, 3, 261, 260, 268, 156, 60, 141, -81, 2, 46, 174, 99, 50, 264, 192, 106, 266, 214, -82, 123, 171, 72, 8, 267, 210, 218, 128, 180, 76, -83, 7, 73, 121, 147, 82, 208, 135, 162, 262, 203, -84, 173, 4, 124, 48, 176, 131, 248, 255, 65, 252, -85, 96, 172, 6, 71, 263, 185, 112, 269, 212, 92, -86, 74, 5, 97, 148, 87, 117, 243, 239, 169, 246, -87, 1, 98, 149, 47, 100, 265, 151, 55, 197, 215, -88, 147, 121, 70, 73, 203, 207, 270, 262, 208, 84, -89, 121, 147, 70, 196, 203, 270, 207, 204, 205, 221, -90, 147, 70, 24, 73, 270, 85, 163, 262, 84, 81, -91, 70, 147, 24, 196, 270, 163, 85, 221, 205, 240, -92, 146, 195, 45, 145, 272, 237, 271, 154, 236, 229, -93, 12, 45, 146, 49, 58, 271, 153, 59, 61, 261, -94, 146, 45, 12, 145, 271, 58, 153, 154, 229, 152, -95, 98, 47, 145, 149, 197, 216, 273, 265, 215, 155, -96, 145, 47, 98, 196, 216, 197, 273, 206, 201, 199, -97, 33, 98, 145, 149, 118, 273, 168, 157, 265, 155, -98, 145, 98, 33, 196, 273, 118, 168, 206, 199, 247, -99, 95, 196, 172, 96, 200, 223, 274, 107, 258, 263, -100, 172, 196, 95, 170, 223, 200, 274, 183, 224, 225, -101, 36, 95, 172, 96, 109, 274, 182, 108, 107, 263, -102, 172, 95, 36, 170, 274, 109, 182, 183, 225, 184, -103, 96, 70, 172, 71, 275, 211, 263, 269, 93, 212, -104, 172, 70, 96, 196, 211, 275, 263, 223, 221, 258, -105, 96, 21, 70, 71, 111, 90, 275, 269, 94, 93, -106, 70, 21, 96, 196, 90, 111, 275, 221, 244, 258, -107, 45, 195, 99, 95, 237, 226, 276, 234, 227, 104, -108, 99, 195, 45, 46, 226, 237, 276, 266, 259, 53, -109, 9, 45, 99, 95, 52, 276, 105, 102, 234, 104, -110, 99, 45, 9, 46, 276, 52, 105, 266, 53, 51, -111, 123, 170, 72, 171, 277, 209, 218, 267, 181, 210, -112, 42, 170, 123, 171, 178, 277, 125, 179, 181, 267, -113, 170, 42, 123, 195, 178, 125, 277, 228, 251, 231, -114, 170, 70, 123, 72, 222, 217, 277, 209, 79, 218, -115, 123, 70, 170, 195, 217, 222, 277, 231, 232, 228, -116, 120, 146, 195, 122, 278, 272, 233, 140, 268, 257, -117, 146, 120, 195, 145, 278, 233, 272, 154, 235, 236, -118, 39, 146, 120, 122, 158, 278, 133, 142, 268, 140, -119, 146, 39, 120, 145, 158, 133, 278, 154, 159, 235, -120, 46, 99, 170, 174, 266, 213, 279, 264, 214, 191, -121, 170, 99, 46, 195, 213, 266, 279, 228, 226, 259, -122, 18, 46, 170, 174, 62, 279, 189, 193, 264, 191, -123, 170, 46, 18, 195, 279, 62, 189, 228, 259, 256, -124, 70, 30, 170, 172, 78, 187, 222, 211, 186, 183, -125, 170, 30, 70, 72, 187, 78, 222, 209, 75, 79, -126, 122, 45, 146, 195, 280, 271, 268, 257, 237, 272, -127, 146, 45, 122, 49, 271, 280, 268, 261, 61, 260, -128, 122, 15, 45, 195, 138, 67, 280, 257, 253, 237, -129, 45, 15, 122, 49, 67, 138, 280, 61, 69, 260, diff --git a/src/Mod/Fem/test_files/ccx/spine_mesh.py b/src/Mod/Fem/test_files/ccx/spine_mesh.py new file mode 100644 index 0000000000..c8dc068f1d --- /dev/null +++ b/src/Mod/Fem/test_files/ccx/spine_mesh.py @@ -0,0 +1,65 @@ +def create_nodes_spine(femmesh): + # nodes + femmesh.addNode(203.2, 25.4, 0.0, 1) + femmesh.addNode(203.2, 25.4, 25.4, 2) + femmesh.addNode(203.2, 0.0, 0.0, 3) + femmesh.addNode(203.2, 0.0, 25.4, 4) + femmesh.addNode(0.0, 25.4, 0.0, 5) + femmesh.addNode(0.0, 25.4, 25.4, 6) + femmesh.addNode(0.0, 0.0, 0.0, 7) + femmesh.addNode(0.0, 0.0, 25.4, 8) + femmesh.addNode(98.3488, 25.4, 25.4, 9) + femmesh.addNode(102.616, 0.0, 25.4, 10) + femmesh.addNode(98.3488, 25.4, 0.0, 11) + femmesh.addNode(102.616, 0.0, 0.0, 12) + femmesh.addNode(0.0, 12.7, 25.4, 13) + femmesh.addNode(49.1744, 25.4, 25.4, 14) + femmesh.addNode(150.774, 25.4, 25.4, 15) + femmesh.addNode(203.2, 12.7, 25.4, 16) + femmesh.addNode(51.308, 0.0, 25.4, 17) + femmesh.addNode(152.908, 0.0, 25.4, 18) + femmesh.addNode(0.0, 12.7, 0.0, 19) + femmesh.addNode(49.1744, 25.4, 0.0, 20) + femmesh.addNode(150.774, 25.4, 0.0, 21) + femmesh.addNode(203.2, 12.7, 0.0, 22) + femmesh.addNode(51.308, 0.0, 0.0, 23) + femmesh.addNode(152.908, 0.0, 0.0, 24) + femmesh.addNode(203.2, 25.4, 12.7, 25) + femmesh.addNode(0.0, 25.4, 12.7, 26) + femmesh.addNode(203.2, 0.0, 12.7, 27) + femmesh.addNode(0.0, 0.0, 12.7, 28) + femmesh.addNode(0.0, 12.7, 12.7, 29) + femmesh.addNode(51.308, 12.7, 25.4, 30) + femmesh.addNode(100.482, 12.7, 25.4, 31) + femmesh.addNode(152.908, 12.7, 25.4, 32) + femmesh.addNode(51.308, 12.7, 0.0, 33) + femmesh.addNode(100.482, 12.7, 0.0, 34) + femmesh.addNode(152.908, 12.7, 0.0, 35) + femmesh.addNode(203.2, 12.7, 12.7, 36) + femmesh.addNode(49.1744, 25.4, 12.7, 37) + femmesh.addNode(150.774, 25.4, 12.7, 38) + femmesh.addNode(98.3488, 25.4, 12.7, 39) + femmesh.addNode(51.308, 0.0, 12.7, 40) + femmesh.addNode(152.908, 0.0, 12.7, 41) + femmesh.addNode(102.616, 0.0, 12.7, 42) + femmesh.addNode(51.308, 12.7, 12.7, 43) + femmesh.addNode(100.482, 12.7, 12.7, 44) + femmesh.addNode(152.908, 12.7, 12.7, 45) + return True + + +def create_elements_spine(femmesh): + # elements + femmesh.addVolume([6L, 5L, 12L, 11L, 26L, 33L, 43L, 37L, 20L, 34L], 1) + femmesh.addVolume([12L, 9L, 11L, 2L, 44L, 39L, 34L, 45L, 15L, 38L], 2) + femmesh.addVolume([4L, 3L, 1L, 12L, 27L, 22L, 36L, 41L, 24L, 35L], 3) + femmesh.addVolume([12L, 2L, 11L, 1L, 45L, 38L, 34L, 35L, 25L, 21L], 4) + femmesh.addVolume([12L, 2L, 1L, 4L, 45L, 25L, 35L, 41L, 16L, 36L], 5) + femmesh.addVolume([12L, 9L, 2L, 10L, 44L, 15L, 45L, 42L, 31L, 32L], 6) + femmesh.addVolume([12L, 2L, 4L, 10L, 45L, 16L, 41L, 42L, 32L, 18L], 7) + femmesh.addVolume([12L, 9L, 10L, 6L, 44L, 31L, 42L, 43L, 14L, 30L], 8) + femmesh.addVolume([12L, 9L, 6L, 11L, 44L, 14L, 43L, 34L, 39L, 37L], 9) + femmesh.addVolume([7L, 6L, 5L, 12L, 29L, 26L, 19L, 23L, 43L, 33L], 10) + femmesh.addVolume([7L, 8L, 6L, 12L, 28L, 13L, 29L, 23L, 40L, 43L], 11) + femmesh.addVolume([10L, 12L, 6L, 8L, 42L, 43L, 30L, 17L, 40L, 13L], 12) + return True