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 runall = True
34 if runall:
35   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]
36 else: #       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
37   torunOK = [ 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0]
38   torunPB = list()
39   for iaux in torunOK:
40     torunPB.append((iaux+1)%2)
41   print ("torun = {} # OK".format(torunOK))
42   print ("torun = {} # PB".format(torunPB))
43   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]
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 # -----------------------------------------------------------------------------------------------
46
47 from blocFissure.gmu import geomsmesh
48 from blocFissure.gmu.casStandard import casStandard
49
50 d_aux = dict()
51 problemes = list()
52
53 n_cas = 0
54 # matériel : cubeAngle
55 from blocFissure.CasTests.cubeAngle import cubeAngle
56 problemes.append(cubeAngle(n_cas))
57
58 n_cas += 1
59 # matériel : cubeAngle
60 from blocFissure.CasTests.cubeAngle2 import cubeAngle2
61 problemes.append(cubeAngle2(n_cas))
62
63 n_cas += 1
64 # matériel : cubeFin
65 from blocFissure.CasTests import cubeCoin
66 problemes.append(casStandard(cubeCoin.dicoParams, cubeCoin.referencesMaillageFissure, n_cas))
67 d_aux[n_cas] = "cubeCoin"
68
69 n_cas += 1
70 # matériel : cubeFin
71 from blocFissure.CasTests import cubeMilieu
72 problemes.append(casStandard(cubeMilieu.dicoParams, cubeMilieu.referencesMaillageFissure, n_cas))
73 d_aux[n_cas] = "cubeMilieu"
74
75 n_cas += 1
76 # matériel : cubeFin
77 from blocFissure.CasTests import cubeTransverse
78 problemes.append(casStandard(cubeTransverse.dicoParams, cubeTransverse.referencesMaillageFissure, n_cas))
79 d_aux[n_cas] = "cubeTransverse"
80
81 n_cas += 1
82 # matériel : decoupeCylindre
83 from blocFissure.CasTests.cylindre import cylindre
84 problemes.append(cylindre(n_cas))
85
86 n_cas += 1
87 # matériel : decoupeCylindre
88 from blocFissure.CasTests.cylindre_2 import cylindre_2
89 problemes.append(cylindre_2(n_cas))
90
91 n_cas += 1
92 # matériel : disque_perce
93 # matériel : ellipse_disque
94 from blocFissure.CasTests import disquePerce
95 problemes.append(casStandard(disquePerce.dicoParams, disquePerce.referencesMaillageFissure, n_cas))
96 d_aux[n_cas] = "disquePerce"
97 # mailleFacesFissure : Erreur au calcul du maillage
98 # "Source elements overlap one another" dans l'import du fonds de fissure
99
100 n_cas += 1
101 from blocFissure.CasTests.ellipse_1 import ellipse_1
102 problemes.append(ellipse_1(n_cas))
103
104 n_cas += 1
105 from blocFissure.CasTests.ellipse_2 import ellipse_2
106 problemes.append(ellipse_2(n_cas))
107
108 n_cas += 1
109 from blocFissure.CasTests.eprouvetteCourbe import eprouvetteCourbe
110 problemes.append(eprouvetteCourbe(n_cas))
111
112 n_cas += 1
113 from blocFissure.CasTests.eprouvetteDroite import eprouvetteDroite
114 problemes.append(eprouvetteDroite(n_cas))
115
116 n_cas += 1
117 from blocFissure.CasTests.eprouvetteDroite_2 import eprouvetteDroite_2
118 problemes.append(eprouvetteDroite_2(n_cas))
119
120 n_cas += 1
121 from blocFissure.CasTests.faceGauche import faceGauche
122 problemes.append(faceGauche(n_cas))
123
124 n_cas += 1
125 # matériel : fissureGauche2
126 from blocFissure.CasTests.faceGauche_2 import faceGauche_2
127 problemes.append(faceGauche_2(n_cas))
128 # mailleFacesFissure : Erreur au calcul du maillage
129 # "Source elements don't cover totally the geometrical edge" dans l'import du fonds de fissure
130
131 n_cas += 1
132 from blocFissure.CasTests.fissureCoude_1 import fissureCoude_1
133 problemes.append(fissureCoude_1(n_cas))
134
135 n_cas += 1
136 from blocFissure.CasTests.fissureCoude_10 import fissureCoude_10
137 problemes.append(fissureCoude_10(n_cas))
138 # Erreur au calcul du maillage
139 # "Source elements overlap one another" dans l'import du fonds de fissure
140
141 n_cas += 1
142 from blocFissure.CasTests.fissureCoude_2 import fissureCoude_2
143 problemes.append(fissureCoude_2(n_cas))
144
145 n_cas += 1
146 from blocFissure.CasTests.fissureCoude_3 import fissureCoude_3
147 problemes.append(fissureCoude_3(n_cas))
148
149 n_cas += 1
150 from blocFissure.CasTests.fissureCoude_4 import fissureCoude_4
151 problemes.append(fissureCoude_4(n_cas))
152
153 n_cas += 1
154 from blocFissure.CasTests.fissureCoude_5 import fissureCoude_5
155 problemes.append(fissureCoude_5(n_cas))
156
157 n_cas += 1
158 from blocFissure.CasTests.fissureCoude_6 import fissureCoude_6
159 problemes.append(fissureCoude_6(n_cas))
160
161 n_cas += 1
162 from blocFissure.CasTests.fissureCoude_7 import fissureCoude_7
163 problemes.append(fissureCoude_7(n_cas))
164
165 n_cas += 1
166 # matériel : fissureGauche2
167 from blocFissure.CasTests.fissureCoude_8 import fissureCoude_8
168 problemes.append(fissureCoude_8(n_cas))
169 # mailleFacesFissure : Erreur au calcul du maillage
170 # "Source elements overlap one another" dans l'import du fonds de fissure
171
172 n_cas += 1
173 from blocFissure.CasTests.fissureCoude_9 import fissureCoude_9
174 problemes.append(fissureCoude_9(n_cas))
175
176 n_cas += 1
177 from blocFissure.CasTests.fissure_Coude import fissure_Coude
178 problemes.append(fissure_Coude(n_cas))
179 # mailleFacesFissure : Erreur au calcul du maillage
180 # "Source elements overlap one another" dans l'import du fonds de fissure
181
182 n_cas += 1
183 from blocFissure.CasTests.fissure_Coude_4 import fissure_Coude_4
184 problemes.append(fissure_Coude_4(n_cas))
185
186 n_cas += 1
187 from blocFissure.CasTests.vis_1 import vis_1
188 problemes.append(vis_1(n_cas))
189 # restreintFaceFissure : Restriction de la face de fissure au domaine solide impossible
190
191 n_cas += 1
192 from blocFissure.CasTests.tube import tube
193 problemes.append(tube(n_cas))
194 # restreintFaceFissure : Restriction de la face de fissure au domaine solide impossible
195
196 #=============================================================
197 while True:
198
199   if ( len(problemes) != len(torun) ):
200     texte  = "\nNombre de problèmes définis  : {}\n".format(len(problemes))
201     texte += "Longueur de la liste 'torun' : {}\n".format(len(torun))
202     texte += "\t==> Incohérence de programmation à corriger."
203     print (texte)
204     break
205
206   ligne = "---------------------------------------------------------------------"
207   texte = ""
208   nb_cas_ok = 0
209   nb_cas_nook = 0
210   for n_cas, cas in enumerate(problemes):
211     #print ("Cas n° {}, '{}'".format(n_cas,cas.nomProbleme))
212     if torun[n_cas]:
213       if n_cas in d_aux:
214         nom = d_aux[n_cas]
215       else:
216         nom = cas.nomProbleme
217       texte_a = "\n=== Exécution du cas n° {}, '{}'".format(n_cas,nom)
218       logging.critical(ligne+texte_a)
219       try:
220         ok_maillage = cas.executeProbleme()
221       except:
222         traceback.print_exc()
223         texte += "Problème avec le cas n° {}, '{}'\n".format(n_cas,nom)
224         ok_maillage = False
225       if ok_maillage:
226         nb_cas_ok += 1
227       else:
228         nb_cas_nook += 1
229       print(ligne)
230
231   nb_cas = nb_cas_nook + nb_cas_ok
232   if ( nb_cas > 1):
233     if nb_cas_nook:
234       texte += ". Nombre de cas_tests OK   : {}\n".format(nb_cas_ok)
235       texte += ". Nombre de cas_tests NOOK : {}\n".format(nb_cas_nook)
236     else:
237       texte += "Les {} tests se sont bien passés.\n".format(nb_cas)
238   print (texte+ligne)
239
240   break
241