Salome HOME
7049af67a4c853c1ebaa4e76f6a6159aaf9e4a97
[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, 0, 0, 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, 0, 0, 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 #"Mesh_366" has not been computed:
224 #-  global 1D algorithm is missing
225   #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
226     #ok_maillage = cas.executeProbleme()
227   #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/fissureGenerique.py", line 137, in executeProbleme
228     #elementsDefaut, step, mailleur)
229   #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
230     #step, mailleur)
231   #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/insereFissureLongue.py", line 435, in insereFissureLongue
232     #mailleur )
233   #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
234     #raise Exception(text)
235
236   n_cas = 26
237   # genereMateriel : aucun
238   from blocFissure.CasTests.fissure_Coude_4 import fissure_Coude_4
239   l_problemes.append(fissure_Coude_4(n_cas))
240 #"Mesh_375" has not been computed:
241 #-  global 1D algorithm is missing
242   #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
243     #ok_maillage = cas.executeProbleme()
244   #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/fissureGenerique.py", line 137, in executeProbleme
245     #elementsDefaut, step, mailleur)
246   #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
247     #step, mailleur)
248   #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/insereFissureLongue.py", line 435, in insereFissureLongue
249     #mailleur )
250   #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
251     #raise Exception(text)
252
253   n_cas = 27
254   # genereMateriel : vis
255   from blocFissure.CasTests.vis_1 import vis_1
256   l_problemes.append(vis_1(n_cas))
257   #"Mesh_22" has not been computed:
258   #-  "algo2d_faceFiss" failed on FACE #2. Error: Algorithm failed. NgException at Surface meshing: Problem in Surface mesh generation
259   #-  "algo1d_edgeFissPeau" failed on EDGE #9. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
260   #Traceback (most recent call last):
261     #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>
262       #ok_maillage = cas.executeProbleme()
263     #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/fissureGenerique.py", line 122, in executeProbleme
264       #self.maillageFissureParams, elementsDefaut, step)
265     #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
266       #maillageFissureParams, elementsDefaut, step)
267     #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/construitFissureGenerale.py", line 282, in construitFissureGenerale
268       #meshPipeGroups, areteFaceFissure, rayonPipe, nbsegRad)
269     #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/mailleFacesFissure.py", line 69, in mailleFacesFissure
270       #raise Exception(text)
271   #Exception: Erreur au calcul du maillage.
272
273   n_cas = 28
274   # genereMateriel : tube
275   from blocFissure.CasTests.tube import tube
276   l_problemes.append(tube(n_cas))
277   #"Mesh_13" has not been computed:
278   #-  "algo2d_facePeau_0" failed on "FACE_12 to mesh". Error: Algorithm failed. NgException at Surface meshing: Problem in Surface mesh generation
279   #-  "algo1d_cercle1_0" failed on EDGE #20. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
280   #-  "algo1d_cercle1_0" failed on EDGE #17. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
281   #-  "algo1d_cercle1_0" failed on EDGE #15. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
282   #-  "algo1d_cercle1_0" failed on EDGE #12. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
283
284   return l_problemes, d_aux
285 #=============================================================
286 def calcul_cas (n_cas, cas, d_aux, ligne):
287   """Calcul d'un cas"""
288   texte = ""
289   if n_cas in d_aux:
290     nom = d_aux[n_cas]
291   else:
292     nom = cas.nomProbleme
293   texte_a = "\n=== Exécution du cas n° {}, '{}'".format(n_cas,nom)
294   logging.critical(ligne+texte_a)
295   try:
296     ok_maillage = cas.executeProbleme()
297   except:
298     traceback.print_exc()
299     texte = "Problème avec le cas n° {}, '{}'\n".format(n_cas,nom)
300     ok_maillage = False
301   print(ligne)
302   return ok_maillage, texte
303 #=============================================================
304 def calcul_tout (l_problemes, d_aux):
305   """Calcul de tous les cas"""
306
307   ligne = "---------------------------------------------------------------------"
308   texte = ""
309   nb_cas_ok = 0
310   nb_cas_nook = 0
311   for n_cas, cas in enumerate(l_problemes):
312     #print ("Cas n° {}, '{}'".format(n_cas,cas.nomProbleme))
313     if TORUN[n_cas]:
314       ok_maillage, texte_a = calcul_cas (n_cas, cas, d_aux, ligne)
315       texte += texte_a
316       if ok_maillage:
317         nb_cas_ok += 1
318       else:
319         nb_cas_nook += 1
320       print(ligne)
321
322   nb_cas = nb_cas_nook + nb_cas_ok
323   if ( nb_cas > 1):
324     if nb_cas_nook:
325       texte += ". Nombre de cas_tests OK   : {}\n".format(nb_cas_ok)
326       texte += ". Nombre de cas_tests NOOK : {}\n".format(nb_cas_nook)
327     else:
328       texte += "Les {} tests se sont bien passés.\n".format(nb_cas)
329   print (texte+ligne)
330
331   return
332 #=============================================================
333 #=============================================================
334
335 while True:
336
337   L_PROBLEMES, D_AUX = caract_l_problemes()
338
339   if ( len(L_PROBLEMES) != len(TORUN) ):
340     TEXTE  = "\nNombre de problèmes définis  : {}\n".format(len(L_PROBLEMES))
341     TEXTE += "Longueur de la liste 'TORUN' : {}\n".format(len(TORUN))
342     TEXTE += "\t==> Incohérence de programmation à corriger dans {}".format(__name__)
343     print (TEXTE)
344     break
345
346   calcul_tout (L_PROBLEMES, D_AUX)
347
348   break