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