1 <!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
\r
6 <title>Defining hypotheses TUI</title>
\r
7 <meta http-equiv="content-type" content="text/html; charset=windows-1252">
\r
8 <meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style>
\r
10 P { margin-top:0pt; margin-bottom:0pt; }
\r
13 </style><style type="text/css">
\r
15 p.whs1 { font-weight:bold; }
\r
16 p.whs2 { font-family:'Lucida Console' , monospace; }
\r
17 p.whs3 { font-family:'Times New Roman' , serif; }
\r
18 p.whs4 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
\r
19 p.whs5 { margin-top:0pt; margin-bottom:0pt; }
\r
20 p.whs6 { margin-top:0pt; margin-bottom:0pt; font-family:Tahoma, sans-serif; }
\r
21 p.whs7 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
\r
23 </style><script type="text/javascript" language="JavaScript">
\r
25 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
\r
27 var strNSS = "<style type='text/css'>";
\r
28 strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";
\r
29 strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";
\r
30 strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
\r
31 strNSS += "p.whs7 {margin-top:1pt;margin-bottom:1pt; }";
\r
32 strNSS +="</style>";
\r
33 document.write(strNSS);
\r
37 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
\r
40 if (innerWidth != origWidth || innerHeight != origHeight)
\r
43 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
\r
44 origWidth = innerWidth;
\r
45 origHeight = innerHeight;
\r
51 <style type="text/css">
\r
53 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
\r
55 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
\r
56 <script type="text/javascript" language="javascript" src="whver.js"></script>
\r
57 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
\r
58 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
\r
59 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
\r
61 <body><script type="text/javascript" language="javascript1.2">
\r
63 if (window.gbWhTopic)
\r
65 if (window.addTocInfo)
\r
67 addTocInfo("MESH module\nTUI Scripts\nDefining Hypotheses");
\r
68 addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");
\r
71 if (window.writeBtnStyle)
\r
74 if (window.writeIntopicBar)
\r
77 if (window.setRelStartPage)
\r
79 setRelStartPage("smesh.htm");
\r
88 document.location.reload();
\r
91 <h1>Defining Hypotheses and Algorithms</h1>
\r
93 <h3>Defining 1D Hypotheses</h3>
\r
95 <p class="whs1"><a name=bookmark>1D Arithmetic</a></p>
\r
99 <p class="whs2">from geompy import
\r
102 <p class="whs2">import smesh</p>
\r
106 <p># create vertices</p>
\r
108 <p class="whs2">Point111 = MakeVertex(
\r
109 0, 0, 0)</p>
\r
111 <p class="whs2">Point211 = MakeVertex(10,
\r
112 0, 0)</p>
\r
114 <p class="whs2">Point121 = MakeVertex(
\r
115 0, 10, 0)</p>
\r
117 <p class="whs2">Point221 = MakeVertex(10,
\r
120 <p class="whs2">Point112 = MakeVertex(
\r
121 0, 0, 10)</p>
\r
123 <p class="whs2">Point212 = MakeVertex(10,
\r
126 <p class="whs2">Point122 = MakeVertex(
\r
129 <p class="whs2">Point222 = MakeVertex(10,
\r
134 <p># create edges</p>
\r
136 <p class="whs2">EdgeX111 = MakeEdge(Point111,
\r
139 <p class="whs2">EdgeX121 = MakeEdge(Point121,
\r
142 <p class="whs2">EdgeX112 = MakeEdge(Point112,
\r
145 <p class="whs2">EdgeX122 = MakeEdge(Point122,
\r
148 <p class="whs2">EdgeY11 = MakeEdge(Point111,
\r
151 <p class="whs2">EdgeY21 = MakeEdge(Point211,
\r
154 <p class="whs2">EdgeY12 = MakeEdge(Point112,
\r
157 <p class="whs2">EdgeY22 = MakeEdge(Point212,
\r
160 <p class="whs2">EdgeZ111 = MakeEdge(Point111,
\r
163 <p class="whs2">EdgeZ211 = MakeEdge(Point211,
\r
166 <p class="whs2">EdgeZ121 = MakeEdge(Point121,
\r
169 <p class="whs2">EdgeZ221 = MakeEdge(Point221,
\r
174 <p># create faces</p>
\r
176 <p class="whs2">FaceX11 = MakeQuad(EdgeY11,
\r
177 EdgeZ111, EdgeY12, EdgeZ121)</p>
\r
179 <p class="whs2">FaceX21 = MakeQuad(EdgeY21,
\r
180 EdgeZ211, EdgeY22, EdgeZ221)</p>
\r
182 <p class="whs2">FaceY111 = MakeQuad(EdgeX111,
\r
183 EdgeZ111, EdgeX112, EdgeZ211)</p>
\r
185 <p class="whs2">FaceY121 = MakeQuad(EdgeX121,
\r
186 EdgeZ121, EdgeX122, EdgeZ221)</p>
\r
188 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111,
\r
189 EdgeY11, EdgeX121, EdgeY21)</p>
\r
191 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112,
\r
192 EdgeY12, EdgeX122, EdgeY22)</p>
\r
196 <p># create a solid</p>
\r
198 <p class="whs2">Block = MakeHexa(FaceX11,
\r
199 FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
\r
203 <p># create a compound</p>
\r
205 <p class="whs2">box = MakeCompound([Block])</p>
\r
209 <p># add in the study</p>
\r
211 <p class="whs2">box_id = addToStudy(box,
\r
212 "Box compound")</p>
\r
216 <p># create a hexahedral mesh on the box</p>
\r
218 <p class="whs2">hexa = smesh.Mesh(box,
\r
219 "Box compound : hexahedrical mesh")</p>
\r
221 <p class="whs2">algo = hexa.Segment()</p>
\r
225 <p># define "NumberOfSegments" hypothesis to cut an edge in a
\r
226 fixed number of segments</p>
\r
228 <p class="whs2">algo.NumberOfSegments(4)</p>
\r
232 <p># create a quadrangle 2D algorithm for faces</p>
\r
234 <p class="whs2">hexa.Quadrangle()</p>
\r
238 <p># create a hexahedron 3D algorithm for solids</p>
\r
240 <p class="whs2">hexa.Hexahedron()</p>
\r
244 <p># create a local hypothesis</p>
\r
246 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>
\r
250 <p># define "Arithmetic1D" hypothesis to cut an edge in several
\r
251 segments with arithmetic length increasing</p>
\r
253 <p class="whs2">algo.Arithmetic1D(1,
\r
258 <p># define "Propagation" hypothesis that propagates all other
\r
259 hypothesis on all edges on the opposite side in case of quadrangular faces</p>
\r
261 <p class="whs2">algo.Propagation()</p>
\r
265 <p># compute the mesh</p>
\r
267 <p class="whs2">hexa.Compute() </p>
\r
269 <p class="whs2"> </p>
\r
271 <h4><a name=bookmark9>Deflection 1D and Number of Segments</a></h4>
\r
273 <p class="whs2"> </p>
\r
275 <p class="whs2">import smesh</p>
\r
277 <p class="whs2">import geompy</p>
\r
279 <p class="whs2">import salome</p>
\r
281 <p class="whs2">gg = salome.ImportComponentGUI("GEOM")</p>
\r
283 <p class="whs2"> </p>
\r
285 <p class="whs3"># create vertices</p>
\r
287 <p class="whs2">px =geompy.MakeVertex(100., 0. ,0. )</p>
\r
289 <p class="whs2">py =geompy.MakeVertex(0. ,100., 0. )</p>
\r
291 <p class="whs2">pz =geompy.MakeVertex(0. ,0. , 100.)</p>
\r
293 <p class="whs2"> </p>
\r
295 <p class="whs3"># create a vector from
\r
298 <p class="whs2">vxy = geompy.MakeVector(px,py)</p>
\r
300 <p class="whs2"> </p>
\r
302 <p class="whs3"># create an arc from
\r
305 <p class="whs2">arc = geompy.MakeArc(py, pz, px)</p>
\r
307 <p class="whs2"> </p>
\r
309 <p class="whs3"># create a wire</p>
\r
311 <p class="whs2">wire = geompy.MakeWire([vxy,arc])</p>
\r
313 <p class="whs2">isPlanarFace = 1</p>
\r
315 <p class="whs2"> </p>
\r
317 <p class="whs3"># create a face from the wire</p>
\r
319 <p class="whs2">face1 = geompy.MakeFace(wire,isPlanarFace)</p>
\r
321 <p class="whs2"> </p>
\r
323 <p class="whs3"># get edges from the face</p>
\r
325 <p class="whs2">vxy, arc = geompy.SubShapeAll(face1, geompy.ShapeType["EDGE"])</p>
\r
327 <p class="whs2"> </p>
\r
329 <p class="whs3"># add objects in the study</p>
\r
331 <p class="whs2">id_face1 = geompy.addToStudy(face1,"Face1")</p>
\r
333 <p class="whs2">id_arc = geompy.addToStudyInFather(face1,arc,"Arc Edge")</p>
\r
335 <p class="whs2"> </p>
\r
337 <p class="whs3"># display faces</p>
\r
339 <p class="whs2">gg.createAndDisplayGO(id_face1)</p>
\r
341 <p class="whs2">gg.setDisplayMode(id_face1,1)</p>
\r
343 <p class="whs2">gg.setTransparency(id_face1,0.2)</p>
\r
345 <p class="whs2"> </p>
\r
347 <p class="whs3"># create hexahedral mesh</p>
\r
349 <p class="whs2">hexa = smesh.Mesh(face1,"Face compound : hexahedrical mesh")</p>
\r
351 <p class="whs2">algo = hexa.Triangle()</p>
\r
353 <p class="whs2"> </p>
\r
355 <p class="whs3"># define "MaxElementArea"hypothesis</p>
\r
357 <p class="whs2">algo.MaxElementArea(30)</p>
\r
359 <p class="whs2"> </p>
\r
361 <p class="whs3"># create a local hypothesis on the wire</p>
\r
363 <p class="whs2">algo = hexa.Segment(wire)</p>
\r
365 <p class="whs2"> </p>
\r
367 <p class="whs3"># define "NumberOfSegments"hypothesis to cut
\r
368 a straight edge in a fixed number of segments</p>
\r
370 <p class="whs2">algo.NumberOfSegments(6)</p>
\r
372 <p class="whs2"> </p>
\r
374 <p class="whs3"># define a local "Deflection1D"hypothesis on the arc</p>
\r
376 <p class="whs2">algo = hexa.Segment(arc)</p>
\r
377 <p class="whs2">algo.Deflection1D(1)</p>
\r
379 <p class="whs2"> </p>
\r
381 <p class="whs3"># compute the mesh</p>
\r
383 <p class="whs2">hexa.Compute() </p>
\r
387 <h4><a name=bookmark2>Start and End Length</a></h4>
\r
389 <p class="whs2">from geompy import
\r
392 <p class="whs2">import smesh</p>
\r
396 <p># create vertices</p>
\r
398 <p class="whs2">Point111 = MakeVertex(
\r
399 0, 0, 0)</p>
\r
401 <p class="whs2">Point211 = MakeVertex(10,
\r
402 0, 0)</p>
\r
404 <p class="whs2">Point121 = MakeVertex(
\r
405 0, 10, 0)</p>
\r
407 <p class="whs2">Point221 = MakeVertex(10,
\r
410 <p class="whs2">Point112 = MakeVertex(
\r
411 0, 0, 10)</p>
\r
413 <p class="whs2">Point212 = MakeVertex(10,
\r
416 <p class="whs2">Point122 = MakeVertex(
\r
419 <p class="whs2">Point222 = MakeVertex(10,
\r
424 <p># create edges</p>
\r
426 <p class="whs2">EdgeX111 = MakeEdge(Point111,
\r
429 <p class="whs2">EdgeX121 = MakeEdge(Point121,
\r
432 <p class="whs2">EdgeX112 = MakeEdge(Point112,
\r
435 <p class="whs2">EdgeX122 = MakeEdge(Point122,
\r
438 <p class="whs2">EdgeY11 = MakeEdge(Point111,
\r
441 <p class="whs2">EdgeY21 = MakeEdge(Point211,
\r
444 <p class="whs2">EdgeY12 = MakeEdge(Point112,
\r
447 <p class="whs2">EdgeY22 = MakeEdge(Point212,
\r
450 <p class="whs2">EdgeZ111 = MakeEdge(Point111,
\r
453 <p class="whs2">EdgeZ211 = MakeEdge(Point211,
\r
456 <p class="whs2">EdgeZ121 = MakeEdge(Point121,
\r
459 <p class="whs2">EdgeZ221 = MakeEdge(Point221,
\r
464 <p># create faces</p>
\r
466 <p class="whs2">FaceX11 = MakeQuad(EdgeY11,
\r
467 EdgeZ111, EdgeY12, EdgeZ121)</p>
\r
469 <p class="whs2">FaceX21 = MakeQuad(EdgeY21,
\r
470 EdgeZ211, EdgeY22, EdgeZ221)</p>
\r
472 <p class="whs2">FaceY111 = MakeQuad(EdgeX111,
\r
473 EdgeZ111, EdgeX112, EdgeZ211)</p>
\r
475 <p class="whs2">FaceY121 = MakeQuad(EdgeX121,
\r
476 EdgeZ121, EdgeX122, EdgeZ221)</p>
\r
478 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111,
\r
479 EdgeY11, EdgeX121, EdgeY21)</p>
\r
481 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112,
\r
482 EdgeY12, EdgeX122, EdgeY22)</p>
\r
486 <p># create a solid</p>
\r
488 <p class="whs2">Block = MakeHexa(FaceX11,
\r
489 FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
\r
493 <p># create a compound</p>
\r
495 <p class="whs2">box = MakeCompound([Block])</p>
\r
499 <p># add in the study</p>
\r
501 <p class="whs2">box_id = addToStudy(box,
\r
502 "Box compound")</p>
\r
506 <p># create a hexahedral mesh on the box</p>
\r
508 <p class="whs2">hexa = smesh.Mesh(box,
\r
509 "Box compound : hexahedrical mesh")</p>
\r
511 <p class="whs2">algo = hexa.Segment()</p>
\r
515 <p># define "NumberOfSegments" hypothesis to cut an edge in a
\r
516 fixed number of segments</p>
\r
518 <p class="whs2">algo.NumberOfSegments(4)</p>
\r
522 <p># create a quadrangle 2D algorithm for faces</p>
\r
524 <p class="whs2">hexa.Quadrangle()</p>
\r
528 <p># create a hexahedron 3D algorithm for solids</p>
\r
530 <p class="whs2">hexa.Hexahedron()</p>
\r
534 <p># create a local hypothesis</p>
\r
536 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>
\r
540 <p># define "StartEndLength" hypothesis to cut an edge in several
\r
541 segments with increasing geometric length </p>
\r
543 <p class="whs2">algo.StartEndLength(1,
\r
548 <p># define "Propagation" hypothesis that propagates all other
\r
549 hypothesis on all edges on the opposite side in case of quadrangular faces</p>
\r
551 <p class="whs2">algo.Propagation()</p>
\r
555 <p># compute the mesh</p>
\r
557 <p class="whs2">hexa.Compute() </p>
\r
559 <p class="whs2"> </p>
\r
561 <h4><a name=bookmark3>Average Length</a></h4>
\r
563 <p class="whs2">from geompy import
\r
566 <p class="whs2">import smesh</p>
\r
568 <p class="whs2"> </p>
\r
570 <p class="whs3"># create vertices</p>
\r
572 <p class="whs2">Point111 = MakeVertex(
\r
573 0, 0, 0)</p>
\r
575 <p class="whs2">Point211 = MakeVertex(10,
\r
576 0, 0)</p>
\r
578 <p class="whs2">Point121 = MakeVertex(
\r
579 0, 10, 0)</p>
\r
581 <p class="whs2">Point221 = MakeVertex(10,
\r
584 <p class="whs2">Point112 = MakeVertex(
\r
585 0, 0, 10)</p>
\r
587 <p class="whs2">Point212 = MakeVertex(10,
\r
590 <p class="whs2">Point122 = MakeVertex(
\r
593 <p class="whs2">Point222 = MakeVertex(10,
\r
596 <p class="whs2"> </p>
\r
598 <p class="whs3"># create edges</p>
\r
600 <p class="whs2">EdgeX111 = MakeEdge(Point111,
\r
603 <p class="whs2">EdgeX121 = MakeEdge(Point121,
\r
606 <p class="whs2">EdgeX112 = MakeEdge(Point112,
\r
609 <p class="whs2">EdgeX122 = MakeEdge(Point122,
\r
612 <p class="whs2">EdgeY11 = MakeEdge(Point111,
\r
615 <p class="whs2">EdgeY21 = MakeEdge(Point211,
\r
618 <p class="whs2">EdgeY12 = MakeEdge(Point112,
\r
621 <p class="whs2">EdgeY22 = MakeEdge(Point212,
\r
624 <p class="whs2">EdgeZ111 = MakeEdge(Point111,
\r
627 <p class="whs2">EdgeZ211 = MakeEdge(Point211,
\r
630 <p class="whs2">EdgeZ121 = MakeEdge(Point121,
\r
633 <p class="whs2">EdgeZ221 = MakeEdge(Point221,
\r
636 <p class="whs2"> </p>
\r
638 <p class="whs3"># create faces</p>
\r
640 <p class="whs2">FaceX11 = MakeQuad(EdgeY11,
\r
641 EdgeZ111, EdgeY12, EdgeZ121)</p>
\r
643 <p class="whs2">FaceX21 = MakeQuad(EdgeY21,
\r
644 EdgeZ211, EdgeY22, EdgeZ221)</p>
\r
646 <p class="whs2">FaceY111 = MakeQuad(EdgeX111,
\r
647 EdgeZ111, EdgeX112, EdgeZ211)</p>
\r
649 <p class="whs2">FaceY121 = MakeQuad(EdgeX121,
\r
650 EdgeZ121, EdgeX122, EdgeZ221)</p>
\r
652 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111,
\r
653 EdgeY11, EdgeX121, EdgeY21)</p>
\r
655 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112,
\r
656 EdgeY12, EdgeX122, EdgeY22)</p>
\r
658 <p class="whs2"> </p>
\r
660 <p class="whs3"># create a solid</p>
\r
662 <p class="whs2">Block = MakeHexa(FaceX11,
\r
663 FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
\r
665 <p class="whs2"> </p>
\r
667 <p class="whs3"># create a compound</p>
\r
669 <p class="whs2">box = MakeCompound([Block])</p>
\r
671 <p class="whs2"> </p>
\r
673 <p class="whs3"># add in the study</p>
\r
675 <p class="whs2">box_id = addToStudy(box,
\r
676 "Box compound")</p>
\r
678 <p class="whs2"> </p>
\r
680 <p class="whs3"># create a hexahedral
\r
681 mesh on the box</p>
\r
683 <p class="whs2">hexa = smesh.Mesh(box,
\r
684 "Box compound : hexahedrical mesh")</p>
\r
686 <p class="whs2">algo = hexa.Segment()</p>
\r
688 <p class="whs2"> </p>
\r
690 <p class="whs3"># define "NumberOfSegments"
\r
691 hypothesis to cut an edge in a fixed number of segments</p>
\r
693 <p class="whs2">algo.NumberOfSegments(4)</p>
\r
695 <p class="whs2"> </p>
\r
697 <p class="whs3"># create a quadrangle
\r
698 2D algorithm for faces</p>
\r
700 <p class="whs2">hexa.Quadrangle()</p>
\r
702 <p class="whs2"> </p>
\r
704 <p class="whs3"># create a hexahedron
\r
705 3D algorithm for solids</p>
\r
707 <p class="whs2">hexa.Hexahedron()</p>
\r
709 <p class="whs2"> </p>
\r
711 <p class="whs3"># create a local hypothesis</p>
\r
713 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>
\r
715 <p class="whs2"> </p>
\r
717 <p class="whs3"># define "LocalLength"
\r
718 hypothesis to cut an edge in several segments with the same length</p>
\r
720 <p class="whs2">algo.LocalLength(2)</p>
\r
722 <p class="whs2"> </p>
\r
724 <p class="whs3"># define "Propagation"
\r
725 hypothesis that propagates all other hypothesis on all edges on<span style="font-family: 'Times New Roman', serif;">
\r
726 the opposite side in case of quadrangular faces</span></p>
\r
728 <p class="whs2">algo.Propagation()</p>
\r
730 <p class="whs2"> </p>
\r
732 <p class="whs3"># compute the mesh</p>
\r
734 <p class="whs2">hexa.Compute() </p>
\r
736 <p class="whs2"> </p>
\r
738 <p class="whs2"> </p>
\r
740 <h3>Defining 2D and 3D hypotheses</h3>
\r
742 <h4><a name=bookmark4>Maximum Element Area</a></h4>
\r
744 <p class="whs4">import smesh</p>
\r
746 <p class="whs4">import geompy</p>
\r
748 <p class="whs4">import salome</p>
\r
750 <p class="whs4">gg = salome.ImportComponentGUI("GEOM")</p>
\r
752 <p class="whs5"> </p>
\r
754 <p class="whs5"># create vertices</p>
\r
756 <p class="whs4">px =
\r
757 geompy.MakeVertex(100., 0. ,
\r
760 <p class="whs4">py =
\r
761 geompy.MakeVertex(0. ,
\r
762 100., 0. )</p>
\r
764 <p class="whs4">pz =
\r
765 geompy.MakeVertex(0. ,
\r
766 0. , 100.)</p>
\r
768 <p class="whs5"> </p>
\r
770 <p class="whs5"># create a vector from
\r
773 <p class="whs4">vxy = geompy.MakeVector(px,
\r
776 <p class="whs5"> </p>
\r
778 <p class="whs5"># create an arc from three
\r
781 <p class="whs4">arc = geompy.MakeArc(py,
\r
784 <p class="whs5"> </p>
\r
786 <p class="whs5"># create a wire</p>
\r
788 <p class="whs4">wire = geompy.MakeWire([vxy,
\r
791 <p class="whs4">isPlanarFace = 1</p>
\r
793 <p class="whs5"> </p>
\r
795 <p class="whs5"># create a face from the
\r
798 <p class="whs4">face1 = geompy.MakeFace(wire,
\r
801 <p class="whs5"> </p>
\r
803 <p class="whs5"># add objects in the study</p>
\r
805 <p class="whs4">id_face1 = geompy.addToStudy(face1,"Face1")</p>
\r
807 <p class="whs5"> </p>
\r
809 <p class="whs5"># display faces</p>
\r
811 <p class="whs4">gg.createAndDisplayGO(id_face1)</p>
\r
813 <p class="whs4">gg.setDisplayMode(id_face1,1)</p>
\r
815 <p class="whs4">gg.setTransparency(id_face1,0.2)</p>
\r
817 <p class="whs5"> </p>
\r
819 <p class="whs5"># create a hexahedral mesh</p>
\r
821 <p class="whs4">hexa = smesh.Mesh(face1,
\r
822 "Face compound : hexahedrical mesh")</p>
\r
824 <p class="whs4">algo = hexa.Triangle()</p>
\r
826 <p class="whs5"> </p>
\r
828 <p class="whs5"># define "MaxElementArea"
\r
829 hypothesis to be applied to each triangle</p>
\r
831 <p class="whs4">algo.MaxElementArea(7)</p>
\r
833 <p class="whs5"> </p>
\r
835 <p class="whs5"># create a quadrangle 2D
\r
836 algorithm for faces</p>
\r
838 <p class="whs4">hexa.Quadrangle()</p>
\r
840 <p class="whs5"> </p>
\r
842 <p class="whs5"># create a local hypothesis</p>
\r
844 <p class="whs6">algo = hexa.Segment(wire)</p>
\r
846 <p class="whs5"> </p>
\r
848 <p class="whs5"># define "NumberOfSegments"
\r
849 hypothesis to cut an edge in a fixed number of segments</p>
\r
851 <p class="whs4">algo.NumberOfSegments(10)</p>
\r
853 <p class="whs5"> </p>
\r
855 <p class="whs5"># compute the mesh</p>
\r
857 <p class="whs4">hexa.Compute() </p>
\r
859 <p class="whs4"> </p>
\r
861 <h4><a name=bookmark5>Maximum Element Volume</a></h4>
\r
863 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import
\r
866 <p class="whs4">import geompy</p>
\r
868 <p class="whs4">import StdMeshers</p>
\r
870 <p class="whs4">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
\r
871 "SMESH")</p>
\r
873 <p class="whs4">smeshgui = salome.ImportComponentGUI("SMESH")</p>
\r
875 <p class="whs4">smeshgui.Init(salome.myStudyId);</p>
\r
877 <p class="whs4"> </p>
\r
879 <p class="whs7"># create a box</p>
\r
881 <p class="whs4">box = geompy.MakeCylinderRH(30,
\r
882 50) #MakeBox(0., 0., 0., 100., 200., 300.)</p>
\r
884 <p class="whs4"> </p>
\r
886 <p class="whs7"># add the box to the
\r
889 <p class="whs4">idbox = geompy.addToStudy(box,
\r
890 "box")</p>
\r
892 <p class="whs4"> </p>
\r
894 <p class="whs7"># create vertices</p>
\r
896 <p class="whs4">px =
\r
897 geompy.MakeVertex(100., 0. ,
\r
900 <p class="whs4">py =
\r
901 geompy.MakeVertex(0. ,
\r
902 100., 0. )</p>
\r
904 <p class="whs4">pz =
\r
905 geompy.MakeVertex(0. ,
\r
906 0. , 100.)</p>
\r
908 <p class="whs4"> </p>
\r
910 <p class="whs7"># create a vector from
\r
913 <p class="whs4">vxy = geompy.MakeVector(px,
\r
916 <p class="whs4"> </p>
\r
918 <p class="whs7"># create an arc from
\r
921 <p class="whs4">arc = geompy.MakeArc(py,
\r
924 <p class="whs4"> </p>
\r
926 <p class="whs7"># create a wire</p>
\r
928 <p class="whs4">wire = geompy.MakeWire([vxy,
\r
931 <p class="whs4">isPlanarFace = 1</p>
\r
933 <p class="whs4"> </p>
\r
935 <p class="whs7"># create a face from
\r
938 <p class="whs4">#face1</p>
\r
940 <p class="whs4">box = geompy.MakeFace(wire,
\r
943 <p class="whs4"> </p>
\r
945 <p class="whs7"># add objects in the
\r
948 <p class="whs4">id_face1 = geompy.addToStudy(box,"Face1")</p>
\r
950 <p class="whs4">#geompy.addToStudy(face1,"Face1")</p>
\r
952 <p class="whs4"> </p>
\r
954 <p class="whs7"># display faces</p>
\r
956 <p class="whs4">gg.createAndDisplayGO(id_face1)</p>
\r
958 <p class="whs4">gg.setDisplayMode(id_face1,1)</p>
\r
960 <p class="whs4">gg.setTransparency(id_face1,0.2)</p>
\r
962 <p class="whs4"> </p>
\r
964 <p class="whs7"># create a hypothesis</p>
\r
966 <p class="whs4">print "--------------------------
\r
967 create Hypothesis"</p>
\r
969 <p class="whs4">print "--------------------------
\r
970 NumberOfSegments"</p>
\r
972 <p class="whs4">numberOfSegments
\r
975 <p class="whs4">hypNbSeg = smesh.CreateHypothesis("NumberOfSegments",
\r
976 "libStdMeshersEngine.so")</p>
\r
978 <p class="whs4">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>
\r
980 <p class="whs4">print hypNbSeg.GetName()</p>
\r
982 <p class="whs4">print hypNbSeg.GetId()</p>
\r
984 <p class="whs4">print hypNbSeg.GetNumberOfSegments()</p>
\r
986 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hypNbSeg),
\r
987 "NumberOfSegments_10")</p>
\r
989 <p class="whs4">print "--------------------------
\r
990 MaxElementArea"</p>
\r
992 <p class="whs4">maxElementArea =
\r
995 <p class="whs4">hypArea = smesh.CreateHypothesis("MaxElementArea",
\r
996 "libStdMeshersEngine.so")</p>
\r
998 <p class="whs4">hypArea.SetMaxElementArea(maxElementArea)</p>
\r
1000 <p class="whs4">print hypArea.GetName()</p>
\r
1002 <p class="whs4">print hypArea.GetId()</p>
\r
1004 <p class="whs4">print hypArea.GetMaxElementArea()</p>
\r
1006 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hypArea),
\r
1007 "MaxElementArea_800")</p>
\r
1009 <p class="whs4">print "--------------------------
\r
1010 MaxElementVolume"</p>
\r
1012 <p class="whs4">maxElementVolume
\r
1015 <p class="whs4">hypVolume = smesh.CreateHypothesis("MaxElementVolume",
\r
1016 "libStdMeshersEngine.so")</p>
\r
1018 <p class="whs4">hypVolume.SetMaxElementVolume(maxElementVolume)</p>
\r
1020 <p class="whs4">print hypVolume.GetName()</p>
\r
1022 <p class="whs4">print hypVolume.GetId()</p>
\r
1024 <p class="whs4">print hypVolume.GetMaxElementVolume()</p>
\r
1026 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hypVolume),
\r
1027 "MaxElementVolume_900")</p>
\r
1029 <p class="whs4"> </p>
\r
1031 <p class="whs7"># create algorithms</p>
\r
1033 <p class="whs4">print "--------------------------
\r
1034 create Algorithms"</p>
\r
1036 <p class="whs4">print "--------------------------
\r
1037 Regular_1D"</p>
\r
1039 <p class="whs4">regular1D = smesh.CreateHypothesis("Regular_1D",
\r
1040 "libStdMeshersEngine.so")</p>
\r
1042 <p class="whs4">smeshgui.SetName(salome.ObjectToID(regular1D),
\r
1043 "Wire Discretisation")</p>
\r
1045 <p class="whs4">print "--------------------------
\r
1046 MEFISTO_2D"</p>
\r
1048 <p class="whs4">mefisto2D = smesh.CreateHypothesis("MEFISTO_2D",
\r
1049 "libStdMeshersEngine.so")</p>
\r
1051 <p class="whs4">smeshgui.SetName(salome.ObjectToID(mefisto2D),
\r
1052 "MEFISTO_2D")</p>
\r
1054 <p class="whs4">#print "--------------------------
\r
1055 Hexa_3D (Hexahedron meshing algorithm)"</p>
\r
1057 <p class="whs4">hexa3D = smesh.CreateHypothesis("Hexa_3D",
\r
1058 "libStdMeshersEngine.so")</p>
\r
1060 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hexa3D),
\r
1061 "HEXA_3D")</p>
\r
1063 <p class="whs4"> </p>
\r
1065 <p class="whs7"># initialize a mesh
\r
1068 <p class="whs4">mesh = smesh.CreateMesh(box)</p>
\r
1070 <p class="whs4">smeshgui.SetName(salome.ObjectToID(mesh),
\r
1071 "MeshBox")</p>
\r
1073 <p class="whs4"> </p>
\r
1075 <p class="whs7"># add a hypothesis
\r
1078 <p class="whs4">print "--------------------------
\r
1079 add hypothesis to the box"</p>
\r
1081 <p class="whs4">mesh.AddHypothesis(box,hypNbSeg)</p>
\r
1083 <p class="whs4">mesh.AddHypothesis(box,hypArea)</p>
\r
1085 <p class="whs4">mesh.AddHypothesis(box,hypVolume)</p>
\r
1087 <p class="whs4">mesh.AddHypothesis(box,regular1D)</p>
\r
1089 <p class="whs4">mesh.AddHypothesis(box,mefisto2D)</p>
\r
1091 <p class="whs4">mesh.AddHypothesis(box,hexa3D)</p>
\r
1093 <p class="whs4"> </p>
\r
1095 <p class="whs7"># compute the mesh</p>
\r
1097 <p class="whs4">print "--------------------------
\r
1098 compute the mesh of the box"</p>
\r
1100 <p class="whs4">ret = smesh.Compute(mesh,box)</p>
\r
1102 <p class="whs4">print ret</p>
\r
1104 <p class="whs4">if ret == 0:</p>
\r
1106 <p class="whs4"> print
\r
1107 "probleme when computing the mesh"</p>
\r
1109 <p class="whs4">salome.sg.updateObjBrowser(1)</p>
\r
1111 <p class="whs4"> </p>
\r
1113 <h3>Defining Additional Hypotheses</h3>
\r
1115 <h4><a name=bookmark6>Length from Edges</a></h4>
\r
1117 <p class="whs2">import smesh</p>
\r
1119 <p class="whs2">import geompy</p>
\r
1121 <p class="whs2">import salome</p>
\r
1123 <p class="whs2">gg = salome.ImportComponentGUI("GEOM")</p>
\r
1127 <p># create sketchers</p>
\r
1129 <p class="whs2">sketcher1 = geompy.MakeSketcher("Sketcher:F
\r
1130 0 0:TT 70 0:TT 70 70:TT 0 70:WW")</p>
\r
1132 <p class="whs2">sketcher2 = geompy.MakeSketcher("Sketcher:F
\r
1133 20 20:TT 50 20:TT 50 50:TT 20 50:WW")</p>
\r
1135 <p class="whs2">isPlanarFace = 1</p>
\r
1139 <p># create faces from two wires</p>
\r
1141 <p class="whs2">face1 = geompy.MakeFaces([sketcher1,
\r
1142 sketcher2],isPlanarFace)</p>
\r
1146 <p># add objects in the study</p>
\r
1148 <p class="whs2">id_face1 = geompy.addToStudy(face1,"Face1")</p>
\r
1152 <p># display faces</p>
\r
1154 <p class="whs2">gg.createAndDisplayGO(id_face1)</p>
\r
1156 <p class="whs2">gg.setDisplayMode(id_face1,1)</p>
\r
1158 <p class="whs2">gg.setTransparency(id_face1,0.2)</p>
\r
1162 <p># create a mesh</p>
\r
1164 <p class="whs2">hexa = smesh.Mesh(face1,
\r
1165 "Face : triangle 2D mesh")</p>
\r
1167 <p class="whs2">algo = hexa.Triangle()</p>
\r
1171 <p># define "MaxElementArea" hypothesis to be applied to each
\r
1174 <p class="whs2">algo.MaxElementArea(30)</p>
\r
1178 <p># define "LengthFromEdges" hypothesis to build triangles based
\r
1179 on the length of the edges taken from the wire</p>
\r
1181 <p class="whs2">algo.LengthFromEdges()</p>
\r
1185 <p># create local hypothesis</p>
\r
1187 <p class="whs2">algo = hexa.Segment()</p>
\r
1191 <p># define "NumberOfSegments" hypothesis to cut an edge in a
\r
1192 fixed number of segments</p>
\r
1194 <p class="whs2">algo.NumberOfSegments(2)</p>
\r
1198 <p># compute the mesh</p>
\r
1200 <p class="whs2">hexa.Compute() </p>
\r
1202 <p class="whs2"> </p>
\r
1204 <h4><a name=bookmark7>Propagation</a></h4>
\r
1206 <p class="whs2">from geompy import
\r
1209 <p class="whs2">import smesh</p>
\r
1211 <p class="whs2"> </p>
\r
1213 <p class="whs3"># create vertices</p>
\r
1215 <p class="whs2">Point111 = MakeVertex(
\r
1216 0, 0, 0)</p>
\r
1218 <p class="whs2">Point211 = MakeVertex(10,
\r
1219 0, 0)</p>
\r
1221 <p class="whs2">Point121 = MakeVertex(
\r
1222 0, 10, 0)</p>
\r
1224 <p class="whs2">Point221 = MakeVertex(10,
\r
1227 <p class="whs2">Point112 = MakeVertex(
\r
1228 0, 0, 10)</p>
\r
1230 <p class="whs2">Point212 = MakeVertex(10,
\r
1233 <p class="whs2">Point122 = MakeVertex(
\r
1236 <p class="whs2">Point222 = MakeVertex(10,
\r
1239 <p class="whs2"> </p>
\r
1241 <p class="whs3"># create edges</p>
\r
1243 <p class="whs2">EdgeX111 = MakeEdge(Point111,
\r
1246 <p class="whs2">EdgeX121 = MakeEdge(Point121,
\r
1249 <p class="whs2">EdgeX112 = MakeEdge(Point112,
\r
1252 <p class="whs2">EdgeX122 = MakeEdge(Point122,
\r
1255 <p class="whs2">EdgeY11 = MakeEdge(Point111,
\r
1258 <p class="whs2">EdgeY21 = MakeEdge(Point211,
\r
1261 <p class="whs2">EdgeY12 = MakeEdge(Point112,
\r
1264 <p class="whs2">EdgeY22 = MakeEdge(Point212,
\r
1267 <p class="whs2">EdgeZ111 = MakeEdge(Point111,
\r
1270 <p class="whs2">EdgeZ211 = MakeEdge(Point211,
\r
1273 <p class="whs2">EdgeZ121 = MakeEdge(Point121,
\r
1276 <p class="whs2">EdgeZ221 = MakeEdge(Point221,
\r
1279 <p class="whs2"> </p>
\r
1281 <p class="whs3"># create faces</p>
\r
1283 <p class="whs2">FaceX11 = MakeQuad(EdgeY11,
\r
1284 EdgeZ111, EdgeY12, EdgeZ121)</p>
\r
1286 <p class="whs2">FaceX21 = MakeQuad(EdgeY21,
\r
1287 EdgeZ211, EdgeY22, EdgeZ221)</p>
\r
1289 <p class="whs2">FaceY111 = MakeQuad(EdgeX111,
\r
1290 EdgeZ111, EdgeX112, EdgeZ211)</p>
\r
1292 <p class="whs2">FaceY121 = MakeQuad(EdgeX121,
\r
1293 EdgeZ121, EdgeX122, EdgeZ221)</p>
\r
1295 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111,
\r
1296 EdgeY11, EdgeX121, EdgeY21)</p>
\r
1298 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112,
\r
1299 EdgeY12, EdgeX122, EdgeY22)</p>
\r
1301 <p class="whs2"> </p>
\r
1303 <p class="whs3"># create a solid</p>
\r
1305 <p class="whs2">Block = MakeHexa(FaceX11,
\r
1306 FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
\r
1308 <p class="whs2"> </p>
\r
1310 <p class="whs3"># create a compound</p>
\r
1312 <p class="whs2">box = MakeCompound([Block])</p>
\r
1314 <p class="whs2"> </p>
\r
1316 <p class="whs3"># add in the study</p>
\r
1318 <p class="whs2">box_id = addToStudy(box,
\r
1319 "Box compound")</p>
\r
1321 <p class="whs2"> </p>
\r
1323 <p class="whs3"># create a hexahedral
\r
1324 mesh on the box</p>
\r
1326 <p class="whs2">hexa = smesh.Mesh(box,
\r
1327 "Box compound : hexahedrical mesh")</p>
\r
1329 <p class="whs2">algo = hexa.Segment()</p>
\r
1331 <p class="whs2"> </p>
\r
1333 <p class="whs3"># define "NumberOfSegments"
\r
1334 hypothesis to cut an edge in a fixed number of segments</p>
\r
1336 <p class="whs2">algo.NumberOfSegments(4)</p>
\r
1338 <p class="whs2"> </p>
\r
1340 <p class="whs3"># create a quadrangle
\r
1341 2D algorithm for faces</p>
\r
1343 <p class="whs2">hexa.Quadrangle()</p>
\r
1345 <p class="whs2"> </p>
\r
1347 <p class="whs3"># create a hexahedron
\r
1348 3D algorithm for solids</p>
\r
1350 <p class="whs2">hexa.Hexahedron()</p>
\r
1352 <p class="whs2"> </p>
\r
1354 <p class="whs3"># create a local hypothesis</p>
\r
1356 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>
\r
1358 <p class="whs2"> </p>
\r
1360 <p class="whs2"><span style="font-family: 'Times New Roman', serif;">#
\r
1361 define "Arithmetic1D" hypothesis to cut an edge in several segments
\r
1362 with arithmetic length</span> </p>
\r
1364 <p class="whs2">increasing</p>
\r
1366 <p class="whs2">algo.Arithmetic1D(1,
\r
1369 <p class="whs2"> </p>
\r
1371 <p class="whs3"># define "Propagation"
\r
1372 hypothesis that propagatea all other hypothesis on all edges on the opposite
\r
1373 side in case of quadrangular faces</p>
\r
1375 <p class="whs2">algo.Propagation()</p>
\r
1377 <p class="whs2"> </p>
\r
1379 <p class="whs3"># compute the mesh</p>
\r
1381 <p class="whs2">hexa.Compute() </p>
\r
1383 <p class="whs2"> </p>
\r
1385 <h3><a name=bookmark8>Defining Meshing Algorithms</a></h3>
\r
1387 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import
\r
1390 <p class="whs4">import StdMeshers</p>
\r
1392 <p class="whs4">import NETGENPlugin</p>
\r
1394 <p class="whs4"> </p>
\r
1396 <p class="whs4">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
\r
1397 "SMESH")</p>
\r
1399 <p class="whs4">smeshgui = salome.ImportComponentGUI("SMESH")</p>
\r
1401 <p class="whs4">smeshgui.Init(salome.myStudyId);</p>
\r
1403 <p class="whs5"> </p>
\r
1405 <p class="whs5"># create algorithms</p>
\r
1407 <p class="whs4">print "--------------------------
\r
1408 create Algorithms"</p>
\r
1410 <p class="whs4">print "--------------------------
\r
1411 Regular_1D (Wire discretisation)"</p>
\r
1413 <p class="whs4">regular1D = smesh.CreateHypothesis("Regular_1D",
\r
1414 "libStdMeshersEngine.so")</p>
\r
1416 <p class="whs4">smeshgui.SetName(salome.ObjectToID(regular1D),
\r
1417 "Wire Discretisation")</p>
\r
1419 <p class="whs4"> </p>
\r
1421 <p class="whs4">print "--------------------------
\r
1422 MEFISTO_2D (Triangle meshing algorithm)"</p>
\r
1424 <p class="whs4">mefisto2D = smesh.CreateHypothesis("MEFISTO_2D",
\r
1425 "libStdMeshersEngine.so")</p>
\r
1427 <p class="whs4">smeshgui.SetName(salome.ObjectToID(mefisto2D),
\r
1428 "MEFISTO_2D")</p>
\r
1430 <p class="whs4"> </p>
\r
1432 <p class="whs4">print "--------------------------
\r
1433 Quadrangle_2D (Quadrangle meshing algorithm)"</p>
\r
1435 <p class="whs4">quad2D = smesh.CreateHypothesis(
\r
1436 "Quadrangle_2D", "libStdMeshersEngine.so" )</p>
\r
1438 <p class="whs4">smeshgui.SetName(salome.ObjectToID(quad2D),
\r
1439 "Quadrangle_2D")</p>
\r
1441 <p class="whs4"> </p>
\r
1443 <p class="whs4">print "--------------------------
\r
1444 Hexa_3D (Hexahedron meshing algorithm)"</p>
\r
1446 <p class="whs4">hexa3D = smesh.CreateHypothesis("Hexa_3D",
\r
1447 "libStdMeshersEngine.so")</p>
\r
1449 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hexa3D),
\r
1450 "HEXA_3D")</p>
\r
1452 <p class="whs4"> </p>
\r
1454 <p class="whs4">print "--------------------------
\r
1455 NETGEN_3D (Tetrahedron meshing algorithm)"</p>
\r
1457 <p class="whs4">netgen3D = smesh.CreateHypothesis("NETGEN_3D",
\r
1458 "libNETGENEngine.so")</p>
\r
1460 <p class="whs4">smeshgui.SetName(salome.ObjectToID(netgen3D),
\r
1461 "NETGEN_3D")</p>
\r
1463 <p class="whs4">salome.sg.updateObjBrowser(1)</p>
\r
1465 <p class="whs5"> </p>
\r
1467 <script type="text/javascript" language="javascript1.2">
\r
1469 if (window.writeIntopicBar)
\r
1470 writeIntopicBar(0);
\r