Salome HOME
Merge tag 'V8_3_0a2' into ngr/python3_dev
[modules/smesh.git] / src / Tools / blocFissure / gmu / getStatsMaillageFissure.py
1 # -*- coding: utf-8 -*-
2
3 import logging
4 import SMESH
5
6 # -----------------------------------------------------------------------------
7 # --- statistiques maillage
8
9 def getStatsMaillageFissure(maillage, referencesMaillageFissure, maillageFissureParams):
10   """
11   TODO: a completer
12   """
13   logging.debug('start')
14
15   nomRep = '.'
16   if 'nomRep' in maillageFissureParams:
17     nomRep = maillageFissureParams['nomRep']
18   
19   nomFicFissure     = maillageFissureParams['nomFicFissure']
20   fichierStatMaillageFissure = nomRep + '/' + nomFicFissure + '.res'
21   fichierNewRef = nomRep + '/' + nomFicFissure + '.new'
22   logging.debug("fichierStatMaillageFissure=%s", fichierStatMaillageFissure)
23
24   OK = False
25   if maillage is not None:
26     mesures = maillage.GetMeshInfo()
27     d= {}
28     for key, value in mesures.items():
29       logging.debug( "key: %s value: %s", key, value)
30       d[str(key)] = value
31     logging.debug("dico mesures %s", d)      
32
33     f = open(fichierStatMaillageFissure, 'w')
34     f2 = open(fichierNewRef, 'w')
35     OK = True
36     for key in ('Entity_Quad_Pyramid', 'Entity_Quad_Hexa', 'Entity_Quad_Quadrangle'):
37       if d[key] != referencesMaillageFissure[key]:
38         logging.info("Ecart: %s reference: %s calcul: %s", key, referencesMaillageFissure[key], d[key])
39         f.write("Ecart: " + key + " reference: " + str(referencesMaillageFissure[key]) + " calcul: " + str(d[key]) + '\n')
40         OK = False
41       else:
42         logging.info("Valeur_OK: %s reference: %s calcul: %s", key, referencesMaillageFissure[key], d[key])
43         f.write("Valeur_OK: " + key + " reference: " + str(referencesMaillageFissure[key]) + " calcul: " + str(d[key]) + '\n')
44       f2.write(key + " = " + str(d[key]) + ",\n")
45     tolerance = 0.05
46     for key in ('Entity_Quad_Penta', 'Entity_Quad_Tetra', 'Entity_Quad_Triangle', 'Entity_Quad_Edge', 'Entity_Node'):
47       if (d[key] < (1.0 - tolerance)*referencesMaillageFissure[key]) \
48       or (d[key] > (1.0 + tolerance)*referencesMaillageFissure[key]):
49         logging.info("Ecart: %s reference: %s calcul: %s", key, referencesMaillageFissure[key], d[key])
50         f.write("Ecart: " + key + " reference: " + str(referencesMaillageFissure[key]) + " calcul: " + str(d[key]) + '\n')
51         OK = False
52       else:
53         logging.info("Valeur_OK: %s reference: %s calcul: %s", key, referencesMaillageFissure[key], d[key])
54         f.write("Valeur_OK: " + key + " reference: " + str(referencesMaillageFissure[key]) + " calcul: " + str(d[key]) + '\n')
55       f2.write(key + " = " + str(d[key]) + ",\n")
56     f.close()
57     f2.close()
58   return OK