1 # CEA/LGLS 2004-2005, Francis KLOSS (OCC)
2 # =======================================
11 # Creer un cylindre avec un trou cylindrique excentre, decoupage en hexahedre et mailler.
23 g_cyl_demiHauteur = 3000
30 # Construire le cylindre
31 # ----------------------
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)
38 # Trouer le cylindre par un minuscule cylindre excentre
39 # -----------------------------------------------------
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)
45 t_piece = MakeCut(c_cylindre, t_trou)
47 # Geometrie hexahedrique
48 # ======================
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))
57 h_piece = MakePartition([t_piece], h_outils, [], [], ShapeType["SOLID"])
59 # Decouper pour les conditions locales
60 # ------------------------------------
65 l_hauteur = c_hauteur/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))
71 piece = MakePartition([h_piece], l_outils, [], [], ShapeType["SOLID"])
73 # Ajouter la piece dans l'etude
74 # -----------------------------
76 piece_id = addToStudy(piece, "ex14_cyl1holed")
81 # Creer un maillage hexahedrique
82 # ------------------------------
84 hexa = smesh.Mesh(piece, "ex14_cyl1holed:hexa")
87 algo.NumberOfSegments(4)
93 # Poser les hypotheses locales
94 # ----------------------------
99 m_d = [4, 6, 8, 10, 10, 9, 8, 7, 6, 5, 4, 3]
101 m_x = g_ox+g_cyl_rayon
103 m_z = g_oz-g_cyl_demiHauteur+m_h/2
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])
113 # Calculer le maillage
114 # --------------------