Salome HOME
Fix bug 12796: Warning missed for the bad file 'test18.med'
[modules/smesh.git] / src / SMESH_SWIG / ex04_cube5tetraHexa.py
1 #  Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 #  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
3 #
4 #  This library is free software; you can redistribute it and/or
5 #  modify it under the terms of the GNU Lesser General Public
6 #  License as published by the Free Software Foundation; either
7 #  version 2.1 of the License.
8 #
9 #  This library is distributed in the hope that it will be useful,
10 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
11 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 #  Lesser General Public License for more details.
13 #
14 #  You should have received a copy of the GNU Lesser General Public
15 #  License along with this library; if not, write to the Free Software
16 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20 # CEA/LGLS 2004-2005, Francis KLOSS (OCC)
21 # =======================================
22
23 from geompy import *
24
25 import smesh
26
27 # Geometry
28 # ========
29
30 # 5 box with a hexahedral mesh and with 2 box in tetrahedral mesh
31
32 # Values
33 # ------
34
35 arete = 100
36
37 arete0 = 0
38 arete1 = arete
39 arete2 = arete*2
40 arete3 = arete*3
41
42 # Solids
43 # ------
44
45 box_tetra1 = MakeBox(arete0, arete0, 0,  arete1, arete1, arete)
46
47 box_ijk1   = MakeBox(arete1, arete0, 0,  arete2, arete1, arete)
48
49 box_hexa   = MakeBox(arete1, arete1, 0,  arete2, arete2, arete)
50
51 box_ijk2   = MakeBox(arete2, arete1, 0,  arete3, arete2, arete)
52
53 box_tetra2 = MakeBox(arete2, arete2, 0,  arete3 ,arete3, arete)
54
55 # Piece
56 # -----
57
58 piece_cpd = MakeCompound([box_tetra1, box_ijk1, box_hexa, box_ijk2, box_tetra2])
59
60 piece = MakeGlueFaces(piece_cpd, 1e-4)
61
62 piece_id = addToStudy(piece, "ex04_cube5tetraHexa")
63
64 # Meshing
65 # =======
66
67 # Create a hexahedral mesh
68 # ------------------------
69
70 mixed = smesh.Mesh(piece, "ex04_cube5tetraHexa:mixed")
71
72 algo = mixed.Segment()
73
74 algo.StartEndLength(3, 25)
75
76 mixed.Quadrangle()
77
78 mixed.Hexahedron()
79
80 # Tetrahedral local mesh
81 # ----------------------
82
83 def localMesh(b, hyp):
84     box   = GetInPlace(piece, b)
85     faces = SubShapeAll(box, ShapeType["FACE"])
86
87     i = 0
88     n = len(faces)
89     while i<n:
90         algo = mixed.Triangle(faces[i])
91         if hyp:
92             algo.MaxElementArea(80)
93         else:
94             algo.LengthFromEdges()
95         i = i + 1
96
97     algo = mixed.Tetrahedron(smesh.NETGEN, box)
98     algo.MaxElementVolume(400)
99
100 localMesh(box_tetra1, 1)
101 localMesh(box_tetra2, 0)
102
103 # Mesh calculus
104 # -------------
105
106 mixed.Compute()