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