Salome HOME
23514: EDF 16031 - SMESH freezes
[modules/smesh.git] / src / SMESH_SWIG / ex01_cube2build.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2016  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, or (at your option) any later version.
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 #
26 import salome
27 salome.salome_init()
28 import GEOM
29 from salome.geom import geomBuilder
30 geompy = geomBuilder.New(salome.myStudy)
31
32 import SMESH, SALOMEDS
33 from salome.smesh import smeshBuilder
34 smesh =  smeshBuilder.New(salome.myStudy)
35
36 # Geometry
37 # ========
38
39 # A small cube centered and put on a great cube build by points, edges, faces and solids
40
41 # Points
42 # ------
43
44 greatPoint111 = geompy.MakeVertex( 0,  0,  0)
45 greatPoint211 = geompy.MakeVertex(10,  0,  0)
46 greatPoint311 = geompy.MakeVertex(20,  0,  0)
47 greatPoint411 = geompy.MakeVertex(30,  0,  0)
48
49 greatPoint121 = geompy.MakeVertex( 0, 10,  0)
50 greatPoint221 = geompy.MakeVertex(10, 10,  0)
51 greatPoint321 = geompy.MakeVertex(20, 10,  0)
52 greatPoint421 = geompy.MakeVertex(30, 10,  0)
53
54 greatPoint112 = geompy.MakeVertex( 0,  0, 10)
55 greatPoint212 = geompy.MakeVertex(10,  0, 10)
56 greatPoint312 = geompy.MakeVertex(20,  0, 10)
57 greatPoint412 = geompy.MakeVertex(30,  0, 10)
58
59 greatPoint122 = geompy.MakeVertex( 0, 10, 10)
60 greatPoint222 = geompy.MakeVertex(10, 10, 10)
61 greatPoint322 = geompy.MakeVertex(20, 10, 10)
62 greatPoint422 = geompy.MakeVertex(30, 10, 10)
63
64 greatPoint113 = geompy.MakeVertex( 0,  0, 20)
65 greatPoint213 = geompy.MakeVertex(10,  0, 20)
66 greatPoint313 = geompy.MakeVertex(20,  0, 20)
67 greatPoint413 = geompy.MakeVertex(30,  0, 20)
68
69 greatPoint123 = geompy.MakeVertex( 0, 10, 20)
70 greatPoint223 = geompy.MakeVertex(10, 10, 20)
71 greatPoint323 = geompy.MakeVertex(20, 10, 20)
72 greatPoint423 = geompy.MakeVertex(30, 10, 20)
73
74 greatPoint114 = geompy.MakeVertex( 0,  0, 30)
75 greatPoint214 = geompy.MakeVertex(10,  0, 30)
76 greatPoint314 = geompy.MakeVertex(20,  0, 30)
77 greatPoint414 = geompy.MakeVertex(30,  0, 30)
78
79 greatPoint124 = geompy.MakeVertex( 0, 10, 30)
80 greatPoint224 = geompy.MakeVertex(10, 10, 30)
81 greatPoint324 = geompy.MakeVertex(20, 10, 30)
82 greatPoint424 = geompy.MakeVertex(30, 10, 30)
83
84
85 smallPoint111 = greatPoint222
86 smallPoint211 = greatPoint322
87 smallPoint121 = geompy.MakeVertex(10, 20, 10)
88 smallPoint221 = geompy.MakeVertex(20, 20, 10)
89
90 smallPoint112 = greatPoint223
91 smallPoint212 = greatPoint323
92 smallPoint122 = geompy.MakeVertex(10, 20, 20)
93 smallPoint222 = geompy.MakeVertex(20, 20, 20)
94
95 # Edges
96 # -----
97
98 smallEdgeX11 = geompy.MakeEdge(smallPoint111, smallPoint211)
99 smallEdgeX21 = geompy.MakeEdge(smallPoint121, smallPoint221)
100 smallEdgeX12 = geompy.MakeEdge(smallPoint112, smallPoint212)
101 smallEdgeX22 = geompy.MakeEdge(smallPoint122, smallPoint222)
102
103 smallEdgeY11 = geompy.MakeEdge(smallPoint111, smallPoint121)
104 smallEdgeY21 = geompy.MakeEdge(smallPoint211, smallPoint221)
105 smallEdgeY12 = geompy.MakeEdge(smallPoint112, smallPoint122)
106 smallEdgeY22 = geompy.MakeEdge(smallPoint212, smallPoint222)
107
108 smallEdgeZ11 = geompy.MakeEdge(smallPoint111, smallPoint112)
109 smallEdgeZ21 = geompy.MakeEdge(smallPoint211, smallPoint212)
110 smallEdgeZ12 = geompy.MakeEdge(smallPoint121, smallPoint122)
111 smallEdgeZ22 = geompy.MakeEdge(smallPoint221, smallPoint222)
112
113
114 greatEdgeX111 = geompy.MakeEdge(greatPoint111, greatPoint211)
115 greatEdgeX211 = geompy.MakeEdge(greatPoint211, greatPoint311)
116 greatEdgeX311 = geompy.MakeEdge(greatPoint311, greatPoint411)
117 greatEdgeX121 = geompy.MakeEdge(greatPoint121, greatPoint221)
118 greatEdgeX221 = geompy.MakeEdge(greatPoint221, greatPoint321)
119 greatEdgeX321 = geompy.MakeEdge(greatPoint321, greatPoint421)
120
121 greatEdgeX112 = geompy.MakeEdge(greatPoint112, greatPoint212)
122 greatEdgeX212 = geompy.MakeEdge(greatPoint212, greatPoint312)
123 greatEdgeX312 = geompy.MakeEdge(greatPoint312, greatPoint412)
124 greatEdgeX122 = geompy.MakeEdge(greatPoint122, greatPoint222)
125 greatEdgeX222 = smallEdgeX11
126 greatEdgeX322 = geompy.MakeEdge(greatPoint322, greatPoint422)
127
128 greatEdgeX113 = geompy.MakeEdge(greatPoint113, greatPoint213)
129 greatEdgeX213 = geompy.MakeEdge(greatPoint213, greatPoint313)
130 greatEdgeX313 = geompy.MakeEdge(greatPoint313, greatPoint413)
131 greatEdgeX123 = geompy.MakeEdge(greatPoint123, greatPoint223)
132 greatEdgeX223 = smallEdgeX12
133 greatEdgeX323 = geompy.MakeEdge(greatPoint323, greatPoint423)
134
135 greatEdgeX114 = geompy.MakeEdge(greatPoint114, greatPoint214)
136 greatEdgeX214 = geompy.MakeEdge(greatPoint214, greatPoint314)
137 greatEdgeX314 = geompy.MakeEdge(greatPoint314, greatPoint414)
138 greatEdgeX124 = geompy.MakeEdge(greatPoint124, greatPoint224)
139 greatEdgeX224 = geompy.MakeEdge(greatPoint224, greatPoint324)
140 greatEdgeX324 = geompy.MakeEdge(greatPoint324, greatPoint424)
141
142 greatEdgeY11 = geompy.MakeEdge(greatPoint111, greatPoint121)
143 greatEdgeY21 = geompy.MakeEdge(greatPoint211, greatPoint221)
144 greatEdgeY31 = geompy.MakeEdge(greatPoint311, greatPoint321)
145 greatEdgeY41 = geompy.MakeEdge(greatPoint411, greatPoint421)
146
147 greatEdgeY12 = geompy.MakeEdge(greatPoint112, greatPoint122)
148 greatEdgeY22 = geompy.MakeEdge(greatPoint212, greatPoint222)
149 greatEdgeY32 = geompy.MakeEdge(greatPoint312, greatPoint322)
150 greatEdgeY42 = geompy.MakeEdge(greatPoint412, greatPoint422)
151
152 greatEdgeY13 = geompy.MakeEdge(greatPoint113, greatPoint123)
153 greatEdgeY23 = geompy.MakeEdge(greatPoint213, greatPoint223)
154 greatEdgeY33 = geompy.MakeEdge(greatPoint313, greatPoint323)
155 greatEdgeY43 = geompy.MakeEdge(greatPoint413, greatPoint423)
156
157 greatEdgeY14 = geompy.MakeEdge(greatPoint114, greatPoint124)
158 greatEdgeY24 = geompy.MakeEdge(greatPoint214, greatPoint224)
159 greatEdgeY34 = geompy.MakeEdge(greatPoint314, greatPoint324)
160 greatEdgeY44 = geompy.MakeEdge(greatPoint414, greatPoint424)
161
162 greatEdgeZ111 = geompy.MakeEdge(greatPoint111, greatPoint112)
163 greatEdgeZ211 = geompy.MakeEdge(greatPoint211, greatPoint212)
164 greatEdgeZ311 = geompy.MakeEdge(greatPoint311, greatPoint312)
165 greatEdgeZ411 = geompy.MakeEdge(greatPoint411, greatPoint412)
166
167 greatEdgeZ121 = geompy.MakeEdge(greatPoint121, greatPoint122)
168 greatEdgeZ221 = geompy.MakeEdge(greatPoint221, greatPoint222)
169 greatEdgeZ321 = geompy.MakeEdge(greatPoint321, greatPoint322)
170 greatEdgeZ421 = geompy.MakeEdge(greatPoint421, greatPoint422)
171
172 greatEdgeZ112 = geompy.MakeEdge(greatPoint112, greatPoint113)
173 greatEdgeZ212 = geompy.MakeEdge(greatPoint212, greatPoint213)
174 greatEdgeZ312 = geompy.MakeEdge(greatPoint312, greatPoint313)
175 greatEdgeZ412 = geompy.MakeEdge(greatPoint412, greatPoint413)
176
177 greatEdgeZ122 = geompy.MakeEdge(greatPoint122, greatPoint123)
178 greatEdgeZ222 = smallEdgeZ11
179 greatEdgeZ322 = smallEdgeZ21
180 greatEdgeZ422 = geompy.MakeEdge(greatPoint422, greatPoint423)
181
182 greatEdgeZ113 = geompy.MakeEdge(greatPoint113, greatPoint114)
183 greatEdgeZ213 = geompy.MakeEdge(greatPoint213, greatPoint214)
184 greatEdgeZ313 = geompy.MakeEdge(greatPoint313, greatPoint314)
185 greatEdgeZ413 = geompy.MakeEdge(greatPoint413, greatPoint414)
186
187 greatEdgeZ123 = geompy.MakeEdge(greatPoint123, greatPoint124)
188 greatEdgeZ223 = geompy.MakeEdge(greatPoint223, greatPoint224)
189 greatEdgeZ323 = geompy.MakeEdge(greatPoint323, greatPoint324)
190 greatEdgeZ423 = geompy.MakeEdge(greatPoint423, greatPoint424)
191
192 # Faces
193 # -----
194
195 smallFaceX1 = geompy.MakeQuad(smallEdgeY11, smallEdgeZ11, smallEdgeY12, smallEdgeZ12)
196 smallFaceX2 = geompy.MakeQuad(smallEdgeY21, smallEdgeZ21, smallEdgeY22, smallEdgeZ22)
197 smallFaceY1 = geompy.MakeQuad(smallEdgeX11, smallEdgeZ11, smallEdgeX12, smallEdgeZ21)
198 smallFaceY2 = geompy.MakeQuad(smallEdgeX21, smallEdgeZ12, smallEdgeX22, smallEdgeZ22)
199 smallFaceZ1 = geompy.MakeQuad(smallEdgeX11, smallEdgeY11, smallEdgeX21, smallEdgeY21)
200 smallFaceZ2 = geompy.MakeQuad(smallEdgeX12, smallEdgeY12, smallEdgeX22, smallEdgeY22)
201
202
203 greatFaceX11 = geompy.MakeQuad(greatEdgeY11, greatEdgeZ111, greatEdgeY12, greatEdgeZ121)
204 greatFaceX21 = geompy.MakeQuad(greatEdgeY21, greatEdgeZ211, greatEdgeY22, greatEdgeZ221)
205 greatFaceX31 = geompy.MakeQuad(greatEdgeY31, greatEdgeZ311, greatEdgeY32, greatEdgeZ321)
206 greatFaceX41 = geompy.MakeQuad(greatEdgeY41, greatEdgeZ411, greatEdgeY42, greatEdgeZ421)
207
208 greatFaceX12 = geompy.MakeQuad(greatEdgeY12, greatEdgeZ112, greatEdgeY13, greatEdgeZ122)
209 greatFaceX22 = geompy.MakeQuad(greatEdgeY22, greatEdgeZ212, greatEdgeY23, greatEdgeZ222)
210 greatFaceX32 = geompy.MakeQuad(greatEdgeY32, greatEdgeZ312, greatEdgeY33, greatEdgeZ322)
211 greatFaceX42 = geompy.MakeQuad(greatEdgeY42, greatEdgeZ412, greatEdgeY43, greatEdgeZ422)
212
213 greatFaceX13 = geompy.MakeQuad(greatEdgeY13, greatEdgeZ113, greatEdgeY14, greatEdgeZ123)
214 greatFaceX23 = geompy.MakeQuad(greatEdgeY23, greatEdgeZ213, greatEdgeY24, greatEdgeZ223)
215 greatFaceX33 = geompy.MakeQuad(greatEdgeY33, greatEdgeZ313, greatEdgeY34, greatEdgeZ323)
216 greatFaceX43 = geompy.MakeQuad(greatEdgeY43, greatEdgeZ413, greatEdgeY44, greatEdgeZ423)
217
218 greatFaceY111 = geompy.MakeQuad(greatEdgeX111, greatEdgeZ111, greatEdgeX112, greatEdgeZ211)
219 greatFaceY211 = geompy.MakeQuad(greatEdgeX211, greatEdgeZ211, greatEdgeX212, greatEdgeZ311)
220 greatFaceY311 = geompy.MakeQuad(greatEdgeX311, greatEdgeZ311, greatEdgeX312, greatEdgeZ411)
221 greatFaceY121 = geompy.MakeQuad(greatEdgeX121, greatEdgeZ121, greatEdgeX122, greatEdgeZ221)
222 greatFaceY221 = geompy.MakeQuad(greatEdgeX221, greatEdgeZ221, greatEdgeX222, greatEdgeZ321)
223 greatFaceY321 = geompy.MakeQuad(greatEdgeX321, greatEdgeZ321, greatEdgeX322, greatEdgeZ421)
224
225 greatFaceY112 = geompy.MakeQuad(greatEdgeX112, greatEdgeZ112, greatEdgeX113, greatEdgeZ212)
226 greatFaceY212 = geompy.MakeQuad(greatEdgeX212, greatEdgeZ212, greatEdgeX213, greatEdgeZ312)
227 greatFaceY312 = geompy.MakeQuad(greatEdgeX312, greatEdgeZ312, greatEdgeX313, greatEdgeZ412)
228 greatFaceY122 = geompy.MakeQuad(greatEdgeX122, greatEdgeZ122, greatEdgeX123, greatEdgeZ222)
229 greatFaceY222 = smallFaceY1
230 greatFaceY322 = geompy.MakeQuad(greatEdgeX322, greatEdgeZ322, greatEdgeX323, greatEdgeZ422)
231
232 greatFaceY113 = geompy.MakeQuad(greatEdgeX113, greatEdgeZ113, greatEdgeX114, greatEdgeZ213)
233 greatFaceY213 = geompy.MakeQuad(greatEdgeX213, greatEdgeZ213, greatEdgeX214, greatEdgeZ313)
234 greatFaceY313 = geompy.MakeQuad(greatEdgeX313, greatEdgeZ313, greatEdgeX314, greatEdgeZ413)
235 greatFaceY123 = geompy.MakeQuad(greatEdgeX123, greatEdgeZ123, greatEdgeX124, greatEdgeZ223)
236 greatFaceY223 = geompy.MakeQuad(greatEdgeX223, greatEdgeZ223, greatEdgeX224, greatEdgeZ323)
237 greatFaceY323 = geompy.MakeQuad(greatEdgeX323, greatEdgeZ323, greatEdgeX324, greatEdgeZ423)
238
239 greatFaceZ11 = geompy.MakeQuad(greatEdgeX111, greatEdgeY11, greatEdgeX121, greatEdgeY21)
240 greatFaceZ21 = geompy.MakeQuad(greatEdgeX211, greatEdgeY21, greatEdgeX221, greatEdgeY31)
241 greatFaceZ31 = geompy.MakeQuad(greatEdgeX311, greatEdgeY31, greatEdgeX321, greatEdgeY41)
242
243 greatFaceZ12 = geompy.MakeQuad(greatEdgeX112, greatEdgeY12, greatEdgeX122, greatEdgeY22)
244 greatFaceZ22 = geompy.MakeQuad(greatEdgeX212, greatEdgeY22, greatEdgeX222, greatEdgeY32)
245 greatFaceZ32 = geompy.MakeQuad(greatEdgeX312, greatEdgeY32, greatEdgeX322, greatEdgeY42)
246
247 greatFaceZ13 = geompy.MakeQuad(greatEdgeX113, greatEdgeY13, greatEdgeX123, greatEdgeY23)
248 greatFaceZ23 = geompy.MakeQuad(greatEdgeX213, greatEdgeY23, greatEdgeX223, greatEdgeY33)
249 greatFaceZ33 = geompy.MakeQuad(greatEdgeX313, greatEdgeY33, greatEdgeX323, greatEdgeY43)
250
251 greatFaceZ14 = geompy.MakeQuad(greatEdgeX114, greatEdgeY14, greatEdgeX124, greatEdgeY24)
252 greatFaceZ24 = geompy.MakeQuad(greatEdgeX214, greatEdgeY24, greatEdgeX224, greatEdgeY34)
253 greatFaceZ34 = geompy.MakeQuad(greatEdgeX314, greatEdgeY34, greatEdgeX324, greatEdgeY44)
254
255 # Solids
256 # ------
257
258 smallBlock   = geompy.MakeHexa(smallFaceX1, smallFaceX2, smallFaceY1, smallFaceY2, smallFaceZ1, smallFaceZ2)
259
260 greatBlock11 = geompy.MakeHexa(greatFaceX11, greatFaceX21, greatFaceY111, greatFaceY121, greatFaceZ11, greatFaceZ12)
261 greatBlock21 = geompy.MakeHexa(greatFaceX21, greatFaceX31, greatFaceY211, greatFaceY221, greatFaceZ21, greatFaceZ22)
262 greatBlock31 = geompy.MakeHexa(greatFaceX31, greatFaceX41, greatFaceY311, greatFaceY321, greatFaceZ31, greatFaceZ32)
263
264 greatBlock12 = geompy.MakeHexa(greatFaceX12, greatFaceX22, greatFaceY112, greatFaceY122, greatFaceZ12, greatFaceZ13)
265 greatBlock22 = geompy.MakeHexa(greatFaceX22, greatFaceX32, greatFaceY212, greatFaceY222, greatFaceZ22, greatFaceZ23)
266 greatBlock32 = geompy.MakeHexa(greatFaceX32, greatFaceX42, greatFaceY312, greatFaceY322, greatFaceZ32, greatFaceZ33)
267
268 greatBlock13 = geompy.MakeHexa(greatFaceX13, greatFaceX23, greatFaceY113, greatFaceY123, greatFaceZ13, greatFaceZ14)
269 greatBlock23 = geompy.MakeHexa(greatFaceX23, greatFaceX33, greatFaceY213, greatFaceY223, greatFaceZ23, greatFaceZ24)
270 greatBlock33 = geompy.MakeHexa(greatFaceX33, greatFaceX43, greatFaceY313, greatFaceY323, greatFaceZ33, greatFaceZ34)
271
272 # Compound
273 # --------
274
275 c_l = []
276 c_l.append(smallBlock)
277 c_l.append(greatBlock11)
278 c_l.append(greatBlock21)
279 c_l.append(greatBlock31)
280 c_l.append(greatBlock12)
281 c_l.append(greatBlock22)
282 c_l.append(greatBlock32)
283 c_l.append(greatBlock13)
284 c_l.append(greatBlock23)
285 c_l.append(greatBlock33)
286
287 piece = geompy.MakeCompound(c_l)
288
289 # Add in study
290 # ------------
291
292 piece_id = geompy.addToStudy(piece, "ex01_cube2build")
293
294 # Meshing
295 # =======
296
297 # Create hexahedrical mesh on piece
298 # ---------------------------------
299
300 hexa = smesh.Mesh(piece, "ex01_cube2build:hexa")
301
302 algo = hexa.Segment()
303 algo.NumberOfSegments(4)
304
305 hexa.Quadrangle()
306
307 hexa.Hexahedron()
308
309 # Create local hypothesis
310 # -----------------------
311
312 algo = hexa.Segment(greatEdgeX111)
313
314 algo.Arithmetic1D(1, 4)
315
316 algo.Propagation()
317
318 # Compute the mesh
319 # ----------------
320
321 hexa.Compute()
322
323 # Update object browser
324 # ---------------------
325
326 salome.sg.updateObjBrowser(True)