Salome HOME
Python3: tests
[plugins/blsurfplugin.git] / tests / test_cadsurf_multithread.py
1 # -*- coding: utf-8 -*-
2
3 import os
4 import sys
5 import salome
6 import time
7
8 salome.salome_init()
9 theStudy = salome.myStudy
10
11 ###
12 ### GEOM component
13 ###
14
15 import GEOM
16 from salome.geom import geomBuilder
17 import math
18 import SALOMEDS
19
20
21 geompy = geomBuilder.New(theStudy)
22
23 O = geompy.MakeVertex(0, 0, 0)
24 OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
25 OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
26 OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
27 flight_solid_brep_1 = geompy.ImportBREP(os.path.join(os.getenv("DATA_DIR"),"Shapes/Brep/flight_solid.brep" ))
28 geompy.addToStudy( O, 'O' )
29 geompy.addToStudy( OX, 'OX' )
30 geompy.addToStudy( OY, 'OY' )
31 geompy.addToStudy( OZ, 'OZ' )
32 geompy.addToStudy( flight_solid_brep_1, 'flight_solid.brep_1' )
33
34 ###
35 ### SMESH component
36 ###
37
38 import  SMESH, SALOMEDS
39 from salome.smesh import smeshBuilder
40
41 smesh = smeshBuilder.New(theStudy)
42
43 Mesh_1 = smesh.Mesh(flight_solid_brep_1)
44 MG_CADSurf = Mesh_1.Triangle(algo=smeshBuilder.MG_CADSurf)
45 MG_CADSurf_Parameters_1 = MG_CADSurf.Parameters()
46 MG_CADSurf_Parameters_1.SetPhySize( 1 )
47 MG_CADSurf_Parameters_1.SetMaxSize( 1 )
48 MG_CADSurf_Parameters_1.SetGradation( 1.05 )
49 MG_CADSurf_Parameters_1.SetAngleMesh( 1 )
50 MG_CADSurf_Parameters_1.SetChordalError( 2.40018 )
51 # 4 procs are used by default
52 # => No need to set an option
53
54 time0 = time.time()
55 isDone = Mesh_1.Compute()
56 time1 = time.time()
57
58 time_multithread = time1-time0
59
60 print("Time in 4 proc: %.3s"%(time_multithread))
61
62 Mesh_2 = smesh.Mesh(flight_solid_brep_1)
63 MG_CADSurf = Mesh_2.Triangle(algo=smeshBuilder.MG_CADSurf)
64 MG_CADSurf_Parameters_2 = MG_CADSurf.Parameters()
65 MG_CADSurf_Parameters_2.SetPhySize( 1 )
66 MG_CADSurf_Parameters_2.SetMaxSize( 1 )
67 MG_CADSurf_Parameters_2.SetGradation( 1.05 )
68 MG_CADSurf_Parameters_2.SetAngleMesh( 1 )
69 MG_CADSurf_Parameters_2.SetChordalError( 2.40018 )
70 # Use only one thread
71 MG_CADSurf_Parameters_2.SetMaxNumberOfThreads( 1 )
72
73 time2 = time.time()
74 isDone = Mesh_2.Compute()
75 time3 = time.time()
76
77 time_singlethread = time3-time2
78 print("Time in 1 proc: %.3s"%(time_singlethread))
79
80 assert time_multithread < time_singlethread/2.
81
82 if salome.sg.hasDesktop():
83   salome.sg.updateObjBrowser(True)