Salome HOME
Merge from V6_main_20120808 08Aug12
[modules/hexablock.git] / doc / full_example_bridle.rst
1 :tocdepth: 4
2
3 .. _fullexample:
4
5 #################################
6 Example generated from HexaBlock
7 #################################
8
9
10 .. image:: _static/bride.PNG
11    :align: center
12
13 .. centered::
14    Bridle
15
16
17 ::
18
19
20     # -*- coding: latin-1 -*-
21
22     import os
23     import GEOM
24     import geompy
25     import smesh
26     import hexablock
27     import math
28     import SALOMEDS
29
30     STEP_PATH = os.path.expandvars("$HEXA_ROOT_DIR/bin/salome/crank.stp")
31
32
33     doc = hexablock.addDocument()
34     OPT_QUAD_IK = 1
35     OPT_FIRST   = 2
36
37     # ======================================================== merge_quads
38     def merge_quads (doc, quart, demi, ni1, nj1, ni2, nj2, option=0):
39
40         prems   = option == OPT_QUAD_IK
41         quad_ik = option == OPT_FIRST
42
43         if quad_ik:
44             orig = quart.getQuadIK (ni1, nj1, k1)
45          else:
46             orig = quart.getQuadJK (ni1, nj1, k1)
47
48         dest = demi .getQuadJK (ni2, nj2, k1)
49
50         v1 = dest.getVertex (quad_ik);
51         v3 = dest.getVertex (1-quad_ik);
52
53         v2 = orig.getVertex (0);
54         v4 = orig.getVertex (1);
55
56         doc.mergeQuads (dest, orig, v1, v2, v3, v4)
57
58     #================================================================================= Begin
59     orig1 = doc.addVertex (0,0,0)
60     orig2 = doc.addVertex (6,0,0)
61
62     dz = doc.addVector (0,0,1)
63     dx = doc.addVector (1,0,0)
64
65     dim_z  = 5
66     drd = 0.5
67     drq = 2*drd
68     dl  = 1
69     nrq = 8
70     nrd = 3
71     naq = 4
72     nad = 8
73     k0  = 0
74     k1  = 1
75
76     quart = doc.makeCylindrical (orig1,dx,dz,drq, 45, dl, nrq, naq, dim_z, True)
77     for nk in range(dim_z-2):
78         ##  Elagage du quart (de brie)
79         for nj in range(naq):
80         ideb = 2
81         if nk == dim_z-1:
82             ideb = 1
83         for nj in range(naq):
84               for ni in range(nrq-ideb):
85                 doc.removeHexa(quart.getHexaIJK(ni+ideb, nj, nk+2))
86
87     ## La semelle
88     for nj in range(naq):
89         for ni in range(nrq-2):
90             doc.removeHexa(quart.getHexaIJK(ni+2, nj, k0))
91
92     ## Le demi 
93     demi = doc.makeCylindrical(orig2, dx, dz, drd, 180, dl, nrd, nad, dim_z, True)
94
95     for nk in range(dim_z-2):
96         for nj in range(nad):
97             ni0 = max(nrd-nk, 0)
98             for ni in range(nrd-ni0):
99                 doc.removeHexa(demi.getHexaIJK(ni+ni0, nj, nk+2))
100
101     jmax = nrq-1
102     for nj in range(2):
103         for ni in range(jmax-3):
104             doc.removeHexa(quart.getHexaIJK (ni+3, nj, k1))
105
106     ###merge_quads (doc, quart, demi, 7, 0,   nrd, 0, OPT_FIRST);
107     ###rge_quads (doc, quart, demi, 7, 1,   nrd, 1);
108
109     #______________________________________________________________
110
111     ###  mesh = smesh.HexaBlocks(doc)
112     mesh = hexablock.mesh("bride:hexas", doc)
113
114