<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN"> <html> <head> <title>Defining hypotheses TUI</title> <meta http-equiv="content-type" content="text/html; charset=windows-1252"> <meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style> <!-- P { margin-top:0pt; margin-bottom:0pt; } LI.kadov-P { } --> </style><style type="text/css"> <!-- p.whs1 { font-weight:bold; } p.whs2 { font-family:'Lucida Console' , monospace; } p.whs3 { font-family:'Times New Roman' , serif; } p.whs4 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; } p.whs5 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; } p.whs6 { margin-top:0pt; margin-bottom:0pt; } --> </style><script type="text/javascript" language="JavaScript"> <!-- if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) { var strNSS = "<style type='text/css'>"; strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }"; strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }"; strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }"; strNSS +="</style>"; document.write(strNSS); } //--> </script> <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript"> <!-- function reDo() { if (innerWidth != origWidth || innerHeight != origHeight) location.reload(); } if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) { origWidth = innerWidth; origHeight = innerHeight; onresize = reDo; } onerror = null; //--> </script> <style type="text/css"> <!-- div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; } p.WebHelpNavBar { text-align:right; } --> </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script> <script type="text/javascript" language="javascript" src="whver.js"></script> <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script> <script type="text/javascript" language="javascript1.2" src="whutils.js"></script> <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script> <script type="text/javascript" language="javascript1.2"> <!-- if (window.gbWhTopic) { if (window.setRelStartPage) { addTocInfo("MESH module\nTUI Scripts\nDefining Hypotheses"); addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif"); addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif"); } if (window.setRelStartPage) { setRelStartPage("index.htm"); autoSync(1); sendSyncInfo(); sendAveInfoOut(); } } else if (window.gbIE4) document.location.reload(); //--> </script> </head> <body><script type="text/javascript" language="javascript1.2"> <!-- if (window.writeIntopicBar) writeIntopicBar(4); //--> </script> <h1>Defining Hypotheses and Algorithms</h1> <h3>Defining 1D Hypotheses</h3> <p class="whs1"><a name=bookmark>1D Arithmetic</a></p> <p> </p> <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import geompy</span></p> <p class="whs2">import smesh</p> <p class="whs2"> </p> <p class="whs3"># create a box</p> <p class="whs2">box = geompy.MakeBoxDXDYDZ(10., 10., 10.)</p> <p class="whs2">geompy.addToStudy(box, "Box")</p> <p class="whs2"> </p> <p class="whs3"># create a hexahedral mesh on the box</p> <p class="whs2">hexa = smesh.Mesh(box, "Box : hexahedrical mesh")</p> <p class="whs2"> </p> <p class="whs3"># create a Regular 1D algorithm for edges</p> <p class="whs2">algo1D = hexa.Segment()</p> <p class="whs2"> </p> <p class="whs3"># define "Arithmetic1D" hypothesis to cut all edges in several segments with increasing arithmetic length </p> <p class="whs2">algo1D.Arithmetic1D(1, 4)</p> <p class="whs2"> </p> <p class="whs3"># create a quadrangle 2D algorithm for faces</p> <p class="whs2">hexa.Quadrangle()</p> <p class="whs2"> </p> <p class="whs3"># create a hexahedron 3D algorithm for solids</p> <p class="whs2">hexa.Hexahedron()</p> <p class="whs2"> </p> <p class="whs3"># compute the mesh</p> <p class="whs2">hexa.Compute() </p> <p class="whs2"> </p> <h4><a name=bookmark9>Deflection 1D and Number of Segments</a></h4> <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import geompy</span></p> <p class="whs2">import smesh</p> <p class="whs2"> </p> <p class="whs3"># create a face from arc and straight segment</p> <p class="whs2">px = geompy.MakeVertex(100., 0. , 0. )</p> <p class="whs2">py = geompy.MakeVertex(0. , 100., 0. )</p> <p class="whs2">pz = geompy.MakeVertex(0. , 0. , 100.)</p> <p class="whs2"> </p> <p class="whs2">exy = geompy.MakeEdge(px, py)</p> <p class="whs2">arc = geompy.MakeArc(py, pz, px)</p> <p class="whs2"> </p> <p class="whs2">wire = geompy.MakeWire([exy, arc])</p> <p class="whs2"> </p> <p class="whs2">isPlanarFace = 1</p> <p class="whs2">face1 = geompy.MakeFace(wire, isPlanarFace)</p> <p class="whs2">geompy.addToStudy(face1,"Face1")</p> <p class="whs2"> </p> <p class="whs3"># get edges from the face</p> <p class="whs2">e_straight,e_arc = geompy.SubShapeAll(face1, geompy.ShapeType["EDGE"])</p> <p class="whs2">geompy.addToStudyInFather(face1, e_arc, "Arc Edge")</p> <p class="whs2"> </p> <p class="whs3"># create hexahedral mesh</p> <p class="whs2">hexa = smesh.Mesh(face1, "Face : triangle mesh")</p> <p class="whs2"> </p> <p class="whs3"># define "NumberOfSegments" hypothesis to cut a straight edge in a fixed number of segments</p> <p class="whs2">algo1D = hexa.Segment()</p> <p class="whs2">algo1D.NumberOfSegments(6)</p> <p class="whs2"> </p> <p class="whs3"># define "MaxElementArea" hypothesis</p> <p class="whs2">algo2D = hexa.Triangle()</p> <p class="whs2">algo2D.MaxElementArea(70.0)</p> <p class="whs2"> </p> <p class="whs3"># define a local "Deflection1D" hypothesis on the arc</p> <p class="whs2">algo_local = hexa.Segment(e_arc)</p> <p class="whs2">algo_local.Deflection1D(1.0)</p> <p class="whs2"> </p> <p class="whs3"># compute the mesh</p> <p class="whs2">hexa.Compute() </p> <h4><a name=bookmark2>Start and End Length</a></h4> <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from geompy import *</span></p> <p class="whs2">import smesh</p> <p class="whs2"> </p> <p class="whs3"># create a box</p> <p class="whs2">box = MakeBoxDXDYDZ(10., 10., 10.)</p> <p class="whs2">addToStudy(box, "Box")</p> <p class="whs2"> </p> <p class="whs3"># get one edge of the box to put local hypothesis on</p> <p class="whs2">p5 = MakeVertex(5., 0., 0.)</p> <p class="whs2">EdgeX = GetEdgeNearPoint(box, p5)</p> <p class="whs2">addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]")</p> <p class="whs2"> </p> <p class="whs3"># create a hexahedral mesh on the box</p> <p class="whs2">hexa = smesh.Mesh(box, "Box : hexahedrical mesh")</p> <p class="whs2"> </p> <p class="whs3"># set algorithms</p> <p class="whs2">algo1D = hexa.Segment()</p> <p class="whs2">hexa.Quadrangle()</p> <p class="whs2">hexa.Hexahedron()</p> <p class="whs2"> </p> <p class="whs3"># define "NumberOfSegments" hypothesis to cut an edge in a fixed number of segments</p> <p class="whs2">algo1D.NumberOfSegments(4)</p> <p class="whs2"> </p> <p class="whs3"># create a local hypothesis</p> <p class="whs2">algo_local = hexa.Segment(EdgeX)</p> <p class="whs2"> </p> <p class="whs3"># define "StartEndLength" hypothesis to cut an edge in several segments with increasing geometric length</p> <p class="whs2">algo_local.StartEndLength(1, 6)</p> <p class="whs2"> </p> <p class="whs3"># define "Propagation" hypothesis that propagates all other hypothesis</p> <p class="whs3"># on all edges on the opposite side in case of quadrangular faces</p> <p class="whs2">algo_local.Propagation()</p> <p class="whs2"> </p> <p class="whs3"># compute the mesh</p> <p class="whs2">hexa.Compute() </p> <h4><a name=bookmark3>Average Length</a></h4> <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from geompy import *</span></p> <p class="whs2">import smesh</p> <p class="whs2"> </p> <p class="whs3"># create a box</p> <p class="whs2">box = MakeBoxDXDYDZ(10., 10., 10.)</p> <p class="whs2">addToStudy(box, "Box")</p> <p class="whs2"> </p> <p class="whs3"># get one edge of the box to put local hypothesis on</p> <p class="whs2">p5 = MakeVertex(5., 0., 0.)</p> <p class="whs2">EdgeX = GetEdgeNearPoint(box, p5)</p> <p class="whs2">addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]")</p> <p class="whs2"> </p> <p class="whs3"># create a hexahedral mesh on the box</p> <p class="whs2">hexa = smesh.Mesh(box, "Box : hexahedrical mesh")</p> <p class="whs2"> </p> <p class="whs3"># set algorithms</p> <p class="whs2">algo1D = hexa.Segment()</p> <p class="whs2">hexa.Quadrangle()</p> <p class="whs2">hexa.Hexahedron()</p> <p class="whs2"> </p> <p class="whs3"># define "NumberOfSegments" hypothesis to cut all edges in a fixed number of segments</p> <p class="whs2">algo1D.NumberOfSegments(4)</p> <p class="whs2"> </p> <p class="whs3"># create a sub-mesh</p> <p class="whs2">algo_local = hexa.Segment(EdgeX)</p> <p class="whs2"> </p> <p class="whs3"># define "LocalLength" hypothesis to cut an edge in several segments with the same length</p> <p class="whs2">algo_local.LocalLength(2.)</p> <p class="whs2"> </p> <p class="whs3"># define "Propagation" hypothesis that propagates all other hypothesis</p> <p class="whs3"># on all edges on the opposite side in case of quadrangular faces</p> <p class="whs2">algo_local.Propagation()</p> <p class="whs2"> </p> <p class="whs3"># compute the mesh</p> <p class="whs2">hexa.Compute() </p> <h3>Defining 2D and 3D hypotheses</h3> <h4><a name=bookmark4>Maximum Element Area</a></h4> <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import geompy</span></p> <p class="whs4">import smesh</p> <p class="whs4">import salome </p> <p class="whs4"> </p> <p class="whs5"># create a face</p> <p class="whs4">px = geompy.MakeVertex(100., 0. , 0. )</p> <p class="whs4">py = geompy.MakeVertex(0. , 100., 0. )</p> <p class="whs4">pz = geompy.MakeVertex(0. , 0. , 100.)</p> <p class="whs4"> </p> <p class="whs4">vxy = geompy.MakeVector(px, py)</p> <p class="whs4">arc = geompy.MakeArc(py, pz, px)</p> <p class="whs4">wire = geompy.MakeWire([vxy, arc])</p> <p class="whs4"> </p> <p class="whs4">isPlanarFace = 1</p> <p class="whs4">face = geompy.MakeFace(wire, isPlanarFace)</p> <p class="whs4"> </p> <p class="whs5"># add the face in the study</p> <p class="whs4">id_face = geompy.addToStudy(face, "Face to be meshed")</p> <p class="whs4"> </p> <p class="whs5"># create a mesh</p> <p class="whs4">tria_mesh = smesh.Mesh(face, "Face : triangulation")</p> <p class="whs4"> </p> <p class="whs5"># define 1D meshing:</p> <p class="whs4">algo = tria_mesh.Segment()</p> <p class="whs4">algo.NumberOfSegments(20)</p> <p class="whs4"> </p> <p class="whs5"># define 2D meshing:</p> <p class="whs5"> </p> <p class="whs5"># assign triangulation algorithm</p> <p class="whs4">algo = tria_mesh.Triangle()</p> <p class="whs4"> </p> <p class="whs5"># apply "Max Element Area" hypothesis to each triangle</p> <p class="whs4">algo.MaxElementArea(100)</p> <p class="whs4"> </p> <p class="whs5"># compute the mesh</p> <p class="whs4">tria_mesh.Compute() </p> <p class="whs4"> </p> <h4><a name=bookmark5>Maximum Element Volume</a></h4> <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import geompy</span></p> <p class="whs4">import smesh</p> <p class="whs4"> </p> <p class="whs5"># create a cylinder</p> <p class="whs4">cyl = geompy.MakeCylinderRH(30., 50.)</p> <p class="whs4">geompy.addToStudy(cyl, "cyl")</p> <p class="whs4"> </p> <p class="whs5"># create a mesh on the cylinder</p> <p class="whs4">tetra = smesh.Mesh(cyl, "Cylinder : tetrahedrical mesh")</p> <p class="whs4"> </p> <p class="whs5"># assign algorithms</p> <p class="whs4">algo1D = tetra.Segment()</p> <p class="whs4">algo2D = tetra.Triangle()</p> <p class="whs4">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p> <p class="whs4"> </p> <p class="whs5"># assign 1D and 2D hypotheses</p> <p class="whs4">algo1D.NumberOfSegments(7)</p> <p class="whs4">algo2D.MaxElementArea(150.)</p> <p class="whs4"> </p> <p class="whs5"># assign Max Element Volume hypothesis</p> <p class="whs4">algo3D.MaxElementVolume(200.)</p> <p class="whs4"> </p> <p class="whs5"># compute the mesh</p> <p class="whs4">ret = tetra.Compute()</p> <p class="whs4">if ret == 0:</p> <p class="whs4"> print "probleme when computing the mesh"</p> <p class="whs4">else:</p> <p class="whs4"> print "Computation succeded" </p> <h4><a name=bookmark6>Length from Edges</a></h4> <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import geompy</span></p> <p class="whs2">import smesh</p> <p class="whs2"> </p> <p class="whs3"># create sketchers</p> <p class="whs2">sketcher1 = geompy.MakeSketcher("Sketcher:F 0 0:TT 70 0:TT 70 70:TT 0 70:WW")</p> <p class="whs2">sketcher2 = geompy.MakeSketcher("Sketcher:F 20 20:TT 50 20:TT 50 50:TT 20 50:WW")</p> <p class="whs2"> </p> <p class="whs3"># create a face from two wires</p> <p class="whs2">isPlanarFace = 1</p> <p class="whs2">face1 = geompy.MakeFaces([sketcher1, sketcher2], isPlanarFace)</p> <p class="whs2">geompy.addToStudy(face1, "Face1")</p> <p class="whs2"> </p> <p class="whs3"># create a mesh</p> <p class="whs2">tria = smesh.Mesh(face1, "Face : triangle 2D mesh")</p> <p class="whs2"> </p> <p class="whs3"># Define 1D meshing</p> <p class="whs2">algo1D = tria.Segment()</p> <p class="whs2">algo1D.NumberOfSegments(2)</p> <p class="whs2"> </p> <p class="whs3"># create and assign the algorithm for 2D meshing with triangles</p> <p class="whs2">algo2D = tria.Triangle()</p> <p class="whs2"> </p> <p class="whs3"># create and assign "LengthFromEdges" hypothesis to build triangles<span style="font-family: 'Times New Roman', serif;"> based on the length of the edges taken from the wire</span></p> <p class="whs2">algo2D.LengthFromEdges()</p> <p class="whs2"> </p> <p class="whs3"># compute the mesh</p> <p class="whs2">tria.Compute() </p> <p class="whs2"> </p> <h3>Defining Additional Hypotheses</h3> <h4><a name=bookmark7>Propagation</a></h4> <p class="whs2">from geompy import *</p> <p class="whs2">import smesh</p> <p class="whs2"> </p> <p class="whs3"># create a box</p> <p class="whs2">box = MakeBoxDXDYDZ(10., 10., 10.)</p> <p class="whs2">addToStudy(box, "Box")</p> <p class="whs2"> </p> <p class="whs3"># get one edge of the box to put local hypothesis on</p> <p class="whs2">p5 = MakeVertex(5., 0., 0.)</p> <p class="whs2">EdgeX = GetEdgeNearPoint(box, p5)</p> <p class="whs2">addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]")</p> <p class="whs2"> </p> <p class="whs3"># create a hexahedral mesh on the box</p> <p class="whs2">hexa = smesh.Mesh(box, "Box : hexahedrical mesh")</p> <p class="whs2"> </p> <p class="whs3"># set global algorithms and hypotheses</p> <p class="whs2">algo1D = hexa.Segment()</p> <p class="whs2">hexa.Quadrangle()</p> <p class="whs2">hexa.Hexahedron()</p> <p class="whs2">algo1D.NumberOfSegments(4)</p> <p class="whs2"> </p> <p class="whs3"># create a sub-mesh with local 1D hypothesis and propagation</p> <p class="whs2">algo_local = hexa.Segment(EdgeX)</p> <p class="whs2"> </p> <p class="whs3"># define "Arithmetic1D" hypothesis to cut an edge in several segments with increasing length</p> <p class="whs2">algo_local.Arithmetic1D(1, 4)</p> <p class="whs2"> </p> <p class="whs3"># define "Propagation" hypothesis that propagates all other 1D hypotheses</p> <p class="whs3"># from all edges on the opposite side of a face in case of quadrangular faces</p> <p class="whs2">algo_local.Propagation()</p> <p class="whs2"> </p> <p class="whs3"># compute the mesh</p> <p><span style="font-family: 'Lucida Console', monospace;">hexa.Compute()</span> </p> <h3><a name=bookmark8>Defining Meshing Algorithms</a></h3> <p class="whs4">import geompy</p> <p class="whs4">import smesh</p> <p class="whs6"> </p> <p class="whs6"># create a box</p> <p class="whs4">box = geompy.MakeBoxDXDYDZ(10., 10., 10.)</p> <p class="whs4">geompy.addToStudy(box, "Box")</p> <p class="whs4"> </p> <p class="whs6"># 1. Create a hexahedral mesh on the box</p> <p class="whs4">hexa = smesh.Mesh(box, "Box : hexahedrical mesh")</p> <p class="whs6"> </p> <p class="whs6"># create a Regular 1D algorithm for edges</p> <p class="whs4">algo1D = hexa.Segment()</p> <p class="whs6"> </p> <p class="whs6"># create a quadrangle 2D algorithm for faces</p> <p class="whs4">algo2D = hexa.Quadrangle()</p> <p class="whs6"> </p> <p class="whs6"># create a hexahedron 3D algorithm for solids</p> <p class="whs4">algo3D = hexa.Hexahedron()</p> <p class="whs6"> </p> <p class="whs6"># define hypotheses</p> <p class="whs4">algo1D.Arithmetic1D(1, 4)</p> <p class="whs6"> </p> <p class="whs6"># compute the mesh</p> <p class="whs4">hexa.Compute()</p> <p class="whs6"> </p> <p class="whs6"># 2. Create a tetrahedral mesh on the box</p> <p class="whs4">tetra = smesh.Mesh(box, "Box : tetrahedrical mesh")</p> <p class="whs6"> </p> <p class="whs6"># create a Regular 1D algorithm for edges</p> <p class="whs4">algo1D = tetra.Segment()</p> <p class="whs6"> </p> <p class="whs6"># create a Mefisto 2D algorithm for faces</p> <p class="whs4">algo2D = tetra.Triangle()</p> <p class="whs6"> </p> <p class="whs6"># create a Netgen 3D algorithm for solids</p> <p class="whs4">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p> <p class="whs6"> </p> <p class="whs6"># define hypotheses</p> <p class="whs4">algo1D.Arithmetic1D(1, 4)</p> <p class="whs4">algo2D.LengthFromEdges()</p> <p class="whs6"> </p> <p class="whs6"># compute the mesh</p> <p class="whs4">tetra.Compute()</p> <p class="whs6"> </p> <p class="whs6"># 3. Create a tetrahedral mesh on the box with NETGEN_2D3D algorithm</p> <p class="whs4">tetraN = smesh.Mesh(box, "Box : tetrahedrical mesh by NETGEN_2D3D")</p> <p class="whs6"> </p> <p class="whs6"># create a Netgen_2D3D algorithm for solids</p> <p class="whs4">algo3D = tetraN.Tetrahedron(smesh.FULL_NETGEN) </p> <p class="whs6"> </p> <p class="whs6"># define hypotheses</p> <p class="whs4">n23_params = algo3D.Parameters()</p> <p class="whs6"> </p> <p class="whs6"># compute the mesh</p> <p class="whs4">tetraN.Compute() </p> <script type="text/javascript" language="javascript1.2"> <!-- if (window.writeIntopicBar) writeIntopicBar(0); //--> </script> </body> </html>