1 # Change priority of sub-meshes in Mesh
4 salome.salome_init_without_session()
6 from salome.geom import geomBuilder
7 from salome.smesh import smeshBuilder
9 geom_builder = geomBuilder.New()
10 smesh_builder = smeshBuilder.New()
12 box = geom_builder.MakeBoxDXDYDZ(200, 200, 200)
13 [Face_1, Face_2, Face_3, Face_4, Face_5, Face_6] = geom_builder.SubShapeAllSorted(box, geom_builder.ShapeType["FACE"])
15 # create Mesh object on Box shape
16 mesh = smesh_builder.Mesh(box)
18 # assign mesh algorithms and hypotheses
19 mesh.Segment().NumberOfSegments(20)
20 mesh.Triangle().MaxElementArea(1200)
21 mesh.Tetrahedron().MaxElementVolume(40000)
23 # create sub-mesh and assign algorithms on Face_1
24 mesh.Segment(geom=Face_1).NumberOfSegments(4)
25 mesh.Triangle(geom=Face_1)
27 # create sub-mesh and assign algorithms on Face_2
28 mesh.Segment(geom=Face_2).NumberOfSegments(8)
29 mesh.Triangle(geom=Face_2)
31 # create sub-mesh and assign algorithms on Face_3
32 mesh.Segment(geom=Face_3).NumberOfSegments(12)
33 mesh.Triangle(geom=Face_3)
35 # get existing sub-mesh priority order: F1 -> F2 -> F3
36 [[SubMesh_F1, SubMesh_F3, SubMesh_F2]] = mesh.GetMeshOrder()
37 isDone = mesh.Compute()
38 if not isDone: raise Exception("Error when computing Mesh")
39 print("Nb elements at initial order of sub-meshes:", mesh.NbElements())
41 # set new sub-mesh order: F2 -> F1 -> F3
42 isDone = mesh.SetMeshOrder([[SubMesh_F2, SubMesh_F1, SubMesh_F3]])
43 isDone = mesh.Compute()
44 if not isDone: raise Exception("Error when computing Mesh")
45 print("Nb elements at new order of sub-meshes:", mesh.NbElements())
47 # compute with other sub-mesh order: F3 -> F2 -> F1
48 isDone = mesh.SetMeshOrder([[SubMesh_F3, SubMesh_F2, SubMesh_F1]])
49 isDone = mesh.Compute()
50 if not isDone: raise Exception("Error when computing Mesh")
51 print("Nb elements at another order of sub-meshes:", mesh.NbElements())