1 # contains function to compute a mesh in parallel
6 notebook = salome_notebook.NoteBook()
13 from salome.geom import geomBuilder
14 from salome.smesh import smeshBuilder
19 geompy = geomBuilder.New()
27 # First creating all the boxes
32 x_orig = i*(boxsize+offset)
33 y_orig = j*(boxsize+offset)
34 z_orig = k*(boxsize+offset)
36 tmp_box = geompy.MakeBoxDXDYDZ(boxsize, boxsize, boxsize)
38 if not i == j == k == 0:
39 box = geompy.MakeTranslation(tmp_box, x_orig,
44 geompy.addToStudy(box, 'box_{}:{}:{}'.format(i, j, k))
48 # Create fuse of all boxes
49 all_boxes = geompy.MakeCompound(boxes)
50 geompy.addToStudy(all_boxes, 'Compound_1')
52 # Removing duplicates faces and edges
53 all_boxes = geompy.MakeGlueFaces(all_boxes, 1e-07)
54 geompy.addToStudy(all_boxes, 'Glued_Faces_1')
56 rubik_cube = geompy.MakeGlueEdges(all_boxes, 1e-07)
57 geompy.addToStudy(all_boxes, 'rubik_cube')
59 smesh = smeshBuilder.New()
60 print("Creating Parallel Mesh")
61 par_mesh = smesh.ParallelMesh(rubik_cube, name="par_mesh", mesher3D="GMSH")
63 print("Creating hypoehtesis for gmsh")
64 GMSH_3D_Parameters_1 = smesh.CreateHypothesis( 'GMSH_Parameters',
66 GMSH_3D_Parameters_1.SetMaxSize(10)
67 GMSH_3D_Parameters_1.SetMinSize(0.141421)
68 print("Adding hypothesis")
69 par_mesh.AddGlobalHypothesis(GMSH_3D_Parameters_1)
71 print("Setting parallelism method")
72 par_mesh.SetParallelismMethod(smeshBuilder.MULTITHREAD)
74 print("Setting parallelism options")
75 param = par_mesh.GetParallelismSettings()
78 print("Starting parallel compute")
79 is_done = par_mesh.Compute()
81 raise Exception("Error when computing Mesh")
83 print(" Tetrahedron: ", par_mesh.NbTetras())
84 print(" Triangle: ", par_mesh.NbTriangles())
85 print(" edge: ", par_mesh.NbEdges())
87 assert par_mesh.NbTetras() > 0
88 assert par_mesh.NbTriangles() > 0
89 assert par_mesh.NbEdges() > 0