mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-30 19:30:35 +05:00
883 lines
19 KiB
HTML
Executable File
883 lines
19 KiB
HTML
Executable File
<!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
|
|
smesh</span></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">is3D = 1</p>
|
|
|
|
<p class="whs4">algo3D = tetraN.Netgen(is3D)</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>
|