Salome HOME
IPAL9153, IPAL9148, IPAL9150
[modules/smesh.git] / src / SMESH_SWIG / ex05_hole1build.py
1 # CEA/LGLS 2004-2005, Francis KLOSS (OCC)
2 # =======================================
3
4 from geompy import *
5
6 import smesh
7
8 import math
9
10 # Geometry
11 # ========
12
13 # A centered holed cube build by  build by points, edges, faces and solids
14
15 # Values
16 # ------
17
18 ox = 0
19 oy = 0
20 oz = 0
21
22 longueur = 100
23 largeur  =  80
24 hauteur  =  50
25
26 rayon = 10
27
28 # Points
29 # ------
30
31 basePoint111 = MakeVertex(ox         ,  oy, oz)
32 basePoint211 = MakeVertex(ox+longueur,  oy, oz)
33 basePoint112 = MakeVertex(ox         ,  oy, oz+largeur)
34 basePoint212 = MakeVertex(ox+longueur,  oy, oz+largeur)
35
36 cx = ox+longueur/2
37 cy = oy
38 cz = oz+largeur/2
39
40 ll = longueur/largeur
41 ll = ll*ll
42 dx = rayon/math.sqrt(1+ll)
43 dz = rayon/math.sqrt(1+1/ll)
44
45 circlePoint1 = MakeVertex(cx-dx, cy, cz-dz)
46 circlePoint2 = MakeVertex(cx+dx, cy, cz-dz)
47 circlePoint3 = MakeVertex(cx+dx, cy, cz+dz)
48 circlePoint4 = MakeVertex(cx-dx, cy, cz+dz)
49
50 # Edges
51 # -----
52
53 squareEdge1 = MakeEdge(basePoint111, basePoint211)
54 squareEdge2 = MakeEdge(basePoint211, basePoint212)
55 squareEdge3 = MakeEdge(basePoint212, basePoint112)
56 squareEdge4 = MakeEdge(basePoint112, basePoint111)
57
58 diagEdge1   = MakeEdge(basePoint111, circlePoint1)
59 diagEdge2   = MakeEdge(basePoint211, circlePoint2)
60 diagEdge3   = MakeEdge(basePoint212, circlePoint3)
61 diagEdge4   = MakeEdge(basePoint112, circlePoint4)
62
63 arcEdge1    = MakeArc(circlePoint1, MakeVertex(cx      , cy, cz-rayon), circlePoint2)
64 arcEdge2    = MakeArc(circlePoint2, MakeVertex(cx+rayon, cy, cz      ), circlePoint3)
65 arcEdge3    = MakeArc(circlePoint3, MakeVertex(cx      , cy, cz+rayon), circlePoint4)
66 arcEdge4    = MakeArc(circlePoint4, MakeVertex(cx-rayon, cy, cz      ), circlePoint1)
67
68 # Faces
69 # -----
70
71 baseFace1 = MakeQuad(squareEdge1, diagEdge2, arcEdge1, diagEdge1)
72 baseFace2 = MakeQuad(squareEdge2, diagEdge3, arcEdge2, diagEdge2)
73 baseFace3 = MakeQuad(squareEdge3, diagEdge4, arcEdge3, diagEdge3)
74 baseFace4 = MakeQuad(squareEdge4, diagEdge1, arcEdge4, diagEdge4)
75
76 # Solids
77 # ------
78
79 baseVector = MakeVectorDXDYDZ(0, 1, 0)
80
81 baseSolid1 = MakePrismVecH(baseFace1, baseVector, hauteur)
82 baseSolid2 = MakePrismVecH(baseFace2, baseVector, hauteur)
83 baseSolid3 = MakePrismVecH(baseFace3, baseVector, hauteur)
84 baseSolid4 = MakePrismVecH(baseFace4, baseVector, hauteur)
85
86 # Compound
87 # --------
88
89 c_l = []
90 c_l.append(baseSolid1)
91 c_l.append(baseSolid2)
92 c_l.append(baseSolid3)
93 c_l.append(baseSolid4)
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, "ex05_hole1build")
102
103 # Meshing
104 # =======
105
106 # Create a hexahedral mesh
107 # ------------------------
108
109 hexa = smesh.Mesh(piece, "ex05_hole1build:hexa")
110
111 algo = hexa.Segment()
112
113 algo.NumberOfSegments(6, 3)
114
115 hexa.Quadrangle()
116
117 hexa.Hexahedron()
118
119 # Mesh calculus
120 # -------------
121
122 hexa.Compute()