Salome HOME
581805053ad610e95c56764e29a6b9b0da72e5c8
[modules/smesh.git] / doc / salome / gui / SMESH / defining_hypotheses_tui.htm
1 <!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
2 \r
3 <html>\r
4 \r
5 <head>\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
9 <!--\r
10 P { margin-top:0pt; margin-bottom:0pt; }\r
11 LI.kadov-P {  }\r
12 -->\r
13 </style><style type="text/css">\r
14 <!--\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
22 -->\r
23 </style><script type="text/javascript" language="JavaScript">\r
24 <!--\r
25 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
26 {\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
34 }\r
35 //-->\r
36 </script>\r
37 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
38 <!--\r
39 function reDo() {\r
40   if (innerWidth != origWidth || innerHeight != origHeight)\r
41      location.reload();\r
42 }\r
43 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
44         origWidth = innerWidth;\r
45         origHeight = innerHeight;\r
46         onresize = reDo;\r
47 }\r
48 onerror = null; \r
49 //-->\r
50 </script>\r
51 <style type="text/css">\r
52 <!--\r
53 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
54 -->\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
60 </head>\r
61 <body><script type="text/javascript" language="javascript1.2">\r
62 <!--\r
63 if (window.gbWhTopic)\r
64 {\r
65         if (window.addTocInfo)\r
66         {\r
67         addTocInfo("MESH module\nTUI Scripts\nDefining Hypotheses");\r
68 addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
69 \r
70         }\r
71         if (window.writeBtnStyle)\r
72                 writeBtnStyle();\r
73 \r
74         if (window.writeIntopicBar)\r
75                 writeIntopicBar(1);\r
76 \r
77         if (window.setRelStartPage)\r
78         {\r
79         setRelStartPage("smesh.htm");\r
80 \r
81                 autoSync(1);\r
82                 sendSyncInfo();\r
83                 sendAveInfoOut();\r
84         }\r
85 }\r
86 else\r
87         if (window.gbIE4)\r
88                 document.location.reload();\r
89 //-->\r
90 </script>\r
91 <h1>Defining Hypotheses and Algorithms</h1>\r
92 \r
93 <h3>Defining 1D Hypotheses</h3>\r
94 \r
95 <p class="whs1"><a name=bookmark>1D Arithmetic</a></p>\r
96 \r
97 <p>&nbsp;</p>\r
98 \r
99 <p class="whs2">from geompy import \r
100  *</p>\r
101 \r
102 <p class="whs2">import smesh</p>\r
103 \r
104 <p>&nbsp;</p>\r
105 \r
106 <p># create vertices</p>\r
107 \r
108 <p class="whs2">Point111 = MakeVertex( \r
109  0, &nbsp;0, &nbsp;0)</p>\r
110 \r
111 <p class="whs2">Point211 = MakeVertex(10, \r
112  &nbsp;0, &nbsp;0)</p>\r
113 \r
114 <p class="whs2">Point121 = MakeVertex( \r
115  0, 10, &nbsp;0)</p>\r
116 \r
117 <p class="whs2">Point221 = MakeVertex(10, \r
118  10, &nbsp;0)</p>\r
119 \r
120 <p class="whs2">Point112 = MakeVertex( \r
121  0, &nbsp;0, 10)</p>\r
122 \r
123 <p class="whs2">Point212 = MakeVertex(10, \r
124  &nbsp;0, 10)</p>\r
125 \r
126 <p class="whs2">Point122 = MakeVertex( \r
127  0, 10, 10)</p>\r
128 \r
129 <p class="whs2">Point222 = MakeVertex(10, \r
130  10, 10)</p>\r
131 \r
132 <p>&nbsp;</p>\r
133 \r
134 <p># create edges</p>\r
135 \r
136 <p class="whs2">EdgeX111 = MakeEdge(Point111, \r
137  Point211)</p>\r
138 \r
139 <p class="whs2">EdgeX121 = MakeEdge(Point121, \r
140  Point221)</p>\r
141 \r
142 <p class="whs2">EdgeX112 = MakeEdge(Point112, \r
143  Point212)</p>\r
144 \r
145 <p class="whs2">EdgeX122 = MakeEdge(Point122, \r
146  Point222)</p>\r
147 \r
148 <p class="whs2">EdgeY11 = MakeEdge(Point111, \r
149  Point121)</p>\r
150 \r
151 <p class="whs2">EdgeY21 = MakeEdge(Point211, \r
152  Point221)</p>\r
153 \r
154 <p class="whs2">EdgeY12 = MakeEdge(Point112, \r
155  Point122)</p>\r
156 \r
157 <p class="whs2">EdgeY22 = MakeEdge(Point212, \r
158  Point222)</p>\r
159 \r
160 <p class="whs2">EdgeZ111 = MakeEdge(Point111, \r
161  Point112)</p>\r
162 \r
163 <p class="whs2">EdgeZ211 = MakeEdge(Point211, \r
164  Point212)</p>\r
165 \r
166 <p class="whs2">EdgeZ121 = MakeEdge(Point121, \r
167  Point122)</p>\r
168 \r
169 <p class="whs2">EdgeZ221 = MakeEdge(Point221, \r
170  Point222)</p>\r
171 \r
172 <p>&nbsp;</p>\r
173 \r
174 <p># create faces</p>\r
175 \r
176 <p class="whs2">FaceX11 = MakeQuad(EdgeY11, \r
177  EdgeZ111, EdgeY12, EdgeZ121)</p>\r
178 \r
179 <p class="whs2">FaceX21 = MakeQuad(EdgeY21, \r
180  EdgeZ211, EdgeY22, EdgeZ221)</p>\r
181 \r
182 <p class="whs2">FaceY111 = MakeQuad(EdgeX111, \r
183  EdgeZ111, EdgeX112, EdgeZ211)</p>\r
184 \r
185 <p class="whs2">FaceY121 = MakeQuad(EdgeX121, \r
186  EdgeZ121, EdgeX122, EdgeZ221)</p>\r
187 \r
188 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111, \r
189  EdgeY11, EdgeX121, EdgeY21)</p>\r
190 \r
191 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112, \r
192  EdgeY12, EdgeX122, EdgeY22)</p>\r
193 \r
194 <p>&nbsp;</p>\r
195 \r
196 <p># create a solid</p>\r
197 \r
198 <p class="whs2">Block = MakeHexa(FaceX11, \r
199  FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>\r
200 \r
201 <p>&nbsp;</p>\r
202 \r
203 <p># create a compound</p>\r
204 \r
205 <p class="whs2">box = MakeCompound([Block])</p>\r
206 \r
207 <p>&nbsp;</p>\r
208 \r
209 <p># add in the study</p>\r
210 \r
211 <p class="whs2">box_id = addToStudy(box, \r
212  &quot;Box compound&quot;)</p>\r
213 \r
214 <p>&nbsp;</p>\r
215 \r
216 <p># create a hexahedral mesh on the box</p>\r
217 \r
218 <p class="whs2">hexa = smesh.Mesh(box, \r
219  &quot;Box compound : hexahedrical mesh&quot;)</p>\r
220 \r
221 <p class="whs2">algo = hexa.Segment()</p>\r
222 \r
223 <p>&nbsp;</p>\r
224 \r
225 <p># define &quot;NumberOfSegments&quot; hypothesis to cut an edge in a \r
226  fixed number of segments</p>\r
227 \r
228 <p class="whs2">algo.NumberOfSegments(4)</p>\r
229 \r
230 <p>&nbsp;</p>\r
231 \r
232 <p># create a quadrangle 2D algorithm for faces</p>\r
233 \r
234 <p class="whs2">hexa.Quadrangle()</p>\r
235 \r
236 <p>&nbsp;</p>\r
237 \r
238 <p># create a hexahedron 3D algorithm for solids</p>\r
239 \r
240 <p class="whs2">hexa.Hexahedron()</p>\r
241 \r
242 <p>&nbsp;</p>\r
243 \r
244 <p># create a local hypothesis</p>\r
245 \r
246 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>\r
247 \r
248 <p>&nbsp;</p>\r
249 \r
250 <p># define &quot;Arithmetic1D&quot; hypothesis to cut an edge in several \r
251  segments with arithmetic length increasing</p>\r
252 \r
253 <p class="whs2">algo.Arithmetic1D(1, \r
254  4)</p>\r
255 \r
256 <p>&nbsp;</p>\r
257 \r
258 <p># define &quot;Propagation&quot; hypothesis that propagates all other \r
259  hypothesis on all edges on the opposite side in case of quadrangular faces</p>\r
260 \r
261 <p class="whs2">algo.Propagation()</p>\r
262 \r
263 <p>&nbsp;</p>\r
264 \r
265 <p># compute the mesh</p>\r
266 \r
267 <p class="whs2">hexa.Compute() </p>\r
268 \r
269 <p class="whs2">&nbsp;</p>\r
270 \r
271 <h4><a name=bookmark9>Deflection 1D and Number of Segments</a></h4>\r
272 \r
273 <p class="whs2">&nbsp;</p>\r
274 \r
275 <p class="whs2">import smesh</p>\r
276 \r
277 <p class="whs2">import geompy</p>\r
278 \r
279 <p class="whs2">import salome</p>\r
280 \r
281 <p class="whs2">gg = salome.ImportComponentGUI(&quot;GEOM&quot;)</p>\r
282 \r
283 <p class="whs2">&nbsp;</p>\r
284 \r
285 <p class="whs3"># create vertices</p>\r
286 \r
287 <p class="whs2">px &nbsp;&nbsp;= \r
288  geompy.MakeVertex(100., 0. &nbsp;, \r
289  0. &nbsp;)</p>\r
290 \r
291 <p class="whs2">py &nbsp;&nbsp;= \r
292  geompy.MakeVertex(0. &nbsp;, \r
293  100., 0. &nbsp;)</p>\r
294 \r
295 <p class="whs2">pz &nbsp;&nbsp;= \r
296  geompy.MakeVertex(0. &nbsp;, \r
297  0. &nbsp;, 100.)</p>\r
298 \r
299 <p class="whs2">&nbsp;</p>\r
300 \r
301 <p class="whs3"># create a vector from \r
302  two points</p>\r
303 \r
304 <p class="whs2">vxy = geompy.MakeVector(px, \r
305  py)</p>\r
306 \r
307 <p class="whs2">&nbsp;</p>\r
308 \r
309 <p class="whs3"># create an arc from \r
310  three points</p>\r
311 \r
312 <p class="whs2">arc = geompy.MakeArc(py, \r
313  pz, px)</p>\r
314 \r
315 <p class="whs2">&nbsp;</p>\r
316 \r
317 <p class="whs3"># create a wire</p>\r
318 \r
319 <p class="whs2">wire = geompy.MakeWire([vxy, \r
320  arc])</p>\r
321 \r
322 <p class="whs2">isPlanarFace = 1</p>\r
323 \r
324 <p class="whs2">&nbsp;</p>\r
325 \r
326 <p class="whs3"># create a face from \r
327  the wire</p>\r
328 \r
329 <p class="whs2">face1 = geompy.MakeFace(wire, \r
330  isPlanarFace)</p>\r
331 \r
332 <p class="whs2">&nbsp;</p>\r
333 \r
334 <p class="whs3"># add objects in the \r
335  study</p>\r
336 \r
337 <p class="whs2">id_face1 = geompy.addToStudy(face1,&quot;Face1&quot;)</p>\r
338 \r
339 <p class="whs2">&nbsp;</p>\r
340 \r
341 <p class="whs3"># display faces</p>\r
342 \r
343 <p class="whs2">gg.createAndDisplayGO(id_face1)</p>\r
344 \r
345 <p class="whs2">gg.setDisplayMode(id_face1,1)</p>\r
346 \r
347 <p class="whs2">gg.setTransparency(id_face1,0.2)</p>\r
348 \r
349 <p class="whs2">&nbsp;</p>\r
350 \r
351 <p class="whs3"># create hexahedral mesh</p>\r
352 \r
353 <p class="whs2">hexa = smesh.Mesh(face1, \r
354  &quot;Face compound : hexahedrical mesh&quot;)</p>\r
355 \r
356 <p class="whs2">algo = hexa.Triangle()</p>\r
357 \r
358 <p class="whs2">&nbsp;</p>\r
359 \r
360 <p class="whs3"># define &quot;MaxElementArea&quot; \r
361  hypothesis to be applied &nbsp;to \r
362  each triangle</p>\r
363 \r
364 <p class="whs2">algo.MaxElementArea(30)</p>\r
365 \r
366 <p class="whs2">&nbsp;</p>\r
367 \r
368 <p class="whs3"># create a quadrangle \r
369  2D algorithm for faces</p>\r
370 \r
371 <p class="whs2">hexa.Quadrangle()</p>\r
372 \r
373 <p class="whs2">&nbsp;</p>\r
374 \r
375 <p class="whs3"># create a local hypothesis</p>\r
376 \r
377 <p class="whs2">algo = hexa.Segment(wire)</p>\r
378 \r
379 <p class="whs2">&nbsp;</p>\r
380 \r
381 <p class="whs3"># define &quot;NumberOfSegments&quot; \r
382  hypothesis to cut an edge in a fixed number of segments</p>\r
383 \r
384 <p class="whs2">algo.NumberOfSegments(6)</p>\r
385 \r
386 <p class="whs2">&nbsp;</p>\r
387 \r
388 <p class="whs3"># define &quot;Deflection1D&quot; \r
389  hypothesis</p>\r
390 \r
391 <p class="whs2">algo.Deflection1D(1)</p>\r
392 \r
393 <p class="whs2">&nbsp;</p>\r
394 \r
395 <p class="whs3"># compute the mesh</p>\r
396 \r
397 <p class="whs2">hexa.Compute() </p>\r
398 \r
399 <p>&nbsp;</p>\r
400 \r
401 <h4><a name=bookmark2>Start and End Length</a></h4>\r
402 \r
403 <p class="whs2">from geompy import \r
404  *</p>\r
405 \r
406 <p class="whs2">import smesh</p>\r
407 \r
408 <p>&nbsp;</p>\r
409 \r
410 <p># create vertices</p>\r
411 \r
412 <p class="whs2">Point111 = MakeVertex( \r
413  0, &nbsp;0, &nbsp;0)</p>\r
414 \r
415 <p class="whs2">Point211 = MakeVertex(10, \r
416  &nbsp;0, &nbsp;0)</p>\r
417 \r
418 <p class="whs2">Point121 = MakeVertex( \r
419  0, 10, &nbsp;0)</p>\r
420 \r
421 <p class="whs2">Point221 = MakeVertex(10, \r
422  10, &nbsp;0)</p>\r
423 \r
424 <p class="whs2">Point112 = MakeVertex( \r
425  0, &nbsp;0, 10)</p>\r
426 \r
427 <p class="whs2">Point212 = MakeVertex(10, \r
428  &nbsp;0, 10)</p>\r
429 \r
430 <p class="whs2">Point122 = MakeVertex( \r
431  0, 10, 10)</p>\r
432 \r
433 <p class="whs2">Point222 = MakeVertex(10, \r
434  10, 10)</p>\r
435 \r
436 <p>&nbsp;</p>\r
437 \r
438 <p># create edges</p>\r
439 \r
440 <p class="whs2">EdgeX111 = MakeEdge(Point111, \r
441  Point211)</p>\r
442 \r
443 <p class="whs2">EdgeX121 = MakeEdge(Point121, \r
444  Point221)</p>\r
445 \r
446 <p class="whs2">EdgeX112 = MakeEdge(Point112, \r
447  Point212)</p>\r
448 \r
449 <p class="whs2">EdgeX122 = MakeEdge(Point122, \r
450  Point222)</p>\r
451 \r
452 <p class="whs2">EdgeY11 = MakeEdge(Point111, \r
453  Point121)</p>\r
454 \r
455 <p class="whs2">EdgeY21 = MakeEdge(Point211, \r
456  Point221)</p>\r
457 \r
458 <p class="whs2">EdgeY12 = MakeEdge(Point112, \r
459  Point122)</p>\r
460 \r
461 <p class="whs2">EdgeY22 = MakeEdge(Point212, \r
462  Point222)</p>\r
463 \r
464 <p class="whs2">EdgeZ111 = MakeEdge(Point111, \r
465  Point112)</p>\r
466 \r
467 <p class="whs2">EdgeZ211 = MakeEdge(Point211, \r
468  Point212)</p>\r
469 \r
470 <p class="whs2">EdgeZ121 = MakeEdge(Point121, \r
471  Point122)</p>\r
472 \r
473 <p class="whs2">EdgeZ221 = MakeEdge(Point221, \r
474  Point222)</p>\r
475 \r
476 <p>&nbsp;</p>\r
477 \r
478 <p># create faces</p>\r
479 \r
480 <p class="whs2">FaceX11 = MakeQuad(EdgeY11, \r
481  EdgeZ111, EdgeY12, EdgeZ121)</p>\r
482 \r
483 <p class="whs2">FaceX21 = MakeQuad(EdgeY21, \r
484  EdgeZ211, EdgeY22, EdgeZ221)</p>\r
485 \r
486 <p class="whs2">FaceY111 = MakeQuad(EdgeX111, \r
487  EdgeZ111, EdgeX112, EdgeZ211)</p>\r
488 \r
489 <p class="whs2">FaceY121 = MakeQuad(EdgeX121, \r
490  EdgeZ121, EdgeX122, EdgeZ221)</p>\r
491 \r
492 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111, \r
493  EdgeY11, EdgeX121, EdgeY21)</p>\r
494 \r
495 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112, \r
496  EdgeY12, EdgeX122, EdgeY22)</p>\r
497 \r
498 <p>&nbsp;</p>\r
499 \r
500 <p># create a solid</p>\r
501 \r
502 <p class="whs2">Block = MakeHexa(FaceX11, \r
503  FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>\r
504 \r
505 <p>&nbsp;</p>\r
506 \r
507 <p># create a compound</p>\r
508 \r
509 <p class="whs2">box = MakeCompound([Block])</p>\r
510 \r
511 <p>&nbsp;</p>\r
512 \r
513 <p># add in the study</p>\r
514 \r
515 <p class="whs2">box_id = addToStudy(box, \r
516  &quot;Box compound&quot;)</p>\r
517 \r
518 <p>&nbsp;</p>\r
519 \r
520 <p># create a hexahedral mesh on the box</p>\r
521 \r
522 <p class="whs2">hexa = smesh.Mesh(box, \r
523  &quot;Box compound : hexahedrical mesh&quot;)</p>\r
524 \r
525 <p class="whs2">algo = hexa.Segment()</p>\r
526 \r
527 <p>&nbsp;</p>\r
528 \r
529 <p># define &quot;NumberOfSegments&quot; hypothesis to cut an edge in a \r
530  fixed number of segments</p>\r
531 \r
532 <p class="whs2">algo.NumberOfSegments(4)</p>\r
533 \r
534 <p>&nbsp;</p>\r
535 \r
536 <p># create a quadrangle 2D algorithm for faces</p>\r
537 \r
538 <p class="whs2">hexa.Quadrangle()</p>\r
539 \r
540 <p>&nbsp;</p>\r
541 \r
542 <p># create a hexahedron 3D algorithm for solids</p>\r
543 \r
544 <p class="whs2">hexa.Hexahedron()</p>\r
545 \r
546 <p>&nbsp;</p>\r
547 \r
548 <p># create a local hypothesis</p>\r
549 \r
550 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>\r
551 \r
552 <p>&nbsp;</p>\r
553 \r
554 <p># define &quot;StartEndLength&quot; hypothesis to cut an edge in several \r
555  segments with increasing geometric length </p>\r
556 \r
557 <p class="whs2">algo.StartEndLength(1, \r
558  6)</p>\r
559 \r
560 <p>&nbsp;</p>\r
561 \r
562 <p># define &quot;Propagation&quot; hypothesis that propagates all other \r
563  hypothesis on all edges on the opposite side in case of quadrangular faces</p>\r
564 \r
565 <p class="whs2">algo.Propagation()</p>\r
566 \r
567 <p>&nbsp;</p>\r
568 \r
569 <p># compute the mesh</p>\r
570 \r
571 <p class="whs2">hexa.Compute() </p>\r
572 \r
573 <p class="whs2">&nbsp;</p>\r
574 \r
575 <h4><a name=bookmark3>Average Length</a></h4>\r
576 \r
577 <p class="whs2">from geompy import \r
578  *</p>\r
579 \r
580 <p class="whs2">import smesh</p>\r
581 \r
582 <p class="whs2">&nbsp;</p>\r
583 \r
584 <p class="whs3"># create vertices</p>\r
585 \r
586 <p class="whs2">Point111 = MakeVertex( \r
587  0, &nbsp;0, &nbsp;0)</p>\r
588 \r
589 <p class="whs2">Point211 = MakeVertex(10, \r
590  &nbsp;0, &nbsp;0)</p>\r
591 \r
592 <p class="whs2">Point121 = MakeVertex( \r
593  0, 10, &nbsp;0)</p>\r
594 \r
595 <p class="whs2">Point221 = MakeVertex(10, \r
596  10, &nbsp;0)</p>\r
597 \r
598 <p class="whs2">Point112 = MakeVertex( \r
599  0, &nbsp;0, 10)</p>\r
600 \r
601 <p class="whs2">Point212 = MakeVertex(10, \r
602  &nbsp;0, 10)</p>\r
603 \r
604 <p class="whs2">Point122 = MakeVertex( \r
605  0, 10, 10)</p>\r
606 \r
607 <p class="whs2">Point222 = MakeVertex(10, \r
608  10, 10)</p>\r
609 \r
610 <p class="whs2">&nbsp;</p>\r
611 \r
612 <p class="whs3"># create edges</p>\r
613 \r
614 <p class="whs2">EdgeX111 = MakeEdge(Point111, \r
615  Point211)</p>\r
616 \r
617 <p class="whs2">EdgeX121 = MakeEdge(Point121, \r
618  Point221)</p>\r
619 \r
620 <p class="whs2">EdgeX112 = MakeEdge(Point112, \r
621  Point212)</p>\r
622 \r
623 <p class="whs2">EdgeX122 = MakeEdge(Point122, \r
624  Point222)</p>\r
625 \r
626 <p class="whs2">EdgeY11 = MakeEdge(Point111, \r
627  Point121)</p>\r
628 \r
629 <p class="whs2">EdgeY21 = MakeEdge(Point211, \r
630  Point221)</p>\r
631 \r
632 <p class="whs2">EdgeY12 = MakeEdge(Point112, \r
633  Point122)</p>\r
634 \r
635 <p class="whs2">EdgeY22 = MakeEdge(Point212, \r
636  Point222)</p>\r
637 \r
638 <p class="whs2">EdgeZ111 = MakeEdge(Point111, \r
639  Point112)</p>\r
640 \r
641 <p class="whs2">EdgeZ211 = MakeEdge(Point211, \r
642  Point212)</p>\r
643 \r
644 <p class="whs2">EdgeZ121 = MakeEdge(Point121, \r
645  Point122)</p>\r
646 \r
647 <p class="whs2">EdgeZ221 = MakeEdge(Point221, \r
648  Point222)</p>\r
649 \r
650 <p class="whs2">&nbsp;</p>\r
651 \r
652 <p class="whs3"># create faces</p>\r
653 \r
654 <p class="whs2">FaceX11 = MakeQuad(EdgeY11, \r
655  EdgeZ111, EdgeY12, EdgeZ121)</p>\r
656 \r
657 <p class="whs2">FaceX21 = MakeQuad(EdgeY21, \r
658  EdgeZ211, EdgeY22, EdgeZ221)</p>\r
659 \r
660 <p class="whs2">FaceY111 = MakeQuad(EdgeX111, \r
661  EdgeZ111, EdgeX112, EdgeZ211)</p>\r
662 \r
663 <p class="whs2">FaceY121 = MakeQuad(EdgeX121, \r
664  EdgeZ121, EdgeX122, EdgeZ221)</p>\r
665 \r
666 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111, \r
667  EdgeY11, EdgeX121, EdgeY21)</p>\r
668 \r
669 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112, \r
670  EdgeY12, EdgeX122, EdgeY22)</p>\r
671 \r
672 <p class="whs2">&nbsp;</p>\r
673 \r
674 <p class="whs3"># create a solid</p>\r
675 \r
676 <p class="whs2">Block = MakeHexa(FaceX11, \r
677  FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>\r
678 \r
679 <p class="whs2">&nbsp;</p>\r
680 \r
681 <p class="whs3"># create a compound</p>\r
682 \r
683 <p class="whs2">box = MakeCompound([Block])</p>\r
684 \r
685 <p class="whs2">&nbsp;</p>\r
686 \r
687 <p class="whs3"># add in the study</p>\r
688 \r
689 <p class="whs2">box_id = addToStudy(box, \r
690  &quot;Box compound&quot;)</p>\r
691 \r
692 <p class="whs2">&nbsp;</p>\r
693 \r
694 <p class="whs3"># create a hexahedral \r
695  mesh on the box</p>\r
696 \r
697 <p class="whs2">hexa = smesh.Mesh(box, \r
698  &quot;Box compound : hexahedrical mesh&quot;)</p>\r
699 \r
700 <p class="whs2">algo = hexa.Segment()</p>\r
701 \r
702 <p class="whs2">&nbsp;</p>\r
703 \r
704 <p class="whs3"># define &quot;NumberOfSegments&quot; \r
705  hypothesis to cut an edge in a fixed number of segments</p>\r
706 \r
707 <p class="whs2">algo.NumberOfSegments(4)</p>\r
708 \r
709 <p class="whs2">&nbsp;</p>\r
710 \r
711 <p class="whs3"># create a quadrangle \r
712  2D algorithm for faces</p>\r
713 \r
714 <p class="whs2">hexa.Quadrangle()</p>\r
715 \r
716 <p class="whs2">&nbsp;</p>\r
717 \r
718 <p class="whs3"># create a hexahedron \r
719  3D algorithm for solids</p>\r
720 \r
721 <p class="whs2">hexa.Hexahedron()</p>\r
722 \r
723 <p class="whs2">&nbsp;</p>\r
724 \r
725 <p class="whs3"># create a local hypothesis</p>\r
726 \r
727 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>\r
728 \r
729 <p class="whs2">&nbsp;</p>\r
730 \r
731 <p class="whs3"># define &quot;LocalLength&quot; \r
732  hypothesis to cut an edge in several segments with the same length</p>\r
733 \r
734 <p class="whs2">algo.LocalLength(2)</p>\r
735 \r
736 <p class="whs2">&nbsp;</p>\r
737 \r
738 <p class="whs3"># define &quot;Propagation&quot; \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
741 \r
742 <p class="whs2">algo.Propagation()</p>\r
743 \r
744 <p class="whs2">&nbsp;</p>\r
745 \r
746 <p class="whs3"># compute the mesh</p>\r
747 \r
748 <p class="whs2">hexa.Compute() </p>\r
749 \r
750 <p class="whs2">&nbsp;</p>\r
751 \r
752 <p class="whs2">&nbsp;</p>\r
753 \r
754 <h3>Defining 2D and 3D hypotheses</h3>\r
755 \r
756 <h4><a name=bookmark4>Maximum Element Area</a></h4>\r
757 \r
758 <p class="whs4">import smesh</p>\r
759 \r
760 <p class="whs4">import geompy</p>\r
761 \r
762 <p class="whs4">import salome</p>\r
763 \r
764 <p class="whs4">gg = salome.ImportComponentGUI(&quot;GEOM&quot;)</p>\r
765 \r
766 <p class="whs5">&nbsp;</p>\r
767 \r
768 <p class="whs5"># create vertices</p>\r
769 \r
770 <p class="whs4">px &nbsp;&nbsp;= \r
771  geompy.MakeVertex(100., 0. &nbsp;, \r
772  0. &nbsp;)</p>\r
773 \r
774 <p class="whs4">py &nbsp;&nbsp;= \r
775  geompy.MakeVertex(0. &nbsp;, \r
776  100., 0. &nbsp;)</p>\r
777 \r
778 <p class="whs4">pz &nbsp;&nbsp;= \r
779  geompy.MakeVertex(0. &nbsp;, \r
780  0. &nbsp;, 100.)</p>\r
781 \r
782 <p class="whs5">&nbsp;</p>\r
783 \r
784 <p class="whs5"># create a vector from \r
785  two points</p>\r
786 \r
787 <p class="whs4">vxy = geompy.MakeVector(px, \r
788  py)</p>\r
789 \r
790 <p class="whs5">&nbsp;</p>\r
791 \r
792 <p class="whs5"># create an arc from three \r
793  points</p>\r
794 \r
795 <p class="whs4">arc = geompy.MakeArc(py, \r
796  pz, px)</p>\r
797 \r
798 <p class="whs5">&nbsp;</p>\r
799 \r
800 <p class="whs5"># create a wire</p>\r
801 \r
802 <p class="whs4">wire = geompy.MakeWire([vxy, \r
803  arc])</p>\r
804 \r
805 <p class="whs4">isPlanarFace = 1</p>\r
806 \r
807 <p class="whs5">&nbsp;</p>\r
808 \r
809 <p class="whs5"># create a face from the \r
810  wire</p>\r
811 \r
812 <p class="whs4">face1 = geompy.MakeFace(wire, \r
813  isPlanarFace)</p>\r
814 \r
815 <p class="whs5">&nbsp;</p>\r
816 \r
817 <p class="whs5"># add objects in the study</p>\r
818 \r
819 <p class="whs4">id_face1 = geompy.addToStudy(face1,&quot;Face1&quot;)</p>\r
820 \r
821 <p class="whs5">&nbsp;</p>\r
822 \r
823 <p class="whs5"># display faces</p>\r
824 \r
825 <p class="whs4">gg.createAndDisplayGO(id_face1)</p>\r
826 \r
827 <p class="whs4">gg.setDisplayMode(id_face1,1)</p>\r
828 \r
829 <p class="whs4">gg.setTransparency(id_face1,0.2)</p>\r
830 \r
831 <p class="whs5">&nbsp;</p>\r
832 \r
833 <p class="whs5"># create a hexahedral mesh</p>\r
834 \r
835 <p class="whs4">hexa = smesh.Mesh(face1, \r
836  &quot;Face compound : hexahedrical mesh&quot;)</p>\r
837 \r
838 <p class="whs4">algo = hexa.Triangle()</p>\r
839 \r
840 <p class="whs5">&nbsp;</p>\r
841 \r
842 <p class="whs5"># define &quot;MaxElementArea&quot; \r
843  hypothesis to be applied to each triangle</p>\r
844 \r
845 <p class="whs4">algo.MaxElementArea(7)</p>\r
846 \r
847 <p class="whs5">&nbsp;</p>\r
848 \r
849 <p class="whs5"># create a quadrangle 2D \r
850  algorithm for faces</p>\r
851 \r
852 <p class="whs4">hexa.Quadrangle()</p>\r
853 \r
854 <p class="whs5">&nbsp;</p>\r
855 \r
856 <p class="whs5"># create a local hypothesis</p>\r
857 \r
858 <p class="whs6">algo = hexa.Segment(wire)</p>\r
859 \r
860 <p class="whs5">&nbsp;</p>\r
861 \r
862 <p class="whs5"># define &quot;NumberOfSegments&quot; \r
863  hypothesis to cut an edge in a fixed number of segments</p>\r
864 \r
865 <p class="whs4">algo.NumberOfSegments(10)</p>\r
866 \r
867 <p class="whs5">&nbsp;</p>\r
868 \r
869 <p class="whs5"># compute the mesh</p>\r
870 \r
871 <p class="whs4">hexa.Compute() </p>\r
872 \r
873 <p class="whs4">&nbsp;</p>\r
874 \r
875 <h4><a name=bookmark5>Maximum Element Volume</a></h4>\r
876 \r
877 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import \r
878  salome</span></p>\r
879 \r
880 <p class="whs4">import geompy</p>\r
881 \r
882 <p class="whs4">import StdMeshers</p>\r
883 \r
884 <p class="whs4">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, \r
885  &quot;SMESH&quot;)</p>\r
886 \r
887 <p class="whs4">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>\r
888 \r
889 <p class="whs4">smeshgui.Init(salome.myStudyId);</p>\r
890 \r
891 <p class="whs4">&nbsp;</p>\r
892 \r
893 <p class="whs7"># create a box</p>\r
894 \r
895 <p class="whs4">box = geompy.MakeCylinderRH(30, \r
896  50) #MakeBox(0., 0., 0., 100., 200., 300.)</p>\r
897 \r
898 <p class="whs4">&nbsp;</p>\r
899 \r
900 <p class="whs7"># add the box to the \r
901  study</p>\r
902 \r
903 <p class="whs4">idbox = geompy.addToStudy(box, \r
904  &quot;box&quot;)</p>\r
905 \r
906 <p class="whs4">&nbsp;</p>\r
907 \r
908 <p class="whs7"># create vertices</p>\r
909 \r
910 <p class="whs4">px &nbsp;&nbsp;= \r
911  geompy.MakeVertex(100., 0. &nbsp;, \r
912  0. &nbsp;)</p>\r
913 \r
914 <p class="whs4">py &nbsp;&nbsp;= \r
915  geompy.MakeVertex(0. &nbsp;, \r
916  100., 0. &nbsp;)</p>\r
917 \r
918 <p class="whs4">pz &nbsp;&nbsp;= \r
919  geompy.MakeVertex(0. &nbsp;, \r
920  0. &nbsp;, 100.)</p>\r
921 \r
922 <p class="whs4">&nbsp;</p>\r
923 \r
924 <p class="whs7"># create a vector from \r
925  two points</p>\r
926 \r
927 <p class="whs4">vxy = geompy.MakeVector(px, \r
928  py)</p>\r
929 \r
930 <p class="whs4">&nbsp;</p>\r
931 \r
932 <p class="whs7"># create an arc from \r
933  three points</p>\r
934 \r
935 <p class="whs4">arc = geompy.MakeArc(py, \r
936  pz, px)</p>\r
937 \r
938 <p class="whs4">&nbsp;</p>\r
939 \r
940 <p class="whs7"># create a wire</p>\r
941 \r
942 <p class="whs4">wire = geompy.MakeWire([vxy, \r
943  arc])</p>\r
944 \r
945 <p class="whs4">isPlanarFace = 1</p>\r
946 \r
947 <p class="whs4">&nbsp;</p>\r
948 \r
949 <p class="whs7"># create a face from \r
950  the wire</p>\r
951 \r
952 <p class="whs4">#face1</p>\r
953 \r
954 <p class="whs4">box = geompy.MakeFace(wire, \r
955  isPlanarFace)</p>\r
956 \r
957 <p class="whs4">&nbsp;</p>\r
958 \r
959 <p class="whs7"># add objects in the \r
960  study</p>\r
961 \r
962 <p class="whs4">id_face1 = geompy.addToStudy(box,&quot;Face1&quot;)</p>\r
963 \r
964 <p class="whs4">#geompy.addToStudy(face1,&quot;Face1&quot;)</p>\r
965 \r
966 <p class="whs4">&nbsp;</p>\r
967 \r
968 <p class="whs7"># display faces</p>\r
969 \r
970 <p class="whs4">gg.createAndDisplayGO(id_face1)</p>\r
971 \r
972 <p class="whs4">gg.setDisplayMode(id_face1,1)</p>\r
973 \r
974 <p class="whs4">gg.setTransparency(id_face1,0.2)</p>\r
975 \r
976 <p class="whs4">&nbsp;</p>\r
977 \r
978 <p class="whs7"># create a hypothesis</p>\r
979 \r
980 <p class="whs4">print &quot;-------------------------- \r
981  create Hypothesis&quot;</p>\r
982 \r
983 <p class="whs4">print &quot;-------------------------- \r
984  NumberOfSegments&quot;</p>\r
985 \r
986 <p class="whs4">numberOfSegments \r
987  = 7</p>\r
988 \r
989 <p class="whs4">hypNbSeg = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, \r
990  &quot;libStdMeshersEngine.so&quot;)</p>\r
991 \r
992 <p class="whs4">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>\r
993 \r
994 <p class="whs4">print hypNbSeg.GetName()</p>\r
995 \r
996 <p class="whs4">print hypNbSeg.GetId()</p>\r
997 \r
998 <p class="whs4">print hypNbSeg.GetNumberOfSegments()</p>\r
999 \r
1000 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hypNbSeg), \r
1001  &quot;NumberOfSegments_10&quot;)</p>\r
1002 \r
1003 <p class="whs4">print &quot;-------------------------- \r
1004  MaxElementArea&quot;</p>\r
1005 \r
1006 <p class="whs4">maxElementArea = \r
1007  800</p>\r
1008 \r
1009 <p class="whs4">hypArea = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, \r
1010  &quot;libStdMeshersEngine.so&quot;)</p>\r
1011 \r
1012 <p class="whs4">hypArea.SetMaxElementArea(maxElementArea)</p>\r
1013 \r
1014 <p class="whs4">print hypArea.GetName()</p>\r
1015 \r
1016 <p class="whs4">print hypArea.GetId()</p>\r
1017 \r
1018 <p class="whs4">print hypArea.GetMaxElementArea()</p>\r
1019 \r
1020 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hypArea), \r
1021  &quot;MaxElementArea_800&quot;)</p>\r
1022 \r
1023 <p class="whs4">print &quot;-------------------------- \r
1024  MaxElementVolume&quot;</p>\r
1025 \r
1026 <p class="whs4">maxElementVolume \r
1027  = 900</p>\r
1028 \r
1029 <p class="whs4">hypVolume = smesh.CreateHypothesis(&quot;MaxElementVolume&quot;, \r
1030  &quot;libStdMeshersEngine.so&quot;)</p>\r
1031 \r
1032 <p class="whs4">hypVolume.SetMaxElementVolume(maxElementVolume)</p>\r
1033 \r
1034 <p class="whs4">print hypVolume.GetName()</p>\r
1035 \r
1036 <p class="whs4">print hypVolume.GetId()</p>\r
1037 \r
1038 <p class="whs4">print hypVolume.GetMaxElementVolume()</p>\r
1039 \r
1040 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hypVolume), \r
1041  &quot;MaxElementVolume_900&quot;)</p>\r
1042 \r
1043 <p class="whs4">&nbsp;</p>\r
1044 \r
1045 <p class="whs7"># create algorithms</p>\r
1046 \r
1047 <p class="whs4">print &quot;-------------------------- \r
1048  create Algorithms&quot;</p>\r
1049 \r
1050 <p class="whs4">print &quot;-------------------------- \r
1051  Regular_1D&quot;</p>\r
1052 \r
1053 <p class="whs4">regular1D = smesh.CreateHypothesis(&quot;Regular_1D&quot;, \r
1054  &quot;libStdMeshersEngine.so&quot;)</p>\r
1055 \r
1056 <p class="whs4">smeshgui.SetName(salome.ObjectToID(regular1D), \r
1057  &quot;Wire Discretisation&quot;)</p>\r
1058 \r
1059 <p class="whs4">print &quot;-------------------------- \r
1060  MEFISTO_2D&quot;</p>\r
1061 \r
1062 <p class="whs4">mefisto2D = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, \r
1063  &quot;libStdMeshersEngine.so&quot;)</p>\r
1064 \r
1065 <p class="whs4">smeshgui.SetName(salome.ObjectToID(mefisto2D), \r
1066  &quot;MEFISTO_2D&quot;)</p>\r
1067 \r
1068 <p class="whs4">#print &quot;-------------------------- \r
1069  Hexa_3D (Hexahedron meshing algorithm)&quot;</p>\r
1070 \r
1071 <p class="whs4">hexa3D = smesh.CreateHypothesis(&quot;Hexa_3D&quot;, \r
1072  &quot;libStdMeshersEngine.so&quot;)</p>\r
1073 \r
1074 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hexa3D), \r
1075  &quot;HEXA_3D&quot;)</p>\r
1076 \r
1077 <p class="whs4">&nbsp;</p>\r
1078 \r
1079 <p class="whs7"># initialize a mesh \r
1080  with the box</p>\r
1081 \r
1082 <p class="whs4">mesh = smesh.CreateMesh(box)</p>\r
1083 \r
1084 <p class="whs4">smeshgui.SetName(salome.ObjectToID(mesh), \r
1085  &quot;MeshBox&quot;)</p>\r
1086 \r
1087 <p class="whs4">&nbsp;</p>\r
1088 \r
1089 <p class="whs7"># add a hypothesis \r
1090  to the box</p>\r
1091 \r
1092 <p class="whs4">print &quot;-------------------------- \r
1093  add hypothesis to the box&quot;</p>\r
1094 \r
1095 <p class="whs4">mesh.AddHypothesis(box,hypNbSeg)</p>\r
1096 \r
1097 <p class="whs4">mesh.AddHypothesis(box,hypArea)</p>\r
1098 \r
1099 <p class="whs4">mesh.AddHypothesis(box,hypVolume)</p>\r
1100 \r
1101 <p class="whs4">mesh.AddHypothesis(box,regular1D)</p>\r
1102 \r
1103 <p class="whs4">mesh.AddHypothesis(box,mefisto2D)</p>\r
1104 \r
1105 <p class="whs4">mesh.AddHypothesis(box,hexa3D)</p>\r
1106 \r
1107 <p class="whs4">&nbsp;</p>\r
1108 \r
1109 <p class="whs7"># compute the mesh</p>\r
1110 \r
1111 <p class="whs4">print &quot;-------------------------- \r
1112  compute the mesh of the box&quot;</p>\r
1113 \r
1114 <p class="whs4">ret = smesh.Compute(mesh,box)</p>\r
1115 \r
1116 <p class="whs4">print ret</p>\r
1117 \r
1118 <p class="whs4">if ret == 0:</p>\r
1119 \r
1120 <p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;print \r
1121  &quot;probleme when computing the mesh&quot;</p>\r
1122 \r
1123 <p class="whs4">salome.sg.updateObjBrowser(1)</p>\r
1124 \r
1125 <p class="whs4">&nbsp;</p>\r
1126 \r
1127 <h3>Defining Additional Hypotheses</h3>\r
1128 \r
1129 <h4><a name=bookmark6>Length from Edges</a></h4>\r
1130 \r
1131 <p class="whs2">import smesh</p>\r
1132 \r
1133 <p class="whs2">import geompy</p>\r
1134 \r
1135 <p class="whs2">import salome</p>\r
1136 \r
1137 <p class="whs2">gg = salome.ImportComponentGUI(&quot;GEOM&quot;)</p>\r
1138 \r
1139 <p>&nbsp;</p>\r
1140 \r
1141 <p># create sketchers</p>\r
1142 \r
1143 <p class="whs2">sketcher1 = geompy.MakeSketcher(&quot;Sketcher:F \r
1144  0 0:TT 70 0:TT 70 70:TT 0 70:WW&quot;)</p>\r
1145 \r
1146 <p class="whs2">sketcher2 = geompy.MakeSketcher(&quot;Sketcher:F \r
1147  20 20:TT 50 20:TT 50 50:TT 20 50:WW&quot;)</p>\r
1148 \r
1149 <p class="whs2">isPlanarFace = 1</p>\r
1150 \r
1151 <p>&nbsp;</p>\r
1152 \r
1153 <p># create faces from two wires</p>\r
1154 \r
1155 <p class="whs2">face1 = geompy.MakeFaces([sketcher1, \r
1156  sketcher2],isPlanarFace)</p>\r
1157 \r
1158 <p>&nbsp;</p>\r
1159 \r
1160 <p># add objects in the study</p>\r
1161 \r
1162 <p class="whs2">id_face1 = geompy.addToStudy(face1,&quot;Face1&quot;)</p>\r
1163 \r
1164 <p>&nbsp;</p>\r
1165 \r
1166 <p># display faces</p>\r
1167 \r
1168 <p class="whs2">gg.createAndDisplayGO(id_face1)</p>\r
1169 \r
1170 <p class="whs2">gg.setDisplayMode(id_face1,1)</p>\r
1171 \r
1172 <p class="whs2">gg.setTransparency(id_face1,0.2)</p>\r
1173 \r
1174 <p>&nbsp;</p>\r
1175 \r
1176 <p># create a mesh</p>\r
1177 \r
1178 <p class="whs2">hexa = smesh.Mesh(face1, \r
1179  &quot;Face : triangle 2D mesh&quot;)</p>\r
1180 \r
1181 <p class="whs2">algo = hexa.Triangle()</p>\r
1182 \r
1183 <p>&nbsp;</p>\r
1184 \r
1185 <p># define &quot;MaxElementArea&quot; hypothesis to be applied to each \r
1186  triangle</p>\r
1187 \r
1188 <p class="whs2">algo.MaxElementArea(30)</p>\r
1189 \r
1190 <p>&nbsp;</p>\r
1191 \r
1192 <p># define &quot;LengthFromEdges&quot; hypothesis to build triangles based \r
1193  on the length of the edges taken from the wire</p>\r
1194 \r
1195 <p class="whs2">algo.LengthFromEdges()</p>\r
1196 \r
1197 <p>&nbsp;</p>\r
1198 \r
1199 <p># create local hypothesis</p>\r
1200 \r
1201 <p class="whs2">algo = hexa.Segment()</p>\r
1202 \r
1203 <p>&nbsp;</p>\r
1204 \r
1205 <p># define &quot;NumberOfSegments&quot; hypothesis to cut an edge in a \r
1206  fixed number of segments</p>\r
1207 \r
1208 <p class="whs2">algo.NumberOfSegments(2)</p>\r
1209 \r
1210 <p>&nbsp;</p>\r
1211 \r
1212 <p># compute the mesh</p>\r
1213 \r
1214 <p class="whs2">hexa.Compute() </p>\r
1215 \r
1216 <p class="whs2">&nbsp;</p>\r
1217 \r
1218 <h4><a name=bookmark7>Propagation</a></h4>\r
1219 \r
1220 <p class="whs2">from geompy import \r
1221  *</p>\r
1222 \r
1223 <p class="whs2">import smesh</p>\r
1224 \r
1225 <p class="whs2">&nbsp;</p>\r
1226 \r
1227 <p class="whs3"># create vertices</p>\r
1228 \r
1229 <p class="whs2">Point111 = MakeVertex( \r
1230  0, &nbsp;0, &nbsp;0)</p>\r
1231 \r
1232 <p class="whs2">Point211 = MakeVertex(10, \r
1233  &nbsp;0, &nbsp;0)</p>\r
1234 \r
1235 <p class="whs2">Point121 = MakeVertex( \r
1236  0, 10, &nbsp;0)</p>\r
1237 \r
1238 <p class="whs2">Point221 = MakeVertex(10, \r
1239  10, &nbsp;0)</p>\r
1240 \r
1241 <p class="whs2">Point112 = MakeVertex( \r
1242  0, &nbsp;0, 10)</p>\r
1243 \r
1244 <p class="whs2">Point212 = MakeVertex(10, \r
1245  &nbsp;0, 10)</p>\r
1246 \r
1247 <p class="whs2">Point122 = MakeVertex( \r
1248  0, 10, 10)</p>\r
1249 \r
1250 <p class="whs2">Point222 = MakeVertex(10, \r
1251  10, 10)</p>\r
1252 \r
1253 <p class="whs2">&nbsp;</p>\r
1254 \r
1255 <p class="whs3"># create edges</p>\r
1256 \r
1257 <p class="whs2">EdgeX111 = MakeEdge(Point111, \r
1258  Point211)</p>\r
1259 \r
1260 <p class="whs2">EdgeX121 = MakeEdge(Point121, \r
1261  Point221)</p>\r
1262 \r
1263 <p class="whs2">EdgeX112 = MakeEdge(Point112, \r
1264  Point212)</p>\r
1265 \r
1266 <p class="whs2">EdgeX122 = MakeEdge(Point122, \r
1267  Point222)</p>\r
1268 \r
1269 <p class="whs2">EdgeY11 = MakeEdge(Point111, \r
1270  Point121)</p>\r
1271 \r
1272 <p class="whs2">EdgeY21 = MakeEdge(Point211, \r
1273  Point221)</p>\r
1274 \r
1275 <p class="whs2">EdgeY12 = MakeEdge(Point112, \r
1276  Point122)</p>\r
1277 \r
1278 <p class="whs2">EdgeY22 = MakeEdge(Point212, \r
1279  Point222)</p>\r
1280 \r
1281 <p class="whs2">EdgeZ111 = MakeEdge(Point111, \r
1282  Point112)</p>\r
1283 \r
1284 <p class="whs2">EdgeZ211 = MakeEdge(Point211, \r
1285  Point212)</p>\r
1286 \r
1287 <p class="whs2">EdgeZ121 = MakeEdge(Point121, \r
1288  Point122)</p>\r
1289 \r
1290 <p class="whs2">EdgeZ221 = MakeEdge(Point221, \r
1291  Point222)</p>\r
1292 \r
1293 <p class="whs2">&nbsp;</p>\r
1294 \r
1295 <p class="whs3"># create faces</p>\r
1296 \r
1297 <p class="whs2">FaceX11 = MakeQuad(EdgeY11, \r
1298  EdgeZ111, EdgeY12, EdgeZ121)</p>\r
1299 \r
1300 <p class="whs2">FaceX21 = MakeQuad(EdgeY21, \r
1301  EdgeZ211, EdgeY22, EdgeZ221)</p>\r
1302 \r
1303 <p class="whs2">FaceY111 = MakeQuad(EdgeX111, \r
1304  EdgeZ111, EdgeX112, EdgeZ211)</p>\r
1305 \r
1306 <p class="whs2">FaceY121 = MakeQuad(EdgeX121, \r
1307  EdgeZ121, EdgeX122, EdgeZ221)</p>\r
1308 \r
1309 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111, \r
1310  EdgeY11, EdgeX121, EdgeY21)</p>\r
1311 \r
1312 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112, \r
1313  EdgeY12, EdgeX122, EdgeY22)</p>\r
1314 \r
1315 <p class="whs2">&nbsp;</p>\r
1316 \r
1317 <p class="whs3"># create a solid</p>\r
1318 \r
1319 <p class="whs2">Block = MakeHexa(FaceX11, \r
1320  FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>\r
1321 \r
1322 <p class="whs2">&nbsp;</p>\r
1323 \r
1324 <p class="whs3"># create a compound</p>\r
1325 \r
1326 <p class="whs2">box = MakeCompound([Block])</p>\r
1327 \r
1328 <p class="whs2">&nbsp;</p>\r
1329 \r
1330 <p class="whs3"># add in the study</p>\r
1331 \r
1332 <p class="whs2">box_id = addToStudy(box, \r
1333  &quot;Box compound&quot;)</p>\r
1334 \r
1335 <p class="whs2">&nbsp;</p>\r
1336 \r
1337 <p class="whs3"># create a hexahedral \r
1338  mesh on the box</p>\r
1339 \r
1340 <p class="whs2">hexa = smesh.Mesh(box, \r
1341  &quot;Box compound : hexahedrical mesh&quot;)</p>\r
1342 \r
1343 <p class="whs2">algo = hexa.Segment()</p>\r
1344 \r
1345 <p class="whs2">&nbsp;</p>\r
1346 \r
1347 <p class="whs3"># define &quot;NumberOfSegments&quot; \r
1348  hypothesis to cut an edge in a fixed number of segments</p>\r
1349 \r
1350 <p class="whs2">algo.NumberOfSegments(4)</p>\r
1351 \r
1352 <p class="whs2">&nbsp;</p>\r
1353 \r
1354 <p class="whs3"># create a quadrangle \r
1355  2D algorithm for faces</p>\r
1356 \r
1357 <p class="whs2">hexa.Quadrangle()</p>\r
1358 \r
1359 <p class="whs2">&nbsp;</p>\r
1360 \r
1361 <p class="whs3"># create a hexahedron \r
1362  3D algorithm for solids</p>\r
1363 \r
1364 <p class="whs2">hexa.Hexahedron()</p>\r
1365 \r
1366 <p class="whs2">&nbsp;</p>\r
1367 \r
1368 <p class="whs3"># create a local hypothesis</p>\r
1369 \r
1370 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>\r
1371 \r
1372 <p class="whs2">&nbsp;</p>\r
1373 \r
1374 <p class="whs2"><span style="font-family: 'Times New Roman', serif;"># \r
1375  define &quot;Arithmetic1D&quot; hypothesis to cut an edge in several segments \r
1376  with arithmetic length</span> </p>\r
1377 \r
1378 <p class="whs2">increasing</p>\r
1379 \r
1380 <p class="whs2">algo.Arithmetic1D(1, \r
1381  4)</p>\r
1382 \r
1383 <p class="whs2">&nbsp;</p>\r
1384 \r
1385 <p class="whs3"># define &quot;Propagation&quot; \r
1386  hypothesis that propagatea all other hypothesis on all edges on the opposite \r
1387  side in case of quadrangular faces</p>\r
1388 \r
1389 <p class="whs2">algo.Propagation()</p>\r
1390 \r
1391 <p class="whs2">&nbsp;</p>\r
1392 \r
1393 <p class="whs3"># compute the mesh</p>\r
1394 \r
1395 <p class="whs2">hexa.Compute() </p>\r
1396 \r
1397 <p class="whs2">&nbsp;</p>\r
1398 \r
1399 <h3><a name=bookmark8>Defining Meshing Algorithms</a></h3>\r
1400 \r
1401 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import \r
1402  salome</span></p>\r
1403 \r
1404 <p class="whs4">import StdMeshers</p>\r
1405 \r
1406 <p class="whs4">import NETGENPlugin</p>\r
1407 \r
1408 <p class="whs4">&nbsp;</p>\r
1409 \r
1410 <p class="whs4">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, \r
1411  &quot;SMESH&quot;)</p>\r
1412 \r
1413 <p class="whs4">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>\r
1414 \r
1415 <p class="whs4">smeshgui.Init(salome.myStudyId);</p>\r
1416 \r
1417 <p class="whs5">&nbsp;</p>\r
1418 \r
1419 <p class="whs5"># create algorithms</p>\r
1420 \r
1421 <p class="whs4">print &quot;-------------------------- \r
1422  create Algorithms&quot;</p>\r
1423 \r
1424 <p class="whs4">print &quot;-------------------------- \r
1425  Regular_1D (Wire discretisation)&quot;</p>\r
1426 \r
1427 <p class="whs4">regular1D = smesh.CreateHypothesis(&quot;Regular_1D&quot;, \r
1428  &quot;libStdMeshersEngine.so&quot;)</p>\r
1429 \r
1430 <p class="whs4">smeshgui.SetName(salome.ObjectToID(regular1D), \r
1431  &quot;Wire Discretisation&quot;)</p>\r
1432 \r
1433 <p class="whs4">&nbsp;</p>\r
1434 \r
1435 <p class="whs4">print &quot;-------------------------- \r
1436  MEFISTO_2D (Triangle meshing algorithm)&quot;</p>\r
1437 \r
1438 <p class="whs4">mefisto2D = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, \r
1439  &quot;libStdMeshersEngine.so&quot;)</p>\r
1440 \r
1441 <p class="whs4">smeshgui.SetName(salome.ObjectToID(mefisto2D), \r
1442  &quot;MEFISTO_2D&quot;)</p>\r
1443 \r
1444 <p class="whs4">&nbsp;</p>\r
1445 \r
1446 <p class="whs4">print &quot;-------------------------- \r
1447  Quadrangle_2D (Quadrangle meshing algorithm)&quot;</p>\r
1448 \r
1449 <p class="whs4">quad2D = smesh.CreateHypothesis( \r
1450  &quot;Quadrangle_2D&quot;, &quot;libStdMeshersEngine.so&quot; )</p>\r
1451 \r
1452 <p class="whs4">smeshgui.SetName(salome.ObjectToID(quad2D), \r
1453  &quot;Quadrangle_2D&quot;)</p>\r
1454 \r
1455 <p class="whs4">&nbsp;</p>\r
1456 \r
1457 <p class="whs4">print &quot;-------------------------- \r
1458  Hexa_3D (Hexahedron meshing algorithm)&quot;</p>\r
1459 \r
1460 <p class="whs4">hexa3D = smesh.CreateHypothesis(&quot;Hexa_3D&quot;, \r
1461  &quot;libStdMeshersEngine.so&quot;)</p>\r
1462 \r
1463 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hexa3D), \r
1464  &quot;HEXA_3D&quot;)</p>\r
1465 \r
1466 <p class="whs4">&nbsp;</p>\r
1467 \r
1468 <p class="whs4">print &quot;-------------------------- \r
1469  NETGEN_3D (Tetrahedron meshing algorithm)&quot;</p>\r
1470 \r
1471 <p class="whs4">netgen3D = smesh.CreateHypothesis(&quot;NETGEN_3D&quot;, \r
1472  &quot;libNETGENEngine.so&quot;)</p>\r
1473 \r
1474 <p class="whs4">smeshgui.SetName(salome.ObjectToID(netgen3D), \r
1475  &quot;NETGEN_3D&quot;)</p>\r
1476 \r
1477 <p class="whs4">salome.sg.updateObjBrowser(1)</p>\r
1478 \r
1479 <p class="whs5">&nbsp;</p>\r
1480 \r
1481 <script type="text/javascript" language="javascript1.2">\r
1482 <!--\r
1483 if (window.writeIntopicBar)\r
1484         writeIntopicBar(0);\r
1485 //-->\r
1486 </script>\r
1487 </body>\r
1488 </html>\r