# -*- coding: utf-8 -*-
-# Copyright (C) 2014-2020 EDF R&D
+# Copyright (C) 2014-2021 EDF R&D
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
import os
import logging
-import SMESH
-
def getStatsMaillageFissure(maillage, referencesMaillageFissure, maillageFissureParams):
- """
- TODO: a completer
- """
+ """"Statistiques maillage"""
+
logging.debug('start')
if 'nomRep' in maillageFissureParams:
text_2 = ""
ok_maillage = True
with open(fichierStatMaillageFissure, "w") as fic_stat :
+
+ # Le nombre de quadrangles ou d'hexaèdres doit être rigoureusement identique
for key in ('Entity_Quad_Quadrangle', 'Entity_Quad_Hexa'):
if d_resu[key] != referencesMaillageFissure[key]:
text = "Ecart"
logging.info(text)
fic_stat.write(text+"\n")
text_2 += " {} = {}, \\\n".format(key,d_resu[key])
+
+ # Le nombre de noeuds, d'arêtes, de triangles, de tétraèdres ou de pyramides peut varier du fait des algorithmes. On tolère 5% d'écart.
tolerance = 0.05
for key in ('Entity_Node', 'Entity_Quad_Edge', 'Entity_Quad_Triangle', 'Entity_Quad_Tetra', 'Entity_Quad_Pyramid', 'Entity_Quad_Penta'):
- if (d_resu[key] < (1.0 - tolerance)*referencesMaillageFissure[key]) \
- or (d_resu[key] > (1.0 + tolerance)*referencesMaillageFissure[key]):
- text = "Ecart"
+ if d_resu[key] == referencesMaillageFissure[key]:
+ text = "Valeur_OK"
+ elif (d_resu[key] < (1.0 - tolerance)*referencesMaillageFissure[key]) \
+ or (d_resu[key] > (1.0 + tolerance)*referencesMaillageFissure[key]):
+ text = "Ecart de plus de {}%".format(tolerance*100.)
ok_maillage = False
else:
- text = "Valeur_OK"
+ text = "Valeur_OK à moins de {}%".format(tolerance*100.)
text += ": {} reference: {} calcul: {}".format(key,referencesMaillageFissure[key],d_resu[key])
logging.info(text)
fic_stat.write(text+"\n")
text_2 += " {} = {}, \\\n".format(key,d_resu[key])
-# Résultats de référence pour intégration dans le python du cas pour une mise à jour
- with open(fichierNewRef, "w") as fic_info :
- fic_info.write(text_2[:-4]+" \\")
-
if ok_maillage:
- print ("Calcul cohérent avec la référence.")
+ text = "Calcul cohérent avec la référence."
else:
text = "Calcul différent de la référence.\n"
text += "Voir le fichier {}\n".format(fichierStatMaillageFissure)
text += "La nouvelle référence est disponible dans le fichier :\n{}\n".format(fichierNewRef)
text += "Il faut l'insérer pour créer le dictionnaire 'referencesMaillageFissure' dans le paramétrage du cas."
- print (text)
+# Résultats de référence pour intégration dans le python du cas pour une mise à jour
+ with open(fichierNewRef, "w") as fic_info :
+ fic_info.write(text_2[:-4]+" \\")
+
+ print (text)
return ok_maillage