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 =
\r
288 geompy.MakeVertex(100., 0. ,
\r
291 <p class="whs2">py =
\r
292 geompy.MakeVertex(0. ,
\r
293 100., 0. )</p>
\r
295 <p class="whs2">pz =
\r
296 geompy.MakeVertex(0. ,
\r
297 0. , 100.)</p>
\r
299 <p class="whs2"> </p>
\r
301 <p class="whs3"># create a vector from
\r
304 <p class="whs2">vxy = geompy.MakeVector(px,
\r
307 <p class="whs2"> </p>
\r
309 <p class="whs3"># create an arc from
\r
312 <p class="whs2">arc = geompy.MakeArc(py,
\r
315 <p class="whs2"> </p>
\r
317 <p class="whs3"># create a wire</p>
\r
319 <p class="whs2">wire = geompy.MakeWire([vxy,
\r
322 <p class="whs2">isPlanarFace = 1</p>
\r
324 <p class="whs2"> </p>
\r
326 <p class="whs3"># create a face from
\r
329 <p class="whs2">face1 = geompy.MakeFace(wire,
\r
332 <p class="whs2"> </p>
\r
334 <p class="whs3"># add objects in the
\r
337 <p class="whs2">id_face1 = geompy.addToStudy(face1,"Face1")</p>
\r
339 <p class="whs2"> </p>
\r
341 <p class="whs3"># display faces</p>
\r
343 <p class="whs2">gg.createAndDisplayGO(id_face1)</p>
\r
345 <p class="whs2">gg.setDisplayMode(id_face1,1)</p>
\r
347 <p class="whs2">gg.setTransparency(id_face1,0.2)</p>
\r
349 <p class="whs2"> </p>
\r
351 <p class="whs3"># create hexahedral mesh</p>
\r
353 <p class="whs2">hexa = smesh.Mesh(face1,
\r
354 "Face compound : hexahedrical mesh")</p>
\r
356 <p class="whs2">algo = hexa.Triangle()</p>
\r
358 <p class="whs2"> </p>
\r
360 <p class="whs3"># define "MaxElementArea"
\r
361 hypothesis to be applied to
\r
364 <p class="whs2">algo.MaxElementArea(30)</p>
\r
366 <p class="whs2"> </p>
\r
368 <p class="whs3"># create a quadrangle
\r
369 2D algorithm for faces</p>
\r
371 <p class="whs2">hexa.Quadrangle()</p>
\r
373 <p class="whs2"> </p>
\r
375 <p class="whs3"># create a local hypothesis</p>
\r
377 <p class="whs2">algo = hexa.Segment(wire)</p>
\r
379 <p class="whs2"> </p>
\r
381 <p class="whs3"># define "NumberOfSegments"
\r
382 hypothesis to cut an edge in a fixed number of segments</p>
\r
384 <p class="whs2">algo.NumberOfSegments(6)</p>
\r
386 <p class="whs2"> </p>
\r
388 <p class="whs3"># define "Deflection1D"
\r
391 <p class="whs2">algo.Deflection1D(1)</p>
\r
393 <p class="whs2"> </p>
\r
395 <p class="whs3"># compute the mesh</p>
\r
397 <p class="whs2">hexa.Compute() </p>
\r
401 <h4><a name=bookmark2>Start and End Length</a></h4>
\r
403 <p class="whs2">from geompy import
\r
406 <p class="whs2">import smesh</p>
\r
410 <p># create vertices</p>
\r
412 <p class="whs2">Point111 = MakeVertex(
\r
413 0, 0, 0)</p>
\r
415 <p class="whs2">Point211 = MakeVertex(10,
\r
416 0, 0)</p>
\r
418 <p class="whs2">Point121 = MakeVertex(
\r
419 0, 10, 0)</p>
\r
421 <p class="whs2">Point221 = MakeVertex(10,
\r
424 <p class="whs2">Point112 = MakeVertex(
\r
425 0, 0, 10)</p>
\r
427 <p class="whs2">Point212 = MakeVertex(10,
\r
430 <p class="whs2">Point122 = MakeVertex(
\r
433 <p class="whs2">Point222 = MakeVertex(10,
\r
438 <p># create edges</p>
\r
440 <p class="whs2">EdgeX111 = MakeEdge(Point111,
\r
443 <p class="whs2">EdgeX121 = MakeEdge(Point121,
\r
446 <p class="whs2">EdgeX112 = MakeEdge(Point112,
\r
449 <p class="whs2">EdgeX122 = MakeEdge(Point122,
\r
452 <p class="whs2">EdgeY11 = MakeEdge(Point111,
\r
455 <p class="whs2">EdgeY21 = MakeEdge(Point211,
\r
458 <p class="whs2">EdgeY12 = MakeEdge(Point112,
\r
461 <p class="whs2">EdgeY22 = MakeEdge(Point212,
\r
464 <p class="whs2">EdgeZ111 = MakeEdge(Point111,
\r
467 <p class="whs2">EdgeZ211 = MakeEdge(Point211,
\r
470 <p class="whs2">EdgeZ121 = MakeEdge(Point121,
\r
473 <p class="whs2">EdgeZ221 = MakeEdge(Point221,
\r
478 <p># create faces</p>
\r
480 <p class="whs2">FaceX11 = MakeQuad(EdgeY11,
\r
481 EdgeZ111, EdgeY12, EdgeZ121)</p>
\r
483 <p class="whs2">FaceX21 = MakeQuad(EdgeY21,
\r
484 EdgeZ211, EdgeY22, EdgeZ221)</p>
\r
486 <p class="whs2">FaceY111 = MakeQuad(EdgeX111,
\r
487 EdgeZ111, EdgeX112, EdgeZ211)</p>
\r
489 <p class="whs2">FaceY121 = MakeQuad(EdgeX121,
\r
490 EdgeZ121, EdgeX122, EdgeZ221)</p>
\r
492 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111,
\r
493 EdgeY11, EdgeX121, EdgeY21)</p>
\r
495 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112,
\r
496 EdgeY12, EdgeX122, EdgeY22)</p>
\r
500 <p># create a solid</p>
\r
502 <p class="whs2">Block = MakeHexa(FaceX11,
\r
503 FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
\r
507 <p># create a compound</p>
\r
509 <p class="whs2">box = MakeCompound([Block])</p>
\r
513 <p># add in the study</p>
\r
515 <p class="whs2">box_id = addToStudy(box,
\r
516 "Box compound")</p>
\r
520 <p># create a hexahedral mesh on the box</p>
\r
522 <p class="whs2">hexa = smesh.Mesh(box,
\r
523 "Box compound : hexahedrical mesh")</p>
\r
525 <p class="whs2">algo = hexa.Segment()</p>
\r
529 <p># define "NumberOfSegments" hypothesis to cut an edge in a
\r
530 fixed number of segments</p>
\r
532 <p class="whs2">algo.NumberOfSegments(4)</p>
\r
536 <p># create a quadrangle 2D algorithm for faces</p>
\r
538 <p class="whs2">hexa.Quadrangle()</p>
\r
542 <p># create a hexahedron 3D algorithm for solids</p>
\r
544 <p class="whs2">hexa.Hexahedron()</p>
\r
548 <p># create a local hypothesis</p>
\r
550 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>
\r
554 <p># define "StartEndLength" hypothesis to cut an edge in several
\r
555 segments with increasing geometric length </p>
\r
557 <p class="whs2">algo.StartEndLength(1,
\r
562 <p># define "Propagation" hypothesis that propagates all other
\r
563 hypothesis on all edges on the opposite side in case of quadrangular faces</p>
\r
565 <p class="whs2">algo.Propagation()</p>
\r
569 <p># compute the mesh</p>
\r
571 <p class="whs2">hexa.Compute() </p>
\r
573 <p class="whs2"> </p>
\r
575 <h4><a name=bookmark3>Average Length</a></h4>
\r
577 <p class="whs2">from geompy import
\r
580 <p class="whs2">import smesh</p>
\r
582 <p class="whs2"> </p>
\r
584 <p class="whs3"># create vertices</p>
\r
586 <p class="whs2">Point111 = MakeVertex(
\r
587 0, 0, 0)</p>
\r
589 <p class="whs2">Point211 = MakeVertex(10,
\r
590 0, 0)</p>
\r
592 <p class="whs2">Point121 = MakeVertex(
\r
593 0, 10, 0)</p>
\r
595 <p class="whs2">Point221 = MakeVertex(10,
\r
598 <p class="whs2">Point112 = MakeVertex(
\r
599 0, 0, 10)</p>
\r
601 <p class="whs2">Point212 = MakeVertex(10,
\r
604 <p class="whs2">Point122 = MakeVertex(
\r
607 <p class="whs2">Point222 = MakeVertex(10,
\r
610 <p class="whs2"> </p>
\r
612 <p class="whs3"># create edges</p>
\r
614 <p class="whs2">EdgeX111 = MakeEdge(Point111,
\r
617 <p class="whs2">EdgeX121 = MakeEdge(Point121,
\r
620 <p class="whs2">EdgeX112 = MakeEdge(Point112,
\r
623 <p class="whs2">EdgeX122 = MakeEdge(Point122,
\r
626 <p class="whs2">EdgeY11 = MakeEdge(Point111,
\r
629 <p class="whs2">EdgeY21 = MakeEdge(Point211,
\r
632 <p class="whs2">EdgeY12 = MakeEdge(Point112,
\r
635 <p class="whs2">EdgeY22 = MakeEdge(Point212,
\r
638 <p class="whs2">EdgeZ111 = MakeEdge(Point111,
\r
641 <p class="whs2">EdgeZ211 = MakeEdge(Point211,
\r
644 <p class="whs2">EdgeZ121 = MakeEdge(Point121,
\r
647 <p class="whs2">EdgeZ221 = MakeEdge(Point221,
\r
650 <p class="whs2"> </p>
\r
652 <p class="whs3"># create faces</p>
\r
654 <p class="whs2">FaceX11 = MakeQuad(EdgeY11,
\r
655 EdgeZ111, EdgeY12, EdgeZ121)</p>
\r
657 <p class="whs2">FaceX21 = MakeQuad(EdgeY21,
\r
658 EdgeZ211, EdgeY22, EdgeZ221)</p>
\r
660 <p class="whs2">FaceY111 = MakeQuad(EdgeX111,
\r
661 EdgeZ111, EdgeX112, EdgeZ211)</p>
\r
663 <p class="whs2">FaceY121 = MakeQuad(EdgeX121,
\r
664 EdgeZ121, EdgeX122, EdgeZ221)</p>
\r
666 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111,
\r
667 EdgeY11, EdgeX121, EdgeY21)</p>
\r
669 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112,
\r
670 EdgeY12, EdgeX122, EdgeY22)</p>
\r
672 <p class="whs2"> </p>
\r
674 <p class="whs3"># create a solid</p>
\r
676 <p class="whs2">Block = MakeHexa(FaceX11,
\r
677 FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
\r
679 <p class="whs2"> </p>
\r
681 <p class="whs3"># create a compound</p>
\r
683 <p class="whs2">box = MakeCompound([Block])</p>
\r
685 <p class="whs2"> </p>
\r
687 <p class="whs3"># add in the study</p>
\r
689 <p class="whs2">box_id = addToStudy(box,
\r
690 "Box compound")</p>
\r
692 <p class="whs2"> </p>
\r
694 <p class="whs3"># create a hexahedral
\r
695 mesh on the box</p>
\r
697 <p class="whs2">hexa = smesh.Mesh(box,
\r
698 "Box compound : hexahedrical mesh")</p>
\r
700 <p class="whs2">algo = hexa.Segment()</p>
\r
702 <p class="whs2"> </p>
\r
704 <p class="whs3"># define "NumberOfSegments"
\r
705 hypothesis to cut an edge in a fixed number of segments</p>
\r
707 <p class="whs2">algo.NumberOfSegments(4)</p>
\r
709 <p class="whs2"> </p>
\r
711 <p class="whs3"># create a quadrangle
\r
712 2D algorithm for faces</p>
\r
714 <p class="whs2">hexa.Quadrangle()</p>
\r
716 <p class="whs2"> </p>
\r
718 <p class="whs3"># create a hexahedron
\r
719 3D algorithm for solids</p>
\r
721 <p class="whs2">hexa.Hexahedron()</p>
\r
723 <p class="whs2"> </p>
\r
725 <p class="whs3"># create a local hypothesis</p>
\r
727 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>
\r
729 <p class="whs2"> </p>
\r
731 <p class="whs3"># define "LocalLength"
\r
732 hypothesis to cut an edge in several segments with the same length</p>
\r
734 <p class="whs2">algo.LocalLength(2)</p>
\r
736 <p class="whs2"> </p>
\r
738 <p class="whs3"># define "Propagation"
\r
739 hypothesis that propagates all other hypothesis on all edges on<span style="font-family: 'Times New Roman', serif;">
\r
740 the opposite side in case of quadrangular faces</span></p>
\r
742 <p class="whs2">algo.Propagation()</p>
\r
744 <p class="whs2"> </p>
\r
746 <p class="whs3"># compute the mesh</p>
\r
748 <p class="whs2">hexa.Compute() </p>
\r
750 <p class="whs2"> </p>
\r
752 <p class="whs2"> </p>
\r
754 <h3>Defining 2D and 3D hypotheses</h3>
\r
756 <h4><a name=bookmark4>Maximum Element Area</a></h4>
\r
758 <p class="whs4">import smesh</p>
\r
760 <p class="whs4">import geompy</p>
\r
762 <p class="whs4">import salome</p>
\r
764 <p class="whs4">gg = salome.ImportComponentGUI("GEOM")</p>
\r
766 <p class="whs5"> </p>
\r
768 <p class="whs5"># create vertices</p>
\r
770 <p class="whs4">px =
\r
771 geompy.MakeVertex(100., 0. ,
\r
774 <p class="whs4">py =
\r
775 geompy.MakeVertex(0. ,
\r
776 100., 0. )</p>
\r
778 <p class="whs4">pz =
\r
779 geompy.MakeVertex(0. ,
\r
780 0. , 100.)</p>
\r
782 <p class="whs5"> </p>
\r
784 <p class="whs5"># create a vector from
\r
787 <p class="whs4">vxy = geompy.MakeVector(px,
\r
790 <p class="whs5"> </p>
\r
792 <p class="whs5"># create an arc from three
\r
795 <p class="whs4">arc = geompy.MakeArc(py,
\r
798 <p class="whs5"> </p>
\r
800 <p class="whs5"># create a wire</p>
\r
802 <p class="whs4">wire = geompy.MakeWire([vxy,
\r
805 <p class="whs4">isPlanarFace = 1</p>
\r
807 <p class="whs5"> </p>
\r
809 <p class="whs5"># create a face from the
\r
812 <p class="whs4">face1 = geompy.MakeFace(wire,
\r
815 <p class="whs5"> </p>
\r
817 <p class="whs5"># add objects in the study</p>
\r
819 <p class="whs4">id_face1 = geompy.addToStudy(face1,"Face1")</p>
\r
821 <p class="whs5"> </p>
\r
823 <p class="whs5"># display faces</p>
\r
825 <p class="whs4">gg.createAndDisplayGO(id_face1)</p>
\r
827 <p class="whs4">gg.setDisplayMode(id_face1,1)</p>
\r
829 <p class="whs4">gg.setTransparency(id_face1,0.2)</p>
\r
831 <p class="whs5"> </p>
\r
833 <p class="whs5"># create a hexahedral mesh</p>
\r
835 <p class="whs4">hexa = smesh.Mesh(face1,
\r
836 "Face compound : hexahedrical mesh")</p>
\r
838 <p class="whs4">algo = hexa.Triangle()</p>
\r
840 <p class="whs5"> </p>
\r
842 <p class="whs5"># define "MaxElementArea"
\r
843 hypothesis to be applied to each triangle</p>
\r
845 <p class="whs4">algo.MaxElementArea(7)</p>
\r
847 <p class="whs5"> </p>
\r
849 <p class="whs5"># create a quadrangle 2D
\r
850 algorithm for faces</p>
\r
852 <p class="whs4">hexa.Quadrangle()</p>
\r
854 <p class="whs5"> </p>
\r
856 <p class="whs5"># create a local hypothesis</p>
\r
858 <p class="whs6">algo = hexa.Segment(wire)</p>
\r
860 <p class="whs5"> </p>
\r
862 <p class="whs5"># define "NumberOfSegments"
\r
863 hypothesis to cut an edge in a fixed number of segments</p>
\r
865 <p class="whs4">algo.NumberOfSegments(10)</p>
\r
867 <p class="whs5"> </p>
\r
869 <p class="whs5"># compute the mesh</p>
\r
871 <p class="whs4">hexa.Compute() </p>
\r
873 <p class="whs4"> </p>
\r
875 <h4><a name=bookmark5>Maximum Element Volume</a></h4>
\r
877 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import
\r
880 <p class="whs4">import geompy</p>
\r
882 <p class="whs4">import StdMeshers</p>
\r
884 <p class="whs4">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
\r
885 "SMESH")</p>
\r
887 <p class="whs4">smeshgui = salome.ImportComponentGUI("SMESH")</p>
\r
889 <p class="whs4">smeshgui.Init(salome.myStudyId);</p>
\r
891 <p class="whs4"> </p>
\r
893 <p class="whs7"># create a box</p>
\r
895 <p class="whs4">box = geompy.MakeCylinderRH(30,
\r
896 50) #MakeBox(0., 0., 0., 100., 200., 300.)</p>
\r
898 <p class="whs4"> </p>
\r
900 <p class="whs7"># add the box to the
\r
903 <p class="whs4">idbox = geompy.addToStudy(box,
\r
904 "box")</p>
\r
906 <p class="whs4"> </p>
\r
908 <p class="whs7"># create vertices</p>
\r
910 <p class="whs4">px =
\r
911 geompy.MakeVertex(100., 0. ,
\r
914 <p class="whs4">py =
\r
915 geompy.MakeVertex(0. ,
\r
916 100., 0. )</p>
\r
918 <p class="whs4">pz =
\r
919 geompy.MakeVertex(0. ,
\r
920 0. , 100.)</p>
\r
922 <p class="whs4"> </p>
\r
924 <p class="whs7"># create a vector from
\r
927 <p class="whs4">vxy = geompy.MakeVector(px,
\r
930 <p class="whs4"> </p>
\r
932 <p class="whs7"># create an arc from
\r
935 <p class="whs4">arc = geompy.MakeArc(py,
\r
938 <p class="whs4"> </p>
\r
940 <p class="whs7"># create a wire</p>
\r
942 <p class="whs4">wire = geompy.MakeWire([vxy,
\r
945 <p class="whs4">isPlanarFace = 1</p>
\r
947 <p class="whs4"> </p>
\r
949 <p class="whs7"># create a face from
\r
952 <p class="whs4">#face1</p>
\r
954 <p class="whs4">box = geompy.MakeFace(wire,
\r
957 <p class="whs4"> </p>
\r
959 <p class="whs7"># add objects in the
\r
962 <p class="whs4">id_face1 = geompy.addToStudy(box,"Face1")</p>
\r
964 <p class="whs4">#geompy.addToStudy(face1,"Face1")</p>
\r
966 <p class="whs4"> </p>
\r
968 <p class="whs7"># display faces</p>
\r
970 <p class="whs4">gg.createAndDisplayGO(id_face1)</p>
\r
972 <p class="whs4">gg.setDisplayMode(id_face1,1)</p>
\r
974 <p class="whs4">gg.setTransparency(id_face1,0.2)</p>
\r
976 <p class="whs4"> </p>
\r
978 <p class="whs7"># create a hypothesis</p>
\r
980 <p class="whs4">print "--------------------------
\r
981 create Hypothesis"</p>
\r
983 <p class="whs4">print "--------------------------
\r
984 NumberOfSegments"</p>
\r
986 <p class="whs4">numberOfSegments
\r
989 <p class="whs4">hypNbSeg = smesh.CreateHypothesis("NumberOfSegments",
\r
990 "libStdMeshersEngine.so")</p>
\r
992 <p class="whs4">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>
\r
994 <p class="whs4">print hypNbSeg.GetName()</p>
\r
996 <p class="whs4">print hypNbSeg.GetId()</p>
\r
998 <p class="whs4">print hypNbSeg.GetNumberOfSegments()</p>
\r
1000 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hypNbSeg),
\r
1001 "NumberOfSegments_10")</p>
\r
1003 <p class="whs4">print "--------------------------
\r
1004 MaxElementArea"</p>
\r
1006 <p class="whs4">maxElementArea =
\r
1009 <p class="whs4">hypArea = smesh.CreateHypothesis("MaxElementArea",
\r
1010 "libStdMeshersEngine.so")</p>
\r
1012 <p class="whs4">hypArea.SetMaxElementArea(maxElementArea)</p>
\r
1014 <p class="whs4">print hypArea.GetName()</p>
\r
1016 <p class="whs4">print hypArea.GetId()</p>
\r
1018 <p class="whs4">print hypArea.GetMaxElementArea()</p>
\r
1020 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hypArea),
\r
1021 "MaxElementArea_800")</p>
\r
1023 <p class="whs4">print "--------------------------
\r
1024 MaxElementVolume"</p>
\r
1026 <p class="whs4">maxElementVolume
\r
1029 <p class="whs4">hypVolume = smesh.CreateHypothesis("MaxElementVolume",
\r
1030 "libStdMeshersEngine.so")</p>
\r
1032 <p class="whs4">hypVolume.SetMaxElementVolume(maxElementVolume)</p>
\r
1034 <p class="whs4">print hypVolume.GetName()</p>
\r
1036 <p class="whs4">print hypVolume.GetId()</p>
\r
1038 <p class="whs4">print hypVolume.GetMaxElementVolume()</p>
\r
1040 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hypVolume),
\r
1041 "MaxElementVolume_900")</p>
\r
1043 <p class="whs4"> </p>
\r
1045 <p class="whs7"># create algorithms</p>
\r
1047 <p class="whs4">print "--------------------------
\r
1048 create Algorithms"</p>
\r
1050 <p class="whs4">print "--------------------------
\r
1051 Regular_1D"</p>
\r
1053 <p class="whs4">regular1D = smesh.CreateHypothesis("Regular_1D",
\r
1054 "libStdMeshersEngine.so")</p>
\r
1056 <p class="whs4">smeshgui.SetName(salome.ObjectToID(regular1D),
\r
1057 "Wire Discretisation")</p>
\r
1059 <p class="whs4">print "--------------------------
\r
1060 MEFISTO_2D"</p>
\r
1062 <p class="whs4">mefisto2D = smesh.CreateHypothesis("MEFISTO_2D",
\r
1063 "libStdMeshersEngine.so")</p>
\r
1065 <p class="whs4">smeshgui.SetName(salome.ObjectToID(mefisto2D),
\r
1066 "MEFISTO_2D")</p>
\r
1068 <p class="whs4">#print "--------------------------
\r
1069 Hexa_3D (Hexahedron meshing algorithm)"</p>
\r
1071 <p class="whs4">hexa3D = smesh.CreateHypothesis("Hexa_3D",
\r
1072 "libStdMeshersEngine.so")</p>
\r
1074 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hexa3D),
\r
1075 "HEXA_3D")</p>
\r
1077 <p class="whs4"> </p>
\r
1079 <p class="whs7"># initialize a mesh
\r
1082 <p class="whs4">mesh = smesh.CreateMesh(box)</p>
\r
1084 <p class="whs4">smeshgui.SetName(salome.ObjectToID(mesh),
\r
1085 "MeshBox")</p>
\r
1087 <p class="whs4"> </p>
\r
1089 <p class="whs7"># add a hypothesis
\r
1092 <p class="whs4">print "--------------------------
\r
1093 add hypothesis to the box"</p>
\r
1095 <p class="whs4">mesh.AddHypothesis(box,hypNbSeg)</p>
\r
1097 <p class="whs4">mesh.AddHypothesis(box,hypArea)</p>
\r
1099 <p class="whs4">mesh.AddHypothesis(box,hypVolume)</p>
\r
1101 <p class="whs4">mesh.AddHypothesis(box,regular1D)</p>
\r
1103 <p class="whs4">mesh.AddHypothesis(box,mefisto2D)</p>
\r
1105 <p class="whs4">mesh.AddHypothesis(box,hexa3D)</p>
\r
1107 <p class="whs4"> </p>
\r
1109 <p class="whs7"># compute the mesh</p>
\r
1111 <p class="whs4">print "--------------------------
\r
1112 compute the mesh of the box"</p>
\r
1114 <p class="whs4">ret = smesh.Compute(mesh,box)</p>
\r
1116 <p class="whs4">print ret</p>
\r
1118 <p class="whs4">if ret == 0:</p>
\r
1120 <p class="whs4"> print
\r
1121 "probleme when computing the mesh"</p>
\r
1123 <p class="whs4">salome.sg.updateObjBrowser(1)</p>
\r
1125 <p class="whs4"> </p>
\r
1127 <h3>Defining Additional Hypotheses</h3>
\r
1129 <h4><a name=bookmark6>Length from Edges</a></h4>
\r
1131 <p class="whs2">import smesh</p>
\r
1133 <p class="whs2">import geompy</p>
\r
1135 <p class="whs2">import salome</p>
\r
1137 <p class="whs2">gg = salome.ImportComponentGUI("GEOM")</p>
\r
1141 <p># create sketchers</p>
\r
1143 <p class="whs2">sketcher1 = geompy.MakeSketcher("Sketcher:F
\r
1144 0 0:TT 70 0:TT 70 70:TT 0 70:WW")</p>
\r
1146 <p class="whs2">sketcher2 = geompy.MakeSketcher("Sketcher:F
\r
1147 20 20:TT 50 20:TT 50 50:TT 20 50:WW")</p>
\r
1149 <p class="whs2">isPlanarFace = 1</p>
\r
1153 <p># create faces from two wires</p>
\r
1155 <p class="whs2">face1 = geompy.MakeFaces([sketcher1,
\r
1156 sketcher2],isPlanarFace)</p>
\r
1160 <p># add objects in the study</p>
\r
1162 <p class="whs2">id_face1 = geompy.addToStudy(face1,"Face1")</p>
\r
1166 <p># display faces</p>
\r
1168 <p class="whs2">gg.createAndDisplayGO(id_face1)</p>
\r
1170 <p class="whs2">gg.setDisplayMode(id_face1,1)</p>
\r
1172 <p class="whs2">gg.setTransparency(id_face1,0.2)</p>
\r
1176 <p># create a mesh</p>
\r
1178 <p class="whs2">hexa = smesh.Mesh(face1,
\r
1179 "Face : triangle 2D mesh")</p>
\r
1181 <p class="whs2">algo = hexa.Triangle()</p>
\r
1185 <p># define "MaxElementArea" hypothesis to be applied to each
\r
1188 <p class="whs2">algo.MaxElementArea(30)</p>
\r
1192 <p># define "LengthFromEdges" hypothesis to build triangles based
\r
1193 on the length of the edges taken from the wire</p>
\r
1195 <p class="whs2">algo.LengthFromEdges()</p>
\r
1199 <p># create local hypothesis</p>
\r
1201 <p class="whs2">algo = hexa.Segment()</p>
\r
1205 <p># define "NumberOfSegments" hypothesis to cut an edge in a
\r
1206 fixed number of segments</p>
\r
1208 <p class="whs2">algo.NumberOfSegments(2)</p>
\r
1212 <p># compute the mesh</p>
\r
1214 <p class="whs2">hexa.Compute() </p>
\r
1216 <p class="whs2"> </p>
\r
1218 <h4><a name=bookmark7>Propagation</a></h4>
\r
1220 <p class="whs2">from geompy import
\r
1223 <p class="whs2">import smesh</p>
\r
1225 <p class="whs2"> </p>
\r
1227 <p class="whs3"># create vertices</p>
\r
1229 <p class="whs2">Point111 = MakeVertex(
\r
1230 0, 0, 0)</p>
\r
1232 <p class="whs2">Point211 = MakeVertex(10,
\r
1233 0, 0)</p>
\r
1235 <p class="whs2">Point121 = MakeVertex(
\r
1236 0, 10, 0)</p>
\r
1238 <p class="whs2">Point221 = MakeVertex(10,
\r
1241 <p class="whs2">Point112 = MakeVertex(
\r
1242 0, 0, 10)</p>
\r
1244 <p class="whs2">Point212 = MakeVertex(10,
\r
1247 <p class="whs2">Point122 = MakeVertex(
\r
1250 <p class="whs2">Point222 = MakeVertex(10,
\r
1253 <p class="whs2"> </p>
\r
1255 <p class="whs3"># create edges</p>
\r
1257 <p class="whs2">EdgeX111 = MakeEdge(Point111,
\r
1260 <p class="whs2">EdgeX121 = MakeEdge(Point121,
\r
1263 <p class="whs2">EdgeX112 = MakeEdge(Point112,
\r
1266 <p class="whs2">EdgeX122 = MakeEdge(Point122,
\r
1269 <p class="whs2">EdgeY11 = MakeEdge(Point111,
\r
1272 <p class="whs2">EdgeY21 = MakeEdge(Point211,
\r
1275 <p class="whs2">EdgeY12 = MakeEdge(Point112,
\r
1278 <p class="whs2">EdgeY22 = MakeEdge(Point212,
\r
1281 <p class="whs2">EdgeZ111 = MakeEdge(Point111,
\r
1284 <p class="whs2">EdgeZ211 = MakeEdge(Point211,
\r
1287 <p class="whs2">EdgeZ121 = MakeEdge(Point121,
\r
1290 <p class="whs2">EdgeZ221 = MakeEdge(Point221,
\r
1293 <p class="whs2"> </p>
\r
1295 <p class="whs3"># create faces</p>
\r
1297 <p class="whs2">FaceX11 = MakeQuad(EdgeY11,
\r
1298 EdgeZ111, EdgeY12, EdgeZ121)</p>
\r
1300 <p class="whs2">FaceX21 = MakeQuad(EdgeY21,
\r
1301 EdgeZ211, EdgeY22, EdgeZ221)</p>
\r
1303 <p class="whs2">FaceY111 = MakeQuad(EdgeX111,
\r
1304 EdgeZ111, EdgeX112, EdgeZ211)</p>
\r
1306 <p class="whs2">FaceY121 = MakeQuad(EdgeX121,
\r
1307 EdgeZ121, EdgeX122, EdgeZ221)</p>
\r
1309 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111,
\r
1310 EdgeY11, EdgeX121, EdgeY21)</p>
\r
1312 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112,
\r
1313 EdgeY12, EdgeX122, EdgeY22)</p>
\r
1315 <p class="whs2"> </p>
\r
1317 <p class="whs3"># create a solid</p>
\r
1319 <p class="whs2">Block = MakeHexa(FaceX11,
\r
1320 FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
\r
1322 <p class="whs2"> </p>
\r
1324 <p class="whs3"># create a compound</p>
\r
1326 <p class="whs2">box = MakeCompound([Block])</p>
\r
1328 <p class="whs2"> </p>
\r
1330 <p class="whs3"># add in the study</p>
\r
1332 <p class="whs2">box_id = addToStudy(box,
\r
1333 "Box compound")</p>
\r
1335 <p class="whs2"> </p>
\r
1337 <p class="whs3"># create a hexahedral
\r
1338 mesh on the box</p>
\r
1340 <p class="whs2">hexa = smesh.Mesh(box,
\r
1341 "Box compound : hexahedrical mesh")</p>
\r
1343 <p class="whs2">algo = hexa.Segment()</p>
\r
1345 <p class="whs2"> </p>
\r
1347 <p class="whs3"># define "NumberOfSegments"
\r
1348 hypothesis to cut an edge in a fixed number of segments</p>
\r
1350 <p class="whs2">algo.NumberOfSegments(4)</p>
\r
1352 <p class="whs2"> </p>
\r
1354 <p class="whs3"># create a quadrangle
\r
1355 2D algorithm for faces</p>
\r
1357 <p class="whs2">hexa.Quadrangle()</p>
\r
1359 <p class="whs2"> </p>
\r
1361 <p class="whs3"># create a hexahedron
\r
1362 3D algorithm for solids</p>
\r
1364 <p class="whs2">hexa.Hexahedron()</p>
\r
1366 <p class="whs2"> </p>
\r
1368 <p class="whs3"># create a local hypothesis</p>
\r
1370 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>
\r
1372 <p class="whs2"> </p>
\r
1374 <p class="whs2"><span style="font-family: 'Times New Roman', serif;">#
\r
1375 define "Arithmetic1D" hypothesis to cut an edge in several segments
\r
1376 with arithmetic length</span> </p>
\r
1378 <p class="whs2">increasing</p>
\r
1380 <p class="whs2">algo.Arithmetic1D(1,
\r
1383 <p class="whs2"> </p>
\r
1385 <p class="whs3"># define "Propagation"
\r
1386 hypothesis that propagatea all other hypothesis on all edges on the opposite
\r
1387 side in case of quadrangular faces</p>
\r
1389 <p class="whs2">algo.Propagation()</p>
\r
1391 <p class="whs2"> </p>
\r
1393 <p class="whs3"># compute the mesh</p>
\r
1395 <p class="whs2">hexa.Compute() </p>
\r
1397 <p class="whs2"> </p>
\r
1399 <h3><a name=bookmark8>Defining Meshing Algorithms</a></h3>
\r
1401 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import
\r
1404 <p class="whs4">import StdMeshers</p>
\r
1406 <p class="whs4">import NETGENPlugin</p>
\r
1408 <p class="whs4"> </p>
\r
1410 <p class="whs4">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
\r
1411 "SMESH")</p>
\r
1413 <p class="whs4">smeshgui = salome.ImportComponentGUI("SMESH")</p>
\r
1415 <p class="whs4">smeshgui.Init(salome.myStudyId);</p>
\r
1417 <p class="whs5"> </p>
\r
1419 <p class="whs5"># create algorithms</p>
\r
1421 <p class="whs4">print "--------------------------
\r
1422 create Algorithms"</p>
\r
1424 <p class="whs4">print "--------------------------
\r
1425 Regular_1D (Wire discretisation)"</p>
\r
1427 <p class="whs4">regular1D = smesh.CreateHypothesis("Regular_1D",
\r
1428 "libStdMeshersEngine.so")</p>
\r
1430 <p class="whs4">smeshgui.SetName(salome.ObjectToID(regular1D),
\r
1431 "Wire Discretisation")</p>
\r
1433 <p class="whs4"> </p>
\r
1435 <p class="whs4">print "--------------------------
\r
1436 MEFISTO_2D (Triangle meshing algorithm)"</p>
\r
1438 <p class="whs4">mefisto2D = smesh.CreateHypothesis("MEFISTO_2D",
\r
1439 "libStdMeshersEngine.so")</p>
\r
1441 <p class="whs4">smeshgui.SetName(salome.ObjectToID(mefisto2D),
\r
1442 "MEFISTO_2D")</p>
\r
1444 <p class="whs4"> </p>
\r
1446 <p class="whs4">print "--------------------------
\r
1447 Quadrangle_2D (Quadrangle meshing algorithm)"</p>
\r
1449 <p class="whs4">quad2D = smesh.CreateHypothesis(
\r
1450 "Quadrangle_2D", "libStdMeshersEngine.so" )</p>
\r
1452 <p class="whs4">smeshgui.SetName(salome.ObjectToID(quad2D),
\r
1453 "Quadrangle_2D")</p>
\r
1455 <p class="whs4"> </p>
\r
1457 <p class="whs4">print "--------------------------
\r
1458 Hexa_3D (Hexahedron meshing algorithm)"</p>
\r
1460 <p class="whs4">hexa3D = smesh.CreateHypothesis("Hexa_3D",
\r
1461 "libStdMeshersEngine.so")</p>
\r
1463 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hexa3D),
\r
1464 "HEXA_3D")</p>
\r
1466 <p class="whs4"> </p>
\r
1468 <p class="whs4">print "--------------------------
\r
1469 NETGEN_3D (Tetrahedron meshing algorithm)"</p>
\r
1471 <p class="whs4">netgen3D = smesh.CreateHypothesis("NETGEN_3D",
\r
1472 "libNETGENEngine.so")</p>
\r
1474 <p class="whs4">smeshgui.SetName(salome.ObjectToID(netgen3D),
\r
1475 "NETGEN_3D")</p>
\r
1477 <p class="whs4">salome.sg.updateObjBrowser(1)</p>
\r
1479 <p class="whs5"> </p>
\r
1481 <script type="text/javascript" language="javascript1.2">
\r
1483 if (window.writeIntopicBar)
\r
1484 writeIntopicBar(0);
\r