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