Salome HOME
Debug algorithms and hypotheses assignment
[modules/smesh.git] / src / SMESH_SWIG / ex14_cyl1holed.py
1 # CEA/LGLS 2004-2005, Francis KLOSS (OCC)
2 # =======================================
3
4 from geompy import *
5
6 import smesh
7
8 # Geometrie
9 # =========
10
11 # Creer un cylindre avec un trou cylindrique excentre, decoupage en hexahedre et mailler.
12
13 # Donnees
14 # -------
15
16 # unite: millimetre
17
18 g_ox = 0
19 g_oy = 0
20 g_oz = 0
21
22 g_cyl_rayon       = 1000
23 g_cyl_demiHauteur = 3000
24
25 g_trou_rayon       =   5
26 g_trou_centre      = 300
27
28 g_trim = 15000
29
30 # Construire le cylindre
31 # ----------------------
32
33 c_point    = MakeVertex(g_ox, g_oy, g_oz-g_cyl_demiHauteur)
34 c_dir      = MakeVectorDXDYDZ(0, 0, 1)
35 c_hauteur  = 2*g_cyl_demiHauteur
36 c_cylindre = MakeCylinder(c_point, c_dir, g_cyl_rayon, c_hauteur)
37
38 # Trouer le cylindre par un minuscule cylindre excentre
39 # -----------------------------------------------------
40
41 t_hauteur = g_cyl_demiHauteur
42 t_point   = MakeVertex(g_ox-g_trou_centre, g_oy, g_oz-t_hauteur)
43 t_trou    = MakeCylinder(t_point, c_dir, g_trou_rayon, 2*t_hauteur)
44
45 t_piece   = MakeCut(c_cylindre, t_trou)
46
47 # Geometrie hexahedrique
48 # ======================
49
50 # Decouper
51 # --------
52
53 h_outils = []
54 h_outils.append(MakePlane(t_point, MakeVectorDXDYDZ(1, 0, 0), g_trim))
55 h_outils.append(MakePlane(t_point, MakeVectorDXDYDZ(0, 1, 0), g_trim))
56
57 h_piece = MakePartition([t_piece], h_outils, [], [], ShapeType["SOLID"])
58
59 # Decouper pour les conditions locales
60 # ------------------------------------
61
62 l_outils = []
63 l_i = 1
64 l_n = 12
65 l_hauteur = c_hauteur/l_n
66
67 while l_i<l_n:
68     l_outils.append(MakePlane(MakeVertex(g_ox, g_oy, g_oz-g_cyl_demiHauteur+l_i*l_hauteur), c_dir, g_trim))
69     l_i = l_i+1
70
71 piece = MakePartition([h_piece], l_outils, [], [], ShapeType["SOLID"])
72
73 # Ajouter la piece dans l'etude
74 # -----------------------------
75
76 piece_id = addToStudy(piece, "ex14_cyl1holed")
77
78 # Maillage
79 # ========
80
81 # Creer un maillage hexahedrique
82 # ------------------------------
83
84 hexa = smesh.Mesh(piece, "ex14_cyl1holed:hexa")
85
86 algo = hexa.Segment()
87 algo.NumberOfSegments(4)
88
89 hexa.Quadrangle()
90
91 hexa.Hexahedron()
92
93 # Poser les hypotheses locales
94 # ----------------------------
95
96 m_i = 0
97 m_n = 12
98 m_h = c_hauteur/m_n
99 m_d = [4, 6, 8, 10, 10, 9, 8, 7, 6, 5, 4, 3]
100
101 m_x = g_ox+g_cyl_rayon
102 m_y = g_oy
103 m_z = g_oz-g_cyl_demiHauteur+m_h/2
104
105 while m_i<m_n:
106     m_p = MakeVertex(m_x, m_y, m_z + m_i*m_h)
107     m_e = GetEdgeNearPoint(piece, m_p)
108     m_a = hexa.Segment(m_e)
109     m_a.NumberOfSegments(m_d[m_i])
110     m_a.Propagation()
111     m_i = m_i + 1
112
113 # Calculer le maillage
114 # --------------------
115
116 hexa.Compute()