2 # -*- coding: utf-8 -*-
3 # Copyright (C) 2013-2020 CEA/DEN, EDF R&D
5 # This library is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU Lesser General Public
7 # License as published by the Free Software Foundation; either
8 # version 2.1 of the License, or (at your option) any later version.
10 # This library is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 # Lesser General Public License for more details.
15 # You should have received a copy of the GNU Lesser General Public
16 # License along with this library; if not, write to the Free Software
17 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 Pseudo-lancement d'un calcul pour valider les tests
35 yacs_script_test --rep_calc=rep_calc --mesh_file=mesh_file --num=nro [-h|-help] [-v] [-v_max]
37 Arguments obligatoires :
38 ------------------------
39 --rep_calc=rep_calc : le repertoire du calcul.
40 --mesh_file=mesh_file : le fichier contenant le maillage sur lequel on veut calculer. Le nom est absolu ou relatif par rapport au repertoire de calcul ou a $HOME.
41 --num=nro : le numero du calcul, depuis 0.
45 ./yacs_script_test.py --rep_calc=`pwd` --mesh_file=maill.00.med --num=0
52 affiche_aide_globale = 0
59 #========================= Debut de la fonction ==================================
61 def __init__ ( self, liste_arg ) :
64 Le constructeur de la classe Script
67 # 1. Decodage des arguments
73 for argu in liste_arg :
76 l_aux = argu.split("=")
81 if l_aux[0] == "--rep_calc" :
82 self.rep_calc = l_aux[1]
83 elif l_aux[0] == "--num" :
84 self.numero = int(l_aux[1])
85 elif l_aux[0] == "--mesh_file" :
86 self.mesh_file = l_aux[1]
89 if saux in ( "-H", "-HELP" ) :
90 self.affiche_aide_globale = 1
93 elif saux in ( "-V_MAX", "-VMAX" ) :
97 # 2. Les paramètres de base
101 if self.verbose_max :
102 nom_fonction = __name__ + "/__init__"
103 print("\nDans " + nom_fonction + ",")
104 print(". rep_calc :", self.rep_calc)
105 print(". mesh_file :", self.mesh_file)
106 print(". numero :", self.numero)
108 #========================= Fin de la fonction ===================================
110 #========================= Debut de la fonction ==================================
112 def compute ( self ) :
115 Lancement d'un calcul
118 nom_fonction = __name__ + "/compute"
119 blabla = "\nDans " + nom_fonction + ","
128 # 1. Controles des arguments
130 #print "\n==== self.controle_argument () ===="
131 erreur, message_erreur = self.controle_argument()
137 #print "\n==== self.calcul () ===="
138 dico_resu["FileName"] = self.mesh_file
139 dico_resu["V_TEST"] = 1./float(self.numero+1)
143 if self.verbose_max :
145 print(". erreur :", erreur)
147 return erreur, message_erreur, dico_resu
149 #========================= Fin de la fonction ===================================
151 #========================= Debut de la fonction ==================================
153 def controle_argument ( self ) :
156 Controle les arguments et stockage de quelques informations
159 messages_erreur = { 0 : None,
160 -1 : "Quel repertoire de calcul ?",
161 -3 : "Quel fichier de maillage ?",
162 -4 : "Ce repertoire est inconnu.",
163 -5 : "Ce fichier est inconnu.",
164 -9 : "Quel numero de calcul ?" }
166 nom_fonction = __name__ + "/controle_argument"
167 blabla = "\nDans " + nom_fonction + ","
172 if self.verbose_max :
174 print(". rep_calc :", self.rep_calc)
175 print(". mesh_file :", self.mesh_file)
176 print(". numero :", self.numero)
180 # 1. Les repertoire et fichier
181 # 1.1. Il y a bien eu une donnee
183 if self.rep_calc == None :
185 elif self.mesh_file == None :
188 self.message_info += "Relancer avec -h pour avoir le mode d'emploi."
191 # 1.2. Le repertoire de calcul
193 self.rep_calc = os.path.expanduser(self.rep_calc)
194 if not os.path.isdir(self.rep_calc) :
195 self.message_info += "Repertoire " + self.rep_calc
199 aux = os.path.join(os.getcwd(), self.rep_calc)
200 self.rep_calc = os.path.normpath(aux)
206 fic = os.path.expanduser(fic)
207 if not os.path.isfile(fic) :
208 aux = os.path.join(self.rep_calc, fic)
209 if not os.path.isfile(aux) :
210 self.message_info += "Fichier : " + fic
214 fic = os.path.normpath(aux)
215 aux = os.path.join(os.getcwd(), fic)
217 self.mesh_file = os.path.normpath(aux)
219 # 2. Le numero du calcul
221 if self.numero == None :
227 message_erreur = messages_erreur[erreur]
229 if self.verbose_max :
230 print(". rep_calc :", self.rep_calc)
231 print(". mesh_file :", self.mesh_file)
233 return erreur, message_erreur
235 #========================= Fin de la fonction ===================================
238 if __name__ == "__main__" :
240 #print "Arguments a l'entree de", sys.argv[0], ":", sys.argv[1:], "\n"
242 Script_A = Script(sys.argv[1:])
244 if Script_A.affiche_aide_globale :
245 Script_A.message_info = Script_A.__doc__
247 message_erreur_m = ""
250 erreur_m, message_erreur_m, dico_resu_m = Script_A.compute ()
252 sys.stdout.write(Script_A.message_info+"\n")
253 sys.stderr.write(message_erreur_m+"\n")