Salome HOME
34bb6e39d575338774e82cd4fb08e9ce8a468f58
[modules/smesh.git] / src / SMESH_SWIG / ex01_cube2build.py
1 #  -*- coding: iso-8859-1 -*-
2 #  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
3 #
4 #  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
5 #  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 #
7 #  This library is free software; you can redistribute it and/or
8 #  modify it under the terms of the GNU Lesser General Public
9 #  License as published by the Free Software Foundation; either
10 #  version 2.1 of the License.
11 #
12 #  This library is distributed in the hope that it will be useful,
13 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
14 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 #  Lesser General Public License for more details.
16 #
17 #  You should have received a copy of the GNU Lesser General Public
18 #  License along with this library; if not, write to the Free Software
19 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
20 #
21 #  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 #
23 # =======================================
24 #
25 from geompy import *
26
27 import smesh
28
29 # Geometry
30 # ========
31
32 # A small cube centered and put on a great cube build by points, edges, faces and solids
33
34 # Points
35 # ------
36
37 greatPoint111 = MakeVertex( 0,  0,  0)
38 greatPoint211 = MakeVertex(10,  0,  0)
39 greatPoint311 = MakeVertex(20,  0,  0)
40 greatPoint411 = MakeVertex(30,  0,  0)
41
42 greatPoint121 = MakeVertex( 0, 10,  0)
43 greatPoint221 = MakeVertex(10, 10,  0)
44 greatPoint321 = MakeVertex(20, 10,  0)
45 greatPoint421 = MakeVertex(30, 10,  0)
46
47 greatPoint112 = MakeVertex( 0,  0, 10)
48 greatPoint212 = MakeVertex(10,  0, 10)
49 greatPoint312 = MakeVertex(20,  0, 10)
50 greatPoint412 = MakeVertex(30,  0, 10)
51
52 greatPoint122 = MakeVertex( 0, 10, 10)
53 greatPoint222 = MakeVertex(10, 10, 10)
54 greatPoint322 = MakeVertex(20, 10, 10)
55 greatPoint422 = MakeVertex(30, 10, 10)
56
57 greatPoint113 = MakeVertex( 0,  0, 20)
58 greatPoint213 = MakeVertex(10,  0, 20)
59 greatPoint313 = MakeVertex(20,  0, 20)
60 greatPoint413 = MakeVertex(30,  0, 20)
61
62 greatPoint123 = MakeVertex( 0, 10, 20)
63 greatPoint223 = MakeVertex(10, 10, 20)
64 greatPoint323 = MakeVertex(20, 10, 20)
65 greatPoint423 = MakeVertex(30, 10, 20)
66
67 greatPoint114 = MakeVertex( 0,  0, 30)
68 greatPoint214 = MakeVertex(10,  0, 30)
69 greatPoint314 = MakeVertex(20,  0, 30)
70 greatPoint414 = MakeVertex(30,  0, 30)
71
72 greatPoint124 = MakeVertex( 0, 10, 30)
73 greatPoint224 = MakeVertex(10, 10, 30)
74 greatPoint324 = MakeVertex(20, 10, 30)
75 greatPoint424 = MakeVertex(30, 10, 30)
76
77
78 smallPoint111 = greatPoint222
79 smallPoint211 = greatPoint322
80 smallPoint121 = MakeVertex(10, 20, 10)
81 smallPoint221 = MakeVertex(20, 20, 10)
82
83 smallPoint112 = greatPoint223
84 smallPoint212 = greatPoint323
85 smallPoint122 = MakeVertex(10, 20, 20)
86 smallPoint222 = MakeVertex(20, 20, 20)
87
88 # Edges
89 # -----
90
91 smallEdgeX11 = MakeEdge(smallPoint111, smallPoint211)
92 smallEdgeX21 = MakeEdge(smallPoint121, smallPoint221)
93 smallEdgeX12 = MakeEdge(smallPoint112, smallPoint212)
94 smallEdgeX22 = MakeEdge(smallPoint122, smallPoint222)
95
96 smallEdgeY11 = MakeEdge(smallPoint111, smallPoint121)
97 smallEdgeY21 = MakeEdge(smallPoint211, smallPoint221)
98 smallEdgeY12 = MakeEdge(smallPoint112, smallPoint122)
99 smallEdgeY22 = MakeEdge(smallPoint212, smallPoint222)
100
101 smallEdgeZ11 = MakeEdge(smallPoint111, smallPoint112)
102 smallEdgeZ21 = MakeEdge(smallPoint211, smallPoint212)
103 smallEdgeZ12 = MakeEdge(smallPoint121, smallPoint122)
104 smallEdgeZ22 = MakeEdge(smallPoint221, smallPoint222)
105
106
107 greatEdgeX111 = MakeEdge(greatPoint111, greatPoint211)
108 greatEdgeX211 = MakeEdge(greatPoint211, greatPoint311)
109 greatEdgeX311 = MakeEdge(greatPoint311, greatPoint411)
110 greatEdgeX121 = MakeEdge(greatPoint121, greatPoint221)
111 greatEdgeX221 = MakeEdge(greatPoint221, greatPoint321)
112 greatEdgeX321 = MakeEdge(greatPoint321, greatPoint421)
113
114 greatEdgeX112 = MakeEdge(greatPoint112, greatPoint212)
115 greatEdgeX212 = MakeEdge(greatPoint212, greatPoint312)
116 greatEdgeX312 = MakeEdge(greatPoint312, greatPoint412)
117 greatEdgeX122 = MakeEdge(greatPoint122, greatPoint222)
118 greatEdgeX222 = smallEdgeX11
119 greatEdgeX322 = MakeEdge(greatPoint322, greatPoint422)
120
121 greatEdgeX113 = MakeEdge(greatPoint113, greatPoint213)
122 greatEdgeX213 = MakeEdge(greatPoint213, greatPoint313)
123 greatEdgeX313 = MakeEdge(greatPoint313, greatPoint413)
124 greatEdgeX123 = MakeEdge(greatPoint123, greatPoint223)
125 greatEdgeX223 = smallEdgeX12
126 greatEdgeX323 = MakeEdge(greatPoint323, greatPoint423)
127
128 greatEdgeX114 = MakeEdge(greatPoint114, greatPoint214)
129 greatEdgeX214 = MakeEdge(greatPoint214, greatPoint314)
130 greatEdgeX314 = MakeEdge(greatPoint314, greatPoint414)
131 greatEdgeX124 = MakeEdge(greatPoint124, greatPoint224)
132 greatEdgeX224 = MakeEdge(greatPoint224, greatPoint324)
133 greatEdgeX324 = MakeEdge(greatPoint324, greatPoint424)
134
135 greatEdgeY11 = MakeEdge(greatPoint111, greatPoint121)
136 greatEdgeY21 = MakeEdge(greatPoint211, greatPoint221)
137 greatEdgeY31 = MakeEdge(greatPoint311, greatPoint321)
138 greatEdgeY41 = MakeEdge(greatPoint411, greatPoint421)
139
140 greatEdgeY12 = MakeEdge(greatPoint112, greatPoint122)
141 greatEdgeY22 = MakeEdge(greatPoint212, greatPoint222)
142 greatEdgeY32 = MakeEdge(greatPoint312, greatPoint322)
143 greatEdgeY42 = MakeEdge(greatPoint412, greatPoint422)
144
145 greatEdgeY13 = MakeEdge(greatPoint113, greatPoint123)
146 greatEdgeY23 = MakeEdge(greatPoint213, greatPoint223)
147 greatEdgeY33 = MakeEdge(greatPoint313, greatPoint323)
148 greatEdgeY43 = MakeEdge(greatPoint413, greatPoint423)
149
150 greatEdgeY14 = MakeEdge(greatPoint114, greatPoint124)
151 greatEdgeY24 = MakeEdge(greatPoint214, greatPoint224)
152 greatEdgeY34 = MakeEdge(greatPoint314, greatPoint324)
153 greatEdgeY44 = MakeEdge(greatPoint414, greatPoint424)
154
155 greatEdgeZ111 = MakeEdge(greatPoint111, greatPoint112)
156 greatEdgeZ211 = MakeEdge(greatPoint211, greatPoint212)
157 greatEdgeZ311 = MakeEdge(greatPoint311, greatPoint312)
158 greatEdgeZ411 = MakeEdge(greatPoint411, greatPoint412)
159
160 greatEdgeZ121 = MakeEdge(greatPoint121, greatPoint122)
161 greatEdgeZ221 = MakeEdge(greatPoint221, greatPoint222)
162 greatEdgeZ321 = MakeEdge(greatPoint321, greatPoint322)
163 greatEdgeZ421 = MakeEdge(greatPoint421, greatPoint422)
164
165 greatEdgeZ112 = MakeEdge(greatPoint112, greatPoint113)
166 greatEdgeZ212 = MakeEdge(greatPoint212, greatPoint213)
167 greatEdgeZ312 = MakeEdge(greatPoint312, greatPoint313)
168 greatEdgeZ412 = MakeEdge(greatPoint412, greatPoint413)
169
170 greatEdgeZ122 = MakeEdge(greatPoint122, greatPoint123)
171 greatEdgeZ222 = smallEdgeZ11
172 greatEdgeZ322 = smallEdgeZ21
173 greatEdgeZ422 = MakeEdge(greatPoint422, greatPoint423)
174
175 greatEdgeZ113 = MakeEdge(greatPoint113, greatPoint114)
176 greatEdgeZ213 = MakeEdge(greatPoint213, greatPoint214)
177 greatEdgeZ313 = MakeEdge(greatPoint313, greatPoint314)
178 greatEdgeZ413 = MakeEdge(greatPoint413, greatPoint414)
179
180 greatEdgeZ123 = MakeEdge(greatPoint123, greatPoint124)
181 greatEdgeZ223 = MakeEdge(greatPoint223, greatPoint224)
182 greatEdgeZ323 = MakeEdge(greatPoint323, greatPoint324)
183 greatEdgeZ423 = MakeEdge(greatPoint423, greatPoint424)
184
185 # Faces
186 # -----
187
188 smallFaceX1 = MakeQuad(smallEdgeY11, smallEdgeZ11, smallEdgeY12, smallEdgeZ12)
189 smallFaceX2 = MakeQuad(smallEdgeY21, smallEdgeZ21, smallEdgeY22, smallEdgeZ22)
190 smallFaceY1 = MakeQuad(smallEdgeX11, smallEdgeZ11, smallEdgeX12, smallEdgeZ21)
191 smallFaceY2 = MakeQuad(smallEdgeX21, smallEdgeZ12, smallEdgeX22, smallEdgeZ22)
192 smallFaceZ1 = MakeQuad(smallEdgeX11, smallEdgeY11, smallEdgeX21, smallEdgeY21)
193 smallFaceZ2 = MakeQuad(smallEdgeX12, smallEdgeY12, smallEdgeX22, smallEdgeY22)
194
195
196 greatFaceX11 = MakeQuad(greatEdgeY11, greatEdgeZ111, greatEdgeY12, greatEdgeZ121)
197 greatFaceX21 = MakeQuad(greatEdgeY21, greatEdgeZ211, greatEdgeY22, greatEdgeZ221)
198 greatFaceX31 = MakeQuad(greatEdgeY31, greatEdgeZ311, greatEdgeY32, greatEdgeZ321)
199 greatFaceX41 = MakeQuad(greatEdgeY41, greatEdgeZ411, greatEdgeY42, greatEdgeZ421)
200
201 greatFaceX12 = MakeQuad(greatEdgeY12, greatEdgeZ112, greatEdgeY13, greatEdgeZ122)
202 greatFaceX22 = MakeQuad(greatEdgeY22, greatEdgeZ212, greatEdgeY23, greatEdgeZ222)
203 greatFaceX32 = MakeQuad(greatEdgeY32, greatEdgeZ312, greatEdgeY33, greatEdgeZ322)
204 greatFaceX42 = MakeQuad(greatEdgeY42, greatEdgeZ412, greatEdgeY43, greatEdgeZ422)
205
206 greatFaceX13 = MakeQuad(greatEdgeY13, greatEdgeZ113, greatEdgeY14, greatEdgeZ123)
207 greatFaceX23 = MakeQuad(greatEdgeY23, greatEdgeZ213, greatEdgeY24, greatEdgeZ223)
208 greatFaceX33 = MakeQuad(greatEdgeY33, greatEdgeZ313, greatEdgeY34, greatEdgeZ323)
209 greatFaceX43 = MakeQuad(greatEdgeY43, greatEdgeZ413, greatEdgeY44, greatEdgeZ423)
210
211 greatFaceY111 = MakeQuad(greatEdgeX111, greatEdgeZ111, greatEdgeX112, greatEdgeZ211)
212 greatFaceY211 = MakeQuad(greatEdgeX211, greatEdgeZ211, greatEdgeX212, greatEdgeZ311)
213 greatFaceY311 = MakeQuad(greatEdgeX311, greatEdgeZ311, greatEdgeX312, greatEdgeZ411)
214 greatFaceY121 = MakeQuad(greatEdgeX121, greatEdgeZ121, greatEdgeX122, greatEdgeZ221)
215 greatFaceY221 = MakeQuad(greatEdgeX221, greatEdgeZ221, greatEdgeX222, greatEdgeZ321)
216 greatFaceY321 = MakeQuad(greatEdgeX321, greatEdgeZ321, greatEdgeX322, greatEdgeZ421)
217
218 greatFaceY112 = MakeQuad(greatEdgeX112, greatEdgeZ112, greatEdgeX113, greatEdgeZ212)
219 greatFaceY212 = MakeQuad(greatEdgeX212, greatEdgeZ212, greatEdgeX213, greatEdgeZ312)
220 greatFaceY312 = MakeQuad(greatEdgeX312, greatEdgeZ312, greatEdgeX313, greatEdgeZ412)
221 greatFaceY122 = MakeQuad(greatEdgeX122, greatEdgeZ122, greatEdgeX123, greatEdgeZ222)
222 greatFaceY222 = smallFaceY1
223 greatFaceY322 = MakeQuad(greatEdgeX322, greatEdgeZ322, greatEdgeX323, greatEdgeZ422)
224
225 greatFaceY113 = MakeQuad(greatEdgeX113, greatEdgeZ113, greatEdgeX114, greatEdgeZ213)
226 greatFaceY213 = MakeQuad(greatEdgeX213, greatEdgeZ213, greatEdgeX214, greatEdgeZ313)
227 greatFaceY313 = MakeQuad(greatEdgeX313, greatEdgeZ313, greatEdgeX314, greatEdgeZ413)
228 greatFaceY123 = MakeQuad(greatEdgeX123, greatEdgeZ123, greatEdgeX124, greatEdgeZ223)
229 greatFaceY223 = MakeQuad(greatEdgeX223, greatEdgeZ223, greatEdgeX224, greatEdgeZ323)
230 greatFaceY323 = MakeQuad(greatEdgeX323, greatEdgeZ323, greatEdgeX324, greatEdgeZ423)
231
232 greatFaceZ11 = MakeQuad(greatEdgeX111, greatEdgeY11, greatEdgeX121, greatEdgeY21)
233 greatFaceZ21 = MakeQuad(greatEdgeX211, greatEdgeY21, greatEdgeX221, greatEdgeY31)
234 greatFaceZ31 = MakeQuad(greatEdgeX311, greatEdgeY31, greatEdgeX321, greatEdgeY41)
235
236 greatFaceZ12 = MakeQuad(greatEdgeX112, greatEdgeY12, greatEdgeX122, greatEdgeY22)
237 greatFaceZ22 = MakeQuad(greatEdgeX212, greatEdgeY22, greatEdgeX222, greatEdgeY32)
238 greatFaceZ32 = MakeQuad(greatEdgeX312, greatEdgeY32, greatEdgeX322, greatEdgeY42)
239
240 greatFaceZ13 = MakeQuad(greatEdgeX113, greatEdgeY13, greatEdgeX123, greatEdgeY23)
241 greatFaceZ23 = MakeQuad(greatEdgeX213, greatEdgeY23, greatEdgeX223, greatEdgeY33)
242 greatFaceZ33 = MakeQuad(greatEdgeX313, greatEdgeY33, greatEdgeX323, greatEdgeY43)
243
244 greatFaceZ14 = MakeQuad(greatEdgeX114, greatEdgeY14, greatEdgeX124, greatEdgeY24)
245 greatFaceZ24 = MakeQuad(greatEdgeX214, greatEdgeY24, greatEdgeX224, greatEdgeY34)
246 greatFaceZ34 = MakeQuad(greatEdgeX314, greatEdgeY34, greatEdgeX324, greatEdgeY44)
247
248 # Solids
249 # ------
250
251 smallBlock   = MakeHexa(smallFaceX1, smallFaceX2, smallFaceY1, smallFaceY2, smallFaceZ1, smallFaceZ2)
252
253 greatBlock11 = MakeHexa(greatFaceX11, greatFaceX21, greatFaceY111, greatFaceY121, greatFaceZ11, greatFaceZ12)
254 greatBlock21 = MakeHexa(greatFaceX21, greatFaceX31, greatFaceY211, greatFaceY221, greatFaceZ21, greatFaceZ22)
255 greatBlock31 = MakeHexa(greatFaceX31, greatFaceX41, greatFaceY311, greatFaceY321, greatFaceZ31, greatFaceZ32)
256
257 greatBlock12 = MakeHexa(greatFaceX12, greatFaceX22, greatFaceY112, greatFaceY122, greatFaceZ12, greatFaceZ13)
258 greatBlock22 = MakeHexa(greatFaceX22, greatFaceX32, greatFaceY212, greatFaceY222, greatFaceZ22, greatFaceZ23)
259 greatBlock32 = MakeHexa(greatFaceX32, greatFaceX42, greatFaceY312, greatFaceY322, greatFaceZ32, greatFaceZ33)
260
261 greatBlock13 = MakeHexa(greatFaceX13, greatFaceX23, greatFaceY113, greatFaceY123, greatFaceZ13, greatFaceZ14)
262 greatBlock23 = MakeHexa(greatFaceX23, greatFaceX33, greatFaceY213, greatFaceY223, greatFaceZ23, greatFaceZ24)
263 greatBlock33 = MakeHexa(greatFaceX33, greatFaceX43, greatFaceY313, greatFaceY323, greatFaceZ33, greatFaceZ34)
264
265 # Compound
266 # --------
267
268 c_l = []
269 c_l.append(smallBlock)
270 c_l.append(greatBlock11)
271 c_l.append(greatBlock21)
272 c_l.append(greatBlock31)
273 c_l.append(greatBlock12)
274 c_l.append(greatBlock22)
275 c_l.append(greatBlock32)
276 c_l.append(greatBlock13)
277 c_l.append(greatBlock23)
278 c_l.append(greatBlock33)
279
280 piece = MakeCompound(c_l)
281
282 # Add in study
283 # ------------
284
285 piece_id = addToStudy(piece, "ex01_cube2build")
286
287 # Meshing
288 # =======
289
290 # Create hexahedrical mesh on piece
291 # ---------------------------------
292
293 hexa = smesh.Mesh(piece, "ex01_cube2build:hexa")
294
295 algo = hexa.Segment()
296 algo.NumberOfSegments(4)
297
298 hexa.Quadrangle()
299
300 hexa.Hexahedron()
301
302 # Create local hypothesis
303 # -----------------------
304
305 algo = hexa.Segment(greatEdgeX111)
306
307 algo.Arithmetic1D(1, 4)
308
309 algo.Propagation()
310
311 # Compute the mesh
312 # ----------------
313
314 hexa.Compute()