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-2020  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
21 import sys, traceback
22 import logging
23 from blocFissure import gmu
24 from blocFissure.gmu import initLog
25
26 # -----------------------------------------------------------------------------------------------
27 #initLog.setDebug()
28 #initLog.setVerbose()
29 #initLog.setRelease()
30 #initLog.setPerfTests()
31
32 # ---tous les cas en séquence, ou les cas sélectionnés ...
33 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
34 #           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
35 runall = False
36 runall = True
37 if runall:
38   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]
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 else:
41   torunPB = list()
42   for iaux in torunOK:
43     torunPB.append((iaux+1)%2)
44   print ("torun = {} # OK".format(torunOK))
45   print ("torun = {} # PB".format(torunPB))
46   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, 0]
47 #           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
48 # -----------------------------------------------------------------------------------------------
49
50 from blocFissure.gmu import geomsmesh
51 from blocFissure.gmu.casStandard import casStandard
52
53 d_aux = dict()
54 problemes = list()
55
56 n_cas = 0
57 # matériel : cubeAngle
58 from blocFissure.CasTests.cubeAngle import cubeAngle
59 problemes.append(cubeAngle(n_cas))
60
61 n_cas = 1
62 # matériel : cubeAngle
63 from blocFissure.CasTests.cubeAngle2 import cubeAngle2
64 problemes.append(cubeAngle2(n_cas))
65
66 n_cas = 2
67 # matériel : cubeFin
68 from blocFissure.CasTests import cubeCoin
69 problemes.append(casStandard(cubeCoin.dicoParams, cubeCoin.referencesMaillageFissure, n_cas))
70 d_aux[n_cas] = "cubeCoin"
71
72 n_cas = 3
73 # matériel : cubeFin
74 from blocFissure.CasTests import cubeMilieu
75 problemes.append(casStandard(cubeMilieu.dicoParams, cubeMilieu.referencesMaillageFissure, n_cas))
76 d_aux[n_cas] = "cubeMilieu"
77
78 n_cas = 4
79 # matériel : cubeFin
80 from blocFissure.CasTests import cubeTransverse
81 problemes.append(casStandard(cubeTransverse.dicoParams, cubeTransverse.referencesMaillageFissure, n_cas))
82 d_aux[n_cas] = "cubeTransverse"
83
84 n_cas = 5
85 # matériel : decoupeCylindre
86 from blocFissure.CasTests.cylindre import cylindre
87 problemes.append(cylindre(n_cas))
88
89 n_cas = 6
90 # matériel : decoupeCylindre
91 from blocFissure.CasTests.cylindre_2 import cylindre_2
92 problemes.append(cylindre_2(n_cas))
93
94 n_cas = 7
95 # matériel : disque_perce
96 # matériel : ellipse_disque
97 from blocFissure.CasTests import disquePerce
98 problemes.append(casStandard(disquePerce.dicoParams, disquePerce.referencesMaillageFissure, n_cas))
99 d_aux[n_cas] = "disquePerce"
100
101 n_cas = 8
102 from blocFissure.CasTests.ellipse_1 import ellipse_1
103 problemes.append(ellipse_1(n_cas))
104
105 n_cas = 9
106 from blocFissure.CasTests.ellipse_2 import ellipse_2
107 problemes.append(ellipse_2(n_cas))
108
109 n_cas = 10
110 from blocFissure.CasTests.eprouvetteCourbe import eprouvetteCourbe
111 problemes.append(eprouvetteCourbe(n_cas))
112
113 n_cas = 11
114 from blocFissure.CasTests.eprouvetteDroite import eprouvetteDroite
115 problemes.append(eprouvetteDroite(n_cas))
116
117 n_cas = 12
118 from blocFissure.CasTests.eprouvetteDroite_2 import eprouvetteDroite_2
119 problemes.append(eprouvetteDroite_2(n_cas))
120
121 n_cas = 13
122 from blocFissure.CasTests.faceGauche import faceGauche
123 problemes.append(faceGauche(n_cas))
124
125 n_cas = 14
126 # matériel : fissureGauche2
127 from blocFissure.CasTests.faceGauche_2 import faceGauche_2
128 problemes.append(faceGauche_2(n_cas))
129 #"boiteDefaut" has not been computed:
130 #-  "algo3d_boiteDefaut" failed. Error: Algorithm failed. Presumably, the surface mesh is not compatible with the domain being processed (warning).
131 #An edge is unique (i.e., bounds a hole in the surface).
132 #The surface mesh includes at least one hole. The domain is not well defined.
133 #See /tmp/GHS3D_18605_10269264.log for more information
134 #Traceback (most recent call last):
135   #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>
136     #ok_maillage = cas.executeProbleme()
137   #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/fissureGenerique.py", line 122, in executeProbleme
138     #self.maillageFissureParams, elementsDefaut, step)
139   #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
140     #maillageFissureParams, elementsDefaut, step)
141   #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/construitFissureGenerale.py", line 330, in construitFissureGenerale
142     #raise Exception(text)
143 #Exception: Erreur au calcul du maillage.
144
145 n_cas = 15
146 from blocFissure.CasTests.fissureCoude_1 import fissureCoude_1
147 problemes.append(fissureCoude_1(n_cas))
148
149 n_cas = 16
150 from blocFissure.CasTests.fissureCoude_10 import fissureCoude_10
151 problemes.append(fissureCoude_10(n_cas))
152
153 n_cas = 17
154 from blocFissure.CasTests.fissureCoude_2 import fissureCoude_2
155 problemes.append(fissureCoude_2(n_cas))
156
157 n_cas = 18
158 from blocFissure.CasTests.fissureCoude_3 import fissureCoude_3
159 problemes.append(fissureCoude_3(n_cas))
160
161 n_cas = 19
162 from blocFissure.CasTests.fissureCoude_4 import fissureCoude_4
163 problemes.append(fissureCoude_4(n_cas))
164
165 n_cas = 20
166 from blocFissure.CasTests.fissureCoude_5 import fissureCoude_5
167 problemes.append(fissureCoude_5(n_cas))
168
169 n_cas = 21
170 from blocFissure.CasTests.fissureCoude_6 import fissureCoude_6
171 problemes.append(fissureCoude_6(n_cas))
172
173 n_cas = 22
174 from blocFissure.CasTests.fissureCoude_7 import fissureCoude_7
175 problemes.append(fissureCoude_7(n_cas))
176
177 n_cas = 23
178 # matériel : fissureGauche2
179 from blocFissure.CasTests.fissureCoude_8 import fissureCoude_8
180 problemes.append(fissureCoude_8(n_cas))
181
182 n_cas = 24
183 from blocFissure.CasTests.fissureCoude_9 import fissureCoude_9
184 problemes.append(fissureCoude_9(n_cas))
185
186 n_cas = 25
187 from blocFissure.CasTests.fissure_Coude import fissure_Coude
188 problemes.append(fissure_Coude(n_cas))
189
190 n_cas = 26
191 from blocFissure.CasTests.fissure_Coude_4 import fissure_Coude_4
192 problemes.append(fissure_Coude_4(n_cas))
193
194 n_cas = 27
195 from blocFissure.CasTests.vis_1 import vis_1
196 problemes.append(vis_1(n_cas))
197 #"Mesh_22" has not been computed:
198 #-  "algo2d_faceFiss" failed on FACE #2. Error: Algorithm failed. NgException at Surface meshing: Problem in Surface mesh generation
199 #-  "algo1d_edgeFissPeau" failed on EDGE #9. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
200 #Traceback (most recent call last):
201   #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>
202     #ok_maillage = cas.executeProbleme()
203   #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/fissureGenerique.py", line 122, in executeProbleme
204     #self.maillageFissureParams, elementsDefaut, step)
205   #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
206     #maillageFissureParams, elementsDefaut, step)
207   #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/construitFissureGenerale.py", line 282, in construitFissureGenerale
208     #meshPipeGroups, areteFaceFissure, rayonPipe, nbsegRad)
209   #File "/home/D68518/salome-dev/DEV_package/appli_DEV_package/lib/python3.6/site-packages/salome/blocFissure/gmu/mailleFacesFissure.py", line 69, in mailleFacesFissure
210     #raise Exception(text)
211 #Exception: Erreur au calcul du maillage.
212
213 n_cas = 28
214 from blocFissure.CasTests.tube import tube
215 problemes.append(tube(n_cas))
216 #"Mesh_13" has not been computed:
217 #-  "algo2d_facePeau_0" failed on "FACE_12 to mesh". Error: Algorithm failed. NgException at Surface meshing: Problem in Surface mesh generation
218 #-  "algo1d_cercle1_0" failed on EDGE #20. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
219 #-  "algo1d_cercle1_0" failed on EDGE #17. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
220 #-  "algo1d_cercle1_0" failed on EDGE #15. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
221 #-  "algo1d_cercle1_0" failed on EDGE #12. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
222
223 #=============================================================
224 while True:
225
226   if ( len(problemes) != len(torun) ):
227     texte  = "\nNombre de problèmes définis  : {}\n".format(len(problemes))
228     texte += "Longueur de la liste 'torun' : {}\n".format(len(torun))
229     texte += "\t==> Incohérence de programmation à corriger."
230     print (texte)
231     break
232
233   ligne = "---------------------------------------------------------------------"
234   texte = ""
235   nb_cas_ok = 0
236   nb_cas_nook = 0
237   for n_cas, cas in enumerate(problemes):
238     #print ("Cas n° {}, '{}'".format(n_cas,cas.nomProbleme))
239     if torun[n_cas]:
240       if n_cas in d_aux:
241         nom = d_aux[n_cas]
242       else:
243         nom = cas.nomProbleme
244       texte_a = "\n=== Exécution du cas n° {}, '{}'".format(n_cas,nom)
245       logging.critical(ligne+texte_a)
246       try:
247         ok_maillage = cas.executeProbleme()
248       except:
249         traceback.print_exc()
250         texte += "Problème avec le cas n° {}, '{}'\n".format(n_cas,nom)
251         ok_maillage = False
252       if ok_maillage:
253         nb_cas_ok += 1
254       else:
255         nb_cas_nook += 1
256       print(ligne)
257
258   nb_cas = nb_cas_nook + nb_cas_ok
259   if ( nb_cas > 1):
260     if nb_cas_nook:
261       texte += ". Nombre de cas_tests OK   : {}\n".format(nb_cas_ok)
262       texte += ". Nombre de cas_tests NOOK : {}\n".format(nb_cas_nook)
263     else:
264       texte += "Les {} tests se sont bien passés.\n".format(nb_cas)
265   print (texte+ligne)
266
267   break
268