Salome HOME
Merge from V6_main 01/04/2013
[modules/smesh.git] / doc / salome / examples / generate_flat_elements.py
1 # Double nodes on groups boundaries
2
3 # This example represents an iron cable (a thin cylinder) in a concrete bloc (a big cylinder).
4 # The big cylinder is defined by two geometric volumes.
5
6 import geompy
7 import smesh
8 import SMESH
9
10 # geometry 
11
12 O = geompy.MakeVertex(0, 0, 0)
13 OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
14 OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
15 OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
16 Vertex_1 = geompy.MakeVertex(50, 0, 0)
17 Cylinder_1 = geompy.MakeCylinder(O, OX, 10, 500)
18 Cylinder_2 = geompy.MakeCylinder(Vertex_1, OX, 100, 400)
19 Vertex_2 = geompy.MakeVertex(-200, -200, -200)
20 Vertex_3 = geompy.MakeVertex(250, 200, 200)
21 Box_1 = geompy.MakeBoxTwoPnt(Vertex_2, Vertex_3)
22 Fuse_1 = geompy.MakeFuse(Cylinder_1, Cylinder_2)
23 Partition_1 = geompy.MakePartition([Fuse_1], [Cylinder_1, Box_1], [], [], geompy.ShapeType["SOLID"], 0, [], 0)
24 [Solid_1,Solid_2] = geompy.GetShapesOnShape(Cylinder_1, Partition_1, geompy.ShapeType["SOLID"], geompy.GEOM.ST_IN)
25 [Solid_3,Solid_4] = geompy.GetShapesOnShape(Cylinder_2, Partition_1, geompy.ShapeType["SOLID"], geompy.GEOM.ST_IN)
26 Vertex_4 = geompy.MakeVertex(450, 0, 0)
27 Vertex_5 = geompy.MakeVertex(500, 0, 0)
28 Vertex_6 = geompy.MakeVertex(550, 0, 0)
29 vec1 = geompy.MakeVector(Vertex_4, Vertex_5)
30 vec2 = geompy.MakeVector(Vertex_5, Vertex_6)
31 [Face_1] = geompy.GetShapesOnPlane(Partition_1, geompy.ShapeType["FACE"], vec1, geompy.GEOM.ST_ON)
32 [Face_2] = geompy.GetShapesOnPlane(Partition_1, geompy.ShapeType["FACE"], vec2, geompy.GEOM.ST_ON)
33
34 # meshing (we have linear tetrahedrons here, but other elements are OK)
35
36 Mesh_1 = smesh.Mesh(Partition_1)
37 Regular_1D = Mesh_1.Segment()
38 Nb_Segments_1 = Regular_1D.NumberOfSegments(15)
39 MEFISTO_2D = Mesh_1.Triangle(algo=smesh.MEFISTO)
40 Length_From_Edges_2D = MEFISTO_2D.LengthFromEdges()
41 ALGO3D = Mesh_1.Tetrahedron()
42 isDone = Mesh_1.Compute()
43
44 # relevant groups of volumes and faces
45
46 Solid_1_1 = Mesh_1.GroupOnGeom(Solid_1,'Solid_1',SMESH.VOLUME)
47 Solid_2_1 = Mesh_1.GroupOnGeom(Solid_2,'Solid_2',SMESH.VOLUME)
48 Solid_3_1 = Mesh_1.GroupOnGeom(Solid_3,'Solid_3',SMESH.VOLUME)
49 Solid_4_1 = Mesh_1.GroupOnGeom(Solid_4,'Solid_4',SMESH.VOLUME)
50 Face_1_1 = Mesh_1.GroupOnGeom(Face_1,'Face_1',SMESH.FACE)
51 Face_2_1 = Mesh_1.GroupOnGeom(Face_2,'Face_2',SMESH.FACE)
52
53 # Building of flat elements
54
55 Mesh_1.DoubleNodesOnGroupBoundaries([Solid_1_1, Solid_2_1, Solid_3_1, Solid_4_1], 1)
56
57 Mesh_1.CreateFlatElementsOnFacesGroups([Face_1_1, Face_2_1])