5 from .getStats import getGroupesRef
6 from .Type_Maille import dicoDimENtite
8 def getCritere(dim,NomMesh,acritere,theStudy):
10 from salome.smesh import smeshBuilder
11 smesh = smeshBuilder.New(theStudy)
13 # print dim,NomMesh,acritere
15 NumElt=NomMesh.GetElementsByType(SMESH.FACE)
17 NumElt=NomMesh.GetElementsByType(SMESH.VOLUME)
20 if acritere =="Ratio" :
21 for i in range(len(NumElt)):
22 critere.append (NomMesh.GetAspectRatio(NumElt[i]))
24 if acritere =="Length" :
25 for i in range(len(NumElt)):
26 critere.append (NomMesh.GetMaxElementLength(NumElt[i]))
28 crit= numpy.array(critere)
33 Q1=numpy.percentile(crit,25)
34 Q3=numpy.percentile(crit,75)
36 return [max,min,Q1,M,Q3,moyenne]
38 def getCritereGroupe(NomMesh,NomGr,acritere,theStudy):
40 from salome.smesh import smeshBuilder
41 smesh = smeshBuilder.New(theStudy)
44 # on ne traite que les mailles 2D et 3D
45 NumElt = NomGr.GetListOfID()
46 type_gr=NomMesh.GetElementGeomType(NumElt[0])
48 # print "critere",acritere
49 # print "type groupe",type_gr
50 # print dicoDimENtite[str(type_gr)]
52 if dicoDimENtite[str(type_gr)]==0 :
56 if acritere =="Ratio" :
57 for i in range(len(NumElt)):
58 critere.append (NomMesh.GetAspectRatio(NumElt[i]))
60 if acritere =="Length" :
61 for i in range(len(NumElt)):
62 critere.append (NomMesh.GetMaxElementLength(NumElt[i]))
64 crit= numpy.array(critere)
69 Q1=numpy.percentile(crit,25)
70 Q3=numpy.percentile(crit,75)
72 return [max,min,Q1,M,Q3,moyenne]
74 def getObjectsGroupe(Mesh,liste,theStudy):
76 from salome.smesh import smeshBuilder
78 lGroups=Mesh.GetGroups()
82 if name == n : dico[name]=g
85 def getStatsCritere(dim,Mesh,fichierMedResult,theStudy):
86 fichierStatRatio=fichierMedResult.replace('.med','.ratio')
87 max,min,Q1,M,Q3,moyenne = getCritere(dim,Mesh,"Ratio",theStudy)
88 f = open(fichierStatRatio, 'w')
89 f.write(str(max)+","+str(min)+","+str(Q1)+","+str(M)+","+str(Q3)+","+str(moyenne))
92 fichierStatRatio=fichierMedResult.replace('.med','.taille')
93 max,min,Q1,M,Q3,moyenne = getCritere(dim,Mesh,"Length",theStudy)
94 f = open(fichierStatRatio, 'w')
95 f.write(str(max)+","+str(min)+","+str(Q1)+","+str(M)+","+str(Q3)+","+str(moyenne))
98 liste=getGroupesRef(fichierMedResult)
99 dicoGroupe=getObjectsGroupe(Mesh,liste,theStudy)
100 for groupe in liste :
101 max,min,Q1,M,Q3,moyenne=getCritereGroupe(Mesh,dicoGroupe[groupe],"Ratio",theStudy)
102 extension="_"+groupe+'_Ratio.res'
103 fichier=fichierMedResult.replace('.med',extension)
104 f = open(fichier, 'w')
105 f.write(str(max)+","+str(min)+","+str(Q1)+","+str(M)+","+str(Q3)+","+str(moyenne))
107 max,min,Q1,M,Q3,moyenne=getCritereGroupe(Mesh,dicoGroupe[groupe],"Length",theStudy)
108 extension="_"+groupe+'_Taille.res'
109 fichier=fichierMedResult.replace('.med',extension)
110 f = open(fichier, 'w')
111 f.write(str(max)+","+str(min)+","+str(Q1)+","+str(M)+","+str(Q3)+","+str(moyenne))