X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FTools%2FblocFissure%2Fgmu%2FgetStatsMaillageFissure.py;h=0633c3040118aae78591274b430ad3fdeb79bf47;hp=709806be3e2211ee11b24b7bdfcd05833888c3fc;hb=6cdcd4fb150ef14b95d677a7a8942ae2cfd2ac86;hpb=18dc4f94b87b4d06d925f4bc78a3b86f9d7f152c diff --git a/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py b/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py index 709806be3..0633c3040 100644 --- a/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py +++ b/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py @@ -1,5 +1,5 @@ # -*- 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 @@ -21,13 +21,10 @@ import os import logging -import SMESH - def getStatsMaillageFissure(maillage, referencesMaillageFissure, maillageFissureParams): - """ - TODO: a completer - """ + """"Statistiques maillage""" + logging.debug('start') if 'nomRep' in maillageFissureParams: @@ -52,7 +49,9 @@ def getStatsMaillageFissure(maillage, referencesMaillageFissure, maillageFissure text_2 = "" ok_maillage = True with open(fichierStatMaillageFissure, "w") as fic_stat : - for key in ('Entity_Quad_Quadrangle', 'Entity_Quad_Hexa'): + + # Le nombre d'arêtes, de quadrangles ou d'hexaèdres doit être rigoureusement identique + for key in ('Entity_Quad_Edge', 'Entity_Quad_Quadrangle', 'Entity_Quad_Hexa'): if d_resu[key] != referencesMaillageFissure[key]: text = "Ecart" ok_maillage = False @@ -62,30 +61,34 @@ def getStatsMaillageFissure(maillage, referencesMaillageFissure, maillageFissure logging.info(text) fic_stat.write(text+"\n") text_2 += " {} = {}, \\\n".format(key,d_resu[key]) + + # Le nombre de noeuds, 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" + for key in ('Entity_Node', 'Entity_Quad_Triangle', 'Entity_Quad_Tetra', 'Entity_Quad_Pyramid', 'Entity_Quad_Penta'): + 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]) - if ok_maillage: - print ("Calcul cohérent avec la référence.") + text = "Calcul cohérent avec la référence." else: -# 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]+" \\") 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