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