Salome HOME
bos #29171 Refactor testing procedure
[modules/smesh.git] / doc / 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 block (a big cylinder).
4 # The big cylinder is defined by two geometric volumes.
5
6 import salome
7 salome.salome_init_without_session()
8
9 import GEOM
10 import SMESH
11 from salome.geom import geomBuilder
12 from salome.smesh import smeshBuilder
13
14 geom_builder = geomBuilder.New()
15 smesh_builder = smeshBuilder.New()
16
17 # geometry 
18
19 O = geom_builder.MakeVertex(0, 0, 0)
20 OX = geom_builder.MakeVectorDXDYDZ(1, 0, 0)
21 OY = geom_builder.MakeVectorDXDYDZ(0, 1, 0)
22 OZ = geom_builder.MakeVectorDXDYDZ(0, 0, 1)
23 Vertex_1 = geom_builder.MakeVertex(50, 0, 0)
24 Cylinder_1 = geom_builder.MakeCylinder(O, OX, 10, 500)
25 Cylinder_2 = geom_builder.MakeCylinder(Vertex_1, OX, 100, 400)
26 Vertex_2 = geom_builder.MakeVertex(-200, -200, -200)
27 Vertex_3 = geom_builder.MakeVertex(250, 200, 200)
28 Box_1 = geom_builder.MakeBoxTwoPnt(Vertex_2, Vertex_3)
29 Fuse_1 = geom_builder.MakeFuse(Cylinder_1, Cylinder_2)
30 Partition_1 = geom_builder.MakePartition([Fuse_1], [Cylinder_1, Box_1], [], [], geom_builder.ShapeType["SOLID"], 0, [], 0)
31 [Solid_1,Solid_2] = geom_builder.GetShapesOnShape(Cylinder_1, Partition_1, geom_builder.ShapeType["SOLID"], GEOM.ST_IN)
32 [Solid_3,Solid_4] = geom_builder.GetShapesOnShape(Cylinder_2, Partition_1, geom_builder.ShapeType["SOLID"], GEOM.ST_IN)
33 Vertex_4 = geom_builder.MakeVertex(450, 0, 0)
34 Vertex_5 = geom_builder.MakeVertex(500, 0, 0)
35 Vertex_6 = geom_builder.MakeVertex(550, 0, 0)
36 vec1 = geom_builder.MakeVector(Vertex_4, Vertex_5)
37 vec2 = geom_builder.MakeVector(Vertex_5, Vertex_6)
38 [Face_1] = geom_builder.GetShapesOnPlane(Partition_1, geom_builder.ShapeType["FACE"], vec1, GEOM.ST_ON)
39 [Face_2] = geom_builder.GetShapesOnPlane(Partition_1, geom_builder.ShapeType["FACE"], vec2, GEOM.ST_ON)
40
41 # meshing (we have linear tetrahedrons here, but other elements are OK)
42
43 Mesh_1 = smesh_builder.Mesh(Partition_1)
44 Regular_1D = Mesh_1.Segment()
45 Nb_Segments_1 = Regular_1D.NumberOfSegments(15)
46 MEFISTO_2D = Mesh_1.Triangle(algo=smeshBuilder.MEFISTO)
47 Length_From_Edges_2D = MEFISTO_2D.LengthFromEdges()
48 ALGO3D = Mesh_1.Tetrahedron()
49 isDone = Mesh_1.Compute()
50
51 # relevant groups of volumes and faces
52
53 Solid_1_1 = Mesh_1.GroupOnGeom(Solid_1,'Solid_1',SMESH.VOLUME)
54 Solid_2_1 = Mesh_1.GroupOnGeom(Solid_2,'Solid_2',SMESH.VOLUME)
55 Solid_3_1 = Mesh_1.GroupOnGeom(Solid_3,'Solid_3',SMESH.VOLUME)
56 Solid_4_1 = Mesh_1.GroupOnGeom(Solid_4,'Solid_4',SMESH.VOLUME)
57 Face_1_1 = Mesh_1.GroupOnGeom(Face_1,'Face_1',SMESH.FACE)
58 Face_2_1 = Mesh_1.GroupOnGeom(Face_2,'Face_2',SMESH.FACE)
59
60 # Building of flat elements
61
62 Mesh_1.DoubleNodesOnGroupBoundaries([Solid_1_1, Solid_2_1, Solid_3_1, Solid_4_1], 1)
63
64 Mesh_1.CreateFlatElementsOnFacesGroups([Face_1_1, Face_2_1])