Salome HOME
3ca435e59bd2dbb2203742bcfb149f62d9717c92
[modules/smesh.git] / src / Tools / blocFissure / CasTests / execution_Cas.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2014-2021  EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20 """Lancement des cas-tests de blocFissure"""
21
22 import traceback
23
24 import logging
25
26 from blocFissure import gmu
27 from blocFissure.gmu import initLog
28 from blocFissure.gmu import geomsmesh
29 from blocFissure.gmu.casStandard import casStandard
30
31 # -----------------------------------------------------------------------------------------------
32 #initLog.setDebug()
33 #initLog.setVerbose()
34 #initLog.setRelease()
35 #initLog.setPerfTests()
36
37 # ---tous les cas en séquence, ou les cas sélectionnés ...
38 TORUNOK = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0] # OK
39 #           0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
40 #RUNALL = False
41 RUNALL = True
42 if RUNALL:
43   TORUN =   [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
44 #             0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
45 else:
46   TORUNPB = list()
47   for IAUX in TORUNOK:
48     TORUNPB.append((IAUX+1)%2)
49   print ("TORUN = {} # OK".format(TORUNOK))
50   print ("TORUN = {} # PB".format(TORUNPB))
51 #                                                                                                    genereMateriel
52   TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0] # aucun
53   TORUN = [ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # cubeAngle
54   TORUN = [ 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # cubeFin
55   TORUN = [ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # decoupeCylindre
56   TORUN = [ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # disque_perce + ellipse_disque
57   TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # ellipse + fissureGauche2
58   TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # ellipse_probleme + fissureGauche2
59   TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # eprouvetteCourbe
60   TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # eprouvetteDroite
61   TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # fissureGauche
62   TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # fissureGauche2 fissureGauche2
63   TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0] # vis
64   TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] # tube
65 #           0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
66   TORUN = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0] #  OK
67 # -----------------------------------------------------------------------------------------------
68
69 def caract_l_problemes ():
70   """Caractérisation des problèmes"""
71   d_aux = dict()
72   l_problemes = list()
73
74   n_cas = 0
75   # genereMateriel : cubeAngle
76   from blocFissure.CasTests.cubeAngle import cubeAngle
77   l_problemes.append(cubeAngle(n_cas))
78
79   n_cas = 1
80   # genereMateriel : cubeAngle
81   from blocFissure.CasTests.cubeAngle2 import cubeAngle2
82   l_problemes.append(cubeAngle2(n_cas))
83
84   n_cas = 2
85   # genereMateriel : cubeFin
86   from blocFissure.CasTests import cubeCoin
87   l_problemes.append(casStandard(cubeCoin.dicoParams, cubeCoin.referencesMaillageFissure, n_cas))
88   d_aux[n_cas] = "cubeCoin"
89
90   n_cas = 3
91   # genereMateriel : cubeFin
92   from blocFissure.CasTests import cubeMilieu
93   l_problemes.append(casStandard(cubeMilieu.dicoParams, cubeMilieu.referencesMaillageFissure, n_cas))
94   d_aux[n_cas] = "cubeMilieu"
95
96   n_cas = 4
97   # genereMateriel : cubeFin
98   from blocFissure.CasTests import cubeTransverse
99   l_problemes.append(casStandard(cubeTransverse.dicoParams, cubeTransverse.referencesMaillageFissure, n_cas))
100   d_aux[n_cas] = "cubeTransverse"
101
102   n_cas = 5
103   # genereMateriel : decoupeCylindre
104   from blocFissure.CasTests.cylindre import cylindre
105   l_problemes.append(cylindre(n_cas))
106
107   n_cas = 6
108   # genereMateriel : decoupeCylindre
109   from blocFissure.CasTests.cylindre_2 import cylindre_2
110   l_problemes.append(cylindre_2(n_cas))
111
112   n_cas = 7
113   # genereMateriel : disque_perce
114   # genereMateriel : ellipse_disque
115   from blocFissure.CasTests import disquePerce
116   l_problemes.append(casStandard(disquePerce.dicoParams, disquePerce.referencesMaillageFissure, n_cas))
117   d_aux[n_cas] = "disquePerce"
118
119   n_cas = 8
120   # genereMateriel: ellipse
121   # genereMateriel : fissureGauche2
122   from blocFissure.CasTests.ellipse_1 import ellipse_1
123   l_problemes.append(ellipse_1(n_cas))
124
125   n_cas = 9
126   # genereMateriel: ellipse_probleme
127   # genereMateriel : fissureGauche2
128   from blocFissure.CasTests.ellipse_2 import ellipse_2
129   l_problemes.append(ellipse_2(n_cas))
130
131   n_cas = 10
132   # genereMateriel : eprouvetteCourbe
133   from blocFissure.CasTests.eprouvetteCourbe import eprouvetteCourbe
134   l_problemes.append(eprouvetteCourbe(n_cas))
135
136   n_cas = 11
137   # genereMateriel : eprouvetteDroite
138   from blocFissure.CasTests.eprouvetteDroite import eprouvetteDroite
139   l_problemes.append(eprouvetteDroite(n_cas))
140
141   n_cas = 12
142   # genereMateriel : eprouvetteDroite
143   from blocFissure.CasTests.eprouvetteDroite_2 import eprouvetteDroite_2
144   l_problemes.append(eprouvetteDroite_2(n_cas))
145
146   n_cas = 13
147   # genereMateriel : fissureGauche
148   from blocFissure.CasTests.faceGauche import faceGauche
149   l_problemes.append(faceGauche(n_cas))
150
151   n_cas = 14
152   # genereMateriel : fissureGauche2
153   from blocFissure.CasTests.faceGauche_2 import faceGauche_2
154   l_problemes.append(faceGauche_2(n_cas))
155
156   n_cas = 15
157   # genereMateriel : aucun
158   from blocFissure.CasTests.fissureCoude_1 import fissureCoude_1
159   l_problemes.append(fissureCoude_1(n_cas))
160
161   n_cas = 16
162   # genereMateriel : aucun
163   from blocFissure.CasTests.fissureCoude_2 import fissureCoude_2
164   l_problemes.append(fissureCoude_2(n_cas))
165
166   n_cas = 17
167   # genereMateriel : aucun
168   from blocFissure.CasTests.fissureCoude_3 import fissureCoude_3
169   l_problemes.append(fissureCoude_3(n_cas))
170
171   n_cas = 18
172   # genereMateriel : aucun
173   from blocFissure.CasTests.fissureCoude_4 import fissureCoude_4
174   l_problemes.append(fissureCoude_4(n_cas))
175
176   n_cas = 19
177   # genereMateriel : aucun
178   from blocFissure.CasTests.fissureCoude_5 import fissureCoude_5
179   l_problemes.append(fissureCoude_5(n_cas))
180
181   n_cas = 20
182   # genereMateriel : aucun
183   from blocFissure.CasTests.fissureCoude_6 import fissureCoude_6
184   l_problemes.append(fissureCoude_6(n_cas))
185
186   n_cas = 21
187   # genereMateriel : aucun
188   from blocFissure.CasTests.fissureCoude_7 import fissureCoude_7
189   l_problemes.append(fissureCoude_7(n_cas))
190
191   n_cas = 22
192   # genereMateriel : aucun
193   from blocFissure.CasTests.fissureCoude_8 import fissureCoude_8
194   l_problemes.append(fissureCoude_8(n_cas))
195
196   n_cas = 23
197   # genereMateriel : aucun
198   from blocFissure.CasTests.fissureCoude_9 import fissureCoude_9
199   l_problemes.append(fissureCoude_9(n_cas))
200
201   n_cas = 24
202   # genereMateriel : aucun
203   from blocFissure.CasTests.fissureCoude_10 import fissureCoude_10
204   l_problemes.append(fissureCoude_10(n_cas))
205
206   n_cas = 25
207   # genereMateriel : aucun
208   from blocFissure.CasTests.fissure_Coude import fissure_Coude
209   l_problemes.append(fissure_Coude(n_cas))
210
211   n_cas = 26
212   # genereMateriel : aucun
213   from blocFissure.CasTests.fissure_Coude_4 import fissure_Coude_4
214   l_problemes.append(fissure_Coude_4(n_cas))
215
216   n_cas = 27
217   # genereMateriel : vis
218   from blocFissure.CasTests.vis_1 import vis_1
219   l_problemes.append(vis_1(n_cas))
220
221   n_cas = 28
222   # genereMateriel : tube
223   from blocFissure.CasTests.tube import tube
224   l_problemes.append(tube(n_cas))
225   #"Mesh_13" has not been computed:
226   #-  "algo2d_facePeau_0" failed on "FACE_12 to mesh". Error: Algorithm failed. NgException at Surface meshing: Problem in Surface mesh generation
227   #-  "algo1d_cercle1_0" failed on EDGE #20. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
228   #-  "algo1d_cercle1_0" failed on EDGE #17. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
229   #-  "algo1d_cercle1_0" failed on EDGE #15. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
230   #-  "algo1d_cercle1_0" failed on EDGE #12. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
231
232   return l_problemes, d_aux
233 #=============================================================
234 def calcul_cas (n_cas, cas, d_aux, ligne):
235   """Calcul d'un cas"""
236   texte = ""
237   if n_cas in d_aux:
238     nom = d_aux[n_cas]
239   else:
240     nom = cas.nomProbleme
241   texte_a = "\n=== Exécution du cas n° {}, '{}'".format(n_cas,nom)
242   logging.critical(ligne+texte_a)
243   try:
244     ok_maillage = cas.executeProbleme()
245   except:
246     traceback.print_exc()
247     texte = "Problème avec le cas n° {}, '{}'\n".format(n_cas,nom)
248     ok_maillage = False
249   print(ligne)
250   return ok_maillage, texte
251 #=============================================================
252 def calcul_tout (l_problemes, d_aux):
253   """Calcul de tous les cas"""
254
255   ligne = "---------------------------------------------------------------------"
256   texte = ""
257   nb_cas_ok = 0
258   nb_cas_nook = 0
259   for n_cas, cas in enumerate(l_problemes):
260     #print ("Cas n° {}, '{}'".format(n_cas,cas.nomProbleme))
261     if TORUN[n_cas]:
262       ok_maillage, texte_a = calcul_cas (n_cas, cas, d_aux, ligne)
263       texte += texte_a
264       if ok_maillage:
265         nb_cas_ok += 1
266       else:
267         nb_cas_nook += 1
268       print(ligne)
269
270   nb_cas = nb_cas_nook + nb_cas_ok
271   if ( nb_cas > 1):
272     if nb_cas_nook:
273       texte += ". Nombre de cas_tests OK   : {}\n".format(nb_cas_ok)
274       texte += ". Nombre de cas_tests NOOK : {}\n".format(nb_cas_nook)
275     else:
276       texte += "Les {} tests se sont bien passés.\n".format(nb_cas)
277   print (texte+ligne)
278
279   return
280 #=============================================================
281 #=============================================================
282
283 while True:
284
285   L_PROBLEMES, D_AUX = caract_l_problemes()
286
287   if ( len(L_PROBLEMES) != len(TORUN) ):
288     TEXTE  = "\nNombre de problèmes définis  : {}\n".format(len(L_PROBLEMES))
289     TEXTE += "Longueur de la liste 'TORUN' : {}\n".format(len(TORUN))
290     TEXTE += "\t==> Incohérence de programmation à corriger dans {}".format(__name__)
291     print (TEXTE)
292     break
293
294   calcul_tout (L_PROBLEMES, D_AUX)
295
296   break