Salome HOME
Merge branch 'V9_9_BR'
[modules/smesh.git] / src / Tools / Verima / Stats / ref.py
1 # Copyright (C) 2013-2022  EDF R&D
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19
20 import os
21 import subprocess
22 import time
23
24 class Ref:
25   def __init__(self,maBase,idMaillage,idVersion,machine):    
26       self.maBase=maBase
27       self.idMaillage=idMaillage
28       self.idVersion=idVersion
29       self.machine=machine
30       self.idVersionRef=self.maBase.maTableVersions.getVersionRef()
31
32       self.existe=True
33       if self.maBase.maTablePerfs.getVal(self.idMaillage,self.idVersionRef,self.machine) == None:
34          self.existe=False
35
36
37
38   def verifieCpu(self,NbSec):
39       cpuAvant=self.maBase.maTablePerfs.getVal(self.idMaillage,self.idVersionRef,self.machine)
40       seuil=self.maBase.maTableMaillages.getVal(self.idMaillage,"seuilCPU")
41       seuilHaut=cpuAvant*(100+seuil)/100.
42       if NbSec > seuilHaut  :
43          print("Probleme consommation CPU : ")
44          print("         cpu reference : ", cpuAvant)
45          print("         seuil         : ", seuil)
46          print("         CPU           : ", NbSec)
47          return True
48       return False
49       
50   def verifieTailles(self,listeValeurs):
51       i=0
52       seuil=self.maBase.maTableMaillages.getVal(self.idMaillage,"seuilTaille")
53       for nomColonne in ('TailleMax','TailleMin','Quartile1','Mediane','Quartile3','Moyenne'):
54           valTrouvee=float(listeValeurs[i])
55           valAvant=float(self.maBase.maTableTailles.getVal(self.idMaillage,self.idVersionRef,self.machine,nomColonne))
56           seuilHaut=valAvant*(100+seuil)/100.
57           seuilBas=valAvant*(100-seuil)/100.
58           if (valTrouvee < seuilBas) or (valTrouvee > seuilHaut) :
59              print("Probleme sur le nombre de Mailles de type : ", nomColonne)
60              print("         nb reference : ", valAvant)
61              print("         seuil        : ", seuil)
62              print("         nb           : ", valTrouvee)
63              return True
64           i=i+1
65       return False
66
67   def verifieRatios(self,listeValeurs):
68       i=0
69       seuil=self.maBase.maTableMaillages.getVal(self.idMaillage,"seuilRatio")
70       for nomColonne in ('TailleMax','TailleMin','Quartile1','Mediane','Quartile3','Moyenne'):
71           valTrouvee=float(listeValeurs[i])
72           valAvant=float(self.maBase.maTableRatios.getVal(self.idMaillage,self.idVersionRef,self.machine,nomColonne))
73           seuilHaut=valAvant*(100+seuil)/100.
74           seuilBas=valAvant*(100-seuil)/100.
75           if (valTrouvee < seuilBas) or (valTrouvee > seuilHaut) :
76              print("Probleme sur le nombre de Mailles de type : ", nomColonne)
77              print("         nb reference : ", valAvant)
78              print("         seuil        : ", seuil)
79              print("         nb           : ", valTrouvee)
80              return True
81           i=i+1
82       return False
83
84       
85
86   def verifieMailles(self,listeValeurs,listeEntity):
87       seuil=self.maBase.maTableMaillages.getVal(self.idMaillage,"seuilNbMaille")
88       i=0
89       for nomColonne in listeEntity :
90           valTrouvee=int(listeValeurs[i])
91           i=i+1
92           valAvant=self.maBase.maTableMailles.getVal(self.idMaillage,self.idVersionRef,self.machine,nomColonne)
93           #print nomColonne, " ",valTrouvee, " ",valAvant 
94           seuilHaut=valAvant*(100+seuil)/100.
95           seuilBas=valAvant*(100-seuil)/100.
96           if (valTrouvee < seuilBas) or (valTrouvee > seuilHaut) :
97              print("Probleme sur le nombre de Mailles de type : ", nomColonne)
98              print("         nb reference : ", valAvant)
99              print("         seuil        : ", seuil)
100              print("         nb           : ", valTrouvee)
101              return True
102       return False
103
104   def verifieMaillesPourGroupes(self,nomGroupe,listeValeurs,listeEntity):
105       seuil=self.maBase.maTableMaillages.getVal(self.idMaillage,"seuilNbMaille")
106       i=0
107       #print nomGroupe,self.idMaillage,self.idVersion,self.machine
108       for nomColonne in listeEntity:
109           valTrouvee=int(listeValeurs[i])
110           i=i+1
111           valAvant=self.maBase.maTableGroupes.getVal(nomGroupe,self.idMaillage,self.idVersionRef,self.machine,nomColonne)
112           #print nomColonne, " ",valTrouvee, " ",valAvant 
113           seuilHaut=valAvant*(100+seuil)/100
114           seuilBas=valAvant*(100-seuil)/100
115           if (valTrouvee < seuilBas) or (valTrouvee > seuilHaut) :
116              print("Probleme sur le nombre de Mailles de type : ", nomColonne, "pour le groupe ", nomGroupe)
117              print("         nb reference : ", valAvant)
118              print("         seuil        : ", seuil)
119              print("         nb           : ", valTrouvee)
120              return True
121       return False
122