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; font-family:'Times New Roman' , serif; }
\r
20 p.whs6 { margin-top:0pt; margin-bottom:0pt; }
\r
22 </style><script type="text/javascript" language="JavaScript">
\r
24 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
\r
26 var strNSS = "<style type='text/css'>";
\r
27 strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";
\r
28 strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";
\r
29 strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
\r
30 strNSS +="</style>";
\r
31 document.write(strNSS);
\r
35 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
\r
38 if (innerWidth != origWidth || innerHeight != origHeight)
\r
41 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
\r
42 origWidth = innerWidth;
\r
43 origHeight = innerHeight;
\r
49 <style type="text/css">
\r
51 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
\r
53 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
\r
54 <script type="text/javascript" language="javascript" src="whver.js"></script>
\r
55 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
\r
56 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
\r
57 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
\r
59 <body><script type="text/javascript" language="javascript1.2">
\r
61 if (window.gbWhTopic)
\r
63 if (window.addTocInfo)
\r
65 addTocInfo("MESH module\nTUI Scripts\nDefining Hypotheses");
\r
66 addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");
\r
69 if (window.writeBtnStyle)
\r
72 if (window.writeIntopicBar)
\r
75 if (window.setRelStartPage)
\r
77 setRelStartPage("smesh.htm");
\r
86 document.location.reload();
\r
89 <h1>Defining Hypotheses and Algorithms</h1>
\r
91 <h3>Defining 1D Hypotheses</h3>
\r
93 <p class="whs1"><a name=bookmark>1D Arithmetic</a></p>
\r
97 <p class="whs2">from geompy import
\r
100 <p class="whs2">import smesh</p>
\r
104 <p># create vertices</p>
\r
106 <p class="whs2">Point111 = MakeVertex(
\r
107 0, 0, 0)</p>
\r
109 <p class="whs2">Point211 = MakeVertex(10,
\r
110 0, 0)</p>
\r
112 <p class="whs2">Point121 = MakeVertex(
\r
113 0, 10, 0)</p>
\r
115 <p class="whs2">Point221 = MakeVertex(10,
\r
118 <p class="whs2">Point112 = MakeVertex(
\r
119 0, 0, 10)</p>
\r
121 <p class="whs2">Point212 = MakeVertex(10,
\r
124 <p class="whs2">Point122 = MakeVertex(
\r
127 <p class="whs2">Point222 = MakeVertex(10,
\r
132 <p># create edges</p>
\r
134 <p class="whs2">EdgeX111 = MakeEdge(Point111,
\r
137 <p class="whs2">EdgeX121 = MakeEdge(Point121,
\r
140 <p class="whs2">EdgeX112 = MakeEdge(Point112,
\r
143 <p class="whs2">EdgeX122 = MakeEdge(Point122,
\r
146 <p class="whs2">EdgeY11 = MakeEdge(Point111,
\r
149 <p class="whs2">EdgeY21 = MakeEdge(Point211,
\r
152 <p class="whs2">EdgeY12 = MakeEdge(Point112,
\r
155 <p class="whs2">EdgeY22 = MakeEdge(Point212,
\r
158 <p class="whs2">EdgeZ111 = MakeEdge(Point111,
\r
161 <p class="whs2">EdgeZ211 = MakeEdge(Point211,
\r
164 <p class="whs2">EdgeZ121 = MakeEdge(Point121,
\r
167 <p class="whs2">EdgeZ221 = MakeEdge(Point221,
\r
172 <p># create faces</p>
\r
174 <p class="whs2">FaceX11 = MakeQuad(EdgeY11,
\r
175 EdgeZ111, EdgeY12, EdgeZ121)</p>
\r
177 <p class="whs2">FaceX21 = MakeQuad(EdgeY21,
\r
178 EdgeZ211, EdgeY22, EdgeZ221)</p>
\r
180 <p class="whs2">FaceY111 = MakeQuad(EdgeX111,
\r
181 EdgeZ111, EdgeX112, EdgeZ211)</p>
\r
183 <p class="whs2">FaceY121 = MakeQuad(EdgeX121,
\r
184 EdgeZ121, EdgeX122, EdgeZ221)</p>
\r
186 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111,
\r
187 EdgeY11, EdgeX121, EdgeY21)</p>
\r
189 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112,
\r
190 EdgeY12, EdgeX122, EdgeY22)</p>
\r
194 <p># create a solid</p>
\r
196 <p class="whs2">Block = MakeHexa(FaceX11,
\r
197 FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
\r
201 <p># create a compound</p>
\r
203 <p class="whs2">box = MakeCompound([Block])</p>
\r
207 <p># add in the study</p>
\r
209 <p class="whs2">box_id = addToStudy(box,
\r
210 "Box compound")</p>
\r
214 <p># create a hexahedral mesh on the box</p>
\r
216 <p class="whs2">hexa = smesh.Mesh(box,
\r
217 "Box compound : hexahedrical mesh")</p>
\r
219 <p class="whs2">algo = hexa.Segment()</p>
\r
223 <p># define "NumberOfSegments" hypothesis to cut an edge in a
\r
224 fixed number of segments</p>
\r
226 <p class="whs2">algo.NumberOfSegments(4)</p>
\r
230 <p># create a quadrangle 2D algorithm for faces</p>
\r
232 <p class="whs2">hexa.Quadrangle()</p>
\r
236 <p># create a hexahedron 3D algorithm for solids</p>
\r
238 <p class="whs2">hexa.Hexahedron()</p>
\r
242 <p># create a local hypothesis</p>
\r
244 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>
\r
248 <p># define "Arithmetic1D" hypothesis to cut an edge in several
\r
249 segments with arithmetic length increasing</p>
\r
251 <p class="whs2">algo.Arithmetic1D(1,
\r
256 <p># define "Propagation" hypothesis that propagates all other
\r
257 hypothesis on all edges on the opposite side in case of quadrangular faces</p>
\r
259 <p class="whs2">algo.Propagation()</p>
\r
263 <p># compute the mesh</p>
\r
265 <p class="whs2">hexa.Compute() </p>
\r
267 <p class="whs2"> </p>
\r
269 <h4><a name=bookmark9>Deflection 1D and Number of Segments</a></h4>
\r
271 <p class="whs2"> </p>
\r
273 <p class="whs2">import smesh</p>
\r
275 <p class="whs2">import geompy</p>
\r
277 <p class="whs2">import salome</p>
\r
279 <p class="whs2">gg = salome.ImportComponentGUI("GEOM")</p>
\r
281 <p class="whs2"> </p>
\r
283 <p class="whs3"># create vertices</p>
\r
285 <p class="whs2">px =
\r
286 geompy.MakeVertex(100., 0. ,
\r
289 <p class="whs2">py =
\r
290 geompy.MakeVertex(0. ,
\r
291 100., 0. )</p>
\r
293 <p class="whs2">pz =
\r
294 geompy.MakeVertex(0. ,
\r
295 0. , 100.)</p>
\r
297 <p class="whs2"> </p>
\r
299 <p class="whs3"># create a vector from
\r
302 <p class="whs2">vxy = geompy.MakeVector(px,
\r
305 <p class="whs2"> </p>
\r
307 <p class="whs3"># create an arc from
\r
310 <p class="whs2">arc = geompy.MakeArc(py,
\r
313 <p class="whs2"> </p>
\r
315 <p class="whs3"># create a wire</p>
\r
317 <p class="whs2">wire = geompy.MakeWire([vxy,
\r
320 <p class="whs2">isPlanarFace = 1</p>
\r
322 <p class="whs2"> </p>
\r
324 <p class="whs3"># create a face from
\r
327 <p class="whs2">face1 = geompy.MakeFace(wire,
\r
330 <p class="whs2"> </p>
\r
332 <p class="whs3"><span style="font-family: 'Times New Roman', serif;">#
\r
333 get edges from the face</span></p>
\r
335 <p class="whs2">vxy,arc = geompy.SubShapeAll(face1,geompy.ShapeType["EDGE"])</p>
\r
337 <p class="whs3"> </p>
\r
339 <p class="whs3"># add objects in the
\r
342 <p class="whs2">id_face1 = geompy.addToStudy(face1,"Face1")</p>
\r
344 <p class="whs2">id_arc = geompy.addToStudyInFather(face1,arc,"Arc
\r
347 <p class="whs2"> </p>
\r
349 <p class="whs3"># display faces</p>
\r
351 <p class="whs2">gg.createAndDisplayGO(id_face1)</p>
\r
353 <p class="whs2">gg.setDisplayMode(id_face1,1)</p>
\r
355 <p class="whs2">gg.setTransparency(id_face1,0.2)</p>
\r
357 <p class="whs2"> </p>
\r
359 <p class="whs3"># create hexahedral mesh</p>
\r
361 <p class="whs2">hexa = smesh.Mesh(face1,
\r
362 "Face compound : hexahedrical mesh")</p>
\r
364 <p class="whs2">algo = hexa.Triangle()</p>
\r
366 <p class="whs2"> </p>
\r
368 <p class="whs3"># define "MaxElementArea"
\r
371 <p class="whs2">algo.MaxElementArea(30)</p>
\r
373 <p class="whs2"> </p>
\r
375 <p class="whs3"># create a local hypothesis
\r
378 <p class="whs2">algo = hexa.Segment(wire)</p>
\r
380 <p class="whs2"> </p>
\r
382 <p class="whs3"># define "NumberOfSegments"
\r
383 hypothesis to cut a straight edge in a fixed number of segments</p>
\r
385 <p class="whs2">algo.NumberOfSegments(6)</p>
\r
387 <p class="whs2"> </p>
\r
389 <p class="whs3"># define a local "Deflection1D"
\r
390 hypothesis on the arc</p>
\r
392 <p class="whs2">algo = hexa.Segment(arc)</p>
\r
394 <p class="whs2">algo.Deflection1D(1)</p>
\r
396 <p class="whs2"> </p>
\r
398 <p class="whs2"> </p>
\r
400 <p class="whs3"># compute the mesh</p>
\r
402 <p class="whs2">hexa.Compute() </p>
\r
406 <h4><a name=bookmark2>Start and End Length</a></h4>
\r
408 <p class="whs2">from geompy import
\r
411 <p class="whs2">import smesh</p>
\r
415 <p># create vertices</p>
\r
417 <p class="whs2">Point111 = MakeVertex(
\r
418 0, 0, 0)</p>
\r
420 <p class="whs2">Point211 = MakeVertex(10,
\r
421 0, 0)</p>
\r
423 <p class="whs2">Point121 = MakeVertex(
\r
424 0, 10, 0)</p>
\r
426 <p class="whs2">Point221 = MakeVertex(10,
\r
429 <p class="whs2">Point112 = MakeVertex(
\r
430 0, 0, 10)</p>
\r
432 <p class="whs2">Point212 = MakeVertex(10,
\r
435 <p class="whs2">Point122 = MakeVertex(
\r
438 <p class="whs2">Point222 = MakeVertex(10,
\r
443 <p># create edges</p>
\r
445 <p class="whs2">EdgeX111 = MakeEdge(Point111,
\r
448 <p class="whs2">EdgeX121 = MakeEdge(Point121,
\r
451 <p class="whs2">EdgeX112 = MakeEdge(Point112,
\r
454 <p class="whs2">EdgeX122 = MakeEdge(Point122,
\r
457 <p class="whs2">EdgeY11 = MakeEdge(Point111,
\r
460 <p class="whs2">EdgeY21 = MakeEdge(Point211,
\r
463 <p class="whs2">EdgeY12 = MakeEdge(Point112,
\r
466 <p class="whs2">EdgeY22 = MakeEdge(Point212,
\r
469 <p class="whs2">EdgeZ111 = MakeEdge(Point111,
\r
472 <p class="whs2">EdgeZ211 = MakeEdge(Point211,
\r
475 <p class="whs2">EdgeZ121 = MakeEdge(Point121,
\r
478 <p class="whs2">EdgeZ221 = MakeEdge(Point221,
\r
483 <p># create faces</p>
\r
485 <p class="whs2">FaceX11 = MakeQuad(EdgeY11,
\r
486 EdgeZ111, EdgeY12, EdgeZ121)</p>
\r
488 <p class="whs2">FaceX21 = MakeQuad(EdgeY21,
\r
489 EdgeZ211, EdgeY22, EdgeZ221)</p>
\r
491 <p class="whs2">FaceY111 = MakeQuad(EdgeX111,
\r
492 EdgeZ111, EdgeX112, EdgeZ211)</p>
\r
494 <p class="whs2">FaceY121 = MakeQuad(EdgeX121,
\r
495 EdgeZ121, EdgeX122, EdgeZ221)</p>
\r
497 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111,
\r
498 EdgeY11, EdgeX121, EdgeY21)</p>
\r
500 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112,
\r
501 EdgeY12, EdgeX122, EdgeY22)</p>
\r
505 <p># create a solid</p>
\r
507 <p class="whs2">Block = MakeHexa(FaceX11,
\r
508 FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
\r
512 <p># create a compound</p>
\r
514 <p class="whs2">box = MakeCompound([Block])</p>
\r
518 <p># add in the study</p>
\r
520 <p class="whs2">box_id = addToStudy(box,
\r
521 "Box compound")</p>
\r
525 <p># create a hexahedral mesh on the box</p>
\r
527 <p class="whs2">hexa = smesh.Mesh(box,
\r
528 "Box compound : hexahedrical mesh")</p>
\r
530 <p class="whs2">algo = hexa.Segment()</p>
\r
534 <p># define "NumberOfSegments" hypothesis to cut an edge in a
\r
535 fixed number of segments</p>
\r
537 <p class="whs2">algo.NumberOfSegments(4)</p>
\r
541 <p># create a quadrangle 2D algorithm for faces</p>
\r
543 <p class="whs2">hexa.Quadrangle()</p>
\r
547 <p># create a hexahedron 3D algorithm for solids</p>
\r
549 <p class="whs2">hexa.Hexahedron()</p>
\r
553 <p># create a local hypothesis</p>
\r
555 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>
\r
559 <p># define "StartEndLength" hypothesis to cut an edge in several
\r
560 segments with increasing geometric length </p>
\r
562 <p class="whs2">algo.StartEndLength(1,
\r
567 <p># define "Propagation" hypothesis that propagates all other
\r
568 hypothesis on all edges on the opposite side in case of quadrangular faces</p>
\r
570 <p class="whs2">algo.Propagation()</p>
\r
574 <p># compute the mesh</p>
\r
576 <p class="whs2">hexa.Compute() </p>
\r
578 <p class="whs2"> </p>
\r
580 <h4><a name=bookmark3>Average Length</a></h4>
\r
582 <p class="whs2">from geompy import
\r
585 <p class="whs2">import smesh</p>
\r
587 <p class="whs2"> </p>
\r
589 <p class="whs3"># create vertices</p>
\r
591 <p class="whs2">Point111 = MakeVertex(
\r
592 0, 0, 0)</p>
\r
594 <p class="whs2">Point211 = MakeVertex(10,
\r
595 0, 0)</p>
\r
597 <p class="whs2">Point121 = MakeVertex(
\r
598 0, 10, 0)</p>
\r
600 <p class="whs2">Point221 = MakeVertex(10,
\r
603 <p class="whs2">Point112 = MakeVertex(
\r
604 0, 0, 10)</p>
\r
606 <p class="whs2">Point212 = MakeVertex(10,
\r
609 <p class="whs2">Point122 = MakeVertex(
\r
612 <p class="whs2">Point222 = MakeVertex(10,
\r
615 <p class="whs2"> </p>
\r
617 <p class="whs3"># create edges</p>
\r
619 <p class="whs2">EdgeX111 = MakeEdge(Point111,
\r
622 <p class="whs2">EdgeX121 = MakeEdge(Point121,
\r
625 <p class="whs2">EdgeX112 = MakeEdge(Point112,
\r
628 <p class="whs2">EdgeX122 = MakeEdge(Point122,
\r
631 <p class="whs2">EdgeY11 = MakeEdge(Point111,
\r
634 <p class="whs2">EdgeY21 = MakeEdge(Point211,
\r
637 <p class="whs2">EdgeY12 = MakeEdge(Point112,
\r
640 <p class="whs2">EdgeY22 = MakeEdge(Point212,
\r
643 <p class="whs2">EdgeZ111 = MakeEdge(Point111,
\r
646 <p class="whs2">EdgeZ211 = MakeEdge(Point211,
\r
649 <p class="whs2">EdgeZ121 = MakeEdge(Point121,
\r
652 <p class="whs2">EdgeZ221 = MakeEdge(Point221,
\r
655 <p class="whs2"> </p>
\r
657 <p class="whs3"># create faces</p>
\r
659 <p class="whs2">FaceX11 = MakeQuad(EdgeY11,
\r
660 EdgeZ111, EdgeY12, EdgeZ121)</p>
\r
662 <p class="whs2">FaceX21 = MakeQuad(EdgeY21,
\r
663 EdgeZ211, EdgeY22, EdgeZ221)</p>
\r
665 <p class="whs2">FaceY111 = MakeQuad(EdgeX111,
\r
666 EdgeZ111, EdgeX112, EdgeZ211)</p>
\r
668 <p class="whs2">FaceY121 = MakeQuad(EdgeX121,
\r
669 EdgeZ121, EdgeX122, EdgeZ221)</p>
\r
671 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111,
\r
672 EdgeY11, EdgeX121, EdgeY21)</p>
\r
674 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112,
\r
675 EdgeY12, EdgeX122, EdgeY22)</p>
\r
677 <p class="whs2"> </p>
\r
679 <p class="whs3"># create a solid</p>
\r
681 <p class="whs2">Block = MakeHexa(FaceX11,
\r
682 FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
\r
684 <p class="whs2"> </p>
\r
686 <p class="whs3"># create a compound</p>
\r
688 <p class="whs2">box = MakeCompound([Block])</p>
\r
690 <p class="whs2"> </p>
\r
692 <p class="whs3"># add in the study</p>
\r
694 <p class="whs2">box_id = addToStudy(box,
\r
695 "Box compound")</p>
\r
697 <p class="whs2"> </p>
\r
699 <p class="whs3"># create a hexahedral
\r
700 mesh on the box</p>
\r
702 <p class="whs2">hexa = smesh.Mesh(box,
\r
703 "Box compound : hexahedrical mesh")</p>
\r
705 <p class="whs2">algo = hexa.Segment()</p>
\r
707 <p class="whs2"> </p>
\r
709 <p class="whs3"># define "NumberOfSegments"
\r
710 hypothesis to cut an edge in a fixed number of segments</p>
\r
712 <p class="whs2">algo.NumberOfSegments(4)</p>
\r
714 <p class="whs2"> </p>
\r
716 <p class="whs3"># create a quadrangle
\r
717 2D algorithm for faces</p>
\r
719 <p class="whs2">hexa.Quadrangle()</p>
\r
721 <p class="whs2"> </p>
\r
723 <p class="whs3"># create a hexahedron
\r
724 3D algorithm for solids</p>
\r
726 <p class="whs2">hexa.Hexahedron()</p>
\r
728 <p class="whs2"> </p>
\r
730 <p class="whs3"># create a local hypothesis</p>
\r
732 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>
\r
734 <p class="whs2"> </p>
\r
736 <p class="whs3"># define "LocalLength"
\r
737 hypothesis to cut an edge in several segments with the same length</p>
\r
739 <p class="whs2">algo.LocalLength(2)</p>
\r
741 <p class="whs2"> </p>
\r
743 <p class="whs3"># define "Propagation"
\r
744 hypothesis that propagates all other hypothesis on all edges on<span style="font-family: 'Times New Roman', serif;">
\r
745 the opposite side in case of quadrangular faces</span></p>
\r
747 <p class="whs2">algo.Propagation()</p>
\r
749 <p class="whs2"> </p>
\r
751 <p class="whs3"># compute the mesh</p>
\r
753 <p class="whs2">hexa.Compute() </p>
\r
755 <p class="whs2"> </p>
\r
757 <p class="whs2"> </p>
\r
759 <h3>Defining 2D and 3D hypotheses</h3>
\r
761 <h4><a name=bookmark4>Maximum Element Area</a></h4>
\r
763 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import
\r
766 <p class="whs4">import geompy</p>
\r
768 <p class="whs4">import salome</p>
\r
770 <p class="whs4"> </p>
\r
772 <p class="whs5"># create a face</p>
\r
774 <p class="whs4">px =
\r
775 geompy.MakeVertex(100., 0. ,
\r
778 <p class="whs4">py =
\r
779 geompy.MakeVertex(0. ,
\r
780 100., 0. )</p>
\r
782 <p class="whs4">pz =
\r
783 geompy.MakeVertex(0. ,
\r
784 0. , 100.)</p>
\r
786 <p class="whs4"> </p>
\r
788 <p class="whs4">vxy = geompy.MakeVector(px,
\r
791 <p class="whs4">arc = geompy.MakeArc(py,
\r
794 <p class="whs4">wire = geompy.MakeWire([vxy,
\r
797 <p class="whs4"> </p>
\r
799 <p class="whs4">isPlanarFace = 1</p>
\r
801 <p class="whs4">face = geompy.MakeFace(wire,
\r
804 <p class="whs4"> </p>
\r
806 <p class="whs5"># add the face in the
\r
809 <p class="whs4">id_face = geompy.addToStudy(face,
\r
810 "Face to be meshed")</p>
\r
812 <p class="whs4"> </p>
\r
814 <p class="whs5"># create a mesh</p>
\r
816 <p class="whs4">tria_mesh = smesh.Mesh(face,
\r
817 "Face : triangulation")</p>
\r
819 <p class="whs4"> </p>
\r
821 <p class="whs5"># define 1D meshing:</p>
\r
823 <p class="whs4">algo = tria_mesh.Segment()</p>
\r
825 <p class="whs4">algo.NumberOfSegments(20)</p>
\r
827 <p class="whs4"> </p>
\r
829 <p class="whs5"># define 2D meshing:</p>
\r
831 <p class="whs5"> </p>
\r
833 <p class="whs5"># assign triangulation
\r
836 <p class="whs4">algo = tria_mesh.Triangle()</p>
\r
838 <p class="whs4"> </p>
\r
840 <p class="whs5"># apply "Max Element
\r
841 Area" hypothesis to each triangle</p>
\r
843 <p class="whs4">algo.MaxElementArea(100)</p>
\r
845 <p class="whs4"> </p>
\r
847 <p class="whs5"># compute the mesh</p>
\r
849 <p class="whs4">tria_mesh.Compute()
\r
852 <p class="whs4"> </p>
\r
854 <h4><a name=bookmark5>Maximum Element Volume</a></h4>
\r
856 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import
\r
859 <p class="whs4">import geompy</p>
\r
861 <p class="whs4">import StdMeshers</p>
\r
863 <p class="whs4">import NETGENPlugin</p>
\r
865 <p class="whs4"> </p>
\r
867 <p class="whs4">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
\r
868 "SMESH")</p>
\r
870 <p class="whs4">smeshgui = salome.ImportComponentGUI("SMESH")</p>
\r
872 <p class="whs4">smeshgui.Init(salome.myStudyId);</p>
\r
874 <p class="whs4"> </p>
\r
876 <p class="whs5"># create a box</p>
\r
878 <p class="whs4">box = geompy.MakeCylinderRH(30,
\r
879 50) #MakeBox(0., 0., 0., </p>
\r
881 <p class="whs4">100., 200., 300.)</p>
\r
883 <p class="whs4"> </p>
\r
885 <p class="whs5"># add the box in the
\r
888 <p class="whs4">idbox = geompy.addToStudy(box,
\r
889 "box")</p>
\r
891 <p class="whs4"> </p>
\r
893 <p class="whs5"># create a set of hypotheses</p>
\r
895 <p class="whs5"> </p>
\r
897 <p class="whs5"># Number of Segments</p>
\r
899 <p class="whs4">numberOfSegments
\r
902 <p class="whs4">hypNbSeg = smesh.CreateHypothesis("NumberOfSegments",
\r
903 "libStdMeshersEngine.so")</p>
\r
905 <p class="whs4">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>
\r
907 <p class="whs4">print hypNbSeg.GetName()</p>
\r
909 <p class="whs4">print hypNbSeg.GetNumberOfSegments()</p>
\r
911 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hypNbSeg),
\r
912 "NumberOfSegments_7")</p>
\r
914 <p class="whs4"> </p>
\r
916 <p class="whs5"># Max Element Area</p>
\r
918 <p class="whs4">maxElementArea =
\r
921 <p class="whs4">hypArea = smesh.CreateHypothesis("MaxElementArea",
\r
922 "libStdMeshersEngine.so")</p>
\r
924 <p class="whs4">hypArea.SetMaxElementArea(maxElementArea)</p>
\r
926 <p class="whs4">print hypArea.GetName()</p>
\r
928 <p class="whs4">print hypArea.GetMaxElementArea()</p>
\r
930 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hypArea),
\r
931 "MaxElementArea_800")</p>
\r
933 <p class="whs4"> </p>
\r
935 <p class="whs5"># Max Element Volume</p>
\r
937 <p class="whs4">maxElementVolume
\r
940 <p class="whs4">hypVolume = smesh.CreateHypothesis("MaxElementVolume",
\r
941 "libStdMeshersEngine.so")</p>
\r
943 <p class="whs4">hypVolume.SetMaxElementVolume(maxElementVolume)</p>
\r
945 <p class="whs4">print hypVolume.GetName()</p>
\r
947 <p class="whs4">print hypVolume.GetMaxElementVolume()</p>
\r
949 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hypVolume),
\r
950 "MaxElementVolume_900")</p>
\r
952 <p class="whs4"> </p>
\r
954 <p class="whs5"># create a set of algorithms</p>
\r
956 <p class="whs5"> </p>
\r
958 <p class="whs5"># Regular_1D</p>
\r
960 <p class="whs4">regular1D = smesh.CreateHypothesis("Regular_1D",
\r
961 "libStdMeshersEngine.so")</p>
\r
963 <p class="whs4">smeshgui.SetName(salome.ObjectToID(regular1D),
\r
964 "Wire Discretisation")</p>
\r
966 <p class="whs4"> </p>
\r
968 <p class="whs5"># MEFISTO_2D</p>
\r
970 <p class="whs4">mefisto2D = smesh.CreateHypothesis("MEFISTO_2D",
\r
971 "libStdMeshersEngine.so")</p>
\r
973 <p class="whs4">smeshgui.SetName(salome.ObjectToID(mefisto2D),
\r
974 "MEFISTO_2D")</p>
\r
976 <p class="whs4"> </p>
\r
978 <p class="whs5"># NETGEN_3D (Tetrahedron
\r
979 meshing algorithm)</p>
\r
981 <p class="whs4">tetra3D = smesh.CreateHypothesis("NETGEN_3D",
\r
982 "libNETGENEngine.so")</p>
\r
984 <p class="whs4">smeshgui.SetName(salome.ObjectToID(tetra3D),
\r
985 "NETGEN_3D")</p>
\r
987 <p class="whs4"> </p>
\r
989 <p class="whs5"># initialize a mesh
\r
992 <p class="whs4">mesh = smesh.CreateMesh(box)</p>
\r
994 <p class="whs4">smeshgui.SetName(salome.ObjectToID(mesh),
\r
995 "MeshBox")</p>
\r
997 <p class="whs4"> </p>
\r
999 <p class="whs5"># add hypotheses and
\r
1000 algorithms to the box</p>
\r
1002 <p class="whs4">mesh.AddHypothesis(box,hypNbSeg)</p>
\r
1004 <p class="whs4">mesh.AddHypothesis(box,hypArea)</p>
\r
1006 <p class="whs4">mesh.AddHypothesis(box,hypVolume)</p>
\r
1008 <p class="whs4">mesh.AddHypothesis(box,regular1D)</p>
\r
1010 <p class="whs4">mesh.AddHypothesis(box,mefisto2D)</p>
\r
1012 <p class="whs4">mesh.AddHypothesis(box,tetra3D)</p>
\r
1014 <p class="whs4"> </p>
\r
1016 <p class="whs5"># compute the mesh</p>
\r
1018 <p class="whs4">ret = smesh.Compute(mesh,box)</p>
\r
1020 <p class="whs4">if ret == 0:</p>
\r
1022 <p class="whs4"> print
\r
1023 "probleme when computing the mesh"</p>
\r
1025 <p class="whs4">else:</p>
\r
1027 <p class="whs4"> print
\r
1028 "Computation succeded"</p>
\r
1030 <p class="whs4">salome.sg.updateObjBrowser(1)
\r
1033 <p class="whs4"> </p>
\r
1035 <h4><a name=bookmark6>Length from Edges</a></h4>
\r
1037 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import
\r
1040 <p class="whs2">import geompy</p>
\r
1042 <p class="whs2">import smesh</p>
\r
1044 <p class="whs2"> </p>
\r
1046 <p class="whs3"># create sketchers</p>
\r
1048 <p class="whs2">sketcher1 = geompy.MakeSketcher("Sketcher:F
\r
1049 0 0:TT 70 0:TT 70 70:TT 0 70:WW")</p>
\r
1051 <p class="whs2">sketcher2 = geompy.MakeSketcher("Sketcher:F
\r
1052 20 20:TT 50 20:TT 50 50:TT 20 50:WW")</p>
\r
1054 <p class="whs2">isPlanarFace = 1</p>
\r
1056 <p class="whs2"> </p>
\r
1058 <p class="whs3"># create a face from
\r
1061 <p class="whs2">face1 = geompy.MakeFaces([sketcher1,
\r
1062 sketcher2],isPlanarFace)</p>
\r
1064 <p class="whs2"> </p>
\r
1066 <p class="whs3"># add object in the study</p>
\r
1068 <p class="whs2">id_face1 = geompy.addToStudy(face1,"Face1")</p>
\r
1070 <p class="whs2"> </p>
\r
1072 <p class="whs3"># create a mesh</p>
\r
1074 <p class="whs2">tria = smesh.Mesh(face1,
\r
1075 "Face : triangle 2D mesh")</p>
\r
1077 <p class="whs2"> </p>
\r
1079 <p class="whs3"># Define 1D meshing</p>
\r
1081 <p class="whs2">algo = tria.Segment()</p>
\r
1083 <p class="whs2">algo.NumberOfSegments(2)</p>
\r
1085 <p class="whs2"> </p>
\r
1087 <p class="whs3"># create and assign the
\r
1088 algorithm for 2D meshing with triangles</p>
\r
1090 <p class="whs2">algo = tria.Triangle()</p>
\r
1092 <p class="whs2"> </p>
\r
1094 <p class="whs3"># create and assign "LengthFromEdges"
\r
1095 hypothesis to build triangles </p>
\r
1097 <p class="whs3"># based on the length
\r
1098 of the edges taken from the wire</p>
\r
1100 <p class="whs2">algo.LengthFromEdges()</p>
\r
1102 <p class="whs2"> </p>
\r
1104 <p class="whs3"># compute the mesh</p>
\r
1106 <p class="whs2">tria.Compute() </p>
\r
1108 <p class="whs2"> </p>
\r
1110 <h3>Defining Additional Hypotheses</h3>
\r
1112 <h4><a name=bookmark7>Propagation</a></h4>
\r
1114 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from
\r
1115 geompy import *</span></p>
\r
1117 <p class="whs2">import smesh</p>
\r
1119 <p class="whs2"> </p>
\r
1121 <p class="whs3"># create vertices</p>
\r
1123 <p class="whs2">Point111 = MakeVertex(
\r
1124 0, 0, 0)</p>
\r
1126 <p class="whs2">Point211 = MakeVertex(10,
\r
1127 0, 0)</p>
\r
1129 <p class="whs2">Point121 = MakeVertex(
\r
1130 0, 10, 0)</p>
\r
1132 <p class="whs2">Point221 = MakeVertex(10,
\r
1135 <p class="whs2">Point112 = MakeVertex(
\r
1136 0, 0, 10)</p>
\r
1138 <p class="whs2">Point212 = MakeVertex(10,
\r
1141 <p class="whs2">Point122 = MakeVertex(
\r
1144 <p class="whs2">Point222 = MakeVertex(10,
\r
1147 <p class="whs2"> </p>
\r
1149 <p class="whs3"># create edges</p>
\r
1151 <p class="whs2">EdgeX111 = MakeEdge(Point111,
\r
1154 <p class="whs2">EdgeX121 = MakeEdge(Point121,
\r
1157 <p class="whs2">EdgeX112 = MakeEdge(Point112,
\r
1160 <p class="whs2">EdgeX122 = MakeEdge(Point122,
\r
1163 <p class="whs2">EdgeY11 = MakeEdge(Point111,
\r
1166 <p class="whs2">EdgeY21 = MakeEdge(Point211,
\r
1169 <p class="whs2">EdgeY12 = MakeEdge(Point112,
\r
1172 <p class="whs2">EdgeY22 = MakeEdge(Point212,
\r
1175 <p class="whs2">EdgeZ111 = MakeEdge(Point111,
\r
1178 <p class="whs2">EdgeZ211 = MakeEdge(Point211,
\r
1181 <p class="whs2">EdgeZ121 = MakeEdge(Point121,
\r
1184 <p class="whs2">EdgeZ221 = MakeEdge(Point221,
\r
1187 <p class="whs2"> </p>
\r
1189 <p class="whs3"># create faces</p>
\r
1191 <p class="whs2">FaceX11 = MakeQuad(EdgeY11,
\r
1192 EdgeZ111, EdgeY12, EdgeZ121)</p>
\r
1194 <p class="whs2">FaceX21 = MakeQuad(EdgeY21,
\r
1195 EdgeZ211, EdgeY22, EdgeZ221)</p>
\r
1197 <p class="whs2">FaceY111 = MakeQuad(EdgeX111,
\r
1198 EdgeZ111, EdgeX112, EdgeZ211)</p>
\r
1200 <p class="whs2">FaceY121 = MakeQuad(EdgeX121,
\r
1201 EdgeZ121, EdgeX122, EdgeZ221)</p>
\r
1203 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111,
\r
1204 EdgeY11, EdgeX121, EdgeY21)</p>
\r
1206 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112,
\r
1207 EdgeY12, EdgeX122, EdgeY22)</p>
\r
1209 <p class="whs2"> </p>
\r
1211 <p class="whs3"># create a solid</p>
\r
1213 <p class="whs2">box = MakeHexa(FaceX11,
\r
1214 FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
\r
1216 <p class="whs2"> </p>
\r
1218 <p class="whs3"># add in the study</p>
\r
1220 <p class="whs2">box_id = addToStudy(box,
\r
1221 "Box")</p>
\r
1223 <p class="whs2"> </p>
\r
1225 <p class="whs3"># create a hexahedral
\r
1226 mesh on the box</p>
\r
1228 <p class="whs2">hexa = smesh.Mesh(box,
\r
1229 "Box : hexahedrical mesh")</p>
\r
1231 <p class="whs2"> </p>
\r
1233 <p class="whs3"># create an 1D algorithm
\r
1236 <p class="whs2">algo = hexa.Segment()</p>
\r
1238 <p class="whs2"> </p>
\r
1240 <p class="whs3"># define "NumberOfSegments"
\r
1241 hypothesis to cut an edge in a fixed number of segments</p>
\r
1243 <p class="whs2">algo.NumberOfSegments(4)</p>
\r
1245 <p class="whs2"> </p>
\r
1247 <p class="whs3"># create a quadrangle
\r
1248 2D algorithm for faces</p>
\r
1250 <p class="whs2">hexa.Quadrangle()</p>
\r
1252 <p class="whs2"> </p>
\r
1254 <p class="whs3"># create a hexahedron
\r
1255 3D algorithm for solids</p>
\r
1257 <p class="whs2">hexa.Hexahedron()</p>
\r
1259 <p class="whs2"> </p>
\r
1261 <p class="whs3"># create a local hypothesis</p>
\r
1263 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>
\r
1265 <p class="whs2"> </p>
\r
1267 <p class="whs3"># define "Arithmetic1D"
\r
1268 hypothesis to cut an edge<span style="font-family: 'Times New Roman', serif;">
\r
1269 in several segments with increasing length</span></p>
\r
1271 <p class="whs2">algo.Arithmetic1D(1,
\r
1274 <p class="whs2"> </p>
\r
1276 <p class="whs3"># define "Propagation"
\r
1277 hypothesis that propagates all other 1D hypotheses</p>
\r
1279 <p class="whs3"># from all edges on the
\r
1280 opposite side of a face in case of quadrangular faces</p>
\r
1282 <p class="whs2">algo.Propagation()</p>
\r
1284 <p class="whs2"> </p>
\r
1286 <p class="whs3"># compute the mesh</p>
\r
1288 <p class="whs2">hexa.Compute() </p>
\r
1290 <h3><a name=bookmark8>Defining Meshing Algorithms</a></h3>
\r
1292 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import
\r
1295 <p class="whs4">import StdMeshers</p>
\r
1297 <p class="whs4">import NETGENPlugin</p>
\r
1299 <p class="whs4"> </p>
\r
1301 <p class="whs4">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
\r
1302 "SMESH")</p>
\r
1304 <p class="whs4">smeshgui = salome.ImportComponentGUI("SMESH")</p>
\r
1306 <p class="whs4">smeshgui.Init(salome.myStudyId);</p>
\r
1308 <p class="whs6"> </p>
\r
1310 <p class="whs6"># create algorithms</p>
\r
1312 <p class="whs4">print "--------------------------
\r
1313 create Algorithms"</p>
\r
1315 <p class="whs4">print "--------------------------
\r
1316 Regular_1D (Wire discretisation)"</p>
\r
1318 <p class="whs4">regular1D = smesh.CreateHypothesis("Regular_1D",
\r
1319 "libStdMeshersEngine.so")</p>
\r
1321 <p class="whs4">smeshgui.SetName(salome.ObjectToID(regular1D),
\r
1322 "Wire Discretisation")</p>
\r
1324 <p class="whs4"> </p>
\r
1326 <p class="whs4">print "--------------------------
\r
1327 MEFISTO_2D (Triangle meshing algorithm)"</p>
\r
1329 <p class="whs4">mefisto2D = smesh.CreateHypothesis("MEFISTO_2D",
\r
1330 "libStdMeshersEngine.so")</p>
\r
1332 <p class="whs4">smeshgui.SetName(salome.ObjectToID(mefisto2D),
\r
1333 "MEFISTO_2D")</p>
\r
1335 <p class="whs4"> </p>
\r
1337 <p class="whs4">print "--------------------------
\r
1338 Quadrangle_2D (Quadrangle meshing algorithm)"</p>
\r
1340 <p class="whs4">quad2D = smesh.CreateHypothesis(
\r
1341 "Quadrangle_2D", "libStdMeshersEngine.so" )</p>
\r
1343 <p class="whs4">smeshgui.SetName(salome.ObjectToID(quad2D),
\r
1344 "Quadrangle_2D")</p>
\r
1346 <p class="whs4"> </p>
\r
1348 <p class="whs4">print "--------------------------
\r
1349 Hexa_3D (Hexahedron meshing algorithm)"</p>
\r
1351 <p class="whs4">hexa3D = smesh.CreateHypothesis("Hexa_3D",
\r
1352 "libStdMeshersEngine.so")</p>
\r
1354 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hexa3D),
\r
1355 "HEXA_3D")</p>
\r
1357 <p class="whs4"> </p>
\r
1359 <p class="whs4">print "--------------------------
\r
1360 NETGEN_3D (Tetrahedron meshing algorithm)"</p>
\r
1362 <p class="whs4">netgen3D = smesh.CreateHypothesis("NETGEN_3D",
\r
1363 "libNETGENEngine.so")</p>
\r
1365 <p class="whs4">smeshgui.SetName(salome.ObjectToID(netgen3D),
\r
1366 "NETGEN_3D")</p>
\r
1368 <p class="whs4">salome.sg.updateObjBrowser(1)</p>
\r
1370 <p class="whs6"> </p>
\r
1372 <script type="text/javascript" language="javascript1.2">
\r
1374 if (window.writeIntopicBar)
\r
1375 writeIntopicBar(0);
\r