Salome HOME
PAL12557: SMESH Documentation for scripts is not up to date.
[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 p.WebHelpNavBar { text-align:right; }\r
53 -->\r
54 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
55 <script type="text/javascript" language="javascript" src="whver.js"></script>\r
56 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
57 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
58 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
59 <script type="text/javascript" language="javascript1.2">\r
60 <!--\r
61 if (window.gbWhTopic)\r
62 {\r
63         if (window.setRelStartPage)\r
64         {\r
65         addTocInfo("MESH module\nTUI Scripts\nDefining Hypotheses");\r
66 addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
67 addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
68 \r
69         }\r
70 \r
71 \r
72         if (window.setRelStartPage)\r
73         {\r
74         setRelStartPage("index.htm");\r
75 \r
76                 autoSync(1);\r
77                 sendSyncInfo();\r
78                 sendAveInfoOut();\r
79         }\r
80 \r
81 }\r
82 else\r
83         if (window.gbIE4)\r
84                 document.location.reload();\r
85 //-->\r
86 </script>\r
87 </head>\r
88 <body><script type="text/javascript" language="javascript1.2">\r
89 <!--\r
90 if (window.writeIntopicBar)\r
91         writeIntopicBar(4);\r
92 //-->\r
93 </script>\r
94 <h1>Defining Hypotheses and Algorithms</h1>\r
95 \r
96 <h3>Defining 1D Hypotheses</h3>\r
97 \r
98 <p class="whs1"><a name=bookmark>1D Arithmetic</a></p>\r
99 \r
100 <p>&nbsp;</p>\r
101 \r
102 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import \r
103  geompy</span></p>\r
104 \r
105 <p class="whs2">import smesh</p>\r
106 \r
107 <p class="whs2">&nbsp;</p>\r
108 \r
109 <p class="whs3"># create a box</p>\r
110 \r
111 <p class="whs2">box = geompy.MakeBoxDXDYDZ(10., \r
112  10., 10.)</p>\r
113 \r
114 <p class="whs2">geompy.addToStudy(box, \r
115  &quot;Box&quot;)</p>\r
116 \r
117 <p class="whs2">&nbsp;</p>\r
118 \r
119 <p class="whs3"># create a hexahedral \r
120  mesh on the box</p>\r
121 \r
122 <p class="whs2">hexa = smesh.Mesh(box, \r
123  &quot;Box : hexahedrical mesh&quot;)</p>\r
124 \r
125 <p class="whs2">&nbsp;</p>\r
126 \r
127 <p class="whs3"># create a Regular 1D \r
128  algorithm for edges</p>\r
129 \r
130 <p class="whs2">algo1D = hexa.Segment()</p>\r
131 \r
132 <p class="whs2">&nbsp;</p>\r
133 \r
134 <p class="whs3"># define &quot;Arithmetic1D&quot; \r
135  hypothesis to cut all edges in several segments with increasing arithmetic \r
136  length </p>\r
137 \r
138 <p class="whs2">algo1D.Arithmetic1D(1, \r
139  4)</p>\r
140 \r
141 <p class="whs2">&nbsp;</p>\r
142 \r
143 <p class="whs3"># create a quadrangle \r
144  2D algorithm for faces</p>\r
145 \r
146 <p class="whs2">hexa.Quadrangle()</p>\r
147 \r
148 <p class="whs2">&nbsp;</p>\r
149 \r
150 <p class="whs3"># create a hexahedron \r
151  3D algorithm for solids</p>\r
152 \r
153 <p class="whs2">hexa.Hexahedron()</p>\r
154 \r
155 <p class="whs2">&nbsp;</p>\r
156 \r
157 <p class="whs3"># compute the mesh</p>\r
158 \r
159 <p class="whs2">hexa.Compute() </p>\r
160 \r
161 <p class="whs2">&nbsp;</p>\r
162 \r
163 <h4><a name=bookmark9>Deflection 1D and Number of Segments</a></h4>\r
164 \r
165 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import \r
166  geompy</span></p>\r
167 \r
168 <p class="whs2">import smesh</p>\r
169 \r
170 <p class="whs2">&nbsp;</p>\r
171 \r
172 <p class="whs3"># create a face from \r
173  arc and straight segment</p>\r
174 \r
175 <p class="whs2">px = geompy.MakeVertex(100., \r
176  0. &nbsp;, 0. \r
177  &nbsp;)</p>\r
178 \r
179 <p class="whs2">py = geompy.MakeVertex(0. \r
180  &nbsp;, 100., \r
181  0. &nbsp;)</p>\r
182 \r
183 <p class="whs2">pz = geompy.MakeVertex(0. \r
184  &nbsp;, 0. &nbsp;, \r
185  100.)</p>\r
186 \r
187 <p class="whs2">&nbsp;</p>\r
188 \r
189 <p class="whs2">exy = geompy.MakeEdge(px, \r
190  py)</p>\r
191 \r
192 <p class="whs2">arc = geompy.MakeArc(py, \r
193  pz, px)</p>\r
194 \r
195 <p class="whs2">&nbsp;</p>\r
196 \r
197 <p class="whs2">wire = geompy.MakeWire([exy, \r
198  arc])</p>\r
199 \r
200 <p class="whs2">&nbsp;</p>\r
201 \r
202 <p class="whs2">isPlanarFace = 1</p>\r
203 \r
204 <p class="whs2">face1 = geompy.MakeFace(wire, \r
205  isPlanarFace)</p>\r
206 \r
207 <p class="whs2">geompy.addToStudy(face1,&quot;Face1&quot;)</p>\r
208 \r
209 <p class="whs2">&nbsp;</p>\r
210 \r
211 <p class="whs3"># get edges from the \r
212  face</p>\r
213 \r
214 <p class="whs2">e_straight,e_arc = \r
215  geompy.SubShapeAll(face1, geompy.ShapeType[&quot;EDGE&quot;])</p>\r
216 \r
217 <p class="whs2">geompy.addToStudyInFather(face1, \r
218  e_arc, &quot;Arc Edge&quot;)</p>\r
219 \r
220 <p class="whs2">&nbsp;</p>\r
221 \r
222 <p class="whs3"># create hexahedral mesh</p>\r
223 \r
224 <p class="whs2">hexa = smesh.Mesh(face1, \r
225  &quot;Face : triangle mesh&quot;)</p>\r
226 \r
227 <p class="whs2">&nbsp;</p>\r
228 \r
229 <p class="whs3"># define &quot;NumberOfSegments&quot; \r
230  hypothesis to cut a straight edge in a fixed number of segments</p>\r
231 \r
232 <p class="whs2">algo1D = hexa.Segment()</p>\r
233 \r
234 <p class="whs2">algo1D.NumberOfSegments(6)</p>\r
235 \r
236 <p class="whs2">&nbsp;</p>\r
237 \r
238 <p class="whs3"># define &quot;MaxElementArea&quot; \r
239  hypothesis</p>\r
240 \r
241 <p class="whs2">algo2D = hexa.Triangle()</p>\r
242 \r
243 <p class="whs2">algo2D.MaxElementArea(70.0)</p>\r
244 \r
245 <p class="whs2">&nbsp;</p>\r
246 \r
247 <p class="whs3"># define a local &quot;Deflection1D&quot; \r
248  hypothesis on the arc</p>\r
249 \r
250 <p class="whs2">algo_local = hexa.Segment(e_arc)</p>\r
251 \r
252 <p class="whs2">algo_local.Deflection1D(1.0)</p>\r
253 \r
254 <p class="whs2">&nbsp;</p>\r
255 \r
256 <p class="whs3"># compute the mesh</p>\r
257 \r
258 <p class="whs2">hexa.Compute() </p>\r
259 \r
260 <h4><a name=bookmark2>Start and End Length</a></h4>\r
261 \r
262 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from \r
263  geompy import *</span></p>\r
264 \r
265 <p class="whs2">import smesh</p>\r
266 \r
267 <p class="whs2">&nbsp;</p>\r
268 \r
269 <p class="whs3"># create a box</p>\r
270 \r
271 <p class="whs2">box = MakeBoxDXDYDZ(10., \r
272  10., 10.)</p>\r
273 \r
274 <p class="whs2">addToStudy(box, &quot;Box&quot;)</p>\r
275 \r
276 <p class="whs2">&nbsp;</p>\r
277 \r
278 <p class="whs3"># get one edge of the \r
279  box to put local hypothesis on</p>\r
280 \r
281 <p class="whs2">p5 = MakeVertex(5., \r
282  0., 0.)</p>\r
283 \r
284 <p class="whs2">EdgeX = GetEdgeNearPoint(box, \r
285  p5)</p>\r
286 \r
287 <p class="whs2">addToStudyInFather(box, \r
288  EdgeX, &quot;Edge [0,0,0 - 10,0,0]&quot;)</p>\r
289 \r
290 <p class="whs2">&nbsp;</p>\r
291 \r
292 <p class="whs3"># create a hexahedral \r
293  mesh on the box</p>\r
294 \r
295 <p class="whs2">hexa = smesh.Mesh(box, \r
296  &quot;Box : hexahedrical mesh&quot;)</p>\r
297 \r
298 <p class="whs2">&nbsp;</p>\r
299 \r
300 <p class="whs3"># set algorithms</p>\r
301 \r
302 <p class="whs2">algo1D = hexa.Segment()</p>\r
303 \r
304 <p class="whs2">hexa.Quadrangle()</p>\r
305 \r
306 <p class="whs2">hexa.Hexahedron()</p>\r
307 \r
308 <p class="whs2">&nbsp;</p>\r
309 \r
310 <p class="whs3"># define &quot;NumberOfSegments&quot; \r
311  hypothesis to cut an edge in a fixed number of segments</p>\r
312 \r
313 <p class="whs2">algo1D.NumberOfSegments(4)</p>\r
314 \r
315 <p class="whs2">&nbsp;</p>\r
316 \r
317 <p class="whs3"># create a local hypothesis</p>\r
318 \r
319 <p class="whs2">algo_local = hexa.Segment(EdgeX)</p>\r
320 \r
321 <p class="whs2">&nbsp;</p>\r
322 \r
323 <p class="whs3"># define &quot;StartEndLength&quot; \r
324  hypothesis to cut an edge in several segments with increasing geometric \r
325  length</p>\r
326 \r
327 <p class="whs2">algo_local.StartEndLength(1, \r
328  6)</p>\r
329 \r
330 <p class="whs2">&nbsp;</p>\r
331 \r
332 <p class="whs3"># define &quot;Propagation&quot; \r
333  hypothesis that propagates all other hypothesis</p>\r
334 \r
335 <p class="whs3"># on all edges on the \r
336  opposite side in case of quadrangular faces</p>\r
337 \r
338 <p class="whs2">algo_local.Propagation()</p>\r
339 \r
340 <p class="whs2">&nbsp;</p>\r
341 \r
342 <p class="whs3"># compute the mesh</p>\r
343 \r
344 <p class="whs2">hexa.Compute() </p>\r
345 \r
346 <h4><a name=bookmark3>Average Length</a></h4>\r
347 \r
348 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from \r
349  geompy import *</span></p>\r
350 \r
351 <p class="whs2">import smesh</p>\r
352 \r
353 <p class="whs2">&nbsp;</p>\r
354 \r
355 <p class="whs3"># create a box</p>\r
356 \r
357 <p class="whs2">box = MakeBoxDXDYDZ(10., \r
358  10., 10.)</p>\r
359 \r
360 <p class="whs2">addToStudy(box, &quot;Box&quot;)</p>\r
361 \r
362 <p class="whs2">&nbsp;</p>\r
363 \r
364 <p class="whs3"># get one edge of the \r
365  box to put local hypothesis on</p>\r
366 \r
367 <p class="whs2">p5 = MakeVertex(5., \r
368  0., 0.)</p>\r
369 \r
370 <p class="whs2">EdgeX = GetEdgeNearPoint(box, \r
371  p5)</p>\r
372 \r
373 <p class="whs2">addToStudyInFather(box, \r
374  EdgeX, &quot;Edge [0,0,0 - 10,0,0]&quot;)</p>\r
375 \r
376 <p class="whs2">&nbsp;</p>\r
377 \r
378 <p class="whs3"># create a hexahedral \r
379  mesh on the box</p>\r
380 \r
381 <p class="whs2">hexa = smesh.Mesh(box, \r
382  &quot;Box : hexahedrical mesh&quot;)</p>\r
383 \r
384 <p class="whs2">&nbsp;</p>\r
385 \r
386 <p class="whs3"># set algorithms</p>\r
387 \r
388 <p class="whs2">algo1D = hexa.Segment()</p>\r
389 \r
390 <p class="whs2">hexa.Quadrangle()</p>\r
391 \r
392 <p class="whs2">hexa.Hexahedron()</p>\r
393 \r
394 <p class="whs2">&nbsp;</p>\r
395 \r
396 <p class="whs3"># define &quot;NumberOfSegments&quot; \r
397  hypothesis to cut all edges in a fixed number of segments</p>\r
398 \r
399 <p class="whs2">algo1D.NumberOfSegments(4)</p>\r
400 \r
401 <p class="whs2">&nbsp;</p>\r
402 \r
403 <p class="whs3"># create a sub-mesh</p>\r
404 \r
405 <p class="whs2">algo_local = hexa.Segment(EdgeX)</p>\r
406 \r
407 <p class="whs2">&nbsp;</p>\r
408 \r
409 <p class="whs3"># define &quot;LocalLength&quot; \r
410  hypothesis to cut an edge in several segments with the same length</p>\r
411 \r
412 <p class="whs2">algo_local.LocalLength(2.)</p>\r
413 \r
414 <p class="whs2">&nbsp;</p>\r
415 \r
416 <p class="whs3"># define &quot;Propagation&quot; \r
417  hypothesis that propagates all other hypothesis</p>\r
418 \r
419 <p class="whs3"># on all edges on the \r
420  opposite side in case of quadrangular faces</p>\r
421 \r
422 <p class="whs2">algo_local.Propagation()</p>\r
423 \r
424 <p class="whs2">&nbsp;</p>\r
425 \r
426 <p class="whs3"># compute the mesh</p>\r
427 \r
428 <p class="whs2">hexa.Compute() </p>\r
429 \r
430 <h3>Defining 2D and 3D hypotheses</h3>\r
431 \r
432 <h4><a name=bookmark4>Maximum Element Area</a></h4>\r
433 \r
434 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import \r
435  smesh</span></p>\r
436 \r
437 <p class="whs4">import salome</p>\r
438 \r
439 <p class="whs4">&nbsp;</p>\r
440 \r
441 <p class="whs5"># create a face</p>\r
442 \r
443 <p class="whs4">px &nbsp;&nbsp;= \r
444  geompy.MakeVertex(100., 0. &nbsp;, \r
445  0. &nbsp;)</p>\r
446 \r
447 <p class="whs4">py &nbsp;&nbsp;= \r
448  geompy.MakeVertex(0. &nbsp;, \r
449  100., 0. &nbsp;)</p>\r
450 \r
451 <p class="whs4">pz &nbsp;&nbsp;= \r
452  geompy.MakeVertex(0. &nbsp;, \r
453  0. &nbsp;, 100.)</p>\r
454 \r
455 <p class="whs4">&nbsp;</p>\r
456 \r
457 <p class="whs4">vxy = geompy.MakeVector(px, \r
458  py)</p>\r
459 \r
460 <p class="whs4">arc = geompy.MakeArc(py, \r
461  pz, px)</p>\r
462 \r
463 <p class="whs4">wire = geompy.MakeWire([vxy, \r
464  arc])</p>\r
465 \r
466 <p class="whs4">&nbsp;</p>\r
467 \r
468 <p class="whs4">isPlanarFace = 1</p>\r
469 \r
470 <p class="whs4">face = geompy.MakeFace(wire, \r
471  isPlanarFace)</p>\r
472 \r
473 <p class="whs4">&nbsp;</p>\r
474 \r
475 <p class="whs5"># add the face in the \r
476  study</p>\r
477 \r
478 <p class="whs4">id_face = geompy.addToStudy(face, \r
479  &quot;Face to be meshed&quot;)</p>\r
480 \r
481 <p class="whs4">&nbsp;</p>\r
482 \r
483 <p class="whs5"># create a mesh</p>\r
484 \r
485 <p class="whs4">tria_mesh = smesh.Mesh(face, \r
486  &quot;Face : triangulation&quot;)</p>\r
487 \r
488 <p class="whs4">&nbsp;</p>\r
489 \r
490 <p class="whs5"># define 1D meshing:</p>\r
491 \r
492 <p class="whs4">algo = tria_mesh.Segment()</p>\r
493 \r
494 <p class="whs4">algo.NumberOfSegments(20)</p>\r
495 \r
496 <p class="whs4">&nbsp;</p>\r
497 \r
498 <p class="whs5"># define 2D meshing:</p>\r
499 \r
500 <p class="whs5">&nbsp;</p>\r
501 \r
502 <p class="whs5"># assign triangulation \r
503  algorithm</p>\r
504 \r
505 <p class="whs4">algo = tria_mesh.Triangle()</p>\r
506 \r
507 <p class="whs4">&nbsp;</p>\r
508 \r
509 <p class="whs5"># apply &quot;Max Element \r
510  Area&quot; hypothesis to each triangle</p>\r
511 \r
512 <p class="whs4">algo.MaxElementArea(100)</p>\r
513 \r
514 <p class="whs4">&nbsp;</p>\r
515 \r
516 <p class="whs5"># compute the mesh</p>\r
517 \r
518 <p class="whs4">tria_mesh.Compute() \r
519  &nbsp;</p>\r
520 \r
521 <p class="whs4">&nbsp;</p>\r
522 \r
523 <h4><a name=bookmark5>Maximum Element Volume</a></h4>\r
524 \r
525 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import \r
526  geompy</span></p>\r
527 \r
528 <p class="whs4">import smesh</p>\r
529 \r
530 <p class="whs4">&nbsp;</p>\r
531 \r
532 <p class="whs5"># create a cylinder</p>\r
533 \r
534 <p class="whs4">cyl = geompy.MakeCylinderRH(30., \r
535  50.)</p>\r
536 \r
537 <p class="whs4">geompy.addToStudy(cyl, \r
538  &quot;cyl&quot;)</p>\r
539 \r
540 <p class="whs4">&nbsp;</p>\r
541 \r
542 <p class="whs5"># create a mesh on \r
543  the cylinder</p>\r
544 \r
545 <p class="whs4">tetra = smesh.Mesh(cyl, \r
546  &quot;Cylinder : tetrahedrical mesh&quot;)</p>\r
547 \r
548 <p class="whs4">&nbsp;</p>\r
549 \r
550 <p class="whs5"># assign algorithms</p>\r
551 \r
552 <p class="whs4">algo1D = tetra.Segment()</p>\r
553 \r
554 <p class="whs4">algo2D = tetra.Triangle()</p>\r
555 \r
556 <p class="whs4">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>\r
557 \r
558 <p class="whs4">&nbsp;</p>\r
559 \r
560 <p class="whs5"># assign 1D and 2D \r
561  hypotheses</p>\r
562 \r
563 <p class="whs4">algo1D.NumberOfSegments(7)</p>\r
564 \r
565 <p class="whs4">algo2D.MaxElementArea(150.)</p>\r
566 \r
567 <p class="whs4">&nbsp;</p>\r
568 \r
569 <p class="whs5"># assign Max Element \r
570  Volume hypothesis</p>\r
571 \r
572 <p class="whs4">algo3D.MaxElementVolume(200.)</p>\r
573 \r
574 <p class="whs4">&nbsp;</p>\r
575 \r
576 <p class="whs5"># compute the mesh</p>\r
577 \r
578 <p class="whs4">ret = tetra.Compute()</p>\r
579 \r
580 <p class="whs4">if ret == 0:</p>\r
581 \r
582 <p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;print \r
583  &quot;probleme when computing the mesh&quot;</p>\r
584 \r
585 <p class="whs4">else:</p>\r
586 \r
587 <p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;print \r
588  &quot;Computation succeded&quot; </p>\r
589 \r
590 <h4><a name=bookmark6>Length from Edges</a></h4>\r
591 \r
592 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import \r
593  geompy</span></p>\r
594 \r
595 <p class="whs2">import smesh</p>\r
596 \r
597 <p class="whs2">&nbsp;</p>\r
598 \r
599 <p class="whs3"># create sketchers</p>\r
600 \r
601 <p class="whs2">sketcher1 = geompy.MakeSketcher(&quot;Sketcher:F \r
602  0 0:TT 70 0:TT 70 70:TT 0 70:WW&quot;)</p>\r
603 \r
604 <p class="whs2">sketcher2 = geompy.MakeSketcher(&quot;Sketcher:F \r
605  20 20:TT 50 20:TT 50 50:TT 20 50:WW&quot;)</p>\r
606 \r
607 <p class="whs2">&nbsp;</p>\r
608 \r
609 <p class="whs3"># create a face from \r
610  two wires</p>\r
611 \r
612 <p class="whs2">isPlanarFace = 1</p>\r
613 \r
614 <p class="whs2">face1 = geompy.MakeFaces([sketcher1, \r
615  sketcher2], isPlanarFace)</p>\r
616 \r
617 <p class="whs2">geompy.addToStudy(face1, \r
618  &quot;Face1&quot;)</p>\r
619 \r
620 <p class="whs2">&nbsp;</p>\r
621 \r
622 <p class="whs3"># create a mesh</p>\r
623 \r
624 <p class="whs2">tria = smesh.Mesh(face1, \r
625  &quot;Face : triangle 2D mesh&quot;)</p>\r
626 \r
627 <p class="whs2">&nbsp;</p>\r
628 \r
629 <p class="whs3"># Define 1D meshing</p>\r
630 \r
631 <p class="whs2">algo1D = tria.Segment()</p>\r
632 \r
633 <p class="whs2">algo1D.NumberOfSegments(2)</p>\r
634 \r
635 <p class="whs2">&nbsp;</p>\r
636 \r
637 <p class="whs3"># create and assign the \r
638  algorithm for 2D meshing with triangles</p>\r
639 \r
640 <p class="whs2">algo2D = tria.Triangle()</p>\r
641 \r
642 <p class="whs2">&nbsp;</p>\r
643 \r
644 <p class="whs3"># create and assign &quot;LengthFromEdges&quot; \r
645  hypothesis to build triangles<span style="font-family: 'Times New Roman', serif;"> \r
646  based on the length of the edges taken from the wire</span></p>\r
647 \r
648 <p class="whs2">algo2D.LengthFromEdges()</p>\r
649 \r
650 <p class="whs2">&nbsp;</p>\r
651 \r
652 <p class="whs3"># compute the mesh</p>\r
653 \r
654 <p class="whs2">tria.Compute() </p>\r
655 \r
656 <p class="whs2">&nbsp;</p>\r
657 \r
658 <h3>Defining Additional Hypotheses</h3>\r
659 \r
660 <h4><a name=bookmark7>Propagation</a></h4>\r
661 \r
662 <p class="whs2">from geompy import \r
663  *</p>\r
664 \r
665 <p class="whs2">import smesh</p>\r
666 \r
667 <p class="whs2">&nbsp;</p>\r
668 \r
669 <p class="whs3"># create a box</p>\r
670 \r
671 <p class="whs2">box = MakeBoxDXDYDZ(10., \r
672  10., 10.)</p>\r
673 \r
674 <p class="whs2">addToStudy(box, &quot;Box&quot;)</p>\r
675 \r
676 <p class="whs2">&nbsp;</p>\r
677 \r
678 <p class="whs3"># get one edge of the \r
679  box to put local hypothesis on</p>\r
680 \r
681 <p class="whs2">p5 = MakeVertex(5., \r
682  0., 0.)</p>\r
683 \r
684 <p class="whs2">EdgeX = GetEdgeNearPoint(box, \r
685  p5)</p>\r
686 \r
687 <p class="whs2">addToStudyInFather(box, \r
688  EdgeX, &quot;Edge [0,0,0 - 10,0,0]&quot;)</p>\r
689 \r
690 <p class="whs2">&nbsp;</p>\r
691 \r
692 <p class="whs3"># create a hexahedral \r
693  mesh on the box</p>\r
694 \r
695 <p class="whs2">hexa = smesh.Mesh(box, \r
696  &quot;Box : hexahedrical mesh&quot;)</p>\r
697 \r
698 <p class="whs2">&nbsp;</p>\r
699 \r
700 <p class="whs3"># set global algorithms \r
701  and hypotheses</p>\r
702 \r
703 <p class="whs2">algo1D = hexa.Segment()</p>\r
704 \r
705 <p class="whs2">hexa.Quadrangle()</p>\r
706 \r
707 <p class="whs2">hexa.Hexahedron()</p>\r
708 \r
709 <p class="whs2">algo1D.NumberOfSegments(4)</p>\r
710 \r
711 <p class="whs2">&nbsp;</p>\r
712 \r
713 <p class="whs3"># create a sub-mesh with \r
714  local 1D hypothesis and propagation</p>\r
715 \r
716 <p class="whs2">algo_local = hexa.Segment(EdgeX)</p>\r
717 \r
718 <p class="whs2">&nbsp;</p>\r
719 \r
720 <p class="whs3"># define &quot;Arithmetic1D&quot; \r
721  hypothesis to cut an edge in several segments with increasing length</p>\r
722 \r
723 <p class="whs2">algo_local.Arithmetic1D(1, \r
724  4)</p>\r
725 \r
726 <p class="whs2">&nbsp;</p>\r
727 \r
728 <p class="whs3"># define &quot;Propagation&quot; \r
729  hypothesis that propagates all other 1D hypotheses</p>\r
730 \r
731 <p class="whs3"># from all edges on the \r
732  opposite side of a face in case of quadrangular faces</p>\r
733 \r
734 <p class="whs2">algo_local.Propagation()</p>\r
735 \r
736 <p class="whs2">&nbsp;</p>\r
737 \r
738 <p class="whs3"># compute the mesh</p>\r
739 \r
740 <p><span style="font-family: 'Lucida Console', monospace;">hexa.Compute()</span> \r
741  </p>\r
742 \r
743 <h3><a name=bookmark8>Defining Meshing Algorithms</a></h3>\r
744 \r
745 <p class="whs4">import geompy</p>\r
746 \r
747 <p class="whs4">import smesh</p>\r
748 \r
749 <p class="whs6">&nbsp;</p>\r
750 \r
751 <p class="whs6"># create a box</p>\r
752 \r
753 <p class="whs4">box = geompy.MakeBoxDXDYDZ(10., \r
754  10., 10.)</p>\r
755 \r
756 <p class="whs4">geompy.addToStudy(box, \r
757  &quot;Box&quot;)</p>\r
758 \r
759 <p class="whs4">&nbsp;</p>\r
760 \r
761 <p class="whs6"># 1. Create a hexahedral \r
762  mesh on the box</p>\r
763 \r
764 <p class="whs4">hexa = smesh.Mesh(box, \r
765  &quot;Box : hexahedrical mesh&quot;)</p>\r
766 \r
767 <p class="whs6">&nbsp;</p>\r
768 \r
769 <p class="whs6"># create a Regular 1D algorithm \r
770  for edges</p>\r
771 \r
772 <p class="whs4">algo1D = hexa.Segment()</p>\r
773 \r
774 <p class="whs6">&nbsp;</p>\r
775 \r
776 <p class="whs6"># create a quadrangle 2D \r
777  algorithm for faces</p>\r
778 \r
779 <p class="whs4">algo2D = hexa.Quadrangle()</p>\r
780 \r
781 <p class="whs6">&nbsp;</p>\r
782 \r
783 <p class="whs6"># create a hexahedron 3D \r
784  algorithm for solids</p>\r
785 \r
786 <p class="whs4">algo3D = hexa.Hexahedron()</p>\r
787 \r
788 <p class="whs6">&nbsp;</p>\r
789 \r
790 <p class="whs6"># define hypotheses</p>\r
791 \r
792 <p class="whs4">algo1D.Arithmetic1D(1, \r
793  4)</p>\r
794 \r
795 <p class="whs6">&nbsp;</p>\r
796 \r
797 <p class="whs6"># compute the mesh</p>\r
798 \r
799 <p class="whs4">hexa.Compute()</p>\r
800 \r
801 <p class="whs6">&nbsp;</p>\r
802 \r
803 <p class="whs6"># 2. Create a tetrahedral \r
804  mesh on the box</p>\r
805 \r
806 <p class="whs4">tetra = smesh.Mesh(box, \r
807  &quot;Box : tetrahedrical mesh&quot;)</p>\r
808 \r
809 <p class="whs6">&nbsp;</p>\r
810 \r
811 <p class="whs6"># create a Regular 1D algorithm \r
812  for edges</p>\r
813 \r
814 <p class="whs4">algo1D = tetra.Segment()</p>\r
815 \r
816 <p class="whs6">&nbsp;</p>\r
817 \r
818 <p class="whs6"># create a Mefisto 2D algorithm \r
819  for faces</p>\r
820 \r
821 <p class="whs4">algo2D = tetra.Triangle()</p>\r
822 \r
823 <p class="whs6">&nbsp;</p>\r
824 \r
825 <p class="whs6"># create a Netgen 3D algorithm \r
826  for solids</p>\r
827 \r
828 <p class="whs4">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>\r
829 \r
830 <p class="whs6">&nbsp;</p>\r
831 \r
832 <p class="whs6"># define hypotheses</p>\r
833 \r
834 <p class="whs4">algo1D.Arithmetic1D(1, \r
835  4)</p>\r
836 \r
837 <p class="whs4">algo2D.LengthFromEdges()</p>\r
838 \r
839 <p class="whs6">&nbsp;</p>\r
840 \r
841 <p class="whs6"># compute the mesh</p>\r
842 \r
843 <p class="whs4">tetra.Compute()</p>\r
844 \r
845 <p class="whs6">&nbsp;</p>\r
846 \r
847 <p class="whs6"># 3. Create a tetrahedral \r
848  mesh on the box with NETGEN_2D3D algorithm</p>\r
849 \r
850 <p class="whs4">tetraN = smesh.Mesh(box, \r
851  &quot;Box : tetrahedrical mesh by NETGEN_2D3D&quot;)</p>\r
852 \r
853 <p class="whs6">&nbsp;</p>\r
854 \r
855 <p class="whs6"># create a Netgen_2D3D \r
856  algorithm for solids</p>\r
857 \r
858 <p class="whs4">is3D = 1</p>\r
859 \r
860 <p class="whs4">algo3D = tetraN.Netgen(is3D)</p>\r
861 \r
862 <p class="whs6">&nbsp;</p>\r
863 \r
864 <p class="whs6"># define hypotheses</p>\r
865 \r
866 <p class="whs4">n23_params = algo3D.Parameters()</p>\r
867 \r
868 <p class="whs6">&nbsp;</p>\r
869 \r
870 <p class="whs6"># compute the mesh</p>\r
871 \r
872 <p class="whs4">tetraN.Compute() \r
873  </p>\r
874 \r
875 <script type="text/javascript" language="javascript1.2">\r
876 <!--\r
877 if (window.writeIntopicBar)\r
878         writeIntopicBar(0);\r
879 //-->\r
880 </script>\r
881 </body>\r
882 </html>\r