diff --git a/src/Mod/Fem/CMakeLists.txt b/src/Mod/Fem/CMakeLists.txt index 8096c7140e..b73ac60203 100755 --- a/src/Mod/Fem/CMakeLists.txt +++ b/src/Mod/Fem/CMakeLists.txt @@ -44,6 +44,7 @@ SET(FemExamples_SRCS femexamples/__init__.py femexamples/boxanalysis_static.py femexamples/boxanalysis_frequency.py + femexamples/ccx_buckling_flexuralbuckling.py femexamples/ccx_cantilever_faceload.py femexamples/ccx_cantilever_nodeload.py femexamples/ccx_cantilever_hexa20faceload.py @@ -85,6 +86,7 @@ SET(FemExampleMeshes_SRCS femexamples/meshes/mesh_contact_tube_tube_tria3.py femexamples/meshes/mesh_eigenvalue_of_elastic_beam_tetra10.py femexamples/meshes/mesh_electricforce_elmer_nongui6_tetra10.py + femexamples/meshes/mesh_flexural_buckling.py femexamples/meshes/mesh_multibodybeam_tetra10.py femexamples/meshes/mesh_multibodybeam_tria6.py femexamples/meshes/mesh_platewithhole_tetra10.py diff --git a/src/Mod/Fem/femexamples/ccx_buckling_flexuralbuckling.py b/src/Mod/Fem/femexamples/ccx_buckling_flexuralbuckling.py new file mode 100644 index 0000000000..825e2b7b1b --- /dev/null +++ b/src/Mod/Fem/femexamples/ccx_buckling_flexuralbuckling.py @@ -0,0 +1,177 @@ +# *************************************************************************** +# * Copyright (c) 2019 Bernd Hahnebach * +# * Copyright (c) 2020 Sudhanshu Dubey * +# * Copyright (c) 2021 Tobias Vaara * +# * * +# * 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 * +# * * +# *************************************************************************** + +# to run the example use: +""" +from femexamples.ccx_buckling_flexuralbuckling import setup +setup() + +""" + +# Forum discussion +# https://forum.freecadweb.org/viewtopic.php?f=18&t=20217&start=90 + +# This example is based on Calculix own verification example. +# http://www.feacluster.com/CalculiX/ccx_2.13/doc/ccx/input_deck_viewer.php?input_deck=beam8b.inp + +import FreeCAD +import Fem +import ObjectsFem + + +mesh_name = "Mesh" # needs to be Mesh to work with unit tests + +# Example geometry input + +b = 1.5 # Width +h = 8 # Height +l = 1 # Length + + +def addbox( + docxx, height, width, length, + x, y, z, box_name): + + box_obj = docxx.addObject('Part::Box', box_name) + box_obj.Height = height + box_obj.Width = width + box_obj.Length = length + box_obj.Placement = FreeCAD.Placement( + FreeCAD.Vector(x, y, z), + FreeCAD.Rotation(0, 0, 0)) + + +def init_doc(doc=None): + if doc is None: + doc = FreeCAD.newDocument() + return doc + + +def get_information(): + info = {"name": "Flexural Buckling Analysis", + "meshtype": "solid", + "meshelement": "Hexa8", + "constraints": ["force", "displacement"], + "solvers": ["calculix"], + "material": "solid", + "equation": "mechanical" + } + return info + + +def setup_base(doc=None, solvertype="ccxtools"): + + # setup box base model + if doc is None: + doc = init_doc() + + addbox(doc, h, b, l, 0, 0, 0, 'beam') + + doc.recompute() + + geom_obj = doc.beam + + if FreeCAD.GuiUp: + geom_obj.ViewObject.Document.activeView().viewAxonometric() + geom_obj.ViewObject.Document.activeView().fitAll() + + # analysis + analysis = ObjectsFem.makeAnalysis(doc, "Analysis") + + # material + material_object = analysis.addObject(ObjectsFem.makeMaterialSolid(doc, "MechanicalMaterial"))[0] + mat = material_object.Material + mat["Name"] = "CalculiX-Steel" + mat["YoungsModulus"] = "210000 MPa" + mat["PoissonRatio"] = "0.30" + mat["Density"] = "7900 kg/m^3" + material_object.Material = mat + + # mesh + from .meshes.mesh_flexural_buckling import create_nodes, create_elements + + fem_mesh = Fem.FemMesh() + control = create_nodes(fem_mesh) + if not control: + FreeCAD.Console.PrintError("Error on creating nodes.\n") + control = create_elements(fem_mesh) + if not control: + FreeCAD.Console.PrintError("Error on creating elements.\n") + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj.FemMesh = fem_mesh + femmesh_obj.Part = doc.beam + + + return doc + + +def setup(doc=None, solvertype="ccxtools"): + #setup + + doc = setup_base(doc, solvertype) + + analysis = doc.Analysis + + # solver, + if solvertype == "calculix": + solver_object = analysis.addObject( + ObjectsFem.makeSolverCalculix(doc, "SolverCalculiX") + )[0] + elif solvertype == "ccxtools": + solver_object = analysis.addObject( + ObjectsFem.makeSolverCalculixCcxTools(doc, "CalculiXccxTools") + )[0] + solver_object.WorkingDir = u"" + + else: + FreeCAD.Console.PrintWarning( + "Not known or not supported solver type: {}. " + "No solver object was created.\n".format(solvertype) + ) + if solvertype == "calculix" or solvertype == "ccxtools": + solver_object.SplitInputWriter = False + solver_object.AnalysisType = "buckling" + solver_object.BucklingFactors = 10 + solver_object.GeometricalNonlinearity = "linear" + solver_object.ThermoMechSteadyState = False + solver_object.MatrixSolverType = "default" + solver_object.IterationsControlParameterTimeUse = False + + ## displacement constraint + displacement_constraint = ObjectsFem.makeConstraintFixed(doc, "FemConstraintDisplacement") + displacement_constraint.References = [(doc.beam, "Face5")] + analysis.addObject(displacement_constraint) + + ## force_constraint + force_constraint = ObjectsFem.makeConstraintForce(doc, "FemConstraintForce") + force_constraint.References = [(doc.beam, "Face6")] + force_constraint.Force = 21 + force_constraint.Reversed = True + analysis.addObject(force_constraint) + + doc.recompute() + + return doc + diff --git a/src/Mod/Fem/femexamples/meshes/mesh_flexural_buckling.py b/src/Mod/Fem/femexamples/meshes/mesh_flexural_buckling.py new file mode 100644 index 0000000000..bbb0b6596b --- /dev/null +++ b/src/Mod/Fem/femexamples/meshes/mesh_flexural_buckling.py @@ -0,0 +1,689 @@ +def create_nodes(femmesh): + # nodes + femmesh.addNode(0.0, 1.5, 0.0, 1) + femmesh.addNode(0.0, 1.5, 0.5, 2) + femmesh.addNode(0.0, 1.125, 0.5, 3) + femmesh.addNode(0.0, 1.125, 0.0, 4) + femmesh.addNode(0.25, 1.5, 0.0, 5) + femmesh.addNode(0.25, 1.5, 0.5, 6) + femmesh.addNode(0.25, 1.125, 0.5, 7) + femmesh.addNode(0.25, 1.125, 0.0, 8) + femmesh.addNode(0.0, 1.5, 1.0, 9) + femmesh.addNode(0.0, 1.125, 1.0, 10) + femmesh.addNode(0.25, 1.5, 1.0, 11) + femmesh.addNode(0.25, 1.125, 1.0, 12) + femmesh.addNode(0.0, 1.5, 1.5, 13) + femmesh.addNode(0.0, 1.125, 1.5, 14) + femmesh.addNode(0.25, 1.5, 1.5, 15) + femmesh.addNode(0.25, 1.125, 1.5, 16) + femmesh.addNode(0.0, 1.5, 2.0, 17) + femmesh.addNode(0.0, 1.125, 2.0, 18) + femmesh.addNode(0.25, 1.5, 2.0, 19) + femmesh.addNode(0.25, 1.125, 2.0, 20) + femmesh.addNode(0.0, 1.5, 2.5, 21) + femmesh.addNode(0.0, 1.125, 2.5, 22) + femmesh.addNode(0.25, 1.5, 2.5, 23) + femmesh.addNode(0.25, 1.125, 2.5, 24) + femmesh.addNode(0.0, 1.5, 3.0, 25) + femmesh.addNode(0.0, 1.125, 3.0, 26) + femmesh.addNode(0.25, 1.5, 3.0, 27) + femmesh.addNode(0.25, 1.125, 3.0, 28) + femmesh.addNode(0.0, 1.5, 3.5, 29) + femmesh.addNode(0.0, 1.125, 3.5, 30) + femmesh.addNode(0.25, 1.5, 3.5, 31) + femmesh.addNode(0.25, 1.125, 3.5, 32) + femmesh.addNode(0.0, 1.5, 4.0, 33) + femmesh.addNode(0.0, 1.125, 4.0, 34) + femmesh.addNode(0.25, 1.5, 4.0, 35) + femmesh.addNode(0.25, 1.125, 4.0, 36) + femmesh.addNode(0.0, 1.5, 4.5, 37) + femmesh.addNode(0.0, 1.125, 4.5, 38) + femmesh.addNode(0.25, 1.5, 4.5, 39) + femmesh.addNode(0.25, 1.125, 4.5, 40) + femmesh.addNode(0.0, 1.5, 5.0, 41) + femmesh.addNode(0.0, 1.125, 5.0, 42) + femmesh.addNode(0.25, 1.5, 5.0, 43) + femmesh.addNode(0.25, 1.125, 5.0, 44) + femmesh.addNode(0.0, 1.5, 5.5, 45) + femmesh.addNode(0.0, 1.125, 5.5, 46) + femmesh.addNode(0.25, 1.5, 5.5, 47) + femmesh.addNode(0.25, 1.125, 5.5, 48) + femmesh.addNode(0.0, 1.5, 6.0, 49) + femmesh.addNode(0.0, 1.125, 6.0, 50) + femmesh.addNode(0.25, 1.5, 6.0, 51) + femmesh.addNode(0.25, 1.125, 6.0, 52) + femmesh.addNode(0.0, 1.5, 6.5, 53) + femmesh.addNode(0.0, 1.125, 6.5, 54) + femmesh.addNode(0.25, 1.5, 6.5, 55) + femmesh.addNode(0.25, 1.125, 6.5, 56) + femmesh.addNode(0.0, 1.5, 7.0, 57) + femmesh.addNode(0.0, 1.125, 7.0, 58) + femmesh.addNode(0.25, 1.5, 7.0, 59) + femmesh.addNode(0.25, 1.125, 7.0, 60) + femmesh.addNode(0.0, 1.5, 7.5, 61) + femmesh.addNode(0.0, 1.125, 7.5, 62) + femmesh.addNode(0.25, 1.5, 7.5, 63) + femmesh.addNode(0.25, 1.125, 7.5, 64) + femmesh.addNode(0.0, 1.5, 8.0, 65) + femmesh.addNode(0.0, 1.125, 8.0, 66) + femmesh.addNode(0.25, 1.5, 8.0, 67) + femmesh.addNode(0.25, 1.125, 8.0, 68) + femmesh.addNode(0.5, 1.5, 0.0, 69) + femmesh.addNode(0.5, 1.5, 0.5, 70) + femmesh.addNode(0.5, 1.125, 0.5, 71) + femmesh.addNode(0.5, 1.125, 0.0, 72) + femmesh.addNode(0.5, 1.5, 1.0, 73) + femmesh.addNode(0.5, 1.125, 1.0, 74) + femmesh.addNode(0.5, 1.5, 1.5, 75) + femmesh.addNode(0.5, 1.125, 1.5, 76) + femmesh.addNode(0.5, 1.5, 2.0, 77) + femmesh.addNode(0.5, 1.125, 2.0, 78) + femmesh.addNode(0.5, 1.5, 2.5, 79) + femmesh.addNode(0.5, 1.125, 2.5, 80) + femmesh.addNode(0.5, 1.5, 3.0, 81) + femmesh.addNode(0.5, 1.125, 3.0, 82) + femmesh.addNode(0.5, 1.5, 3.5, 83) + femmesh.addNode(0.5, 1.125, 3.5, 84) + femmesh.addNode(0.5, 1.5, 4.0, 85) + femmesh.addNode(0.5, 1.125, 4.0, 86) + femmesh.addNode(0.5, 1.5, 4.5, 87) + femmesh.addNode(0.5, 1.125, 4.5, 88) + femmesh.addNode(0.5, 1.5, 5.0, 89) + femmesh.addNode(0.5, 1.125, 5.0, 90) + femmesh.addNode(0.5, 1.5, 5.5, 91) + femmesh.addNode(0.5, 1.125, 5.5, 92) + femmesh.addNode(0.5, 1.5, 6.0, 93) + femmesh.addNode(0.5, 1.125, 6.0, 94) + femmesh.addNode(0.5, 1.5, 6.5, 95) + femmesh.addNode(0.5, 1.125, 6.5, 96) + femmesh.addNode(0.5, 1.5, 7.0, 97) + femmesh.addNode(0.5, 1.125, 7.0, 98) + femmesh.addNode(0.5, 1.5, 7.5, 99) + femmesh.addNode(0.5, 1.125, 7.5, 100) + femmesh.addNode(0.5, 1.5, 8.0, 101) + femmesh.addNode(0.5, 1.125, 8.0, 102) + femmesh.addNode(0.75, 1.5, 0.0, 103) + femmesh.addNode(0.75, 1.5, 0.5, 104) + femmesh.addNode(0.75, 1.125, 0.5, 105) + femmesh.addNode(0.75, 1.125, 0.0, 106) + femmesh.addNode(0.75, 1.5, 1.0, 107) + femmesh.addNode(0.75, 1.125, 1.0, 108) + femmesh.addNode(0.75, 1.5, 1.5, 109) + femmesh.addNode(0.75, 1.125, 1.5, 110) + femmesh.addNode(0.75, 1.5, 2.0, 111) + femmesh.addNode(0.75, 1.125, 2.0, 112) + femmesh.addNode(0.75, 1.5, 2.5, 113) + femmesh.addNode(0.75, 1.125, 2.5, 114) + femmesh.addNode(0.75, 1.5, 3.0, 115) + femmesh.addNode(0.75, 1.125, 3.0, 116) + femmesh.addNode(0.75, 1.5, 3.5, 117) + femmesh.addNode(0.75, 1.125, 3.5, 118) + femmesh.addNode(0.75, 1.5, 4.0, 119) + femmesh.addNode(0.75, 1.125, 4.0, 120) + femmesh.addNode(0.75, 1.5, 4.5, 121) + femmesh.addNode(0.75, 1.125, 4.5, 122) + femmesh.addNode(0.75, 1.5, 5.0, 123) + femmesh.addNode(0.75, 1.125, 5.0, 124) + femmesh.addNode(0.75, 1.5, 5.5, 125) + femmesh.addNode(0.75, 1.125, 5.5, 126) + femmesh.addNode(0.75, 1.5, 6.0, 127) + femmesh.addNode(0.75, 1.125, 6.0, 128) + femmesh.addNode(0.75, 1.5, 6.5, 129) + femmesh.addNode(0.75, 1.125, 6.5, 130) + femmesh.addNode(0.75, 1.5, 7.0, 131) + femmesh.addNode(0.75, 1.125, 7.0, 132) + femmesh.addNode(0.75, 1.5, 7.5, 133) + femmesh.addNode(0.75, 1.125, 7.5, 134) + femmesh.addNode(0.75, 1.5, 8.0, 135) + femmesh.addNode(0.75, 1.125, 8.0, 136) + femmesh.addNode(1.0, 1.5, 0.0, 137) + femmesh.addNode(1.0, 1.5, 0.5, 138) + femmesh.addNode(1.0, 1.125, 0.5, 139) + femmesh.addNode(1.0, 1.125, 0.0, 140) + femmesh.addNode(1.0, 1.5, 1.0, 141) + femmesh.addNode(1.0, 1.125, 1.0, 142) + femmesh.addNode(1.0, 1.5, 1.5, 143) + femmesh.addNode(1.0, 1.125, 1.5, 144) + femmesh.addNode(1.0, 1.5, 2.0, 145) + femmesh.addNode(1.0, 1.125, 2.0, 146) + femmesh.addNode(1.0, 1.5, 2.5, 147) + femmesh.addNode(1.0, 1.125, 2.5, 148) + femmesh.addNode(1.0, 1.5, 3.0, 149) + femmesh.addNode(1.0, 1.125, 3.0, 150) + femmesh.addNode(1.0, 1.5, 3.5, 151) + femmesh.addNode(1.0, 1.125, 3.5, 152) + femmesh.addNode(1.0, 1.5, 4.0, 153) + femmesh.addNode(1.0, 1.125, 4.0, 154) + femmesh.addNode(1.0, 1.5, 4.5, 155) + femmesh.addNode(1.0, 1.125, 4.5, 156) + femmesh.addNode(1.0, 1.5, 5.0, 157) + femmesh.addNode(1.0, 1.125, 5.0, 158) + femmesh.addNode(1.0, 1.5, 5.5, 159) + femmesh.addNode(1.0, 1.125, 5.5, 160) + femmesh.addNode(1.0, 1.5, 6.0, 161) + femmesh.addNode(1.0, 1.125, 6.0, 162) + femmesh.addNode(1.0, 1.5, 6.5, 163) + femmesh.addNode(1.0, 1.125, 6.5, 164) + femmesh.addNode(1.0, 1.5, 7.0, 165) + femmesh.addNode(1.0, 1.125, 7.0, 166) + femmesh.addNode(1.0, 1.5, 7.5, 167) + femmesh.addNode(1.0, 1.125, 7.5, 168) + femmesh.addNode(1.0, 1.5, 8.0, 169) + femmesh.addNode(1.0, 1.125, 8.0, 170) + femmesh.addNode(0.0, 0.75, 0.5, 171) + femmesh.addNode(0.0, 0.75, 0.0, 172) + femmesh.addNode(0.25, 0.75, 0.5, 173) + femmesh.addNode(0.25, 0.75, 0.0, 174) + femmesh.addNode(0.0, 0.75, 1.0, 175) + femmesh.addNode(0.25, 0.75, 1.0, 176) + femmesh.addNode(0.0, 0.75, 1.5, 177) + femmesh.addNode(0.25, 0.75, 1.5, 178) + femmesh.addNode(0.0, 0.75, 2.0, 179) + femmesh.addNode(0.25, 0.75, 2.0, 180) + femmesh.addNode(0.0, 0.75, 2.5, 181) + femmesh.addNode(0.25, 0.75, 2.5, 182) + femmesh.addNode(0.0, 0.75, 3.0, 183) + femmesh.addNode(0.25, 0.75, 3.0, 184) + femmesh.addNode(0.0, 0.75, 3.5, 185) + femmesh.addNode(0.25, 0.75, 3.5, 186) + femmesh.addNode(0.0, 0.75, 4.0, 187) + femmesh.addNode(0.25, 0.75, 4.0, 188) + femmesh.addNode(0.0, 0.75, 4.5, 189) + femmesh.addNode(0.25, 0.75, 4.5, 190) + femmesh.addNode(0.0, 0.75, 5.0, 191) + femmesh.addNode(0.25, 0.75, 5.0, 192) + femmesh.addNode(0.0, 0.75, 5.5, 193) + femmesh.addNode(0.25, 0.75, 5.5, 194) + femmesh.addNode(0.0, 0.75, 6.0, 195) + femmesh.addNode(0.25, 0.75, 6.0, 196) + femmesh.addNode(0.0, 0.75, 6.5, 197) + femmesh.addNode(0.25, 0.75, 6.5, 198) + femmesh.addNode(0.0, 0.75, 7.0, 199) + femmesh.addNode(0.25, 0.75, 7.0, 200) + femmesh.addNode(0.0, 0.75, 7.5, 201) + femmesh.addNode(0.25, 0.75, 7.5, 202) + femmesh.addNode(0.0, 0.75, 8.0, 203) + femmesh.addNode(0.25, 0.75, 8.0, 204) + femmesh.addNode(0.5, 0.75, 0.5, 205) + femmesh.addNode(0.5, 0.75, 0.0, 206) + femmesh.addNode(0.5, 0.75, 1.0, 207) + femmesh.addNode(0.5, 0.75, 1.5, 208) + femmesh.addNode(0.5, 0.75, 2.0, 209) + femmesh.addNode(0.5, 0.75, 2.5, 210) + femmesh.addNode(0.5, 0.75, 3.0, 211) + femmesh.addNode(0.5, 0.75, 3.5, 212) + femmesh.addNode(0.5, 0.75, 4.0, 213) + femmesh.addNode(0.5, 0.75, 4.5, 214) + femmesh.addNode(0.5, 0.75, 5.0, 215) + femmesh.addNode(0.5, 0.75, 5.5, 216) + femmesh.addNode(0.5, 0.75, 6.0, 217) + femmesh.addNode(0.5, 0.75, 6.5, 218) + femmesh.addNode(0.5, 0.75, 7.0, 219) + femmesh.addNode(0.5, 0.75, 7.5, 220) + femmesh.addNode(0.5, 0.75, 8.0, 221) + femmesh.addNode(0.75, 0.75, 0.5, 222) + femmesh.addNode(0.75, 0.75, 0.0, 223) + femmesh.addNode(0.75, 0.75, 1.0, 224) + femmesh.addNode(0.75, 0.75, 1.5, 225) + femmesh.addNode(0.75, 0.75, 2.0, 226) + femmesh.addNode(0.75, 0.75, 2.5, 227) + femmesh.addNode(0.75, 0.75, 3.0, 228) + femmesh.addNode(0.75, 0.75, 3.5, 229) + femmesh.addNode(0.75, 0.75, 4.0, 230) + femmesh.addNode(0.75, 0.75, 4.5, 231) + femmesh.addNode(0.75, 0.75, 5.0, 232) + femmesh.addNode(0.75, 0.75, 5.5, 233) + femmesh.addNode(0.75, 0.75, 6.0, 234) + femmesh.addNode(0.75, 0.75, 6.5, 235) + femmesh.addNode(0.75, 0.75, 7.0, 236) + femmesh.addNode(0.75, 0.75, 7.5, 237) + femmesh.addNode(0.75, 0.75, 8.0, 238) + femmesh.addNode(1.0, 0.75, 0.5, 239) + femmesh.addNode(1.0, 0.75, 0.0, 240) + femmesh.addNode(1.0, 0.75, 1.0, 241) + femmesh.addNode(1.0, 0.75, 1.5, 242) + femmesh.addNode(1.0, 0.75, 2.0, 243) + femmesh.addNode(1.0, 0.75, 2.5, 244) + femmesh.addNode(1.0, 0.75, 3.0, 245) + femmesh.addNode(1.0, 0.75, 3.5, 246) + femmesh.addNode(1.0, 0.75, 4.0, 247) + femmesh.addNode(1.0, 0.75, 4.5, 248) + femmesh.addNode(1.0, 0.75, 5.0, 249) + femmesh.addNode(1.0, 0.75, 5.5, 250) + femmesh.addNode(1.0, 0.75, 6.0, 251) + femmesh.addNode(1.0, 0.75, 6.5, 252) + femmesh.addNode(1.0, 0.75, 7.0, 253) + femmesh.addNode(1.0, 0.75, 7.5, 254) + femmesh.addNode(1.0, 0.75, 8.0, 255) + femmesh.addNode(0.0, 0.375, 0.5, 256) + femmesh.addNode(0.0, 0.375, 0.0, 257) + femmesh.addNode(0.25, 0.375, 0.5, 258) + femmesh.addNode(0.25, 0.375, 0.0, 259) + femmesh.addNode(0.0, 0.375, 1.0, 260) + femmesh.addNode(0.25, 0.375, 1.0, 261) + femmesh.addNode(0.0, 0.375, 1.5, 262) + femmesh.addNode(0.25, 0.375, 1.5, 263) + femmesh.addNode(0.0, 0.375, 2.0, 264) + femmesh.addNode(0.25, 0.375, 2.0, 265) + femmesh.addNode(0.0, 0.375, 2.5, 266) + femmesh.addNode(0.25, 0.375, 2.5, 267) + femmesh.addNode(0.0, 0.375, 3.0, 268) + femmesh.addNode(0.25, 0.375, 3.0, 269) + femmesh.addNode(0.0, 0.375, 3.5, 270) + femmesh.addNode(0.25, 0.375, 3.5, 271) + femmesh.addNode(0.0, 0.375, 4.0, 272) + femmesh.addNode(0.25, 0.375, 4.0, 273) + femmesh.addNode(0.0, 0.375, 4.5, 274) + femmesh.addNode(0.25, 0.375, 4.5, 275) + femmesh.addNode(0.0, 0.375, 5.0, 276) + femmesh.addNode(0.25, 0.375, 5.0, 277) + femmesh.addNode(0.0, 0.375, 5.5, 278) + femmesh.addNode(0.25, 0.375, 5.5, 279) + femmesh.addNode(0.0, 0.375, 6.0, 280) + femmesh.addNode(0.25, 0.375, 6.0, 281) + femmesh.addNode(0.0, 0.375, 6.5, 282) + femmesh.addNode(0.25, 0.375, 6.5, 283) + femmesh.addNode(0.0, 0.375, 7.0, 284) + femmesh.addNode(0.25, 0.375, 7.0, 285) + femmesh.addNode(0.0, 0.375, 7.5, 286) + femmesh.addNode(0.25, 0.375, 7.5, 287) + femmesh.addNode(0.0, 0.375, 8.0, 288) + femmesh.addNode(0.25, 0.375, 8.0, 289) + femmesh.addNode(0.5, 0.375, 0.5, 290) + femmesh.addNode(0.5, 0.375, 0.0, 291) + femmesh.addNode(0.5, 0.375, 1.0, 292) + femmesh.addNode(0.5, 0.375, 1.5, 293) + femmesh.addNode(0.5, 0.375, 2.0, 294) + femmesh.addNode(0.5, 0.375, 2.5, 295) + femmesh.addNode(0.5, 0.375, 3.0, 296) + femmesh.addNode(0.5, 0.375, 3.5, 297) + femmesh.addNode(0.5, 0.375, 4.0, 298) + femmesh.addNode(0.5, 0.375, 4.5, 299) + femmesh.addNode(0.5, 0.375, 5.0, 300) + femmesh.addNode(0.5, 0.375, 5.5, 301) + femmesh.addNode(0.5, 0.375, 6.0, 302) + femmesh.addNode(0.5, 0.375, 6.5, 303) + femmesh.addNode(0.5, 0.375, 7.0, 304) + femmesh.addNode(0.5, 0.375, 7.5, 305) + femmesh.addNode(0.5, 0.375, 8.0, 306) + femmesh.addNode(0.75, 0.375, 0.5, 307) + femmesh.addNode(0.75, 0.375, 0.0, 308) + femmesh.addNode(0.75, 0.375, 1.0, 309) + femmesh.addNode(0.75, 0.375, 1.5, 310) + femmesh.addNode(0.75, 0.375, 2.0, 311) + femmesh.addNode(0.75, 0.375, 2.5, 312) + femmesh.addNode(0.75, 0.375, 3.0, 313) + femmesh.addNode(0.75, 0.375, 3.5, 314) + femmesh.addNode(0.75, 0.375, 4.0, 315) + femmesh.addNode(0.75, 0.375, 4.5, 316) + femmesh.addNode(0.75, 0.375, 5.0, 317) + femmesh.addNode(0.75, 0.375, 5.5, 318) + femmesh.addNode(0.75, 0.375, 6.0, 319) + femmesh.addNode(0.75, 0.375, 6.5, 320) + femmesh.addNode(0.75, 0.375, 7.0, 321) + femmesh.addNode(0.75, 0.375, 7.5, 322) + femmesh.addNode(0.75, 0.375, 8.0, 323) + femmesh.addNode(1.0, 0.375, 0.5, 324) + femmesh.addNode(1.0, 0.375, 0.0, 325) + femmesh.addNode(1.0, 0.375, 1.0, 326) + femmesh.addNode(1.0, 0.375, 1.5, 327) + femmesh.addNode(1.0, 0.375, 2.0, 328) + femmesh.addNode(1.0, 0.375, 2.5, 329) + femmesh.addNode(1.0, 0.375, 3.0, 330) + femmesh.addNode(1.0, 0.375, 3.5, 331) + femmesh.addNode(1.0, 0.375, 4.0, 332) + femmesh.addNode(1.0, 0.375, 4.5, 333) + femmesh.addNode(1.0, 0.375, 5.0, 334) + femmesh.addNode(1.0, 0.375, 5.5, 335) + femmesh.addNode(1.0, 0.375, 6.0, 336) + femmesh.addNode(1.0, 0.375, 6.5, 337) + femmesh.addNode(1.0, 0.375, 7.0, 338) + femmesh.addNode(1.0, 0.375, 7.5, 339) + femmesh.addNode(1.0, 0.375, 8.0, 340) + femmesh.addNode(0.0, 0.0, 0.5, 341) + femmesh.addNode(0.0, 0.0, 0.0, 342) + femmesh.addNode(0.25, 0.0, 0.5, 343) + femmesh.addNode(0.25, 0.0, 0.0, 344) + femmesh.addNode(0.0, 0.0, 1.0, 345) + femmesh.addNode(0.25, 0.0, 1.0, 346) + femmesh.addNode(0.0, 0.0, 1.5, 347) + femmesh.addNode(0.25, 0.0, 1.5, 348) + femmesh.addNode(0.0, 0.0, 2.0, 349) + femmesh.addNode(0.25, 0.0, 2.0, 350) + femmesh.addNode(0.0, 0.0, 2.5, 351) + femmesh.addNode(0.25, 0.0, 2.5, 352) + femmesh.addNode(0.0, 0.0, 3.0, 353) + femmesh.addNode(0.25, 0.0, 3.0, 354) + femmesh.addNode(0.0, 0.0, 3.5, 355) + femmesh.addNode(0.25, 0.0, 3.5, 356) + femmesh.addNode(0.0, 0.0, 4.0, 357) + femmesh.addNode(0.25, 0.0, 4.0, 358) + femmesh.addNode(0.0, 0.0, 4.5, 359) + femmesh.addNode(0.25, 0.0, 4.5, 360) + femmesh.addNode(0.0, 0.0, 5.0, 361) + femmesh.addNode(0.25, 0.0, 5.0, 362) + femmesh.addNode(0.0, 0.0, 5.5, 363) + femmesh.addNode(0.25, 0.0, 5.5, 364) + femmesh.addNode(0.0, 0.0, 6.0, 365) + femmesh.addNode(0.25, 0.0, 6.0, 366) + femmesh.addNode(0.0, 0.0, 6.5, 367) + femmesh.addNode(0.25, 0.0, 6.5, 368) + femmesh.addNode(0.0, 0.0, 7.0, 369) + femmesh.addNode(0.25, 0.0, 7.0, 370) + femmesh.addNode(0.0, 0.0, 7.5, 371) + femmesh.addNode(0.25, 0.0, 7.5, 372) + femmesh.addNode(0.0, 0.0, 8.0, 373) + femmesh.addNode(0.25, 0.0, 8.0, 374) + femmesh.addNode(0.5, 0.0, 0.5, 375) + femmesh.addNode(0.5, 0.0, 0.0, 376) + femmesh.addNode(0.5, 0.0, 1.0, 377) + femmesh.addNode(0.5, 0.0, 1.5, 378) + femmesh.addNode(0.5, 0.0, 2.0, 379) + femmesh.addNode(0.5, 0.0, 2.5, 380) + femmesh.addNode(0.5, 0.0, 3.0, 381) + femmesh.addNode(0.5, 0.0, 3.5, 382) + femmesh.addNode(0.5, 0.0, 4.0, 383) + femmesh.addNode(0.5, 0.0, 4.5, 384) + femmesh.addNode(0.5, 0.0, 5.0, 385) + femmesh.addNode(0.5, 0.0, 5.5, 386) + femmesh.addNode(0.5, 0.0, 6.0, 387) + femmesh.addNode(0.5, 0.0, 6.5, 388) + femmesh.addNode(0.5, 0.0, 7.0, 389) + femmesh.addNode(0.5, 0.0, 7.5, 390) + femmesh.addNode(0.5, 0.0, 8.0, 391) + femmesh.addNode(0.75, 0.0, 0.5, 392) + femmesh.addNode(0.75, 0.0, 0.0, 393) + femmesh.addNode(0.75, 0.0, 1.0, 394) + femmesh.addNode(0.75, 0.0, 1.5, 395) + femmesh.addNode(0.75, 0.0, 2.0, 396) + femmesh.addNode(0.75, 0.0, 2.5, 397) + femmesh.addNode(0.75, 0.0, 3.0, 398) + femmesh.addNode(0.75, 0.0, 3.5, 399) + femmesh.addNode(0.75, 0.0, 4.0, 400) + femmesh.addNode(0.75, 0.0, 4.5, 401) + femmesh.addNode(0.75, 0.0, 5.0, 402) + femmesh.addNode(0.75, 0.0, 5.5, 403) + femmesh.addNode(0.75, 0.0, 6.0, 404) + femmesh.addNode(0.75, 0.0, 6.5, 405) + femmesh.addNode(0.75, 0.0, 7.0, 406) + femmesh.addNode(0.75, 0.0, 7.5, 407) + femmesh.addNode(0.75, 0.0, 8.0, 408) + femmesh.addNode(1.0, 0.0, 0.5, 409) + femmesh.addNode(1.0, 0.0, 0.0, 410) + femmesh.addNode(1.0, 0.0, 1.0, 411) + femmesh.addNode(1.0, 0.0, 1.5, 412) + femmesh.addNode(1.0, 0.0, 2.0, 413) + femmesh.addNode(1.0, 0.0, 2.5, 414) + femmesh.addNode(1.0, 0.0, 3.0, 415) + femmesh.addNode(1.0, 0.0, 3.5, 416) + femmesh.addNode(1.0, 0.0, 4.0, 417) + femmesh.addNode(1.0, 0.0, 4.5, 418) + femmesh.addNode(1.0, 0.0, 5.0, 419) + femmesh.addNode(1.0, 0.0, 5.5, 420) + femmesh.addNode(1.0, 0.0, 6.0, 421) + femmesh.addNode(1.0, 0.0, 6.5, 422) + femmesh.addNode(1.0, 0.0, 7.0, 423) + femmesh.addNode(1.0, 0.0, 7.5, 424) + femmesh.addNode(1.0, 0.0, 8.0, 425) + return True + + +def create_elements(femmesh): + # elements + femmesh.addVolume([6, 7, 8, 5, 2, 3, 4, 1], 1) + femmesh.addVolume([11, 12, 7, 6, 9, 10, 3, 2], 2) + femmesh.addVolume([15, 16, 12, 11, 13, 14, 10, 9], 3) + femmesh.addVolume([19, 20, 16, 15, 17, 18, 14, 13], 4) + femmesh.addVolume([23, 24, 20, 19, 21, 22, 18, 17], 5) + femmesh.addVolume([27, 28, 24, 23, 25, 26, 22, 21], 6) + femmesh.addVolume([31, 32, 28, 27, 29, 30, 26, 25], 7) + femmesh.addVolume([35, 36, 32, 31, 33, 34, 30, 29], 8) + femmesh.addVolume([39, 40, 36, 35, 37, 38, 34, 33], 9) + femmesh.addVolume([43, 44, 40, 39, 41, 42, 38, 37], 10) + femmesh.addVolume([47, 48, 44, 43, 45, 46, 42, 41], 11) + femmesh.addVolume([51, 52, 48, 47, 49, 50, 46, 45], 12) + femmesh.addVolume([55, 56, 52, 51, 53, 54, 50, 49], 13) + femmesh.addVolume([59, 60, 56, 55, 57, 58, 54, 53], 14) + femmesh.addVolume([63, 64, 60, 59, 61, 62, 58, 57], 15) + femmesh.addVolume([67, 68, 64, 63, 65, 66, 62, 61], 16) + femmesh.addVolume([70, 71, 72, 69, 6, 7, 8, 5], 17) + femmesh.addVolume([73, 74, 71, 70, 11, 12, 7, 6], 18) + femmesh.addVolume([75, 76, 74, 73, 15, 16, 12, 11], 19) + femmesh.addVolume([77, 78, 76, 75, 19, 20, 16, 15], 20) + femmesh.addVolume([79, 80, 78, 77, 23, 24, 20, 19], 21) + femmesh.addVolume([81, 82, 80, 79, 27, 28, 24, 23], 22) + femmesh.addVolume([83, 84, 82, 81, 31, 32, 28, 27], 23) + femmesh.addVolume([85, 86, 84, 83, 35, 36, 32, 31], 24) + femmesh.addVolume([87, 88, 86, 85, 39, 40, 36, 35], 25) + femmesh.addVolume([89, 90, 88, 87, 43, 44, 40, 39], 26) + femmesh.addVolume([91, 92, 90, 89, 47, 48, 44, 43], 27) + femmesh.addVolume([93, 94, 92, 91, 51, 52, 48, 47], 28) + femmesh.addVolume([95, 96, 94, 93, 55, 56, 52, 51], 29) + femmesh.addVolume([97, 98, 96, 95, 59, 60, 56, 55], 30) + femmesh.addVolume([99, 100, 98, 97, 63, 64, 60, 59], 31) + femmesh.addVolume([101, 102, 100, 99, 67, 68, 64, 63], 32) + femmesh.addVolume([104, 105, 106, 103, 70, 71, 72, 69], 33) + femmesh.addVolume([107, 108, 105, 104, 73, 74, 71, 70], 34) + femmesh.addVolume([109, 110, 108, 107, 75, 76, 74, 73], 35) + femmesh.addVolume([111, 112, 110, 109, 77, 78, 76, 75], 36) + femmesh.addVolume([113, 114, 112, 111, 79, 80, 78, 77], 37) + femmesh.addVolume([115, 116, 114, 113, 81, 82, 80, 79], 38) + femmesh.addVolume([117, 118, 116, 115, 83, 84, 82, 81], 39) + femmesh.addVolume([119, 120, 118, 117, 85, 86, 84, 83], 40) + femmesh.addVolume([121, 122, 120, 119, 87, 88, 86, 85], 41) + femmesh.addVolume([123, 124, 122, 121, 89, 90, 88, 87], 42) + femmesh.addVolume([125, 126, 124, 123, 91, 92, 90, 89], 43) + femmesh.addVolume([127, 128, 126, 125, 93, 94, 92, 91], 44) + femmesh.addVolume([129, 130, 128, 127, 95, 96, 94, 93], 45) + femmesh.addVolume([131, 132, 130, 129, 97, 98, 96, 95], 46) + femmesh.addVolume([133, 134, 132, 131, 99, 100, 98, 97], 47) + femmesh.addVolume([135, 136, 134, 133, 101, 102, 100, 99], 48) + femmesh.addVolume([138, 139, 140, 137, 104, 105, 106, 103], 49) + femmesh.addVolume([141, 142, 139, 138, 107, 108, 105, 104], 50) + femmesh.addVolume([143, 144, 142, 141, 109, 110, 108, 107], 51) + femmesh.addVolume([145, 146, 144, 143, 111, 112, 110, 109], 52) + femmesh.addVolume([147, 148, 146, 145, 113, 114, 112, 111], 53) + femmesh.addVolume([149, 150, 148, 147, 115, 116, 114, 113], 54) + femmesh.addVolume([151, 152, 150, 149, 117, 118, 116, 115], 55) + femmesh.addVolume([153, 154, 152, 151, 119, 120, 118, 117], 56) + femmesh.addVolume([155, 156, 154, 153, 121, 122, 120, 119], 57) + femmesh.addVolume([157, 158, 156, 155, 123, 124, 122, 121], 58) + femmesh.addVolume([159, 160, 158, 157, 125, 126, 124, 123], 59) + femmesh.addVolume([161, 162, 160, 159, 127, 128, 126, 125], 60) + femmesh.addVolume([163, 164, 162, 161, 129, 130, 128, 127], 61) + femmesh.addVolume([165, 166, 164, 163, 131, 132, 130, 129], 62) + femmesh.addVolume([167, 168, 166, 165, 133, 134, 132, 131], 63) + femmesh.addVolume([169, 170, 168, 167, 135, 136, 134, 133], 64) + femmesh.addVolume([7, 173, 174, 8, 3, 171, 172, 4], 65) + femmesh.addVolume([12, 176, 173, 7, 10, 175, 171, 3], 66) + femmesh.addVolume([16, 178, 176, 12, 14, 177, 175, 10], 67) + femmesh.addVolume([20, 180, 178, 16, 18, 179, 177, 14], 68) + femmesh.addVolume([24, 182, 180, 20, 22, 181, 179, 18], 69) + femmesh.addVolume([28, 184, 182, 24, 26, 183, 181, 22], 70) + femmesh.addVolume([32, 186, 184, 28, 30, 185, 183, 26], 71) + femmesh.addVolume([36, 188, 186, 32, 34, 187, 185, 30], 72) + femmesh.addVolume([40, 190, 188, 36, 38, 189, 187, 34], 73) + femmesh.addVolume([44, 192, 190, 40, 42, 191, 189, 38], 74) + femmesh.addVolume([48, 194, 192, 44, 46, 193, 191, 42], 75) + femmesh.addVolume([52, 196, 194, 48, 50, 195, 193, 46], 76) + femmesh.addVolume([56, 198, 196, 52, 54, 197, 195, 50], 77) + femmesh.addVolume([60, 200, 198, 56, 58, 199, 197, 54], 78) + femmesh.addVolume([64, 202, 200, 60, 62, 201, 199, 58], 79) + femmesh.addVolume([68, 204, 202, 64, 66, 203, 201, 62], 80) + femmesh.addVolume([71, 205, 206, 72, 7, 173, 174, 8], 81) + femmesh.addVolume([74, 207, 205, 71, 12, 176, 173, 7], 82) + femmesh.addVolume([76, 208, 207, 74, 16, 178, 176, 12], 83) + femmesh.addVolume([78, 209, 208, 76, 20, 180, 178, 16], 84) + femmesh.addVolume([80, 210, 209, 78, 24, 182, 180, 20], 85) + femmesh.addVolume([82, 211, 210, 80, 28, 184, 182, 24], 86) + femmesh.addVolume([84, 212, 211, 82, 32, 186, 184, 28], 87) + femmesh.addVolume([86, 213, 212, 84, 36, 188, 186, 32], 88) + femmesh.addVolume([88, 214, 213, 86, 40, 190, 188, 36], 89) + femmesh.addVolume([90, 215, 214, 88, 44, 192, 190, 40], 90) + femmesh.addVolume([92, 216, 215, 90, 48, 194, 192, 44], 91) + femmesh.addVolume([94, 217, 216, 92, 52, 196, 194, 48], 92) + femmesh.addVolume([96, 218, 217, 94, 56, 198, 196, 52], 93) + femmesh.addVolume([98, 219, 218, 96, 60, 200, 198, 56], 94) + femmesh.addVolume([100, 220, 219, 98, 64, 202, 200, 60], 95) + femmesh.addVolume([102, 221, 220, 100, 68, 204, 202, 64], 96) + femmesh.addVolume([105, 222, 223, 106, 71, 205, 206, 72], 97) + femmesh.addVolume([108, 224, 222, 105, 74, 207, 205, 71], 98) + femmesh.addVolume([110, 225, 224, 108, 76, 208, 207, 74], 99) + femmesh.addVolume([112, 226, 225, 110, 78, 209, 208, 76], 100) + femmesh.addVolume([114, 227, 226, 112, 80, 210, 209, 78], 101) + femmesh.addVolume([116, 228, 227, 114, 82, 211, 210, 80], 102) + femmesh.addVolume([118, 229, 228, 116, 84, 212, 211, 82], 103) + femmesh.addVolume([120, 230, 229, 118, 86, 213, 212, 84], 104) + femmesh.addVolume([122, 231, 230, 120, 88, 214, 213, 86], 105) + femmesh.addVolume([124, 232, 231, 122, 90, 215, 214, 88], 106) + femmesh.addVolume([126, 233, 232, 124, 92, 216, 215, 90], 107) + femmesh.addVolume([128, 234, 233, 126, 94, 217, 216, 92], 108) + femmesh.addVolume([130, 235, 234, 128, 96, 218, 217, 94], 109) + femmesh.addVolume([132, 236, 235, 130, 98, 219, 218, 96], 110) + femmesh.addVolume([134, 237, 236, 132, 100, 220, 219, 98], 111) + femmesh.addVolume([136, 238, 237, 134, 102, 221, 220, 100], 112) + femmesh.addVolume([139, 239, 240, 140, 105, 222, 223, 106], 113) + femmesh.addVolume([142, 241, 239, 139, 108, 224, 222, 105], 114) + femmesh.addVolume([144, 242, 241, 142, 110, 225, 224, 108], 115) + femmesh.addVolume([146, 243, 242, 144, 112, 226, 225, 110], 116) + femmesh.addVolume([148, 244, 243, 146, 114, 227, 226, 112], 117) + femmesh.addVolume([150, 245, 244, 148, 116, 228, 227, 114], 118) + femmesh.addVolume([152, 246, 245, 150, 118, 229, 228, 116], 119) + femmesh.addVolume([154, 247, 246, 152, 120, 230, 229, 118], 120) + femmesh.addVolume([156, 248, 247, 154, 122, 231, 230, 120], 121) + femmesh.addVolume([158, 249, 248, 156, 124, 232, 231, 122], 122) + femmesh.addVolume([160, 250, 249, 158, 126, 233, 232, 124], 123) + femmesh.addVolume([162, 251, 250, 160, 128, 234, 233, 126], 124) + femmesh.addVolume([164, 252, 251, 162, 130, 235, 234, 128], 125) + femmesh.addVolume([166, 253, 252, 164, 132, 236, 235, 130], 126) + femmesh.addVolume([168, 254, 253, 166, 134, 237, 236, 132], 127) + femmesh.addVolume([170, 255, 254, 168, 136, 238, 237, 134], 128) + femmesh.addVolume([173, 258, 259, 174, 171, 256, 257, 172], 129) + femmesh.addVolume([176, 261, 258, 173, 175, 260, 256, 171], 130) + femmesh.addVolume([178, 263, 261, 176, 177, 262, 260, 175], 131) + femmesh.addVolume([180, 265, 263, 178, 179, 264, 262, 177], 132) + femmesh.addVolume([182, 267, 265, 180, 181, 266, 264, 179], 133) + femmesh.addVolume([184, 269, 267, 182, 183, 268, 266, 181], 134) + femmesh.addVolume([186, 271, 269, 184, 185, 270, 268, 183], 135) + femmesh.addVolume([188, 273, 271, 186, 187, 272, 270, 185], 136) + femmesh.addVolume([190, 275, 273, 188, 189, 274, 272, 187], 137) + femmesh.addVolume([192, 277, 275, 190, 191, 276, 274, 189], 138) + femmesh.addVolume([194, 279, 277, 192, 193, 278, 276, 191], 139) + femmesh.addVolume([196, 281, 279, 194, 195, 280, 278, 193], 140) + femmesh.addVolume([198, 283, 281, 196, 197, 282, 280, 195], 141) + femmesh.addVolume([200, 285, 283, 198, 199, 284, 282, 197], 142) + femmesh.addVolume([202, 287, 285, 200, 201, 286, 284, 199], 143) + femmesh.addVolume([204, 289, 287, 202, 203, 288, 286, 201], 144) + femmesh.addVolume([205, 290, 291, 206, 173, 258, 259, 174], 145) + femmesh.addVolume([207, 292, 290, 205, 176, 261, 258, 173], 146) + femmesh.addVolume([208, 293, 292, 207, 178, 263, 261, 176], 147) + femmesh.addVolume([209, 294, 293, 208, 180, 265, 263, 178], 148) + femmesh.addVolume([210, 295, 294, 209, 182, 267, 265, 180], 149) + femmesh.addVolume([211, 296, 295, 210, 184, 269, 267, 182], 150) + femmesh.addVolume([212, 297, 296, 211, 186, 271, 269, 184], 151) + femmesh.addVolume([213, 298, 297, 212, 188, 273, 271, 186], 152) + femmesh.addVolume([214, 299, 298, 213, 190, 275, 273, 188], 153) + femmesh.addVolume([215, 300, 299, 214, 192, 277, 275, 190], 154) + femmesh.addVolume([216, 301, 300, 215, 194, 279, 277, 192], 155) + femmesh.addVolume([217, 302, 301, 216, 196, 281, 279, 194], 156) + femmesh.addVolume([218, 303, 302, 217, 198, 283, 281, 196], 157) + femmesh.addVolume([219, 304, 303, 218, 200, 285, 283, 198], 158) + femmesh.addVolume([220, 305, 304, 219, 202, 287, 285, 200], 159) + femmesh.addVolume([221, 306, 305, 220, 204, 289, 287, 202], 160) + femmesh.addVolume([222, 307, 308, 223, 205, 290, 291, 206], 161) + femmesh.addVolume([224, 309, 307, 222, 207, 292, 290, 205], 162) + femmesh.addVolume([225, 310, 309, 224, 208, 293, 292, 207], 163) + femmesh.addVolume([226, 311, 310, 225, 209, 294, 293, 208], 164) + femmesh.addVolume([227, 312, 311, 226, 210, 295, 294, 209], 165) + femmesh.addVolume([228, 313, 312, 227, 211, 296, 295, 210], 166) + femmesh.addVolume([229, 314, 313, 228, 212, 297, 296, 211], 167) + femmesh.addVolume([230, 315, 314, 229, 213, 298, 297, 212], 168) + femmesh.addVolume([231, 316, 315, 230, 214, 299, 298, 213], 169) + femmesh.addVolume([232, 317, 316, 231, 215, 300, 299, 214], 170) + femmesh.addVolume([233, 318, 317, 232, 216, 301, 300, 215], 171) + femmesh.addVolume([234, 319, 318, 233, 217, 302, 301, 216], 172) + femmesh.addVolume([235, 320, 319, 234, 218, 303, 302, 217], 173) + femmesh.addVolume([236, 321, 320, 235, 219, 304, 303, 218], 174) + femmesh.addVolume([237, 322, 321, 236, 220, 305, 304, 219], 175) + femmesh.addVolume([238, 323, 322, 237, 221, 306, 305, 220], 176) + femmesh.addVolume([239, 324, 325, 240, 222, 307, 308, 223], 177) + femmesh.addVolume([241, 326, 324, 239, 224, 309, 307, 222], 178) + femmesh.addVolume([242, 327, 326, 241, 225, 310, 309, 224], 179) + femmesh.addVolume([243, 328, 327, 242, 226, 311, 310, 225], 180) + femmesh.addVolume([244, 329, 328, 243, 227, 312, 311, 226], 181) + femmesh.addVolume([245, 330, 329, 244, 228, 313, 312, 227], 182) + femmesh.addVolume([246, 331, 330, 245, 229, 314, 313, 228], 183) + femmesh.addVolume([247, 332, 331, 246, 230, 315, 314, 229], 184) + femmesh.addVolume([248, 333, 332, 247, 231, 316, 315, 230], 185) + femmesh.addVolume([249, 334, 333, 248, 232, 317, 316, 231], 186) + femmesh.addVolume([250, 335, 334, 249, 233, 318, 317, 232], 187) + femmesh.addVolume([251, 336, 335, 250, 234, 319, 318, 233], 188) + femmesh.addVolume([252, 337, 336, 251, 235, 320, 319, 234], 189) + femmesh.addVolume([253, 338, 337, 252, 236, 321, 320, 235], 190) + femmesh.addVolume([254, 339, 338, 253, 237, 322, 321, 236], 191) + femmesh.addVolume([255, 340, 339, 254, 238, 323, 322, 237], 192) + femmesh.addVolume([258, 343, 344, 259, 256, 341, 342, 257], 193) + femmesh.addVolume([261, 346, 343, 258, 260, 345, 341, 256], 194) + femmesh.addVolume([263, 348, 346, 261, 262, 347, 345, 260], 195) + femmesh.addVolume([265, 350, 348, 263, 264, 349, 347, 262], 196) + femmesh.addVolume([267, 352, 350, 265, 266, 351, 349, 264], 197) + femmesh.addVolume([269, 354, 352, 267, 268, 353, 351, 266], 198) + femmesh.addVolume([271, 356, 354, 269, 270, 355, 353, 268], 199) + femmesh.addVolume([273, 358, 356, 271, 272, 357, 355, 270], 200) + femmesh.addVolume([275, 360, 358, 273, 274, 359, 357, 272], 201) + femmesh.addVolume([277, 362, 360, 275, 276, 361, 359, 274], 202) + femmesh.addVolume([279, 364, 362, 277, 278, 363, 361, 276], 203) + femmesh.addVolume([281, 366, 364, 279, 280, 365, 363, 278], 204) + femmesh.addVolume([283, 368, 366, 281, 282, 367, 365, 280], 205) + femmesh.addVolume([285, 370, 368, 283, 284, 369, 367, 282], 206) + femmesh.addVolume([287, 372, 370, 285, 286, 371, 369, 284], 207) + femmesh.addVolume([289, 374, 372, 287, 288, 373, 371, 286], 208) + femmesh.addVolume([290, 375, 376, 291, 258, 343, 344, 259], 209) + femmesh.addVolume([292, 377, 375, 290, 261, 346, 343, 258], 210) + femmesh.addVolume([293, 378, 377, 292, 263, 348, 346, 261], 211) + femmesh.addVolume([294, 379, 378, 293, 265, 350, 348, 263], 212) + femmesh.addVolume([295, 380, 379, 294, 267, 352, 350, 265], 213) + femmesh.addVolume([296, 381, 380, 295, 269, 354, 352, 267], 214) + femmesh.addVolume([297, 382, 381, 296, 271, 356, 354, 269], 215) + femmesh.addVolume([298, 383, 382, 297, 273, 358, 356, 271], 216) + femmesh.addVolume([299, 384, 383, 298, 275, 360, 358, 273], 217) + femmesh.addVolume([300, 385, 384, 299, 277, 362, 360, 275], 218) + femmesh.addVolume([301, 386, 385, 300, 279, 364, 362, 277], 219) + femmesh.addVolume([302, 387, 386, 301, 281, 366, 364, 279], 220) + femmesh.addVolume([303, 388, 387, 302, 283, 368, 366, 281], 221) + femmesh.addVolume([304, 389, 388, 303, 285, 370, 368, 283], 222) + femmesh.addVolume([305, 390, 389, 304, 287, 372, 370, 285], 223) + femmesh.addVolume([306, 391, 390, 305, 289, 374, 372, 287], 224) + femmesh.addVolume([307, 392, 393, 308, 290, 375, 376, 291], 225) + femmesh.addVolume([309, 394, 392, 307, 292, 377, 375, 290], 226) + femmesh.addVolume([310, 395, 394, 309, 293, 378, 377, 292], 227) + femmesh.addVolume([311, 396, 395, 310, 294, 379, 378, 293], 228) + femmesh.addVolume([312, 397, 396, 311, 295, 380, 379, 294], 229) + femmesh.addVolume([313, 398, 397, 312, 296, 381, 380, 295], 230) + femmesh.addVolume([314, 399, 398, 313, 297, 382, 381, 296], 231) + femmesh.addVolume([315, 400, 399, 314, 298, 383, 382, 297], 232) + femmesh.addVolume([316, 401, 400, 315, 299, 384, 383, 298], 233) + femmesh.addVolume([317, 402, 401, 316, 300, 385, 384, 299], 234) + femmesh.addVolume([318, 403, 402, 317, 301, 386, 385, 300], 235) + femmesh.addVolume([319, 404, 403, 318, 302, 387, 386, 301], 236) + femmesh.addVolume([320, 405, 404, 319, 303, 388, 387, 302], 237) + femmesh.addVolume([321, 406, 405, 320, 304, 389, 388, 303], 238) + femmesh.addVolume([322, 407, 406, 321, 305, 390, 389, 304], 239) + femmesh.addVolume([323, 408, 407, 322, 306, 391, 390, 305], 240) + femmesh.addVolume([324, 409, 410, 325, 307, 392, 393, 308], 241) + femmesh.addVolume([326, 411, 409, 324, 309, 394, 392, 307], 242) + femmesh.addVolume([327, 412, 411, 326, 310, 395, 394, 309], 243) + femmesh.addVolume([328, 413, 412, 327, 311, 396, 395, 310], 244) + femmesh.addVolume([329, 414, 413, 328, 312, 397, 396, 311], 245) + femmesh.addVolume([330, 415, 414, 329, 313, 398, 397, 312], 246) + femmesh.addVolume([331, 416, 415, 330, 314, 399, 398, 313], 247) + femmesh.addVolume([332, 417, 416, 331, 315, 400, 399, 314], 248) + femmesh.addVolume([333, 418, 417, 332, 316, 401, 400, 315], 249) + femmesh.addVolume([334, 419, 418, 333, 317, 402, 401, 316], 250) + femmesh.addVolume([335, 420, 419, 334, 318, 403, 402, 317], 251) + femmesh.addVolume([336, 421, 420, 335, 319, 404, 403, 318], 252) + femmesh.addVolume([337, 422, 421, 336, 320, 405, 404, 319], 253) + femmesh.addVolume([338, 423, 422, 337, 321, 406, 405, 320], 254) + femmesh.addVolume([339, 424, 423, 338, 322, 407, 406, 321], 255) + femmesh.addVolume([340, 425, 424, 339, 323, 408, 407, 322], 256) + return True