2 # -*- coding: utf-8 -*-
6 from getStats import getGroupesRef
7 from Type_Maille import dicoDimENtite
9 def getCritere(dim,NomMesh,acritere,theStudy):
11 from salome.smesh import smeshBuilder
12 smesh = smeshBuilder.New(theStudy)
14 # print dim,NomMesh,acritere
16 NumElt=NomMesh.GetElementsByType(SMESH.FACE)
18 NumElt=NomMesh.GetElementsByType(SMESH.VOLUME)
21 if acritere =="Ratio" :
22 for i in range(len(NumElt)):
23 critere.append (NomMesh.GetAspectRatio(NumElt[i]))
25 if acritere =="Length" :
26 for i in range(len(NumElt)):
27 critere.append (NomMesh.GetMaxElementLength(NumElt[i]))
29 crit= numpy.array(critere)
34 Q1=numpy.percentile(crit,25)
35 Q3=numpy.percentile(crit,75)
37 return [max,min,Q1,M,Q3,moyenne]
39 def getCritereGroupe(NomMesh,NomGr,acritere,theStudy):
41 from salome.smesh import smeshBuilder
42 smesh = smeshBuilder.New(theStudy)
45 # on ne traite que les mailles 2D et 3D
46 NumElt = NomGr.GetListOfID()
47 type_gr=NomMesh.GetElementGeomType(NumElt[0])
49 # print "critere",acritere
50 # print "type groupe",type_gr
51 # print dicoDimENtite[str(type_gr)]
53 if dicoDimENtite[str(type_gr)]==0 :
57 if acritere =="Ratio" :
58 for i in range(len(NumElt)):
59 critere.append (NomMesh.GetAspectRatio(NumElt[i]))
61 if acritere =="Length" :
62 for i in range(len(NumElt)):
63 critere.append (NomMesh.GetMaxElementLength(NumElt[i]))
65 crit= numpy.array(critere)
70 Q1=numpy.percentile(crit,25)
71 Q3=numpy.percentile(crit,75)
73 return [max,min,Q1,M,Q3,moyenne]
75 def getObjectsGroupe(Mesh,liste,theStudy):
77 from salome.smesh import smeshBuilder
79 lGroups=Mesh.GetGroups()
83 if name == n : dico[name]=g
86 def getStatsCritere(dim,Mesh,fichierMedResult,theStudy):
87 fichierStatRatio=fichierMedResult.replace('.med','.ratio')
88 max,min,Q1,M,Q3,moyenne = getCritere(dim,Mesh,"Ratio",theStudy)
89 f = open(fichierStatRatio, 'w')
90 f.write(str(max)+","+str(min)+","+str(Q1)+","+str(M)+","+str(Q3)+","+str(moyenne))
93 fichierStatRatio=fichierMedResult.replace('.med','.taille')
94 max,min,Q1,M,Q3,moyenne = getCritere(dim,Mesh,"Length",theStudy)
95 f = open(fichierStatRatio, 'w')
96 f.write(str(max)+","+str(min)+","+str(Q1)+","+str(M)+","+str(Q3)+","+str(moyenne))
99 liste=getGroupesRef(fichierMedResult)
100 dicoGroupe=getObjectsGroupe(Mesh,liste,theStudy)
101 for groupe in liste :
102 max,min,Q1,M,Q3,moyenne=getCritereGroupe(Mesh,dicoGroupe[groupe],"Ratio",theStudy)
103 extension="_"+groupe+'_Ratio.res'
104 fichier=fichierMedResult.replace('.med',extension)
105 f = open(fichier, 'w')
106 f.write(str(max)+","+str(min)+","+str(Q1)+","+str(M)+","+str(Q3)+","+str(moyenne))
108 max,min,Q1,M,Q3,moyenne=getCritereGroupe(Mesh,dicoGroupe[groupe],"Length",theStudy)
109 extension="_"+groupe+'_Taille.res'
110 fichier=fichierMedResult.replace('.med',extension)
111 f = open(fichier, 'w')
112 f.write(str(max)+","+str(min)+","+str(Q1)+","+str(M)+","+str(Q3)+","+str(moyenne))