Salome HOME
Merge branch 'master' into gni/evolution
[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 import logging
24 from blocFissure import gmu
25 from blocFissure.gmu import initLog
26 from blocFissure.gmu import geomsmesh
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, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 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, 1, 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 + fissureGauche2
60   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
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, 0, 1] # tube
62 #           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
63   TORUN = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0] # OK
64 # -----------------------------------------------------------------------------------------------
65
66 def caract_l_problemes ():
67   """Caractérisation des problèmes"""
68   d_aux = dict()
69   l_problemes = list()
70
71   n_cas = 0
72   # genereMateriel : cubeAngle
73   from blocFissure.CasTests.cubeAngle import cubeAngle
74   l_problemes.append(cubeAngle(n_cas))
75
76   n_cas = 1
77   # genereMateriel : cubeAngle
78   from blocFissure.CasTests.cubeAngle2 import cubeAngle2
79   l_problemes.append(cubeAngle2(n_cas))
80
81   n_cas = 2
82   # genereMateriel : cubeFin
83   from blocFissure.CasTests import cubeCoin
84   l_problemes.append(casStandard(cubeCoin.dicoParams, cubeCoin.referencesMaillageFissure, n_cas))
85   d_aux[n_cas] = "cubeCoin"
86
87   n_cas = 3
88   # genereMateriel : cubeFin
89   from blocFissure.CasTests import cubeMilieu
90   l_problemes.append(casStandard(cubeMilieu.dicoParams, cubeMilieu.referencesMaillageFissure, n_cas))
91   d_aux[n_cas] = "cubeMilieu"
92
93   n_cas = 4
94   # genereMateriel : cubeFin
95   from blocFissure.CasTests import cubeTransverse
96   l_problemes.append(casStandard(cubeTransverse.dicoParams, cubeTransverse.referencesMaillageFissure, n_cas))
97   d_aux[n_cas] = "cubeTransverse"
98
99   n_cas = 5
100   # genereMateriel : decoupeCylindre
101   from blocFissure.CasTests.cylindre import cylindre
102   l_problemes.append(cylindre(n_cas))
103
104   n_cas = 6
105   # genereMateriel : decoupeCylindre
106   from blocFissure.CasTests.cylindre_2 import cylindre_2
107   l_problemes.append(cylindre_2(n_cas))
108
109   n_cas = 7
110   # genereMateriel : disque_perce
111   # genereMateriel : ellipse_disque
112   from blocFissure.CasTests import disquePerce
113   l_problemes.append(casStandard(disquePerce.dicoParams, disquePerce.referencesMaillageFissure, n_cas))
114   d_aux[n_cas] = "disquePerce"
115
116   n_cas = 8
117   # genereMateriel: ellipse
118   # genereMateriel : fissureGauche2
119   from blocFissure.CasTests.ellipse_1 import ellipse_1
120   l_problemes.append(ellipse_1(n_cas))
121
122   n_cas = 9
123   # genereMateriel: ellipse_probleme
124   # genereMateriel : fissureGauche2
125   from blocFissure.CasTests.ellipse_2 import ellipse_2
126   l_problemes.append(ellipse_2(n_cas))
127
128   n_cas = 10
129   # genereMateriel : eprouvetteCourbe
130   from blocFissure.CasTests.eprouvetteCourbe import eprouvetteCourbe
131   l_problemes.append(eprouvetteCourbe(n_cas))
132
133   n_cas = 11
134   # genereMateriel : eprouvetteDroite
135   from blocFissure.CasTests.eprouvetteDroite import eprouvetteDroite
136   l_problemes.append(eprouvetteDroite(n_cas))
137
138   n_cas = 12
139   # genereMateriel : eprouvetteDroite
140   from blocFissure.CasTests.eprouvetteDroite_2 import eprouvetteDroite_2
141   l_problemes.append(eprouvetteDroite_2(n_cas))
142
143   n_cas = 13
144   # genereMateriel : fissureGauche
145   # genereMateriel : fissureGauche2
146   from blocFissure.CasTests.faceGauche import faceGauche
147   l_problemes.append(faceGauche(n_cas))
148
149   n_cas = 14
150   # genereMateriel : aucun
151   from blocFissure.CasTests.faceGauche_2 import faceGauche_2
152   l_problemes.append(faceGauche_2(n_cas))
153   #"boiteDefaut" has not been computed:
154   #-  "algo3d_boiteDefaut" failed. Error: Algorithm failed. Presumably, the surface mesh is not compatible with the domain being processed (warning).
155   #An edge is unique (i.e., bounds a hole in the surface).
156   #The surface mesh includes at least one hole. The domain is not well defined.
157   #See /tmp/GHS3D_18605_10269264.log for more information
158   #Traceback (most recent call last):
159     #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/CasTests/execution_Cas.py", line 222, in <module>
160       #ok_maillage = cas.executeProbleme()
161     #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/fissureGenerique.py", line 122, in executeProbleme
162       #self.maillageFissureParams, elementsDefaut, step)
163     #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/CasTests/faceGauche_2.py", line 108, in genereMaillageFissure
164       #maillageFissureParams, elementsDefaut, step)
165     #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/construitFissureGenerale.py", line 330, in construitFissureGenerale
166       #raise Exception(text)
167   #Exception: Erreur au calcul du maillage.
168
169   n_cas = 15
170   # genereMateriel : aucun
171   from blocFissure.CasTests.fissureCoude_1 import fissureCoude_1
172   l_problemes.append(fissureCoude_1(n_cas))
173
174   n_cas = 16
175   # genereMateriel : aucun
176   from blocFissure.CasTests.fissureCoude_2 import fissureCoude_2
177   l_problemes.append(fissureCoude_2(n_cas))
178
179   n_cas = 17
180   # genereMateriel : aucun
181   from blocFissure.CasTests.fissureCoude_3 import fissureCoude_3
182   l_problemes.append(fissureCoude_3(n_cas))
183
184   n_cas = 18
185   # genereMateriel : aucun
186   from blocFissure.CasTests.fissureCoude_4 import fissureCoude_4
187   l_problemes.append(fissureCoude_4(n_cas))
188
189   n_cas = 19
190   # genereMateriel : aucun
191   from blocFissure.CasTests.fissureCoude_5 import fissureCoude_5
192   l_problemes.append(fissureCoude_5(n_cas))
193
194   n_cas = 20
195   # genereMateriel : aucun
196   from blocFissure.CasTests.fissureCoude_6 import fissureCoude_6
197   l_problemes.append(fissureCoude_6(n_cas))
198
199   n_cas = 21
200   # genereMateriel : aucun
201   from blocFissure.CasTests.fissureCoude_7 import fissureCoude_7
202   l_problemes.append(fissureCoude_7(n_cas))
203
204   n_cas = 22
205   # genereMateriel : aucun
206   from blocFissure.CasTests.fissureCoude_8 import fissureCoude_8
207   l_problemes.append(fissureCoude_8(n_cas))
208
209   n_cas = 23
210   # genereMateriel : aucun
211   from blocFissure.CasTests.fissureCoude_9 import fissureCoude_9
212   l_problemes.append(fissureCoude_9(n_cas))
213
214   n_cas = 24
215   # genereMateriel : aucun
216   from blocFissure.CasTests.fissureCoude_10 import fissureCoude_10
217   l_problemes.append(fissureCoude_10(n_cas))
218
219   n_cas = 25
220   # genereMateriel : aucun
221   from blocFissure.CasTests.fissure_Coude import fissure_Coude
222   l_problemes.append(fissure_Coude(n_cas))
223
224   n_cas = 26
225   # genereMateriel : aucun
226   from blocFissure.CasTests.fissure_Coude_4 import fissure_Coude_4
227   l_problemes.append(fissure_Coude_4(n_cas))
228
229   n_cas = 27
230   # genereMateriel : vis
231   from blocFissure.CasTests.vis_1 import vis_1
232   l_problemes.append(vis_1(n_cas))
233   #"Mesh_22" has not been computed:
234   #-  "algo2d_faceFiss" failed on FACE #2. Error: Algorithm failed. NgException at Surface meshing: Problem in Surface mesh generation
235   #-  "algo1d_edgeFissPeau" failed on EDGE #9. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
236   #Traceback (most recent call last):
237     #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/CasTests/execution_Cas.py", line 233, in <module>
238       #ok_maillage = cas.executeProbleme()
239     #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/fissureGenerique.py", line 122, in executeProbleme
240       #self.maillageFissureParams, elementsDefaut, step)
241     #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/CasTests/vis_1.py", line 116, in genereMaillageFissure
242       #maillageFissureParams, elementsDefaut, step)
243     #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/construitFissureGenerale.py", line 282, in construitFissureGenerale
244       #meshPipeGroups, areteFaceFissure, rayonPipe, nbsegRad)
245     #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/mailleFacesFissure.py", line 69, in mailleFacesFissure
246       #raise Exception(text)
247   #Exception: Erreur au calcul du maillage.
248
249   n_cas = 28
250   # genereMateriel : tube
251   from blocFissure.CasTests.tube import tube
252   l_problemes.append(tube(n_cas))
253   #"Mesh_13" has not been computed:
254   #-  "algo2d_facePeau_0" failed on "FACE_12 to mesh". Error: Algorithm failed. NgException at Surface meshing: Problem in Surface mesh generation
255   #-  "algo1d_cercle1_0" failed on EDGE #20. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
256   #-  "algo1d_cercle1_0" failed on EDGE #17. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
257   #-  "algo1d_cercle1_0" failed on EDGE #15. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
258   #-  "algo1d_cercle1_0" failed on EDGE #12. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
259
260   return l_problemes, d_aux
261 #=============================================================
262 def calcul_cas (n_cas, cas, d_aux, ligne):
263   """Calcul d'un cas"""
264   texte = ""
265   if n_cas in d_aux:
266     nom = d_aux[n_cas]
267   else:
268     nom = cas.nomProbleme
269   texte_a = "\n=== Exécution du cas n° {}, '{}'".format(n_cas,nom)
270   logging.critical(ligne+texte_a)
271   try:
272     ok_maillage = cas.executeProbleme()
273   except:
274     traceback.print_exc()
275     texte = "Problème avec le cas n° {}, '{}'\n".format(n_cas,nom)
276     ok_maillage = False
277   print(ligne)
278   return ok_maillage, texte
279 #=============================================================
280 def calcul_tout (l_problemes, d_aux):
281   """Calcul de tous les cas"""
282
283   ligne = "---------------------------------------------------------------------"
284   texte = ""
285   nb_cas_ok = 0
286   nb_cas_nook = 0
287   for n_cas, cas in enumerate(l_problemes):
288     #print ("Cas n° {}, '{}'".format(n_cas,cas.nomProbleme))
289     if TORUN[n_cas]:
290       ok_maillage, texte_a = calcul_cas (n_cas, cas, d_aux, ligne)
291       texte += texte_a
292       if ok_maillage:
293         nb_cas_ok += 1
294       else:
295         nb_cas_nook += 1
296       print(ligne)
297
298   nb_cas = nb_cas_nook + nb_cas_ok
299   if ( nb_cas > 1):
300     if nb_cas_nook:
301       texte += ". Nombre de cas_tests OK   : {}\n".format(nb_cas_ok)
302       texte += ". Nombre de cas_tests NOOK : {}\n".format(nb_cas_nook)
303     else:
304       texte += "Les {} tests se sont bien passés.\n".format(nb_cas)
305   print (texte+ligne)
306
307   return
308 #=============================================================
309 #=============================================================
310
311 while True:
312
313   L_PROBLEMES, D_AUX = caract_l_problemes()
314
315   if ( len(L_PROBLEMES) != len(TORUN) ):
316     TEXTE  = "\nNombre de problèmes définis  : {}\n".format(len(L_PROBLEMES))
317     TEXTE += "Longueur de la liste 'TORUN' : {}\n".format(len(TORUN))
318     TEXTE += "\t==> Incohérence de programmation à corriger dans {}".format(__name__)
319     print (TEXTE)
320     break
321
322   calcul_tout (L_PROBLEMES, D_AUX)
323
324   break