Salome HOME
Nerge with PAL/SALOME 2.1.0d
[modules/smesh.git] / src / SMESH_SWIG / grid4pyGibi.py
1 # CEA/LGLS 2004, Francis KLOSS (OCC)
2 # ==================================
3
4 # Import
5 # ------
6
7 from geompy import *
8 from meshpy import *
9
10 import math
11
12 # Piece
13 # -----
14
15 # grid compound by a square with a cylinder on each vertex
16
17 # Geometry
18 # --------
19
20 ox = 0
21 oy = 0
22 oz = 0
23
24 arete   =  50
25 hauteur = 100
26
27 rayon = 10
28
29 demi = rayon/2
30 r3   = demi*math.sqrt(3)
31
32 # Points
33 # ------
34
35 piecePoint111 = MakeVertex(ox+rayon      , oy, oz)
36 piecePoint211 = MakeVertex(ox+arete-rayon, oy, oz)
37 piecePoint112 = MakeVertex(ox            , oy, oz+rayon)
38 piecePoint212 = MakeVertex(ox+arete      , oy, oz+rayon)
39 piecePoint113 = MakeVertex(ox            , oy, oz+arete-rayon)
40 piecePoint213 = MakeVertex(ox+arete      , oy, oz+arete-rayon)
41 piecePoint114 = MakeVertex(ox+rayon      , oy, oz+arete)
42 piecePoint214 = MakeVertex(ox+arete-rayon, oy, oz+arete)
43
44 pieceCenter1  = MakeVertex(ox            , oy, oz)
45 pieceCenter2  = MakeVertex(ox+arete      , oy, oz)
46 pieceCenter3  = MakeVertex(ox            , oy, oz+arete)
47 pieceCenter4  = MakeVertex(ox+arete      , oy, oz+arete)
48
49 piecePass1    = MakeVertex(ox+demi       , oy, oz+r3)
50 piecePass2    = MakeVertex(ox+arete-demi , oy, oz+r3)
51 piecePass3    = MakeVertex(ox+arete-demi , oy, oz+arete-r3)
52 piecePass4    = MakeVertex(ox+demi       , oy, oz+arete-r3)
53
54 # Edges
55 # -----
56
57 pieceEdgeSquare1   = MakeEdge(piecePoint111, piecePoint211)
58 pieceEdgeSquare2   = MakeEdge(piecePoint114, piecePoint214)
59 pieceEdgeSquare3   = MakeEdge(piecePoint112, piecePoint113)
60 pieceEdgeSquare4   = MakeEdge(piecePoint212, piecePoint213)
61
62 pieceEdgeDiagonal1 = MakeEdge(piecePoint111, piecePoint213)
63 pieceEdgeDiagonal2 = MakeEdge(piecePoint112, piecePoint214)
64
65 pieceEdgeArc1 = MakeArc(piecePoint111, piecePass1, piecePoint112)
66 pieceEdgeArc2 = MakeArc(piecePoint211, piecePass2, piecePoint212)
67 pieceEdgeArc3 = MakeArc(piecePoint213, piecePass3, piecePoint214)
68 pieceEdgeArc4 = MakeArc(piecePoint113, piecePass4, piecePoint114)
69
70 # Faces
71 # -----
72
73 pieceFace1 = MakeQuad(pieceEdgeSquare1, pieceEdgeArc2, pieceEdgeSquare4, pieceEdgeDiagonal1)
74 pieceFace2 = MakeQuad(pieceEdgeSquare2, pieceEdgeArc4, pieceEdgeSquare3, pieceEdgeDiagonal2)
75
76 pieceFace3 = MakeQuad(pieceEdgeArc1, pieceEdgeDiagonal1, pieceEdgeArc3, pieceEdgeDiagonal2)
77
78 # Solids
79 # ------
80
81 pieceVector = MakeVectorDXDYDZ(0, 1, 0)
82
83 pieceSolid1 = MakePrismVecH(pieceFace1, pieceVector, hauteur)
84 pieceSolid2 = MakePrismVecH(pieceFace2, pieceVector, hauteur)
85 pieceSolid3 = MakePrismVecH(pieceFace3, pieceVector, hauteur)
86
87 # Compound
88 # --------
89
90 c_l = []
91 c_l.append(pieceSolid1)
92 c_l.append(pieceSolid2)
93 c_l.append(pieceSolid3)
94
95 c_cpd = MakeCompound(c_l)
96 piece = MakeGlueFaces(c_cpd, 1.e-5)
97
98 # Add in study
99 # ------------
100
101 piece_id = addToStudy(piece, "Grid4pyGibi")
102
103 # Meshing
104 # =======
105
106 # Create hexahedrical mesh on piece
107 # ---------------------------------
108
109 m_hexa=MeshHexa(piece, 4, "Grid4pyGibiHexa")
110
111 # Compute
112 # -------
113
114 m_hexa.Compute()