2 # -*- coding: utf-8 -*-
3 """Tests des adaptations par MGAdapt en TUI
10 __revision__ = "V04.01"
12 #========================= Les imports - Début ===================================
20 from salome.smesh import smeshBuilder
21 smesh = smeshBuilder.New()
23 #========================== Les imports - Fin ====================================
25 #========================= Paramétrage - Début ===================================
26 # 1. REPDATA = répertoire du cas
27 HOME = os.environ["HOME"]
28 REPDATA = os.path.join(HOME, "MAILLAGE", "TEST_REMAILLAGE", "MGAdapt_med_files")
29 PATH_SMESH = os.getenv("SMESH_ROOT_DIR")
31 PATH_SMESH = os.getenv("TEST_INSTALL_DIRECTORY")
33 REPDATA = os.path.join(PATH_SMESH, "MGAdapt_med_files")
36 # 2. Repérage des données
48 #========================== Paramétrage - Fin ====================================
50 class MGAdaptTest (object):
52 """Test de l'adaptation par MGAdapt
56 Le(s) nom du/des tests à passer. Si aucun n'est donné, tous les cas sont passés.
64 affiche_aide_globale = 0
73 #=========================== Début de la méthode =================================
75 def __init__ ( self, liste_option ):
77 """Le constructeur de la classe MGAdaptTest"""
81 for option in liste_option :
86 if saux in ( "-H", "-HELP" ):
87 self.affiche_aide_globale = 1
90 elif saux == "-VMAX" :
94 self.l_cas.append(option)
97 for cle in D_DATA.keys():
98 self.l_cas.append(cle)
101 if self._verbose_max:
102 print ("Liste des cas : {}".format(self.l_cas))
104 #=========================== Fin de la méthode ==================================
106 #=========================== Début de la méthode =================================
109 """A la suppression de l'instance de classe"""
110 if self._verbose_max:
111 print ("Suppression de l'instance de la classe.")
113 #=========================== Fin de la méthode ==================================
115 #=========================== Début de la méthode =================================
117 def _add_file_in (self, objet_adapt):
118 """Ajout du fichier med d'entrée
121 :objet_adapt: l'objet du module
123 if self._verbose_max:
124 print ("_add_file_in pour {}".format(self.nro_cas))
126 ficmed = os.path.join (REPDATA, "test_{}.med".format(D_DATA[self.nro_cas]))
127 if self._verbose_max:
128 print ("Fichier {}".format(ficmed))
129 if not os.path.isfile(ficmed):
131 message = "Le fichier {} est inconnu.".format(ficmed)
133 objet_adapt.setMEDFileIn(ficmed)
137 return erreur, message
139 #=========================== Fin de la méthode ==================================
141 #=========================== Début de la méthode =================================
143 def _add_file_out (self, objet_adapt):
144 """Ajout du fichier de sortie
147 :objet_adapt: l'objet du module
149 if self._verbose_max:
150 print ("_add_file_out pour {}".format(self.nro_cas))
152 ficmed = os.path.join (REPDATA, "test_{}.adapt.tui.med".format(self.nro_cas))
153 if os.path.isfile(ficmed):
156 objet_adapt.setMEDFileOut(ficmed)
159 print (". Maillage adapté dans le fichier {}".format(ficmed))
163 #=========================== Fin de la méthode ==================================
165 #=========================== Début de la méthode =================================
167 def _add_file_bkg (self, objet_adapt):
168 """Ajout du fichier med de fond
171 :objet_adapt: l'objet du module
173 if self._verbose_max:
174 print ("_add_file_bkg pour {}".format(self.nro_cas))
176 ficmed = os.path.join (REPDATA, "test_{}_bg.med".format(D_DATA[self.nro_cas]))
177 if self._verbose_max:
178 print ("Fichier {}".format(ficmed))
179 if not os.path.isfile(ficmed):
181 message = "Le fichier {} est inconnu.".format(ficmed)
183 objet_adapt.setMEDFileBackground(ficmed)
187 return erreur, message
189 #=========================== Fin de la méthode ==================================
191 #=========================== Début de la méthode =================================
193 def _hypo_creation (self, maptype, option, niveau=3):
194 """Création d'une hypothèse
197 :maptype: type de carte : "Local", "Background", "Constant"
198 :option: nom du champ si "Local" ou "Background", valeur si "Constant"
199 :niveau: niveau de verbosité
202 :hypo: l'objet hypothèse
204 if self._verbose_max:
205 print ("_hypo_creation pour {} avec {}".format(maptype,option))
212 #--- Création de l'hypothèse ---
213 hypo = smesh.CreateAdaptationHypothesis()
216 if ( maptype in ("Local", "Background", "Constant") ):
217 hypo.setSizeMapType(maptype)
219 message = "Le type de carte {} est inconnu.".format(maptype)
224 if ( maptype in ("Local", "Background") ):
225 hypo.setSizeMapFieldName(option)
227 hypo.setConstantSize(option)
230 self._hypo_verbose (hypo, niveau)
234 return erreur, message, hypo
235 #=========================== Fin de la méthode ==================================
237 #=========================== Début de la méthode =================================
239 def _hypo_verbose (self, hypo, niveau=10):
240 """Débogage des hypothèses
243 :niveau: niveau de verbosité
246 :hypo: l'objet hypothèse
249 hypo.setVerbosityLevel(niveau)
251 if self._verbose_max:
253 hypo.setPrintLogInFile(True)
254 hypo.setKeepWorkingFiles(True)
255 hypo.setRemoveOnSuccess(False)
258 #=========================== Fin de la méthode ==================================
260 #=========================== Début de la méthode =================================
262 def _calcul (self, objet_adapt, hypo):
266 :objet_adapt: l'objet du module
267 :hypo: l'objet hypothèse
270 #--- association de l'hypothese à l'objet de l'adaptation
271 objet_adapt.AddHypothesis(hypo)
274 if self._verbose_max:
275 print (hypo.getCommandToRun())
276 erreur = objet_adapt.Compute(False)
278 message = "Echec dans l'adaptation."
282 return erreur, message
284 #=========================== Fin de la méthode ==================================
286 #=========================== Début de la méthode =================================
288 def _test_00 (self, objet_adapt):
292 :objet_adapt: l'objet du module
300 #--- les fichiers MED ---#
301 erreur, message = self._add_file_in (objet_adapt)
304 self._add_file_out (objet_adapt)
305 if self.nro_cas in ("02", "08"):
306 erreur, message = self._add_file_bkg (objet_adapt)
310 #--- Création de l'hypothèse ---
311 if self.nro_cas in ("01", "04", "05", "06", "07", "10"):
314 elif self.nro_cas in ("02", "08"):
315 maptype = "Background"
317 elif self.nro_cas in ("03",):
320 if self.nro_cas in ("11",):
322 option = "Taille de maille"
325 elif self._verbose_max:
329 erreur, message, hypo = self._hypo_creation(maptype, option, niveau)
333 #-- Ajout des options
334 if self.nro_cas in ("04", "06", "07", "08", "10", "11"):
335 hypo.setTimeStepRankLast()
336 elif self.nro_cas in ("05",):
337 hypo.setTimeStepRank(1,1)
339 # options facultatives
340 if self.nro_cas in ("03",):
341 hypo.setOptionValue("adaptation", "surface")
345 erreur, message = self._calcul (objet_adapt, hypo)
348 message = "Erreur dans le calcul par SMESH"
352 return erreur, message
354 #=========================== Fin de la méthode ==================================
356 #=========================== Début de la méthode =================================
358 def _traitement_cas (self ):
359 """Traitement d'un cas
363 :erreur: code d'erreur
364 :message: message d'erreur
367 nom_fonction = __name__ + "/_traitement_cas"
368 blabla = "\nDans {} :".format(nom_fonction)
370 if self._verbose_max:
378 print ("Passage du cas '{}'".format(self.nro_cas))
380 if ( self.nro_cas in ("01", "02", "03", "04", "05", "06", "07", "08", "10" , "11") ):
381 objet_adapt = smesh.Adaptation('MG_Adapt')
382 erreur, message = self._test_00 (objet_adapt)
387 message = "Le cas '{}' est inconnu.".format(self.nro_cas)
389 return erreur, message
391 #=========================== Fin de la méthode ==================================
393 #=========================== Début de la méthode =================================
395 def lancement (self):
400 :erreur: code d'erreur
401 :message: message d'erreur
404 nom_fonction = __name__ + "/lancement"
405 blabla = "\nDans {} :".format(nom_fonction)
410 if self._verbose_max:
413 for nom_cas in self.l_cas:
414 self.nro_cas = nom_cas
415 erreur_t, message_t = self._traitement_cas ()
418 message += "\nErreur n°{} pour le cas {} :\n".format(erreur_t,nom_cas)
421 if ( erreur and self._verbose_max ):
422 print (blabla, message)
424 return erreur, message
426 #=========================== Fin de la méthode ==================================
428 #========================== Fin de la classe ====================================
430 #==================================================================================
432 #==================================================================================
434 if __name__ == "__main__" :
439 #L_OPTIONS.append("-h")
440 #L_OPTIONS.append("-v")
441 #L_OPTIONS.append("-vmax")
442 #L_OPTIONS.append("01")
443 #L_OPTIONS.append("02")
444 #L_OPTIONS.append("03")
445 #L_OPTIONS.append("07")
446 #L_OPTIONS.append("10")
447 #L_OPTIONS.append("11")
448 #L_OPTIONS.append("04")
449 #L_OPTIONS.append("05")
450 #L_OPTIONS.append("06")
451 #L_OPTIONS.append("08")
453 # 2. Lancement de la classe
455 #print ("L_OPTIONS :", L_OPTIONS)
456 MGADAPT_TEST = MGAdaptTest(L_OPTIONS)
457 if MGADAPT_TEST.affiche_aide_globale:
458 sys.stdout.write(MGADAPT_TEST.__doc__+"\n")
460 ERREUR, MESSAGE_ERREUR = MGADAPT_TEST.lancement()
462 sys.stdout.write(MGADAPT_TEST.__doc__+"\n")
463 MESSAGE_ERREUR += "\n {} erreur(s)\n".format(ERREUR)
464 sys.stderr.write(MESSAGE_ERREUR)