Salome HOME
Debug algorithms and hypotheses assignment
[modules/smesh.git] / src / SMESH_SWIG / ex04_cube5tetraHexa.py
1 # CEA/LGLS 2004-2005, Francis KLOSS (OCC)
2 # =======================================
3
4 from geompy import *
5
6 import smesh
7
8 # Geometry
9 # ========
10
11 # 5 box with a hexahedral mesh and with 2 box in tetrahedral mesh
12
13 # Values
14 # ------
15
16 arete = 100
17
18 arete0 = 0
19 arete1 = arete
20 arete2 = arete*2
21 arete3 = arete*3
22
23 # Solids
24 # ------
25
26 box_tetra1 = MakeBox(arete0, arete0, 0,  arete1, arete1, arete)
27
28 box_ijk1   = MakeBox(arete1, arete0, 0,  arete2, arete1, arete)
29
30 box_hexa   = MakeBox(arete1, arete1, 0,  arete2, arete2, arete)
31
32 box_ijk2   = MakeBox(arete2, arete1, 0,  arete3, arete2, arete)
33
34 box_tetra2 = MakeBox(arete2, arete2, 0,  arete3 ,arete3, arete)
35
36 # Piece
37 # -----
38
39 piece_cpd = MakeCompound([box_tetra1, box_ijk1, box_hexa, box_ijk2, box_tetra2])
40
41 piece = MakeGlueFaces(piece_cpd, 1e-4)
42
43 piece_id = addToStudy(piece, "ex04_cube5tetraHexa")
44
45 # Meshing
46 # =======
47
48 # Create a hexahedral mesh
49 # ------------------------
50
51 mixed = smesh.Mesh(piece, "ex04_cube5tetraHexa:mixed")
52
53 algo = mixed.Segment()
54
55 algo.StartEndLength(3, 25)
56
57 mixed.Quadrangle()
58
59 mixed.Hexahedron()
60
61 # Tetrahedral local mesh
62 # ----------------------
63
64 def localMesh(b, hyp):
65     box   = GetInPlace(piece, b)
66     faces = SubShapeAll(box, ShapeType["FACE"])
67
68     i = 0
69     n = len(faces)
70     while i<n:
71         algo = mixed.Triangle(faces[i])
72         if hyp:
73             algo.MaxElementArea(80)
74         else:
75             algo.LengthFromEdges()
76         i = i + 1
77
78     algo = mixed.Tetrahedron(smesh.NETGEN, box)
79     algo.MaxElementVolume(400)
80
81 localMesh(box_tetra1, 1)
82 localMesh(box_tetra2, 0)
83
84 # Mesh calculus
85 # -------------
86
87 mixed.Compute()