Salome HOME
sauve0206
[tools/eficas.git] / ts / Telemac_Cata.py
1 # coding: utf-8
2
3 from Accas import *
4 class DateJJMMAAAA:
5   def __init__(self):
6     self.ntuple=3
7
8   def __convert__(self,valeur):
9     if type(valeur) == types.StringType: return None
10     if len(valeur) != self.ntuple: return None
11     return valeur
12
13   def info(self):
14     return "Date : jj/mm/aaaa "
15
16   __repr__=info
17   __str__=info
18
19 import types
20 class Tuple:
21   def __init__(self,ntuple):
22     self.ntuple=ntuple
23
24   def __convert__(self,valeur):
25     if type(valeur) == types.StringType:
26       return None
27     if len(valeur) != self.ntuple:
28       return None
29     return valeur
30
31   def info(self):
32     return "Tuple de %s elements" % self.ntuple
33
34
35
36 JdC = JDC_CATA (code = 'TELEMAC',
37                 execmodul = None,
38                 )
39 # ======================================================================
40 # Catalog entry for the MAP function : c_pre_interfaceBody_mesh
41 # ======================================================================
42
43 # -----------------------------------------------------------------------
44 INITIALIZATION = PROC(nom = "INITIALIZATION",op = None,
45 # -----------------------------------------------------------------------
46
47      fr = "Initialisation des fichiers d'entrĂ©e et de sortie",
48      ang = "Input and Output files initialization",
49      UIinfo = { "groupes" : ( "CACHE", )},
50      #UIinfo = { "groupes" : ( "iiii", )},
51
52 #    ------------------------------------
53      Title = SIMP( statut = 'o',typ = 'TXM',
54 #    ------------------------------------
55           fr = 'Titre du cas etudie. Ce titre figurera sur les dessins.',
56           ang = 'Title of the case being considered. This title shall be marked on the drawings.'),
57      #Working_Directory = SIMP( statut='o',typ='Repertoire',defaut='/tmp'),
58
59 #    ------------------------------------
60      Input_Files = FACT(statut='o',
61 #    ------------------------------------
62
63        #  Dictionary = SIMP( statut='o', typ = ('Fichier', 'Dico (*.dico);;All Files (*)',), 
64        #                    defaut='telemac2d.dico', 
65        #                    fr='Dictionnaire des mots cles.', ang='Key word dictionary.',),
66 # PN : le mot cle doit etre dans le dictionnaire et repris du catalogue mais n 
67 # est pas modifiable
68
69 #        ------------------------------------
70          Geometry_File_Format = SIMP( statut = 'o', typ = 'TXM',
71 #        ------------------------------------
72              into = ['Serafin', 'MED', 'SerafinD'], 
73              defaut = 'Serafin',
74              fr = 'Format du fichier de geometrie. Les valeurs possibles sont : \n \
75      - SERAFIN : format standard simple precision pour Telemac;   \n \
76      - SERAFIND: format standard double precision pour Telemac;   \n \
77      - MED     : format MED base sur HDF5',
78              ang = 'Results file format. Possible values are: \n\
79      - SERAFIN : classical single precision format in Telemac;\n\
80      - SERAFIND: classical double precision format in Telemac;\n\
81      - MED     : MED format based on HDF5',) ,
82
83       b_geofile_med = BLOC (condition = "Geometry_File_Format == 'MED'",
84 #        ------------------------------------
85          Geometry_File = SIMP( statut = 'o', 
86 #        ------------------------------------
87 # PNPNPN Question Soizic --> pourqoi Geo Files
88 # idem pour Bottom_Topography_File
89              typ = ('Fichier',' Med Files (*.med);;All Files (*)',),
90              fr = 'Nom du fichier contenant le maillage du calcul a realiser.',
91              ang = 'Name of the file containing the mesh. \n\
92 This file may also contain the topography and the friction coefficients.'),
93
94       ),
95       b_geofile_serafin = BLOC (condition = "Geometry_File_Format in ( 'Serafin','SerafinD')",
96 #        ------------------------------------
97          Geometry_File = SIMP( statut = 'o', 
98 #        ------------------------------------
99 # PNPNPN Question Soizic --> pourqoi Geo Files
100 # idem pour Bottom_Topography_File
101              typ = ('Fichier', 'Geo Files (*.geo);;All Files (*)',),
102              fr = 'Nom du fichier contenant le maillage du calcul a realiser.',
103              ang = 'Name of the file containing the mesh. \n\
104 This file may also contain the topography and the friction coefficients.'),
105
106       ),
107           #Steering_File = SIMP( statut = 'o', typ = ('Fichier', 'Steering Files (*.cas);;All Files (*)',),),
108
109
110 #        ------------------------------------
111          Fortran_File = SIMP(statut = 'f',
112 #        ------------------------------------
113              typ = ('Fichier', 'Fortran files (*.f);;All Files (*)'),
114              fr = 'Nom du fichier a soumettre',
115              ang = 'Name of FORTRAN file to be submitted',),
116
117 #        ------------------------------------
118          Bottom_Topography_File = SIMP( statut = 'f', 
119 #        ------------------------------------
120               typ = ('Fichier', 'Geo Files (*.geo);;All Files (*)',),
121               fr = "Nom du fichier eventuel contenant la bathymetrie associee au maillage. \
122 Si ce mot-cle est utilise; c'est cette bathymetrie qui sera utilisee pour le calcul.",
123               ang = 'Name of the possible file containing the bathymetric data.\
124 Where this keyword is used, these bathymetric data shall be used in the computation.',
125          ),
126
127 #         ------------------------------------
128           Bottom_Smoothings = SIMP( statut = 'o',typ = 'I', defaut = 0 ,
129 #         ------------------------------------
130               fr = 'Nombre de lissages effectues sur la topographie.  chaque lissage, effectue a l aide dune matrice de masse, est conservatif.\n\
131 Utilise lorsque les donnees de bathymetrie donnent des resultats trop irreguliers apres interpolation.',
132               ang = 'Number of smoothings on bottom topography.  each smoothing is mass conservative.  \n\
133 to be used when interpolation of bathymetry on the mesh gives very rough results.',),
134
135 #        ------------------------------------
136           Boundary_Conditions_File = SIMP( statut = 'o', 
137 #        ------------------------------------
138               typ = ('Fichier', 'Boundary Condition (*.cli);;All Files (*)',),
139               fr = 'Nom du fichier contenant les types de conditions aux limites. Ce fichier est rempli de facon automatique\n\
140 par le mailleur au moyen de couleurs affectees aux noeuds des frontieres du domaine de calcul.',
141               ang = 'Name of the file containing the types of boundary conditions. This file is filled automatically\n\
142 by the mesh generator through through colours that are assigned to the boundary nodes.',),
143
144
145 #        ------------------------------------
146          Validation = FACT( statut = 'f',
147 #        ------------------------------------
148 #PNPN--> creer le Mot_clef simple Validation si ce fact existe
149
150 #            ------------------------------------
151              Reference_File_Format = SIMP( statut = 'o',
152 #            ------------------------------------
153                  typ = 'TXM', 
154                  into = ['Serafin','MED','SerafinD'], 
155                  defaut = 'Serafin',
156                  fr = 'Format du fichier de resultats. Les valeurs possibles sont : \n\
157      - SERAFIN : format standard simple precision pour Telemac;  \n\
158      - SERAFIND: format standard double precision pour Telemac; \n\
159      - MED     : format MED base sur HDF5' ,
160                  ang = 'Results file format. Possible values are:\n \
161      - SERAFIN : classical single precision format in Telemac;\n\
162      - SERAFIND: classical double precision format in Telemac; \n\
163      - MED     : MED format based on HDF5' ,),
164
165 #            ------------------------------------
166              Reference_File = SIMP( statut = 'o', 
167 #            ------------------------------------
168                  typ = ('Fichier', 'Reference File (*.ref);;All Files (*)',), 
169                  fr = 'Fichier de resultats de reference pour la validation. Les resultats a placer dans ce fichier seront a ecrire sur le canal 22.',
170                  ang = 'Binary-coded result file for validation. The results to be entered into this file shall be written on channel 22.',),
171
172          ),  # Fin de Validation
173
174 #        ------------------------------------
175          Formatted_And_Binary_Files = FACT( statut = 'f',
176 #        ------------------------------------
177
178 #            ------------------------------------
179              Formatted_Data_File_1 = SIMP( statut = 'f', typ = ('Fichier', 'formated File (*.txt);;All Files (*)',),
180 #            ------------------------------------
181                   fr = "Fichier de donnees formate mis a la disposition de l''utilisateur.  \n\
182 Les donnees de ce fichier seront a lire sur le canal 26.",
183                   ang = 'Formatted data file made available to the user.\n\
184 The data in this file shall be read on channel 26.',),
185
186 #            ------------------------------------
187              Formatted_Data_File_2 = SIMP( statut = 'f', typ = ('Fichier', 'formated File (*.txt);;All Files (*)',),
188 #            ------------------------------------
189                   fr = "Fichier de donnees formate mis a la disposition de l'utilisateur. \n\
190 Les donnees de ce fichier seront a lire sur le canal 27.",
191                   ang = "Formatted data file made available to the user.\n\
192 The data in this file shall be read on channel 27.",),
193
194 #            ------------------------------------
195              Binary_Data_File_1 = SIMP( statut = 'f', typ = ('Fichier', 'All Files (*)',),
196 #            ------------------------------------
197                   fr = 'Fichier de donnees code en binaire mis a la disposition de l utilisateur. \n\
198 Les donnees de ce fichier seront a lire sur le canal 24.',
199                   ang = 'Binary-coded data file made available to the user.\n\
200 The data in this file shall be read on channel 24.',),
201
202 #            ------------------------------------
203              Binary_Data_File_2 = SIMP( statut = 'f', typ = ('Fichier', 'All Files (*)',),
204 #            ------------------------------------
205                   fr = 'Fichier de donnees code en binaire mis a la disposition de l utilisateur.\n\
206 Les donnees de ce fichier seront a lire sur le canal 25.',
207                    ang = 'Binary-coded data file made available to the user. \n\
208 The data in this file shall be read on channel 25.',),
209
210          ),  # fin Formatted_And_Binary_Files
211
212      ), # Fin de InputFile 
213
214     # -----------------------------------------------------------------------
215     Initial_State = FACT(statut='o',
216     # -----------------------------------------------------------------------
217
218 #    ------------------------------------
219      Initial_Conditions = SIMP(statut = 'o',typ = 'TXM',
220 #    ------------------------------------
221           into = ['Zero elevation','Constant elevation','Zero depth','Constant depth','Special','TPXO satellite altimetry'],
222           defaut = 'Zero elevation',
223           fr = "Permet de definir les conditions initiales sur les hauteurs d'eau. Les valeurs possibles sont :\n\
224     - COTE NULLE. Initialise la cote de surface libre a 0. \nLes hauteurs d'eau initiales sont alors retrouvees en faisant la difference entre les cotes de surface libre et du fond. \n\
225     - COTE CONSTANTE . Initialise la cote de surface libre a la valeur donnee par le mot-cle COTE INITIALE. Les hauteurs d'eau initiales sont calculees comme precedemment.\n\
226    - HAUTEUR NULLE .Initialise les hauteurs d'eau a 0. \n\
227    - HAUTEUR CONSTANTE. Initialise les hauteurs d'eau a la valeur donnee par le mot-cle HAUTEUR INITIALE. \n\
228    - PARTICULIERES. Les conditions initiales sur la hauteur d'eau doivent etre precisees dans le sous-programme CONDIN. \n\
229    - ALTIMETRIE SATELLITE TPXO. Les conditions initiales sur la hauteur  d'eau et les vitesses sont etablies sur \n\
230       la base des donnees satellite TPXO dont les 8 premiers constistuents ont ete extraits et sauves dans le fichier\n\
231       BASE DE DONNEES DE MAREE." ,
232          ang = 'Makes it possible to define the initial conditions with the water depth. The possible values are : \n\
233    - ZERO ELEVATION. Initializes the free surface elevation to 0. \n The initial water depths are then found by computing the difference between the free surface and the bottom.  \n\
234    - CONSTANT ELEVATION. Initializes the water elevation to the value given by the keyword \n\
235    - INITIAL ELEVATION. The initial water depths are computed as in the previous case. \n\
236    - ZERO DEPTH. Initializes the water depths to 0. \n\
237    - CONSTANT DEPTH. Initializes the water depths to the value givenby the key-word  INITIAL DEPTH. \n\
238    - SPECIAL. The initial conditions with the water depth should be stated in the CONDIN subroutine. \n\
239    - TPXO SATELITE ALTIMETRY. The initial conditions on the free surface and velocities are established from the TPXO satellite program data,\n the harmonic constituents of which are stored in the TIDE DATA BASE file.', ),
240  
241 #    ------------------------------------
242      b_initial_elevation = BLOC (condition = "Initial_Conditions == 'Constant elevation'",
243 #    ------------------------------------
244 #        ------------------------------------
245          Initial_Elevation = SIMP(statut = 'o',typ = 'R',
246 #        ------------------------------------
247              fr = 'Valeur utilisee avec l''option :  CONDITIONS INITIALES - COTE CONSTANTE',
248              ang = 'Value to be used with the option : INITIAL CONDITIONS  -CONSTANT ELEVATION' ),
249      ) , # fin b_initial_elevation
250
251 #    ------------------------------------
252      b_initial_depth = BLOC (condition = "Initial_Conditions == 'Constant depth'",
253 #    ------------------------------------
254 #        ------------------------------------
255          Initial_Depth = SIMP(statut = 'o',typ = 'R',
256 #        ------------------------------------
257              fr = 'Valeur utilisee avec l''option : CONDITIONS INITIALES :-HAUTEUR CONSTANTE-',
258              ang = 'Value to be used along with the option: INITIAL CONDITIONS -CONSTANT DEPTH-' ),
259          ),# fin b_initial_depth
260  
261 #    ------------------------------------
262      b_special = BLOC (condition = "Initial_Conditions == 'Special'",
263 #    ------------------------------------
264 #        ------------------------------------
265          Consigne = SIMP(statut = "o",homo = 'information',typ = "TXM",
266 #        ------------------------------------
267              defaut = "The initial conditions with the water depth should be stated in the CONDIN subroutine"),
268       ), # fin b_special
269
270 #PNPN il faut changer la condition pour que cela soit dans maree. il faut une position = global_jdc et remonter # cela
271 #    ------------------------------------
272      b_initial_TPXO = BLOC (condition = "Initial_Conditions == 'TPXO satellite altimetry'",
273 #    ------------------------------------
274 #        ------------------------------------
275          Ascii_Database_For_Tide = SIMP( statut = 'o', 
276 #        ------------------------------------
277              typ = ('Fichier', 'All Files (*)',), 
278              fr = 'Base de donnees de constantes harmoniques tirees du fichier du modele de maree',
279              ang = 'Tide data base of harmonic constituents extracted from the tidal model file',),
280          ), # fin b_initial_TPXO
281
282     ), # fin Initial_State 
283
284
285 #    ------------------------------------
286      Computation_Continued = SIMP( statut = 'o',typ = bool,defaut = False,position = "global_jdc"),
287 #    ------------------------------------
288
289 #    ------------------------------------
290      b_comput_con = BLOC(condition = 'Computation_Continued == True',
291      Computation_Continued_Settings = FACT(statut = 'o',
292
293 #        ------------------------------------
294          Previous_Computation_File_Format = SIMP( statut = 'o',typ = 'TXM',
295 #        ------------------------------------
296               into = ['Serafin','MED','SerafinD'],
297               defaut = 'Serafin',
298               fr = 'Format du fichier de resultats du calcul precedent. Les valeurs possibles sont : \n\
299          - SERAFIN : format standard simple precision pour Telemac;  \n\
300          - SERAFIND: format standard double precision pour Telemac; \n\
301          - MED     : format MED base sur HDF5',
302               ang = 'Previous computation results file format. Possible values are: \n\
303          - SERAFIN : classical single precision format in Telemac;  \n\
304          - SERAFIND: classical double precision format in Telemac; \n\
305          - MED     : MED format based on HDF5',),
306
307 #        ------------------------------------
308          Previous_Computation_File = SIMP( statut = 'o', 
309 #        ------------------------------------
310              typ = ('Fichier', 'Computation File (*.res);;All Files (*)',),
311              fr = "Nom d'un fichier contenant les resultats d'un calcul precedent realise sur le meme maillage \n\
312  et dont le dernier pas de temps enregistre va fournir les conditions initiales pour une suite de de calcul.",
313              ang = 'Name of a file containing the results of an earlier computation which was made on the same mesh.\n\
314  The last recorded time step will provid the initial conditions for the new computation.',
315                     ),
316 #        ------------------------------------
317           Initial_Time_Set_To_Zero = SIMP(typ = bool, statut = 'o',
318 #        ------------------------------------
319              fr = 'Remet le temps a zero en cas de suite de calcul',
320              ang = 'Initial time set to zero in case of restart',
321              defaut = "False"),
322
323 #        ------------------------------------
324           Record_Number_For_Restart = SIMP(typ = 'I', statut = 'o', defaut = 0,
325 #        ------------------------------------
326               fr = "numero de l'enregistrement de depart dans le fichier du calcul precedent. 0 signifie qu'on prend le dernier enregistrement", 
327               ang = "record number to start from in the previous computation file, 0 for last record" ),
328
329         ),
330      ),# fin BLOC b_comput_con 
331
332 #    ------------------------------------
333      Coupling = FACT( statut = 'o',
334 #    ------------------------------------
335 # PNPNPN Attention 1 seul choix possible
336         fr = 'Liste des codes avec lesquels on couple Telemac-2D',
337         ang = 'List of codes to be coupled with Telemac-2D',
338
339 #        ------------------------------------
340          Sisyphe = SIMP(statut = 'o',typ = bool,defaut = False ,
341 #        ------------------------------------
342              fr = 'couplage interne avec Sisyphe', 
343              ang = 'internal coupling with Sisyphe'),
344
345 #        ------------------------------------
346          Tomawac = SIMP(statut = 'o',typ = bool,defaut = False,
347 #        ------------------------------------
348              fr = 'couplage interne avec Tomawac', 
349              ang = 'internal coupling with Tomawac'),
350
351 #        ------------------------------------
352          Delwacq = SIMP(statut = 'o',typ = bool,defaut = False,
353 #        ------------------------------------
354              fr = 'couplage interne avec Delwacq', 
355              ang = 'internal coupling with Delwacq'),
356 # PNPNPN Attention : il faut des mots cles si Delwacq. a voir avec Soizic 
357 # On verra apres
358
359         ), # fin Coupling
360
361 #    ------------------------------------
362       Parallel_Computation = SIMP(statut = 'o',typ = 'TXM',
363 #    ------------------------------------
364 #    Ce mot clef n existe pas dans le dico
365          into = ['Sequentiel','Parallel'],
366          defaut = 'Sequentiel',),
367
368 #    ------------------------------------
369       b_para = BLOC(condition = 'Parallel_Computation == "Parallel"',
370 #    ------------------------------------
371 #        ------------------------------------
372          Parallel_Processors = SIMP(statut = 'o',typ = 'I',
373 #        ------------------------------------
374              val_min = 0,defaut = 1,
375              fr = 'NOMBRE DE PROCESSEURS EN CALCUL PARALLELE \n\
376 0 : 1 machine, compilation sans bibliotheque de parallelisme \n\
377 1 : 1 machine, compilation avec bibliotheque de parallelisme \n\
378 2 : 2 processeurs ou machines en parallele etc... ',
379              ang = 'NUMBER OF PROCESSORS FOR PARALLEL PROCESSING \n\
380 0 : 1 machine, compiling without parallel library \n\
381 1 : 1 machine, compiling with a parallel library \n\
382 2 : 2 processors or machines in parallel'),
383          ), # fin b_para
384
385 )# INITIALISATION
386
387 # -----------------------------------------------------------------------
388 TIDE_PARAMETERS = PROC(nom = "TIDE_PARAMETERS",op = None,
389 # -----------------------------------------------------------------------
390 #    ------------------------------------
391      Inputs_Outputs_For_Tide = FACT( statut = 'o',
392 #    ------------------------------------
393
394 #       ------------------------------------
395         Harmonic_Constants_File = SIMP( statut = 'o',
396 #       ------------------------------------
397             typ = ('Fichier', 'All Files (*)',),
398             fr = 'Constantes harmoniques extraites du fichier du modele de maree',
399             ang = 'Harmonic constants extracted from the tidalmodel file',),
400
401 #       ------------------------------------
402         Tidal_Model_File = SIMP( statut = 'o',
403 #       ------------------------------------
404             typ = ('Fichier', 'All Files (*)',),
405             fr = 'Fichier de geometrie du modele dont sont extraites les constantes harmoniques',
406             ang = 'Geometry file of the model from which harmonic constituents are extracted',),
407
408       ), # Fin Inputs_Outputs_For_Tide
409
410 #    ------------------------------------
411      Location = FACT( statut = 'o',
412 #    ------------------------------------
413 #       ------------------------------------
414         Geographic_System = SIMP(statut = 'o',typ = 'TXM',
415 #       ------------------------------------
416             into = ["Defined by user", "WGS84 longitude/latitude in real degrees", "WGS84 nothern UTM",\
417                       "WGS84 southern UTM","Lambert", "Mercator",],
418             defaut = "Defined by user",
419             fr = 'Systeme de coordonnees geographiques dans lequel est construit le modele numerique.',
420             ang = 'Geographic coordinates system in which the numerical model is built.',),
421
422 #       ------------------------------------
423         b_geo_plan = BLOC(condition = "Geographic_System in ['WGS84 nothern UTM','WGS84 southern UTM','Lambert']",
424 #       ------------------------------------
425
426 #          ------------------------------------
427            Zone_Number_In_Geographic_System = SIMP(statut = 'f',typ = 'TXM',
428 #          ------------------------------------
429                into = [ 'Lambert 1 north', 'Lambert 2 center', 'Lambert 3 south', \
430                         'Lambert 4 corsica', 'Lambert 2 extended', 'UTM zone,E.G.'],
431                fr = "Numero de zone (fuseau ou type de projection) lors de l'utilisation d'une projection plane.\n \
432 Indiquer le systeme geographique dans lequel est construit le modele numerique avec le mot-cle SYSTEME GEOGRAPHIQUE",
433                ang = 'Number of zone when using a plane projection. \n\
434 Indicate the geographic system in which the numerical model is built with the keyword GEOGRAPHIC SYSTEM'),
435            ), # Fin b_geo_plan
436        ), # Fin Location
437
438 #    ------------------------------------
439      Physical_Parameters = FACT(statut = 'o',
440 #    ------------------------------------
441
442 #       ------------------------------------
443         Tide_Generating_Force = SIMP(statut = 'o',
444 #       ------------------------------------
445            typ = bool, defaut = False),
446
447 #       ------------------------------------
448         b_Tide = BLOC(condition = "Tide_Generating_Force == True",
449 #       ------------------------------------
450 #           ------------------------------------
451             Longitude_Of_Origin_Point = SIMP(typ = 'R',
452 #           ------------------------------------
453                 statut = 'o', defaut = 48.,
454                 fr = 'Fixe la valeur de la longitude du point origine du modele, lors de l utilisation de la force generatrice de la maree.',
455                 ang = 'Give the value of the longitude of the origin point of the model, when taking into account of the tide generator force.',),
456
457 #           ------------------------------------
458             Tidal_Data_Base = SIMP(statut = 'o',typ = 'TXM',
459 #           ------------------------------------
460 # Soizic . Il faudrait une consigne ? avec des blocs ?
461 # en suspens pour JMJ
462                  into = [ "JMJ", "TPXO", "Miscellaneous (LEGOS-NEA, FES20XX, PREVIMER...)",],
463                  fr = 'Pour JMJ, renseigner la localisation du fichier bdd_jmj et geofin dans les mots-cles BASE DE DONNEES DE MAREE \n\
464 et FICHIER DU MODELE DE MAREE.  Pour TPXO, LEGOS-NEA, FES20XX et PREVIMER, l utilisateur doit telecharger les fichiers \n\
465 de constantes harmoniques sur internet',
466                  ang = 'For JMJ, indicate the location of the files bdd_jmj and geofin with keywords TIDE DATA BASE and TIDAL MODEL FILE.\n\
467 For TPXO, LEGOS-NEA, FES20XX and PREVIMER, the user has to download files of harmonic constituents on the internet',),
468
469 #           ------------------------------------
470             b_tpxo = BLOC(condition = "Tidal_Data_Base == 'TPXO'",
471 #           ------------------------------------
472
473 #              ------------------------------------
474                Minor_Constituents_Inference = SIMP( statut = 'o',typ = bool,
475 #              ------------------------------------
476                   defaut = False ,
477                   fr = 'Interpolation de composantes harmoniques mineures a partir de celles lues dans les \n\
478 fichiers d entrees lies aux mots-cles BASE BINAIRE 1 DE DONNEES DE MAREE et BASE BINAIRE 2 DE DONNEES DE MAREE',
479                   ang = 'Inference of minor constituents from the one read in input files linked to \n\
480 keywords BINARY DATABASE 1 FOR TIDE and BINARY DATABASE 2 FOR TIDE',),
481
482
483
484 #           ------------------------------------
485               Binary_Database_1_For_Tide = SIMP( statut = 'o',
486 #           ------------------------------------
487                 typ = ('Fichier', '(All Files (*),)',),
488                 fr = 'Base de donnees binaire 1 tiree du fichier du modele de maree.\n\
489 Dans le cas des donnees satellitaires de TPXO, ce fichier correspond aux donnees de niveau d''eau, par exemple h_tpxo7.2',
490                 ang = 'Binary database 1 extracted from the tidal model file.\n\
491 In the case of the TPXO satellite altimetry model, this file should be for free surface level, for instance h_tpxo7.2',),
492
493 #           ------------------------------------
494               Binary_Database_2_For_Tide = SIMP( statut = 'o',
495 #           ------------------------------------
496                 typ = ('Fichier', '(All Files (*),)',),
497                 fr= 'Base de donnees binaire 2 tiree du fichier du modele de maree.\n\
498 Dans le cas des donnees satellitaires de TPXO, ce fichier correspond aux donnees de vitesse de marrees, par exemple u_tpxo7.2',
499                 ang = 'Binary database 2 extracted from the tidal model file.\n\
500 In the case of the TPXO satellite altimetry model, this file should be for tidal velocities, for instance u_tpxo7.2' ),
501
502             ),#fin du bloc b_tpxo
503          ), # Fin du Bloc b_Tide
504
505 #       ------------------------------------
506         Option_For_Tidal_Boundary_Conditions = SIMP( statut = 'o',
507 #       ------------------------------------
508            typ = 'TXM', defaut = 'No tide',
509            into = ['No tide', 'Real tide (recommended methodology)', 'Astronomical tide', \
510                    'Mean spring tide', 'Mean tide', 'Mean neap tide', \
511                    'Astronomical neap tide', 'Real tide (methodology before 2010)'],),
512
513 #       ------------------------------------
514         b_Option_B = BLOC(condition = 'Option_For_Tidal_Boundary_Conditions!= "No tide"',
515 #       ------------------------------------
516 #           ------------------------------------
517             Coefficient_To_Calibrate_Tidal_Range = SIMP(statut = 'o',
518 #           ------------------------------------
519                 typ = 'R', defaut = 1.,
520                 fr = 'Coefficient pour ajuster le marnage de l''onde de maree aux frontieres maritimes',
521                 ang = 'Coefficient to calibrate the tidal range of tidal wave at tidal open boundary conditions'),
522
523 #           ------------------------------------
524             Coefficient_To_Calibrate_Tidal_Velocities = SIMP(statut = 'o',
525 #           ------------------------------------
526                 typ = 'R', defaut = 999999,
527                 fr = 'Coefficient pour ajuster les composantes de vitesse de l''onde de maree aux frontieres maritimes.\n\
528 La valeur par defaut 999999. signifie que c''est la racine carree du Coefficient_De_Calage_Du_Marnage qui est prise',
529                 ang = 'Coefficient to calibrate the tidal velocities of tidal wave at tidal open boundary conditions.\n\
530                 Default value 999999. means that the square root of Coefficient_To_Calibrate_Tidal_Range is taken'),
531
532 #           ------------------------------------
533               Coefficient_To_Calibrate_Sea_Level = SIMP(statut = 'o',typ = 'R',
534 #           ------------------------------------
535                  defaut = 0.,
536                  fr = 'Coefficient pour ajuster le niveau de mer',
537                  ang = 'Coefficient to calibrate the sea level'),
538           ), # fin b_Option_B
539
540        ), #fin Physical_Parameters
541 ) # Fin TIDE_PARAMETERS
542
543 # -----------------------------------------------------------------------
544 BOUNDARY_CONDITIONS = PROC(nom = "BOUNDARY_CONDITIONS",op = None,
545 # -----------------------------------------------------------------------
546             fr = 'On donne un ensemble de conditions par frontiere liquide',
547             ang = 'One condition set per liquid boundary is given',
548             UIinfo = { "groupes" : ( "CACHE", )},
549             #UIinfo = { "groupes" : ( "iiii", )},
550  # Dans l ideal il faut aller regarder selon les groupes dans le fichier med
551  # en sortie il faut aller chercher le .cli qui va bien 
552             #Liquid_Boundaries = FACT(statut = 'f',max = '**',
553             #    Options = SIMP(statut = 'f',typ = 'I',into = ['classical boundary conditions','Thompson method based on characteristics'])
554             #    Prescribed_Flowrates = SIMP(statut = 'f',typ = 'R'),
555             #    Prescribed_Elevations = SIMP(statut = 'f',typ = 'R'),
556             #    Prescribed_Velocity = SIMP(statut = 'f',typ = 'R'),
557       # ),
558
559 # Il va falloir une "traduction dans le langage du dico"
560 # Il faut seulement l un des 3
561
562 #    ------------------------------------
563      Liquid_Boundaries = FACT(statut = 'o',max = '**',
564 #    ------------------------------------
565                 
566 #        ------------------------------------
567          Options = SIMP(statut = 'f',typ = 'I',
568 #        ------------------------------------
569             into = ['Classical boundary conditions','Thompson method based on characteristics'],
570             fr = 'On donne 1 entier par frontiere liquide',
571             ang = 'One integer per liquid boundary is given',),
572
573 #        ------------------------------------
574          Type_Condition = SIMP(statut = 'o',typ = 'TXM',
575 # On ajoute le type pour rendre l 'ihm plus lisible
576 # mais ce mot-cle n existe pas dans le dico
577 #        ------------------------------------
578             into = ['Prescribed Flowrates', 'Prescribed Elevations', 'Prescribed Velocity'],),
579
580 #        ------------------------------------
581          b_Flowrates = BLOC (condition = "Type_Condition == 'Prescribed Flowrates'",
582 #        ------------------------------------
583 #            ------------------------------------
584              Prescribed_Flowrates = SIMP(statut = 'o',
585 #            ------------------------------------
586                   typ = 'R',
587                   fr = ' Valeurs des debits imposes aux frontieres liquides entrantes.\n\
588 Lire la partie du mode d''emploi consacree aux conditions aux limites',
589                   ang = 'Values of prescribed flowrates at the inflow boundaries.\n\
590 The section about boundary conditions is to be read in the manual'),
591              ), # fin b_Flowrates
592
593 #        ------------------------------------
594          b_Elevations = BLOC (condition = "Type_Condition == 'Prescribed Elevations'",
595 #        ------------------------------------
596 #            ------------------------------------
597              Prescribed_Elevations = SIMP(statut = 'o',typ = 'R',
598 #            ------------------------------------
599                  fr = 'Valeurs des cotes imposees aux frontieres liquides entrantes.\n\
600 Lire la partie du mode d''emploi consacree aux conditions aux limites',
601                  ang = 'Values of prescribed elevations at the inflow boundaries.\n\
602 The section about boundary conditions is to be read in the manual'),
603              ), # fin b_Elevations
604
605 #        ------------------------------------
606          b_Velocity = BLOC (condition = "Type_Condition == 'Prescribed Velocity'",
607 #        ------------------------------------
608 #            ------------------------------------
609              Prescribed_Velocities = SIMP(statut = 'o',typ = 'R',
610 #            ------------------------------------
611                  fr = 'Valeurs des vitesses imposees aux frontieres liquides entrantes.\n\
612 Lire la partie du mode d''emploi consacree aux conditions aux limites',
613                  ang = 'Values of prescribed velocities at the liquid inflow boundaries.\n\
614 Refer to the section dealing with the boundary conditions'),
615              ), # fin b_Velocity
616
617        ), # fin des Liquid_Boundaries
618
619 #      ------------------------------------
620        Liquid_Boundaries_File = SIMP( statut = 'f', 
621 #      ------------------------------------
622          typ = ('Fichier', 'All Files (*)',),
623          fr = 'Fichier de variations en temps des conditions aux limites.\n\
624 Les donnees de ce fichier seront a lire sur le canal 12.',
625          ang = 'Variations in time of boundary conditions. Data of this file are read on channel 12.',
626       ),
627    
628
629 #PNPN Attention dans le Dico STAGE-DISCHARGE CURVES
630 #PNPN regarder le document de reference pour changer non programme
631 #      ------------------------------------
632        Stage_Discharge_Curves = SIMP(statut = 'f',typ = 'TXM',
633 #      ------------------------------------
634            into = ["No one","Z(Q)","Q(Z)"],
635            fr = 'Indique si une courbe de tarage doit etre utilisee pour une frontiere',
636            ang = 'Says if a discharge-elevation curve must be used for a given boundary',),
637
638 #      ------------------------------------
639        b_discharge_curve = BLOC (condition = "Stage_Discharge_Curves != 'no'",
640 #      ------------------------------------
641 #            ------------------------------------
642              Stage_Discharge_Curves_File = SIMP( statut = 'f', 
643 #            ------------------------------------
644                 typ = ('Fichier', 'All Files (*)',),
645                 fr = 'Nom du fichier contenant les courbes de tarage',
646                 ang = 'Name of the file containing stage-discharge curves',),
647         ), # fin b_discharge_curve
648
649 #      ------------------------------------
650        Elements_Masked_By_User = SIMP(statut = 'o',typ = bool,
651 #      ------------------------------------
652            defaut = False,
653            fr = 'Si oui remplir le sous-programme maskob',
654            ang = 'if yes rewrite subroutine maskob',),
655
656 #      ------------------------------------
657       maskob = BLOC (condition = 'Elements_Masked_By_User == True',
658 #      ------------------------------------
659 #            ------------------------------------
660               Consigne = SIMP(statut = "o",homo = 'information',typ = "TXM", 
661 #            ------------------------------------
662               defaut = "Remplir le sous-programme maskob"),
663       ) # fin maskob
664
665 ) # fin Boundary_Conditions
666
667 # -----------------------------------------------------------------------
668 NUMERICAL_PARAMETERS = PROC(nom = "NUMERICAL_PARAMETERS",op = None,
669 # -----------------------------------------------------------------------
670
671         UIinfo = { "groupes" : ( "CACHE", )},
672         #UIinfo = { "groupes" : ( "iiii", )},
673  
674 #     ------------------------------------
675       Equations = SIMP(statut = 'o',typ = 'TXM',
676 #     ------------------------------------
677          into = ['Saint-Venant EF','Saint-Venant VF','Boussinesq'],
678          defaut = 'Saint-Venant EF',
679          fr = 'Choix des equations a resoudre',
680          ang = 'Choice of equations to solve',),
681
682 #     ------------------------------------
683       Treatment_Of_The_Linear_System = SIMP(statut = 'o', typ = 'TXM',
684 #     ------------------------------------
685          into = ["Coupled", "Wave equation"],
686          defaut = "Coupled",),
687
688 #     ------------------------------------
689       Finite_Volume_Scheme = SIMP( statut = 'o',typ = 'TXM',
690 #     ------------------------------------
691          into = [ "Roe scheme", "Kinetic order 1", "Kinetic order 2", "Zokagoa scheme order 1",\
692                 "Tchamen scheme order 1", "HLLC scheme order 1", "WAF scheme order 2"],
693          defaut = "Kinetic order 1",),
694
695 #      ------------------------------------
696        Solver_Definition = FACT(statut = 'o',
697 #      ------------------------------------
698
699 #         ------------------------------------
700           Solver = SIMP(statut = 'o',typ = 'TXM',
701 #         ------------------------------------
702              into = ["Conjugate gradient", "Conjugate residual","Conjugate gradient on a normal equation",\
703                      "Minimum error", "CGSTAB", "GMRES", "Direct",],
704              fr = 'Permet de choisir le solveur utilise pour la resolution de l''etape de propagation. \n\
705 Toutes les methodes proposees actuellement s''apparentent au Gradient Conjugue. Ce sont :\n\
706   1 : gradient conjugue 2 : residu conjugue       3 : gradient conjugue sur equation normale \n\
707   4 : erreur minimale   5 : gradient conjugue carre (non programme) 6 : gradient conjugue carre stabilise (cgstab)\n\
708   7 : gmres (voir aussi option du solveur) 8 : direct',
709              ang = 'Makes it possible to select the solver used for solving the propagation step.\n\
710 All the currently available methods are variations of the Conjugate Gradient method. They are as follows: \n\
711 1: conjugate gradient 2: conjugate residual 3: conjugate gradient on a normal equation\n\
712 4: minimum error 5: conjugate gradient squared (not implemented) 6: conjugate gradient squared stabilised (cgstab) \n\
713 7: gmres (see option for solver) 8: direct',),
714
715 #         ------------------------------------
716           b_gmres = BLOC (condition = "Solver == 'GMRES'",
717 #         ------------------------------------
718 #            ------------------------------------
719              Solver_Option = SIMP(statut = 'o',typ = 'I', defaut = 2, val_min = 2,val_max = 15,
720 #            ------------------------------------
721                  fr = 'la dimension de l''espace de KRILOV',
722                  ang = 'dimension of the KRYLOV space',),
723           ), # fin b_gmres
724
725 #         ------------------------------------
726           Solver_Accuracy = SIMP(statut = 'o',typ = 'R', defaut = 1e-4,
727 #         ------------------------------------
728              fr = 'Precision demandee pour la resolution de l''etape de propagation (cf.  Note de principe).',
729              ang = 'Required accuracy for solving the propagation step (refer to Principle note).',),
730
731 #         ------------------------------------
732           Maximum_Number_Of_Iterations_For_Solver = SIMP(statut = 'o',typ = 'I', defaut = 100,
733 #         ------------------------------------
734              fr = 'Les algorithmes utilises pour la resolution de l''etape de propagation etant iteratifs, \n\
735 il est necessaire de limiter le nombre d''iterations autorisees.\n\
736 Remarque : un maximum de 40 iterations par pas de temps semble raisonnable.',
737              ang = 'Since the algorithms used for solving the propagation step are iterative, \
738 the allowed number of iterations should be limited.\n\
739 Note: a maximum number of 40 iterations per time step seems to be reasonable.',),
740
741        ), # fin Solver
742
743 #      ------------------------------------
744        Linearity = FACT(statut = 'f',
745 #      ------------------------------------
746 #          ------------------------------------
747            Continuity_Correction = SIMP(typ = bool, statut = 'o',
748 #          ------------------------------------
749              defaut = False,
750              fr = 'Corrige les vitesses sur les points avec hauteur imposee ou l equation de continuite n a pas ete resolue',
751              ang = 'Correction of the velocities on points with a prescribed elevation, where the continuity equation has not been solved',),
752
753      ), # Fin Linearity
754
755 #      ------------------------------------
756        Precondionning_setting = FACT(statut = 'f',
757 #      ------------------------------------
758
759 #         ------------------------------------
760           Preconditioning = SIMP(statut = 'o',typ = 'TXM',max="**",
761 #         ------------------------------------
762 # PNPN Soizic ? Est ce que c'est une liste
763 # Comment fait-on  le into est faux : voir l aide
764 # PN Je propose qu 'on puisse faire +sieurs choix et qu on recalcule en sortie
765 # ou on propose des choix croisĂ©s parce que toutes les combinaisons ne sont pas possibles ?
766
767               into = [ "Diagonal", "No preconditioning", "Diagonal condensee", "Crout",  "Gauss-Seidel", ],
768               defaut=("Diagonal",), homo="SansOrdreNiDoublon",
769               fr='Permet de preconditionner le systeme de l etape de propagation afin d accelerer la convergence \n\
770 lors de sa resolution. Certains preconditionnements sont cumulables : (les diagonaux 2 ou 3 avec les autres)\n\
771 Pour cette raison on ne retient que les nombres premiers pour designer les preconditionnements. Si l on souhaite en cumuler\n\
772 plusieurs on formera le produit des options correspondantes.',
773              ang='Choice of the preconditioning in the propagation step linear system that the convergence is speeded up\n\
774 when it is being solved.Some operations (either 2 or 3 diagonal preconditioning) can be performed concurrently with the others.\n\
775 Only prime numbers are therefore kept to denote the preconditioning operations. When several of them are to be performed concurrently,\n\
776 the product of relevant options shall be made.',
777           ),
778 #         ------------------------------------
779           C_U_Preconditioning = SIMP(typ = bool, statut = 'o', defaut=False,
780 #         ------------------------------------
781              fr = 'Changement de variable de H en C dans le systeme lineaire final',
782              ang = 'Change of variable from H to C in the final linear system'
783            ),
784
785    ),# fin Preconditionnement
786      
787 #    ------------------------------------
788      Matrix_Informations = FACT(statut = 'f',
789 #    ------------------------------------
790 #         ------------------------------------
791           Matrix_Vector_Product = SIMP(statut = 'o',typ = 'TXM',
792 #         ------------------------------------
793              into = ["Classic", "Frontal"],
794              defaut='Classic',
795              fr = 'attention, si frontal, il faut une numerotation speciale des points',
796              ang = 'beware, with option 2, a special numbering of points is required',
797           ),
798 #         ------------------------------------
799           Matrix_Storage = SIMP(statut = 'o',typ = 'TXM',
800 #         ------------------------------------
801              into = ["Classical EBE","Edge-based storage",],
802              defaut='Edge-based storage',
803           ),
804      ),# fin Matrix_Informations
805
806
807 #    ------------------------------------
808      Advection = FACT(statut = 'o',
809 #    ------------------------------------
810  
811 #         ------------------------------------
812           Type_Of_Advection = FACT(statut = 'o',
813 #         ------------------------------------
814
815 # PNPNPN recalcul
816 # Tres differents du dico  liste de 4
817 # PNPN eclaircir les choix SVP
818 # soizic. choix 3 et 4 et 13 et 14
819 #            Attention recalcul de Type_Of_Advection
820 #             ------------------------------------
821               Advection_Of_U_And_V = SIMP(statut = 'o',typ = bool, defaut = True,
822 #             ------------------------------------
823                   fr = 'Prise en compte ou non de la convection de U et V.',
824                   ang = 'The advection of U and V is taken into account or ignored.'), 
825
826 #                 ------------------------------------
827                   b_u_v = BLOC( condition = "Advection_Of_U_And_V == True",
828 #                  ------------------------------------
829 #                      ------------------------------------
830                        Type_Of_Advection_U_And_V = SIMP(statut = 'o',typ = 'TXM',position = "global",
831 #                      ------------------------------------
832                            into = ["Characteristics", "SUPG", "Conservative N-scheme",  'Conservative N-scheme',\
833                            'Conservative PSI-scheme', 'Non conservative PSI scheme', 'Implicit non conservative N scheme',\
834                            'Edge-based N-scheme'],
835                              defaut = "Characteristics", ),
836
837 #                      ------------------------------------
838                        b_upwind = BLOC(condition = "Type_Of_Advection_U_And_V == 'SUPG'",
839 #                      ------------------------------------
840 #                        ------------------------------------
841                          Supg_Option_U_And_V = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
842 #                        ------------------------------------
843                            into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
844
845 #                          ------------------------------------
846                            Upwind_Coefficients_Of_U_And_V = SIMP(statut = 'o',typ = 'R', defaut = 1.)
847 #                          ------------------------------------
848                         ), # fin b_upwind
849                   ),# fin b_u_v
850
851 #              ------------------------------------
852                Advection_Of_H = SIMP(statut = 'o',typ = bool, defaut = True,
853 #              ------------------------------------
854                       fr = 'Prise en compte ou non de la convection de H.',
855                       ang = 'The advection of H is taken into account or ignored.'),
856
857 #                  ------------------------------------
858                    b_h = BLOC( condition = "Advection_Of_H == True",
859 #                  ------------------------------------
860 #                      ------------------------------------
861                        Type_Of_Advection_H = SIMP(statut = 'o',typ = 'TXM',position = "global",
862 #                      ------------------------------------
863                            into = ["characteristics", "SUPG", "conservative N-scheme",  'conservative N-scheme',\
864                               'conservative PSI-scheme', 'non conservative PSI scheme', 'implicit non conservative N scheme',\
865                               'edge-based N-scheme'],
866                            defaut = "conservative PSI-scheme",),
867 #                      ------------------------------------
868                        b_upwind_H = BLOC(condition = "Type_Of_Advection_H == 'SUPG'",
869 #                      ------------------------------------
870 #                           ------------------------------------
871                             Supg_Option_H = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
872 #                           ------------------------------------
873                             into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
874
875 #                          ------------------------------------
876                            Upwind_Coefficients_Of_H = SIMP(statut = 'o',typ = 'R', defaut = 1.)
877 #                          ------------------------------------
878                        ), # fin b_upwind_H
879                     ),# fin b_h
880
881 #              ------------------------------------
882                Advection_Of_K_And_Epsilon = SIMP(statut = 'o',typ = bool, defaut = True,
883 #              ------------------------------------
884                     fr = 'Prise en compte ou non de la convection de Tracer.',
885                     ang = 'The advection of Tracer is taken into account or ignored.'),
886
887 #                  ------------------------------------
888                    b_k = BLOC( condition = "Advection_Of_K_And_Epsilon == True",
889 #                  ------------------------------------
890 #                      ------------------------------------
891                        Type_Of_Advection_K_And_Epsilon = SIMP(statut = 'o',typ = 'TXM',position = "global",
892 #                      ------------------------------------
893                            into = ["Characteristics", "SUPG", "Conservative N-scheme",  'Conservative N-scheme',\
894                               'Conservative PSI-scheme', 'Non conservative PSI scheme', 'Implicit non conservative N scheme',\
895                               'Edge-based N-scheme'],
896                            defaut = "Characteristics",),
897 #                       ------------------------------------
898                         b_upwind_k = BLOC(condition = "Type_Of_Advection_K_And_Epsilon == 'SUPG'",
899 #                       ------------------------------------
900 #                          ------------------------------------
901                            Supg_Option_Tracers = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
902 #                          ------------------------------------
903                              into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
904
905 #                          ------------------------------------
906                            Upwind_Coefficients_Of_K_And_Epsilon = SIMP(statut = 'o',typ = 'R', defaut = 1.)
907 #                          ------------------------------------
908                          ),# fin b_upwind_k
909                    ),# fin b_k
910
911 #              ------------------------------------
912                Advection_Of_Tracers = SIMP(statut = 'o',typ = bool, defaut = True,
913 #              ------------------------------------
914                     fr = 'Prise en compte ou non de la convection de Tracer.',
915                     ang = 'The advection of Tracer is taken into account or ignored.'),
916
917 #                  ------------------------------------
918                    b_tracers = BLOC( condition = "Advection_Of_Tracers == True",
919 #                  ------------------------------------
920 #                      ------------------------------------
921                        Type_Of_Advection_Tracers = SIMP(statut = 'o',typ = 'TXM',position = "global",
922 #                      ------------------------------------
923                            into = ["Characteristics", "SUPG", "Conservative N-scheme",  'Conservative N-scheme',\
924                                 'Conservative PSI-scheme', 'Non conservative PSI scheme', 'Implicit non conservative N scheme',\
925                                 'Edge-based N-scheme'],),
926 #                       ------------------------------------
927                         b_upwind_Tracers = BLOC(condition = "Type_Of_Advection_Tracers == 'SUPG'",
928 #                       ------------------------------------
929 #                          ------------------------------------
930                            Supg_Option_K_And_Epsilon = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
931 #                          ------------------------------------
932                              into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
933
934 #                          ------------------------------------
935                            Upwind_Coefficients_Of_Tracers = SIMP(statut = 'o',typ = 'R', defaut = 1.)
936 #                          ------------------------------------
937                         ), # fin b_upwind_Tracers
938                     ), # fin b_Tracers
939
940 #              ------------------------------------
941                b_max = BLOC( condition = "(Advection_Of_Tracers == True and Type_Of_Advection_Tracers == 'Edge-based N-scheme') or (Advection_Of_K_And_Epsilon == True and Type_Of_Advection_K_And_Epsilon == 'Edge-based N-scheme') or (Advection_Of_U_And_V == True and Type_Of_Advection_U_And_V == 'Edge-based N-scheme') or ( Advection_Of_H == True and Type_Of_Advection_H == 'Edge-based N-scheme')",
942 #              ------------------------------------
943 #                  ------------------------------------
944                    Maximum_Number_Of_Iterations_For_Advection_Schemes = SIMP( statut = 'o',typ = 'I', defaut = 10 ,
945 #                  ------------------------------------
946                        fr = 'Seulement pour schemes Edge-based N-scheme',
947                        ang = 'Only for Edge-based N-scheme',),
948                 ), # fin b_max
949
950 #              ------------------------------------
951                b_traitement = BLOC( condition = "(Advection_Of_Tracers == True and Type_Of_Advection_Tracers in ['Edge-based N-scheme','SUPG','Conservative N-scheme','Conservative PSI-scheme']) or (Advection_Of_K_And_Epsilon == True and Type_Of_Advection_K_And_Epsilon in ['Edge-based N-scheme','SUPG','Conservative N-scheme','Conservative PSI-scheme']) or (Advection_Of_U_And_V == True and Type_Of_Advection_U_And_V in ['Edge-based N-scheme','SUPG','Conservative N-scheme','Conservative PSI-scheme']) or ( Advection_Of_H == True and Type_Of_Advection_H in ['Edge-based N-scheme','SUPG','Conservative N-scheme','Conservative PSI-scheme'])",
952 #              ------------------------------------
953
954 #          ------------------------------------
955            Treatment_Of_Fluxes_At_The_Boundaries = SIMP( statut = 'o',typ = 'TXM',
956 #          ------------------------------------
957                into = ["Priority to prescribed values","Priority to fluxes"],
958                fr = 'Utilise pour les schemas SUPG, PSI et N, \n\
959 si PrioritĂ© aux flux, on ne retrouve pas exactement les valeurs imposees des traceurs,mais le flux est correct',
960              ang = 'Used so far only with the SUPG, PSI and N schemes.\n\
961 if Priority to fluxes, Dirichlet prescribed values are not obeyed,but the fluxes are correct',),
962
963                 ), # fin b_traitement
964         ), # Fin Type_Of_Advection
965  
966
967 #PNPNPN
968 # recalculer la liste de 4
969 # Attention bloc selon le type de convection
970 #         ------------------------------------
971 #          SUPG = FACT(statut = 'o',
972 #         ------------------------------------
973 #             ------------------------------------
974 #              Supg_Option_U_And_V = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
975 #             ------------------------------------
976 #                       into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
977 #             ------------------------------------
978 #              Supg_Option_H = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
979 #             ------------------------------------
980 #                       into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
981 #             ------------------------------------
982 #              Supg_Option_Tracers = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
983 #             ------------------------------------
984 #                       into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
985 #             ------------------------------------
986 #              Supg_Option_K_And_Epsilon = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
987 #             ------------------------------------
988 #                       into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
989 #            ), # Fin de SUPG
990
991 #         ------------------------------------
992           Mass_Lumping_On_H = SIMP(statut = 'o',typ = 'R', defaut = 0,
993 #         ------------------------------------
994             fr = 'TELEMAC offre la possibilite d''effectuer du mass-lumping sur H ou U.\n\
995 Ceci revient a ramener tout ou partie (suivant la valeur de ce coefficient) des matrices AM1 (h) ou AM2 (U) \n\
996 et AM3 (V) sur leur diagonale.  Cette technique permet d''accelerer le code dans des proportions tres\n\
997 importantes et de le rendre egalement beaucoup plus stable. Cependant les solutions obtenues se trouvent lissees.\n\
998 Ce parametre fixe le taux de mass-lumping effectue sur h.',
999             ang = 'TELEMAC provides an opportunity to carry out mass-lumping either on C,H or on the velocity. \n\
1000 This is equivalent to bringing the matrices AM1(h) or AM2(U) and AM3(V) wholly or partly, back onto their diagonal.\n\
1001 Thanks to that technique, the code can be speeded up to a quite significant extent and it can also be made much \n\
1002 more stable. The resulting solutions, however, become artificially smoothed. \n\
1003 This parameter sets the extent of mass-lumping that is performed on h.'),
1004
1005 #         ------------------------------------
1006           Mass_Lumping_On_Velocity = SIMP(statut = 'o', typ = 'R', defaut = 0,
1007 #         ------------------------------------
1008             fr = 'Fixe le taux de mass-lumping effectue sur la vitesse.',
1009             ang = 'Sets the amount of mass-lumping that is performed on the velocity.'),
1010
1011 #         ------------------------------------
1012           Mass_Lumping_For_Weak_Characteristics = SIMP(statut = 'o',typ = 'R',defaut = 0,
1013 #         ------------------------------------
1014             fr = 'Applique a la matrice de masse',
1015             ang = 'To be applied to the mass matrix',),
1016 #         ------------------------------------
1017           Free_Surface_Gradient_Compatibility = SIMP(statut = 'o',typ = 'R',defaut = 1.,
1018 #         ------------------------------------
1019             fr = 'Des valeurs inferieures a 1 suppriment les oscillations parasites',
1020             ang = 'Values less than 1 suppress spurious oscillations'),
1021
1022 #          ------------------------------------
1023            Number_Of_Sub_Iterations_For_Non_Linearities = SIMP(statut = 'o',typ = 'I',
1024 #          ------------------------------------
1025              defaut = 1,
1026              fr = 'Permet de reactualiser, pour un meme pas de temps, les champs convecteur et propagateur \n\
1027 au cours de plusieurs sous-iterations.\n\
1028 A la premiere sous-iteration, ces champs sont donnes par C et le champ de vitesses au pas de temps precedent.\n\
1029 Aux iterations suivantes, ils sont pris egaux au champ de vitesse obtenu a la fin de la sous-iteration precedente. \n\
1030 Cette technique permet d''ameliorer la prise en compte des non linearites.',
1031             ang = 'Used for updating, within one time step, the advection and propagation field.\n\
1032 upon the first sub-iteration, \n\
1033 these fields are given by C and the velocity field in the previous time step. At subsequent iterations, \n\
1034 the results of the previous sub-iteration is used to update the advection and propagation field.\n\
1035 The non-linearities can be taken into account through this technique.',),
1036
1037
1038      ), # fin Advection
1039
1040 #PNPNPN Il faut recalculer le MCSIMP Propagation
1041 #    ------------------------------------
1042      Propagation = FACT(statut = 'o',
1043 #    ------------------------------------
1044 #         ------------------------------------
1045           Initial_Guess_For_H = SIMP(statut = 'o',typ = 'TXM',
1046 #         ------------------------------------
1047               into = ['Zero', 'Previous', 'Extrapolation'],
1048               defaut = 'Previous',
1049               fr = 'Tir initial du solveur de l etape de propagation.  Offre la possibilite de modifier la valeur initiale de DH,\n\
1050 accroissement de H, a chaque iteration, dans l etape de propagation en utilisant les valeurs finales de cette variable \n\
1051 aux pas de temps precedents. Ceci peut permettre daccelerer la vitesse de convergence lors de la resolution du systeme.',
1052               ang = 'Initial guess for the solver in the propagation step.  Makes it possible to modify the initial value of H, \n\
1053 upon each iteration in the propagation step, by using the ultimate values this variable had in the earlier time steps.\n\
1054 Thus, the convergence can be speeded up when the system is being solved.',),
1055
1056
1057 #         ------------------------------------
1058           Linearized_Propagation = SIMP(statut = 'o',typ = bool,defaut = False,
1059 #         ------------------------------------
1060              fr = 'Permet de lineariser l''etape de propagation; \n\
1061 par exemple lors de la realisation de cas tests pour lesquels on dispose d une solution analytique dans le cas linearise.',
1062              ang = 'Provided for linearizing the propagation step; \n\
1063 e.g. when performing test-cases for which an analytical solution in the linearized case is available.' ),
1064
1065 #         ------------------------------------
1066           b_linear = BLOC(condition = "Linearized_Propagation == True ",
1067 #         ------------------------------------
1068 #             ------------------------------------
1069               Mean_Depth_For_Linearization = SIMP(statut = 'o',typ = 'R', defaut = 0.0, val_min = 0,
1070 #             ------------------------------------
1071                fr = 'Fixe la hauteur d eau autour de laquelle s effectue la linearisation lorsque l option PROPAGATION LINEARISEE est choisie.',
1072                ang = 'Sets the water depth about which the linearization is made when the LINEARIZED PROPAGATION OPTION is selected.'),
1073
1074 #             ------------------------------------
1075               Initial_Guess_For_U = SIMP(statut = 'o',typ = 'TXM',
1076 #             ------------------------------------
1077                 into = ['Zero', 'Previous', 'Extrapolation'],
1078                 defaut = 'Previous',
1079                 fr = 'Tir initial du solveur de l etape de propagation.  Offre la possibilite de modifier la valeur initiale de DH,\n\
1080 accroissement de U, a chaque iteration, dans l etape de propagation en utilisant les valeurs finales de cette variable \n\
1081 aux pas de temps precedents. Ceci peut permettre daccelerer la vitesse de convergence lors de la resolution du systeme.',
1082                 ang = 'Initial guess for the solver in the propagation step.  Makes it possible to modify the initial value of U, \n\
1083 upon each iteration in the propagation step, by using the ultimate values this variable had in the earlier time steps.\n\
1084 Thus, the convergence can be speeded up when the system is being solved.',),
1085
1086           ), # fin b_linear
1087
1088       ), # fin Propagation
1089
1090
1091 #    ------------------------------------
1092      Diffusion = FACT(statut = 'o',
1093 #    ------------------------------------
1094
1095 #         ------------------------------------
1096            Diffusion_Of_Velocity = SIMP( statut='o',typ=bool,
1097 #         ------------------------------------
1098              defaut=False ,
1099              fr = 'Permet de decider si lon prend ou non en compte la diffusion des vitesses.',
1100              ang= 'Makes it possible to decide whether the diffusion of velocity (i.e. viscosity) is taken into account or not.',
1101           ),
1102 #        ------------------------------------
1103          b_Diffu = BLOC(condition = 'Diffusion_Of_Velocity == True',
1104 #        ------------------------------------
1105 #            ------------------------------------
1106              Implicitation_For_Diffusion_Of_Velocity = SIMP(statut = 'o',typ = 'R',defaut = 0,
1107 #            ------------------------------------
1108               fr = 'Fixe la valeur du coefficient d''implicitation sur les termes de diffusion des vitesses',
1109               ang = 'Sets the value of the implicitation coefficient for the diffusion of velocity',),
1110
1111 #            ------------------------------------
1112              Option_For_The_Diffusion_Of_Velocities = SIMP( statut='o',typ='TXM',
1113 #            ------------------------------------
1114                   defaut=1 ,
1115                   into=['Diffusion in the form div( nu grad(U))','Diffusion in the form 1/h div ( h nu grad(U) )'],
1116                   fr = '1: Diffusion de la forme div( nu grad(U) )   2: Diffusion de la forme 1/h div ( h nu grad(U) )',
1117                   ang= '1: Diffusion in the form div( nu grad(U) )   2: Diffusion in the form 1/h div ( h nu grad(U) )',),
1118
1119                 ), # fin b_Diffu
1120      ), # fin Diffusion
1121 #    ------------------------------------
1122      Discretization_Implicitation = FACT(statut = 'f',
1123 #    ------------------------------------
1124
1125 #         ------------------------------------
1126           Discretizations_In_Space = SIMP(statut = 'o',typ = 'TXM', 
1127 #         ------------------------------------
1128               into = ["Linear", "Quasi-bubble", "Quadratic"],
1129               defaut = "Linear",),
1130
1131 #         ------------------------------------
1132           Implicitation_For_Depth = SIMP(statut = 'o',typ = 'R',defaut = 0.55,
1133 #         ------------------------------------
1134               fr = 'Fixe la valeur du coefficient d''implicitation sur C dans l''etape de propagation (cf.  Note de principe).\n\
1135 Les valeurs inferieures a 0.5 donnent un schema instable.',
1136              ang = 'Sets the value of the implicitation coefficient for C (the celerity of waves) in the propagation step (refer to principle note).\n\
1137 Values below 0.5 result in an unstable scheme.'),
1138
1139 #         ------------------------------------
1140           Implicitation_For_Velocity = SIMP(statut = 'o',typ = 'R',defaut = 0.55,
1141 #         ------------------------------------
1142              fr = 'Fixe la valeur du coefficient d''implicitation sur la vitesse dans l''etape de propagation (cf.  Note de principe).\n\
1143 Les valeurs inferieures a 0.5 donnent un schema instable.',
1144              ang = 'Sets the value of the implicitation coefficient for velocity in the propagation step (refer to principle note).\n\
1145 Values below 0.5 result in an unstable condition.'),
1146
1147       ), # fin Discretization_Implicitation
1148       
1149
1150 #    ------------------------------------
1151      Tidal=FACT(statut='f',
1152 #    ------------------------------------
1153      Tidal_Flats = SIMP(statut = 'o',typ = bool,defaut = True,
1154 #    ------------------------------------
1155          fr = 'permet de supprimer les tests sur les bancs decouvrants si on est certain qu''il n''y en aura pas, En cas de doute : oui',
1156          ang = 'When no,the specific treatments for tidal flats are by-passed. This spares time, but of course you must be sure that you have no tidal flats'),
1157
1158 #    ------------------------------------
1159      b_tidal_flats = BLOC(condition = 'Tidal_Flats == True',
1160 #    ------------------------------------
1161 #         ------------------------------------
1162           Option_For_The_Treatment_Of_Tidal_Flats = SIMP(statut = 'o',typ = 'TXM',
1163 #         ------------------------------------
1164              into = ["Equations solved everywhere with correction on tidal flats", "Dry elements frozen", "1 but with porosity (defina method)",],
1165              defaut="Equations solved everywhere with correction on tidal flats",),
1166
1167 #             ------------------------------------
1168               b_option_tidal_flats = BLOC(condition = 'Option_For_The_Treatment_Of_Tidal_Flats == "Equations solved everywhere with correction on tidal flats"',
1169 #             ------------------------------------
1170 #                 ------------------------------------
1171                   Treatment_Of_Negative_Depths = SIMP( statut = 'o',typ = 'TXM',
1172 #                 ------------------------------------
1173                      into = [ 'No treatment', 'Smoothing', 'Flux control'],
1174                      defaut = 'Smoothing' ,),
1175               ), # fin bloc b_option_tidal_flats
1176
1177 #         ------------------------------------
1178           Threshold_For_Negative_Depths = SIMP( statut = 'o',typ = 'R', defaut = 0.0 ,
1179 #         ------------------------------------
1180              fr = 'En dessous du seuil, les hauteurs negatives sont lissees',
1181              ang = 'Below the threshold the negative depths are smoothed',),
1182
1183 #         ------------------------------------
1184           Threshold_Depth_For_Receding_Procedure = SIMP(statut = 'o',typ = 'R',defaut = 0 ,
1185 #         ------------------------------------
1186               fr = 'Si > 0., declenche la procedure de ressuyage qui evite le franchissement parasite des digues mal discretisees',
1187              ang = 'If > 0., will trigger the receding procedure that avoids overwhelming of dykes which are too loosely discretised ',),
1188
1189           
1190 #         ------------------------------------
1191           H_Clipping = SIMP(statut = 'o',typ = bool,defaut = False,
1192 #         ------------------------------------
1193              fr = 'Determine si on desire ou non limiter par valeur inferieure la hauteur d eau H (dans le cas des bancs decouvrants par exemple).',
1194              ang = 'Determines whether limiting the water depth H by a lower value desirable or not. (for instance in the case of tidal flats)\n\
1195 This key-word may have an influence on mass conservation since the truncation of depth is equivalent to adding mass.',),
1196
1197 #             ------------------------------------
1198               b_clipping = BLOC(condition = 'H_Clipping == True',
1199 #             ------------------------------------
1200 #                 ------------------------------------
1201                   Minimum_Value_Of_Depth = SIMP( statut = 'o',typ = 'R', defaut = 0.0 ,
1202 #                 ------------------------------------
1203                       fr = 'Fixe la valeur minimale de a lorsque loption CLIPPING DE H est activee.',
1204                       ang = 'Sets the minimum H value when option H CLIPPING is implemented. Not fully implemented.',),
1205               ), # fin b_clipping
1206     ), # fin bloc b_tidal_flats
1207     ), # fin bloc tidal
1208
1209 #    ------------------------------------
1210      Various = FACT(
1211 #    ------------------------------------
1212
1213 #         ------------------------------------
1214          Newmark_Time_Integration_Coefficient = SIMP( statut = 'o',typ = 'TXM',
1215 #         ------------------------------------
1216              defaut = "Euler explicite",
1217              into = ["Euler explicite","Order 2 in time"],),
1218
1219 #         ------------------------------------
1220           Option_For_Characteristics = SIMP( statut = 'o',typ = 'TXM',
1221 #         ------------------------------------
1222             defaut = "Strong" ,
1223             into = ['Strong','Weak',],),
1224
1225      ),# fin Various
1226
1227    
1228 )# fin NUMERICAL_PARAMETERS
1229
1230 # -----------------------------------------------------------------------
1231 PHYSICAL_PARAMETERS = PROC(nom = "PHYSICAL_PARAMETERS",op = None,
1232 # -----------------------------------------------------------------------
1233         UIinfo = { "groupes" : ( "CACHE", )},
1234 #    ------------------------------------
1235      Friction_Setting = FACT(statut = 'o',
1236 #    ------------------------------------
1237 #         ------------------------------------
1238           Friction_Data_File = SIMP( statut = 'o',
1239 #         ------------------------------------
1240                typ = ('Fichier', ';;All Files (*)'),
1241                fr = 'fichier de donnees pour le frottement',
1242                ang = 'friction data file',),
1243
1244 #         ------------------------------------
1245           Depth_In_Friction_Terms = SIMP( statut = 'o',typ = 'TXM',
1246 #         ------------------------------------
1247                defaut = "Nodal" ,
1248                into = ("Nodal", "Average"),),
1249
1250 #         ------------------------------------
1251           Law_Of_Bottom_Friction = SIMP( statut = 'o',typ = 'TXM',
1252 #         ------------------------------------
1253                defaut = 'No friction' ,
1254                into = ('No friction', 'Haaland', 'Chezy', 'Strickler', 'Manning', 'Nikuradse','Log law','Colebrooke_white'),
1255                fr = 'selectionne le type de formulation utilisee pour le calcul du frottement sur le fond.',
1256                ang = 'Selects the type of formulation used for the bottom friction.',),
1257
1258 #              ------------------------------------
1259                b_Law_Friction = BLOC(condition = "Law_Of_Bottom_Friction!= 'No friction'",
1260 #              ------------------------------------
1261 #                  ------------------------------------
1262                    Friction_Coefficient = SIMP( statut = 'o',typ = 'R',
1263 #                  ------------------------------------
1264                          defaut = 50.0 ,
1265                          fr = 'Fixe la valeur du coefficient de frottement pour la formulation choisie.  \
1266 Attention, la signification de ce chiffre varie suivant la formule choisie : \
1267 1 : coefficient lineaire 2 : coefficient de Chezy 3 : coefficient de Strickler \
1268 4 : coefficient de Manning 5 : hauteur de rugosite de Nikuradse',
1269                          ang = 'Sets the value of the friction coefficient for the selected formulation. \
1270 It is noteworthy that the meaning of this figure changes according to the selected formula (Chezy, Strickler, etc.) : \
1271 1 : linear coefficient 2 : Chezy coefficient 3 : Strickler coefficient 4 : Manning coefficient 5 : Nikuradse grain size',),
1272               ), # Fin b_Law_Friction
1273
1274 #              ------------------------------------
1275                b_Colebrooke_White = BLOC(condition = "Law_Of_Bottom_Friction == 'Colebrooke_white'",
1276 #              ------------------------------------
1277 #                  ------------------------------------
1278                    Manning_Default_Value_For_Colebrook_White_Law = SIMP( statut = 'o',typ = 'R',
1279 #                  ------------------------------------
1280                        defaut = 0.02 ,
1281                        fr = 'valeur par defaut du manning pour la loi de frottement de  Colebrook-White ',
1282                        ang = 'Manning default value for the friction law of Colebrook-White ',),
1283                ), # Fin b_Colebrooke_White
1284
1285 #         ------------------------------------
1286           Non_Submerged_Vegetation_Friction = SIMP( statut = 'o',typ = bool,
1287 #         ------------------------------------
1288               defaut = False ,
1289               fr = 'calcul du frottement du a la vegetation non submergee',
1290               ang = 'friction calculation of the non-submerged vegetation',),
1291
1292 #              ------------------------------------
1293                b_Non_Sub = BLOC(condition = ' Non_submerged_Vegetation_Friction == True',
1294 #              ------------------------------------
1295 #                  ------------------------------------
1296                    Diameter_Of_Roughness_Elements = SIMP( statut = 'o',typ = 'R',
1297 #                  ------------------------------------
1298                        defaut = 0.006 ,
1299                        fr = 'diametre des elements de frottements',
1300                        ang = 'diameter of roughness element',),
1301
1302 #                  ------------------------------------
1303                    Spacing_Of_Roughness_Elements = SIMP( statut = 'o',typ = 'R',
1304 #                  ------------------------------------
1305                       defaut = 0.14 ,
1306                       fr = 'espacement des elements de frottement',
1307                       ang = 'spacing of rouhness element',),
1308             ), # Fin b_Non_Sub
1309
1310 #         ------------------------------------
1311           Law_Of_Friction_On_Lateral_Boundaries = SIMP( statut = 'o',typ = 'TXM',
1312 #         ------------------------------------
1313               defaut = "No friction" ,
1314               into = ("No friction", "Haaland", "Chezy", "Strickler",  "Manning", "Nikuradse", "Log law", "Colebrook-white"),
1315               fr = 'selectionne le type de formulation utilisee pour le calcul du frottement sur les parois laterales.',
1316               ang = 'Selects the type of formulation used for the friction on lateral boundaries.',),
1317
1318
1319 #              ------------------------------------
1320                b_Fric = BLOC(condition = 'Law_Of_Friction_On_Lateral_Boundaries != "No friction"',
1321 #              ------------------------------------
1322
1323 # PNPNPN soizic ?Ne faut-il pas un bloc sur Law_Of_Friction_On_Lateral_Boundaries
1324 #                ------------------------------------
1325                  Roughness_Coefficient_Of_Boundaries = SIMP( statut = 'o',typ = 'R',
1326 #                ------------------------------------
1327                     defaut = 100.0 ,
1328                     fr = 'Fixe la valeur du coefficient de frottement sur les frontieres solides avec un regime turbulent rugueux\n\
1329  sur les bords du domaine.  meme convention que pour le coefficient de frottement',
1330                      ang = 'Sets the value of the friction coefficient of the solid boundary with the bed roughness option. Same meaning than friction coefficient',),
1331
1332 #               ------------------------------------
1333                 Maximum_Number_Of_Friction_Domains = SIMP( statut = 'o',typ = 'I',
1334 #               ------------------------------------
1335                    defaut = 10 ,
1336                    fr = 'nombre maximal de zones pouvant etre definies pour le frottement. Peut etre augmente si necessaire',
1337                    ang = 'maximal number of zones defined for the friction.  Could be increased if needed',),
1338                ),
1339
1340 #         ------------------------------------
1341           Definition_Of_Zones = SIMP(typ = bool, statut = 'o', defaut = False,
1342 #         ------------------------------------
1343                fr = 'Declenche l''appel a def_zones, pour donner un numero de zone a chaque point',
1344                ang = 'Triggers the call to def_zones to give a zone number to every point',),
1345
1346 #              ------------------------------------
1347                b_def_zone = BLOC (condition = 'Definition_Of_Zones == True',
1348 #              ------------------------------------
1349 #                  ------------------------------------
1350                    Consigne = SIMP(statut = "o",homo = 'information',typ = "TXM", defaut = "complete DEF_ZONES subroutine"),
1351 #                  ------------------------------------
1352                ), # fin b_def_zone
1353
1354      ), # Fin du bloc Friction
1355 #    ------------------------------------
1356      Meteorology = FACT(statut = 'f',
1357 #    ------------------------------------
1358
1359 #         ------------------------------------
1360           Wind = SIMP(statut = 'o',typ = bool,defaut = False,
1361 #         ------------------------------------
1362              fr = 'Prise en compte ou non des effets du vent.',
1363              ang = 'Determines whether the wind effects are to be taken into account or not.'),
1364
1365 #         ------------------------------------
1366           b_Wind = BLOC(condition = "Wind == True",
1367 #         ------------------------------------
1368 #             ------------------------------------
1369               Wind_Velocity_Along_X = SIMP(statut = 'o',typ = 'R', defaut = 0.,
1370 #             ------------------------------------
1371                  fr = 'Composante de la vitesse du vent suivant l''axe des x (m/s).',
1372                  ang = 'Wind velocity, component along x axis (m/s).',),
1373
1374 #             ------------------------------------
1375               Wind_Velocity_Along_Y = SIMP(statut = 'o',typ = 'R',defaut = 0.,
1376 #             ------------------------------------
1377                  fr = 'Composante de la vitesse du vent suivant l''axe des y (m/s).',
1378                  ang = 'Wind velocity, component along y axis (m/s).',),
1379
1380 #             ------------------------------------
1381               Threshold_Depth_For_Wind = SIMP(statut = 'o',typ = 'R',defaut = 0.,
1382 #             ------------------------------------
1383                  fr = 'Retire la force due au vent dans les petites profondeurs',
1384                  ang = 'Wind is not taken into account for small depths' ),
1385
1386 #             ------------------------------------
1387               Coefficient_Of_Wind_Influence = SIMP( statut = 'o',typ = 'R', defaut = 0.0 ,
1388 #             ------------------------------------
1389                  fr = 'Fixe la valeur du coefficient d entrainement du vent (cf.  Note de principe).',
1390                  ang = 'Sets the value of the wind driving coefficient.  Refer to principle note.',),
1391
1392 #             ------------------------------------
1393               Option_For_Wind = SIMP( statut = 'o',typ = 'TXM', defaut = 0 ,
1394 #             ------------------------------------
1395                  into = ["No wind","Constant in time and space","Variable in time","Variable in time and space"],
1396                  fr = 'donne les options pour introduire le vent',
1397                  ang = 'gives option for managing the wind'),
1398
1399 #             ------------------------------------
1400               file_For_wind = BLOC (condition = 'Option_For_Wind == "Variable in time" or Option_For_Wind == "Variable in time and space"',
1401 #             ------------------------------------
1402 #                  ------------------------------------
1403                    Consigne = SIMP(statut = "o",homo = 'information',typ = "TXM",
1404 #                  ------------------------------------
1405                           defaut = "give formated file 3"),
1406               ), # fin bloc file_For_wind
1407
1408 #             ------------------------------------
1409               speed_For_wind = BLOC (condition = 'Option_For_Wind == "Constant in time and space"',
1410 #             ------------------------------------
1411 #                  ------------------------------------
1412                    Speed_And_Direction_Of_Wind = SIMP( statut = 'o', defaut = (0.0, 0.0) , 
1413 #                  ------------------------------------
1414                       typ = Tuple(2),validators = VerifTypeTuple(('R','R')),
1415                       fr = 'Donne la vitesse et la direction (en degres de 0 a 360, 0 etant y = 0 et x = +inf) du vent',
1416                       ang = 'gives the speed and direction (degre (from 0 to 360), 0 given y = 0 anx x = +infinity)',),
1417               ), # speed_For_wind
1418
1419           ), # fin b_Wind
1420
1421 #         ------------------------------------
1422           Air_Pressure = SIMP(statut = 'o',typ = bool, defaut = False,
1423 #         ------------------------------------
1424                 fr = 'Permet de decider si l''on prend ou non en compte l''influence d''un champ de pression.',
1425                 ang = 'Provided to decide whether the influence of an atmosphere field is taken into account or not.'),
1426
1427 #         ------------------------------------
1428           b_air = BLOC(condition = "Air_Pressure == True",
1429 #         ------------------------------------
1430 #              ------------------------------------
1431                Value_Of_Atmospheric_Pressure = SIMP( statut = 'o',typ = 'R',
1432 #              ------------------------------------
1433                   defaut = 100000.0 ,
1434                   fr = 'donne la valeur de la pression atmospherique lorsquelle est constante en temps et en espace',
1435                   ang = 'gives the value of atmospheric pressure when it is contant in time and space',),
1436            ), # fin b_air
1437
1438 #         ------------------------------------
1439           Rain_Or_Evaporation = SIMP(statut = 'o',typ = bool,
1440 #         ------------------------------------
1441               defaut = False,
1442               fr  = 'Pour ajouter un apport ou une perte d''eau en surface.',
1443               ang = 'to add or remove water at the free surface. ',),
1444
1445 #         -----------------------------------
1446           b_Rain = BLOC(condition = "Rain_Or_Evaporation == True",
1447 #         ------------------------------------
1448 #              ------------------------------------
1449                Rain_Or_Evaporation_In_Mm_Per_Day = SIMP(statut = 'o',typ = 'I',defaut = 0.),
1450 #              ------------------------------------
1451           ), # fin b_Rain
1452
1453     ), # fin Meteorology
1454
1455 #    ------------------------------------
1456      Wave = FACT(statut = 'f',
1457 #    ------------------------------------
1458
1459 #       ------------------------------------
1460         Wave_Driven_Currents = SIMP(statut = 'o',
1461 #       ------------------------------------
1462             typ = bool, defaut = False,
1463             fr = 'Active la prise en compte des courants de houle',
1464             ang = 'Wave driven currents are taken into account.'),
1465
1466 #       ------------------------------------
1467         b_Wave = BLOC(condition = "Wave_Driven_Currents == True",
1468 #       ------------------------------------
1469 #           ------------------------------------
1470             Record_Number_In_Wave_File = SIMP(statut = 'o',typ = 'I', defaut = 1,
1471 #           ------------------------------------
1472                 fr = 'Numero d enregistrement dans le fichier des courants de houle',
1473                 ang = 'Record number to read in the wave driven currents file'),
1474         ), # fin b_Wave
1475     ), # fin Wave
1476
1477
1478
1479 #    ------------------------------------
1480      Parameters_Estimation = FACT(statut = 'f',
1481 #    ------------------------------------
1482 #         ------------------------------------
1483           Parameter_Estimation = SIMP( statut = 'o',typ = 'TXM', into = ["Friction","Frottement","Steady"],
1484 #         ------------------------------------
1485                fr = 'Liste des parametres a estimer', 
1486                ang = 'List of parameter to be estimated',),
1487          
1488 #         ------------------------------------
1489           Identification_Method = SIMP( statut = 'o',typ = 'TXM',
1490 #         ------------------------------------
1491                into = ["List of tests", "Gradient simple", "Conj gradient", "Lagrange interp."],
1492                defaut = 'GRadient simple',),
1493
1494 #         ------------------------------------
1495           Maximum_Number_Of_Iterations_For_Identification = SIMP(statut = 'o',typ = 'I',defaut = 20,
1496 #         ------------------------------------
1497               fr = 'chaque iteration comprend au moins un calcul direct et un calcul adjoint',
1498               ang = 'every iteration implies at least a direct and an adjoint computation', ),
1499
1500 #         ------------------------------------
1501           Cost_Function = SIMP(statut = "f",typ = 'TXM', 
1502 #         ------------------------------------
1503               defaut = 'Computed with h, u , v',
1504               into = ['Computed with h, u , v', 'Computed with c, u , v'],),
1505
1506 #         ------------------------------------
1507          Tolerances_For_Identification = FACT( statut = 'o',
1508 #         ------------------------------------
1509 # PNPNPN recalculer en liste de 4 reels 
1510 #             ------------------------------------
1511               Tolerance_For_H = SIMP( statut = 'o',typ = 'R', defaut=1.E-3, 
1512 #             ------------------------------------
1513                    fr  = "precision absolue sur H",
1514                    ang = "absolute precision on H",),
1515 #             ------------------------------------
1516               Tolerance_For_U = SIMP( statut = 'o',typ = 'R', defaut=1.E-3, 
1517 #             ------------------------------------
1518                    fr  = "precision absolue sur U",
1519                    ang = "absolute precision on U",),
1520 #             ------------------------------------
1521               Tolerance_For_V = SIMP( statut = 'o',typ = 'R', defaut=1.E-3, 
1522 #             ------------------------------------
1523                    fr  = "precision absolue sur V",
1524                    ang = "absolute precision on V",),
1525 #             ------------------------------------
1526               Tolerance_For_cout = SIMP( statut = 'o',typ = 'R', defaut=1.E-4, 
1527 #             ------------------------------------
1528                    fr  = "precision relative sur la fonction cout",
1529                    ang = "relative precision on the cost function",),
1530                 ),# fin Tolerances_For_Identification
1531
1532       ), #  fin fact Parameters_Estimation
1533
1534 #    ------------------------------------
1535      Sources = FACT( statut = 'f',
1536 #    ------------------------------------
1537 #    ------------------------------------
1538      Number_Of_Sources = SIMP( statut = 'o',typ = 'I', defaut = 0 ,),
1539 #    ------------------------------------
1540 # Attention a la sortie a reformatter. voir page 68 du user manuel V7
1541
1542 #       ------------------------------------
1543         sources_exists = BLOC(condition = "Number_Of_Sources!= 0",
1544 #       ------------------------------------
1545
1546 #           ------------------------------------
1547             Sources_File = SIMP( statut = 'o',
1548 #           ------------------------------------
1549                 typ = ('Fichier', 'All Files (*)',),
1550                 fr = 'Nom du fichier contenant les informations variables en temps des sources',
1551                 ang = 'Name of the file containing time-dependent information on sources',),
1552
1553 #PNPNPNPN saisir autant de source que le nombre
1554 #           ------------------------------------
1555             Source = FACT(statut = 'o',
1556 #           ------------------------------------
1557                  max = "**",
1558 #               ------------------------------------
1559                 Abscissae_Of_Sources = SIMP( statut = 'o',
1560 #               ------------------------------------
1561                     typ = Tuple(2),validators = VerifTypeTuple(('R','R')),
1562                     fr = 'Valeurs des abscisses des sources de debit et de traceur.',
1563                     ang = 'abscissae of sources of flowrate and/or tracer',),
1564
1565 #               ------------------------------------
1566                 Ordinates_Of_Sources = SIMP( statut = 'o',
1567 #               ------------------------------------
1568                    typ = Tuple(2),validators = VerifTypeTuple(('R','R')),
1569                    fr = 'Valeurs des ordonnees des sources de debit et de traceur.',
1570                    ang = 'ordinates of sources of flowrate and/or tracer',),
1571
1572 #               ------------------------------------
1573                 Water_Discharge_Of_Sources = SIMP( statut = 'o',
1574 #               ------------------------------------
1575                    typ = Tuple(2),validators = VerifTypeTuple(('R','R')),
1576                    fr = 'Valeurs des debits des sources.',
1577                    ang = 'values of water discharge of sources',),
1578
1579 #               ------------------------------------
1580                 Velocities_Of_The_Sources_Along_X = SIMP( statut = 'f',
1581 #               ------------------------------------
1582                    typ = Tuple(2),validators = VerifTypeTuple(('R','R')),
1583                    fr = 'Vitesses du courant a chacune des sources. Si elles ne sont pas donnees, on considere que la vitesse est celle du courant',
1584                    ang = 'Velocities at the sources. If they are not given, the velocity of the flow at this location is taken',),
1585
1586 #               ------------------------------------
1587                 Velocities_Of_The_Sources_Along_Y = SIMP( statut = 'f',
1588 #               ------------------------------------
1589                    typ = Tuple(2),validators = VerifTypeTuple(('R','R')),
1590                    fr = 'Vitesses du courant a chacune des sources',
1591                    ang = 'Velocities at the sources',),
1592
1593         ), # Fin du Fact Source
1594
1595 #           ------------------------------------
1596             Type_Of_Sources = SIMP(statut = 'o',typ = 'TXM',into = ["Normal","Dirac"],
1597 #           ------------------------------------
1598                    fr = 'Source portee par une base elements finis  Source portee  par une fonction de Dirac',
1599                    ang = 'Source term multiplied by a finite element basis,  Source term multiplied by a Dirac function',),
1600
1601     ),#fin bloc source - exits
1602     ),#fin MC source - exits
1603
1604
1605 #  ------------------------------------
1606    Coriolis_Settings = FACT(statut = 'f',
1607 #  ------------------------------------
1608 #      ------------------------------------
1609        Coriolis = SIMP( statut='o',typ=bool,
1610 #      ------------------------------------
1611           defaut=False ,
1612           fr = 'Prise en compte ou non de la force de Coriolis.',
1613           ang= 'The Coriolis force is taken into account or ignored.',),
1614
1615 #     -------------------------------------------------------
1616       Coriolis_Coefficient = SIMP( statut='o',typ='R',
1617 #     -------------------------------------------------------
1618             defaut=0.0 ,
1619             fr = 'Fixe la valeur du coefficient de la force de Coriolis.  Celui-ci doit etre calcule en fonction de la latitude l \n\
1620 par la formule FCOR = 2w sin(l) , w etant la vitesse de rotation de la terre.  w = 7.27 10-5 rad/s \n\
1621 Les composantes de la force de Coriolis sont alors : FU =   FCOR x V FV = - FCOR x U',
1622            ang= 'Sets the value of the Coriolis force coefficient, in cartesian coordinates.  This coefficient,\n\
1623 denoted FCOR in the code, should be equal to 2 w sin(l)d  where w denotes the earth angular speed of rotation and l the latitude. \n\
1624 w = 7.27 10-5 rad/sec The Coriolis force components are then: FU =  FCOR x V, FV = -FCOR x U In spherical coordinates, the latitudes are known',),
1625       ), #fin Coriolis_Settings
1626
1627
1628
1629 #    ------------------------------------
1630      Various = FACT( statut = 'f',
1631 #    ------------------------------------
1632 #      ------------------------------------
1633        Water_Density = SIMP(statut = 'o',typ = 'R',defaut = 1000.,
1634 #      ------------------------------------
1635          fr = 'Fixe la valeur de la masse volumique de l eau.',
1636          ang = 'set the value of water density',
1637          ),
1638
1639 #       ------------------------------------
1640         Gravity_Acceleration = SIMP(statut = 'o',typ = 'R',defaut = 9.81,
1641 #       ------------------------------------
1642         fr = 'Fixe la valeur de l acceleration de la pesanteur.',
1643         ang = 'Set the value of the acceleration due to gravity.',
1644          ),
1645
1646 #     ------------------------------------
1647       Vertical_Structures = SIMP(statut = 'o',typ = bool,defaut = False,
1648 #     ------------------------------------
1649          fr = 'Prise en compte de la force de trainee de structures verticales',
1650          ang = 'drag forces from vertical structures are taken into account',),
1651
1652 #          ------------------------------------
1653            maskob = BLOC (condition = 'Vertical_Structures == True',
1654 #          ------------------------------------
1655 #              ------------------------------------
1656                Consigne = SIMP(statut = "o",homo = 'information',typ = "TXM",
1657 #              ------------------------------------
1658                defaut = "subroutine DRAGFO must then be implemented"),
1659            ), # fin maskob
1660        ),
1661
1662 #    -----------------------------------------------------------------------
1663      Secondary_Currents_Settings = FACT( statut='f',
1664 #    -----------------------------------------------------------------------
1665 #    -----------------------------------------------------------------------
1666      Secondary_Currents = SIMP( statut='o',typ=bool,
1667 #    -----------------------------------------------------------------------
1668          defaut=False ,
1669          fr = 'Pour prendre en compte les courants secondaires',
1670          ang= 'Using the parametrisation for secondary currents',
1671      ),
1672
1673 #        -----------------------------------------------------------------------
1674          b_currents_exists = BLOC(condition = "Secondary_Currents == True", 
1675 #        -----------------------------------------------------------------------
1676 #            -----------------------------------------------------------------------
1677              Production_Coefficient_For_Secondary_Currents = SIMP( statut='o',typ='R',
1678 #            -----------------------------------------------------------------------
1679                defaut=7.071 ,
1680                fr = 'Une constante dans les termes de creation de Omega',
1681                ang= 'A constant in the production terms of Omega',),
1682
1683 #            -----------------------------------------------------------------------
1684              Dissipation_Coefficient_For_Secondary_Currents = SIMP( statut='o',typ='R',
1685 #            -----------------------------------------------------------------------
1686                defaut=0.5 ,
1687                fr = 'Coefficient de dissipation de Omega',
1688                ang= 'Coefficient of dissipation term of Omega',),
1689
1690          ), # fin b_currents_exists
1691          ), # fin Secondary_Currents_Settings
1692
1693 #  ------------------------------------
1694    Tsunami = FACT(statut = 'f',
1695 #  ------------------------------------
1696 #     -------------------------------------------------------
1697       Option_For_Tsunami_Generation = SIMP( statut='o',typ='I', defaut=0 ,
1698 #     -------------------------------------------------------
1699         fr = '',
1700         ang= '',),
1701
1702 #     -------------------------------------------------------
1703       Physical_Characteristics_Of_The_Tsunami = SIMP( statut='o',typ='R',
1704 #     -------------------------------------------------------
1705       min=10,max=10,
1706       defaut=(100.0, 210000.0, 75000.0, 13.6, 81.0, 41.0, 110.0, 0.0, 0.0, 3.0) ,
1707       fr = '',
1708       ang= '',),
1709       ), #fin Tsunami
1710
1711 )# fin PHYSICAL_PARAMETERS
1712
1713 # -----------------------------------------------------------------------
1714 OUTPUT_FILES = PROC(nom = "OUTPUT_FILES",op = None,
1715 # -----------------------------------------------------------------------
1716
1717 #  ------------------------------------
1718    Graphic_And_Listing_Printouts = FACT(statut = 'f',
1719 #  ------------------------------------
1720 #       ------------------------------------
1721         Variables_For_Graphic_Printouts = SIMP(statut = 'o',max = "**", typ = 'TXM',
1722 #       ------------------------------------
1723                 into=[ "Velocity along X axis  (m/s)", "Velocity along Y axis  (m/s)", "Wave celerity  (m/s)", "Water depth  (m)",
1724                       "Free surface elevation  (m)", "Bottom elevation  (m)", "Froude number  ", "Scalar flowrate of fluid  (m2/s)", 
1725                       "Tracer 1 etc. ", "Turbulent kinetic energy in K-Epsilon model  (J/kg)", "Dissipation of turbulent energy  (W/kg)", 
1726                       "Turbulent viscosity of K-Epsilon model  (m2/s)", "Flowrate along X axis  (m2/s)", "Flowrate along Y axis  (m2/s)",
1727                       "Scalar velocity  (m/s)", "Wind along X axis  (m/s)", "Wind along Y axis  (m/s)", "Air pressure  (Pa)", 
1728                       "Friction coefficient", "Drift along X  (m)", "Drift along Y  (m)", "Courant number ", "Supplementary variable N ", 
1729                       "Supplementary variable O ", "Supplementary variable R ", "Supplementary variable Z  ", "Maximum elevation", 
1730                       "Time of maximum elevation ", "Maximum velocity", "Time of maximum velocity", "Friction velocity  "],
1731                 ),
1732                 #homo="SansOrdreNiDoublon"),
1733
1734 #       ------------------------------------
1735         Graphic_Printout_Period = SIMP(statut = 'o', typ = 'I',defaut = 1,
1736 #       ------------------------------------
1737                     fr = 'Determine la periode en nombre de pas de temps d''impression des VARIABLES POUR LES SORTIES GRAPHIQUES \n\
1738                          dans le FICHIER DES RESULTATS.',
1739                     ang = 'Determines, in number of time steps, the printout period for the VARIABLES FOR GRAPHIC PRINTOUTS in the RESULTS FILE.' ,),
1740
1741 #       ------------------------------------
1742         Number_Of_First_Time_Step_For_Graphic_Printouts = SIMP(statut = 'o', typ = 'I',defaut = 1,
1743 #       ------------------------------------
1744                    fr = 'Determine le nombre de pas de temps a partir duquel debute l''ecriture des resultats dans le listing.',
1745                    ang = 'Determines the number of time steps after which the results are first written into the listing.'),
1746
1747  
1748 #       ------------------------------------
1749         Results_File = SIMP( statut = 'o', 
1750 #       ------------------------------------
1751                typ = ('Fichier', 'All Files (*)',),
1752                fr = 'Nom du fichier dans lequel sont ecrits les resultats du calcul avec la periodicite donnee  PERIODE POUR LES SORTIES GRAPHIQUES.', 
1753                ang = 'Name of the file into which the computation results shall be written, the periodicity being given by  GRAPHIC PRINTOUT PERIOD.',),
1754
1755 #       ------------------------------------
1756           Results_File_Format = SIMP( statut = 'o',typ = 'TXM',into = ['Serafin','MED','SerafinD'], defaut = 'Serafin',
1757 #       ------------------------------------
1758                                 fr = 'Format du fichier de resultats. Les valeurs possibles sont : \n\
1759      - SERAFIN : format standard simple precision pour Telemac;  \n\
1760      - SERAFIND: format standard double precision pour Telemac; \n\
1761      - MED     : format MED base sur HDF5' ,
1762                                ang = 'Results file format. Possible values are:\n \
1763      - SERAFIN : classical single precision format in Telemac;\n\
1764      - SERAFIND: classical double precision format in Telemac; \n\
1765      - MED     : MED format based on HDF5' ,
1766                                    ),
1767
1768 #       ------------------------------------
1769         Listing_Printout_Period = SIMP(statut = 'o', typ = 'I',defaut = 1,
1770 #       ------------------------------------
1771           fr = 'Determine la periode en nombre de pas de temps d''impression des variables',
1772           ang = 'Determines, in number of time steps, the printout period for the variables',),
1773
1774 #       ------------------------------------
1775         Listing_Printout = SIMP( statut='o',typ=bool, defaut=True ,
1776 #       ------------------------------------
1777            fr = 'Sortie des resultats sur support papier.  Si on met False, le listing ne contient que lentete et la mention FIN NORMALE DU PROGRAMME : La Valeur False est  a eviter',
1778             ang= 'Result printout on hard copy.  When NO is selected, the listing only includes the heading and the phrase "NORMAL END OF PROGRAM" In addition, the options MASS BALANCE and VALIDATION are inhibited. Value False  Not recommended for use.',
1779      ),
1780
1781 #       ------------------------------------
1782         Variables_To_Be_Printed = SIMP(statut = 'o',max = "**", typ = 'TXM',
1783 #       ------------------------------------
1784             into = [ "Velocity along X axis (m/s)", "Velocity along Y axis (m/s)", "Wave celerity (m/s)", "Water depth (m)",
1785                    "Free surface elevation (m)", "Bottom elevation (m)", "Froude number", "Scalar flowrate of fluid (m2/s)",
1786                    "Tracer", "Turbulent kinetic energy in K-Epsilon model (J/kg)", "Dissipation of turbulent energy (W/kg)",
1787                    "Turbulent viscosity of K-Epsilon model (m2/s)", "Flowrate along x axis (m2/s)", "Flowrate along y axis (m2/s)",
1788                    "Scalar velocity (m/s)", "Wind along x axis (m/s)", "Wind along y axis (m/s)", "Air pressure (Pa)",
1789                    "Friction coefficient", "Drift along x  (m)", "Drift along y  (m)", "Courant number",
1790                    "Supplementary variable N", "Supplementary variable O", "Supplementary variable R", "Supplementary variable Z"]
1791 ,homo="SansOrdreNiDoublon"),
1792
1793    ),# fin Listing_Graphic_Printouts
1794
1795 #  ------------------------------------
1796    Formatted_Results_File = SIMP( statut = 'f',
1797 #  ------------------------------------
1798         typ = ('Fichier','All Files (*)',),
1799         fr = 'Fichier de resultats formate mis a la disposition de l utilisateur. \
1800 Les resultats a placer dans ce fichier seront a ecrire sur le canal 29.',
1801        ang = 'Formatted file of results made available to the user.  \
1802 The results to be entered into this file shall be written on channel 29.',),
1803
1804
1805 #  ------------------------------------
1806    Binary_Results_File = SIMP( statut = 'f', 
1807 #  ------------------------------------
1808          typ = ('Fichier', ';;All Files (*)',), 
1809          fr = "Fichier de resultats code en binaire mis a la disposition de l'utilisateur.\n\
1810 Les resultats a placer dans ce fichier seront a ecrire sur le canal 28.",
1811          ang = "Additional binary-coded result file made available to the user. \n\
1812 The results to be entered into this file shall be written on channel 28.",),
1813
1814
1815 #  ------------------------------------
1816    Output_Of_Initial_Conditions = SIMP(typ = bool, statut = 'o', 
1817 #  ------------------------------------
1818         defaut = True,
1819         fr = 'Si Vrai, impression des conditions initiales dans les resultats',
1820         ang = 'If True, output of initial conditions in the results'),
1821
1822 #  ------------------------------------
1823    Number_Of_Private_Arrays = SIMP( statut='o',typ='I',
1824 #  ------------------------------------
1825     defaut=0 ,
1826     fr = 'Nombre de tableaux mis a disposition de l utilisateur',
1827     ang= 'Number of arrays for own user programming',
1828      ),
1829
1830
1831 #  ------------------------------------
1832    Information_About_Solver = SIMP(typ = bool, statut = 'f',
1833 #  ------------------------------------
1834        defaut = False,
1835        fr = "Si vrai, Donne a chaque pas de temps le nombre d'iterations necessaires a la convergence du solveur de l'etape de propagation.",
1836        ang = "if True, prints the number of iterations that have been necessary to get the solution of the linear system.",),
1837
1838 #  ------------------------------------
1839    Mass_Balance = SIMP( statut='o',typ=bool,
1840 #  ------------------------------------
1841        defaut=False ,
1842        fr = 'Determine si l on effectue ou non le bilan de masse sur le domaine.  Cette procedure calcule a chaque pas de temps : \n\
1843 - les flux aux entrees et sorties du domaine, - le flux global a travers lensemble des parois du domaine (liquides ou solides) \n\
1844 - l erreur relative sur la masse pour ce pas de temps.\n\
1845 En fin de listing, on trouve l erreur relative sur la masse pour l ensemble du calcul.\n\
1846 Il ne sagit que dun calcul indicatif car il nexiste pas dexpression compatible du debit en formulation c,u,v.',
1847
1848       ang= 'Determines whether a check of the mass-balance over the domain is mader or not.\n\
1849 This procedures computes the following at each time step: the domain inflows and outflows, the overall flow across all the boundaries,\n\
1850 the relative error in the mass for that time step.  The relative error in the mass over the whole computation can be found at the end of the listing.',
1851      ),
1852
1853 #  ------------------------------------
1854   Controls = FACT( statut='f',
1855 #  ------------------------------------
1856 #      ------------------------------------
1857        Control_Sections = SIMP(statut = 'f',typ = Tuple(2),validators = VerifTypeTuple(('I','I')),
1858 #      ------------------------------------
1859             fr = 'Couples de points (numeros globaux dans le maillage) entre lesquels les debits instantanes et cumules seront donnes.',
1860             ang = 'Couples of points (global numbers in the mesh) defining sections where the instantaneous and cumulated discharges will be given',),
1861
1862 #      ------------------------------------
1863        Printing_Cumulated_Flowrates = SIMP( statut = 'o',typ = bool, defaut = False ,
1864 #      ------------------------------------
1865             fr = 'impression du flux cumule a travers les sections de controle',
1866             ang = 'printing the cumulated flowrates through control sections',),
1867
1868 #      ------------------------------------
1869        Compatible_Computation_Of_Fluxes = SIMP( statut = 'o',typ = bool, defaut = False ,
1870 #      ------------------------------------
1871            fr = 'flux a travers les sections de controle, calcul compatible avec l impermeabilite sous forme faible',
1872            ang = 'flowrates through control sections, computation compatible with the weak formulation of no-flux boundary condition',),
1873
1874 #      ------------------------------------
1875        Sections_Input_File = SIMP( statut = 'f', typ = ('Fichier', 'All Files (*)'),
1876 #      ------------------------------------
1877           fr = 'sections input file, partitioned',
1878           ang = 'sections input file, partitioned',),
1879
1880 #      ------------------------------------
1881        Sections_Output_File = SIMP( statut = 'f', typ = ('Fichier', 'All Files (*)'),
1882 #      ------------------------------------
1883           fr = 'sections output file, written by the master',
1884           ang = 'sections output file, written by the master',),
1885
1886   ),# fin controls
1887 #  ------------------------------------
1888   Fourier = FACT(statut = 'f',
1889 #  ------------------------------------
1890 #      ------------------------------------
1891        Fourier_Analysis_Periods = SIMP( statut='o',
1892 #      ------------------------------------
1893        max='**', typ = 'R',
1894        fr = 'Liste des periodes que lon veut analyser',
1895        ang= 'List of periods to be analysed',),
1896
1897 #      ------------------------------------
1898        Time_Range_For_Fourier_Analysis = SIMP( statut='o',
1899 #      ------------------------------------
1900        typ = Tuple(2), validators = VerifTypeTuple(('R','R')),
1901        defaut=(0.0, 0.0) ,
1902        fr = 'Pour le calcul du marnage et de la phase de la maree',
1903        ang= 'For computing tidal range and phase of tide',
1904         ),
1905
1906 #      ------------------------------------
1907        List_Of_Points = SIMP( statut='o',
1908 #      ------------------------------------
1909        typ = Tuple(2), validators = VerifTypeTuple(('I','I')),
1910        fr = 'Liste de points remarquables pour les impressions',
1911        ang= 'List of remarkable points for printouts',),
1912
1913 #      ------------------------------------
1914        Names_Of_Points = SIMP( statut='o',typ='TXM',
1915 #      ------------------------------------
1916        min=2,max=2 ,
1917        fr = 'Noms des points remarquables pour les impressions',
1918        ang= 'Names of remarkable points for printouts',
1919      ),
1920
1921   ),# fin fourier
1922 ) # FIN OUTPUT_FILES
1923
1924
1925 # -----------------------------------------------------------------------
1926 CONSTRUCTION_WORKS_MODELLING = PROC(nom = "CONSTRUCTION_WORKS_MODELLING",op = None,
1927 # -----------------------------------------------------------------------
1928
1929 # Attention calculer le logique BREACH 
1930
1931 #      ------------------------------------
1932        Number_Of_Culverts = SIMP( statut = 'o',typ = 'I',
1933 #      ------------------------------------
1934             defaut = 0 ,
1935             fr = 'Nombre de siphons traites comme des termes sources ou puits. Ces siphons doivent etre decrits comme des sources \
1936 dans le fichier cas. Leurs caracteristiques sont donnees dans le fichier de donnees des siphons (voir la documentation ecrite)',
1937             ang = 'Number of culverts treated as source terms.  They must be described as sources in the domain\
1938  and their features are given in the culvert data file (see written documentation)',),
1939 #           ------------------------------------
1940             culvert_exists = BLOC(condition = "Number_Of_Culverts!= 0",
1941 #           ------------------------------------
1942 #               ------------------------------------
1943                 Culvert_Data_File = SIMP( statut = 'o',typ = ('Fichier', 'All Files (*)',),
1944 #               ------------------------------------
1945                     fr = 'Fichier de description des siphons presents dans le modele',
1946                     ang = 'Description of culvert existing in the model',),
1947             ), # fin bloc culvert_exists
1948
1949 #      ------------------------------------
1950        Number_Of_Tubes = SIMP( statut = 'o',typ = 'I',
1951 #      ------------------------------------
1952              defaut = 0 ,
1953              fr = 'Nombre de buses ou ponts traites comme des termes sources ou puits. Ces buses doivent etre decrits comme des sources\n\
1954 dans le fichier cas. Leurs caracteristiques sont donnees dans le fichier de donnees des buses (voir la documentation ecrite)',
1955              ang = 'Number of tubes or bridges treated as source terms.  They must be described as sources in the domain \n\
1956 and their features are given in the tubes data file (see written documentation)',), 
1957 #          ------------------------------------
1958             b_Tubes = BLOC(condition = "Number_Of_Tubes!= 0",
1959 #          ------------------------------------
1960 #               ------------------------------------
1961                 Tubes_Data_File = SIMP( statut = 'o',
1962 #               ------------------------------------
1963                     typ = ('Fichier', 'All Files (*)',),
1964                     fr = 'Fichier de description des buses/ponts presents dans le modele',
1965                     ang = 'Description of tubes/bridges existing in the model',),
1966             ), # in bloc b_Tubes
1967
1968 #      ------------------------------------
1969        Number_Of_Weirs = SIMP(statut = 'o',typ = 'I',defaut = 0,
1970 #      ------------------------------------
1971              fr = 'Nombre de seuils qui seront traites par des conditions aux limites. \n\
1972 Ces seuils doivent etre decrits comme des frontieres du domaine de calcul',
1973              ang = 'Number of weirs that will be treated by boundary conditions.',
1974      ),
1975 #          ------------------------------------
1976            b_Weirs = BLOC(condition = "Number_Of_Weirs!= 0",
1977 #          ------------------------------------
1978 #               ------------------------------------
1979                 Weirs_Data_File = SIMP( statut = 'o',
1980 #               ------------------------------------
1981                     typ = ('Fichier', 'All Files (*)',),
1982                     fr = 'Fichier de description des seuils presents dans le modele',
1983                     ang = 'Description of weirs existing in the model',),
1984
1985 #              ------------------------------------
1986                Type_Of_Weirs = SIMP( statut = 'o',typ = 'TXM',
1987 #              ------------------------------------
1988                    into = ["Horizontal with same number of nodes upstream/downstream (Historical solution with bord)",
1989                        "General (New solution with sources points)"],
1990                    defaut = "Horizontal with same number of nodes upstream/downstream (Historical solution with bord)",
1991                    fr = 'MĂ©thode de traitement des seuils ',
1992                    ang = 'Method for treatment of weirs',),
1993           ),# fin b_Weirs
1994
1995 #      ------------------------------------
1996       Breach = SIMP(statut = 'o',typ = bool,defaut = False,
1997 #      ------------------------------------
1998          fr = 'Prise en compte de breches dans le calcul par modification altimetrique dans le maillage.',
1999          ang = 'Take in account some breaches during the computation by modifying the bottom level of the mesh.',),
2000
2001 #          ------------------------------------
2002            b_Breaches = BLOC (condition = 'Breach == True',
2003 #          ------------------------------------
2004 #              ------------------------------------
2005                Breaches_Data_File = SIMP( statut = 'o',typ = ('Fichier', 'All Files (*)',),
2006 #              ------------------------------------
2007                    fr = 'Fichier de description des breches',
2008                    ang = 'Description of breaches',),
2009          ), # fin b_Breaches
2010
2011
2012 ) # Fin CONSTRUCTION_WORKS_MODELLING
2013
2014
2015 # -----------------------------------------------------------------------
2016 GENERAL_PARAMETERS = PROC(nom = "GENERAL_PARAMETERS",op = None,
2017 # -----------------------------------------------------------------------
2018         UIinfo = { "groupes" : ( "CACHE", )},
2019 #      ------------------------------------
2020        Location = FACT(statut = 'o',
2021 #      ------------------------------------
2022 #      ------------------------------------
2023        Origin_Coordinates = SIMP( statut='o',
2024 #      ------------------------------------
2025           typ = Tuple(2),validators = VerifTypeTuple(('I','I')),defaut = (0,0),
2026           fr = 'Valeur en metres, utilise pour eviter les trop grands nombres, transmis dans le format Selafin mais pas d autre traitement pour l instant',
2027           ang= 'Value in metres, used to avoid large real numbers,  added in Selafin format, but so far no other treatment',),
2028
2029
2030 #      ------------------------------------
2031        Spherical_Coordinates = SIMP(typ = bool,statut = 'o',defaut = False,
2032 #      ------------------------------------
2033            fr = 'Choix des coordonnees spheriques pour la realisation du calcul ( pour les grands domaines de calcul).',
2034            ang = 'Selection of spherical coordinates to perform the computation (for large computation domains).'),
2035
2036 #      ------------------------------------
2037        b_Spher = BLOC(condition = 'Spherical_Coordinates == True',
2038 #      ------------------------------------
2039 #          ------------------------------------
2040            Latitude_Of_Origin_Point = SIMP(typ = 'R',statut = 'o',defaut = 48.,
2041 #          ------------------------------------
2042                fr = 'Determine l origine utilisee pour le calcul de latitudes lorsque l on effectue un calcul en coordonnees spheriques.',
2043                ang = 'Determines the origin used for computing latitudes when a computation is made in spherical coordinates.this latitude\n\
2044 is in particular used to compute the Coriolis force. In cartesian coordinates, Coriolis coefficient is considered constant.'),
2045
2046 #          ------------------------------------
2047             Spatial_Projection_Type = SIMP(statut = 'o',typ = 'TXM',
2048 #          ------------------------------------
2049                into = ["Mercator","Latitude longitude"]),
2050        ), # fin b_Spher
2051
2052 #      ------------------------------------
2053        b_Spher_faux = BLOC(condition = 'Spherical_Coordinates == False',
2054 #      ------------------------------------
2055 #          ------------------------------------
2056            Spatial_Projection_Type = SIMP(statut = 'o',typ = 'TXM',
2057 #          ------------------------------------
2058                into = ["Cartesian, not georeferenced","Mercator","Latitude longitude"],
2059                defaut = "Cartesian, not georeferenced",),
2060        ), # fin b_Spher_faux
2061
2062        ), # Fin de Location
2063 #      ------------------------------------
2064        Time = FACT(statut = 'o',
2065 #      ------------------------------------
2066        regles = (AU_MOINS_UN('Number_Of_Time_Steps','Duration'),
2067                  EXCLUS('Number_Of_Time_Steps','Duration'),
2068                ),
2069
2070 #        -----------------------------------------------------------------------
2071          Consigne = SIMP(statut = "o",homo = 'information',typ = "TXM", 
2072 #        -----------------------------------------------------------------------
2073            defaut = "Choose between Keywords 'Number_Of_Time_Steps' or 'Duration'"),
2074
2075 #          ------------------------------------
2076            Time_Step = SIMP(statut = 'o',
2077 #          ------------------------------------
2078               typ = 'R', defaut = 1,
2079               fr = 'Definit le nombre de pas de temps effectues lors de l''execution du code.',
2080               ang = 'Specifies the number of time steps performed when running the code.'),
2081
2082 #          ------------------------------------
2083            Number_Of_Time_Steps = SIMP(statut = 'f',typ = 'I',
2084 #          ------------------------------------
2085               fr = 'Definit le nombre de pas de temps effectues lors de l''execution du code.',
2086               ang = 'Specifies the number of time steps performed when running the code.'),
2087
2088 #          ------------------------------------
2089            Duration = SIMP(statut = 'f',typ = 'R',
2090 #          ------------------------------------
2091               fr = 'duree de la simulation. alternative au parametre nombre de pas de temps. \n\
2092 On en deduit le nombre de pas de temps en prenant l''entier le plus proche de (duree du calcul/pas de temps).\n\
2093 Si le nombre de pas de temps est aussi donne, on prend la plus grande valeur',
2094               ang = 'duration of simulation. May be used instead of the parameter NUMBER OF TIME STEPS. \n\
2095 The nearest integer to (duration/time step) is taken.  If NUMBER OF TIME STEPS is also given, the greater value is taken',),
2096
2097 # PNPN
2098 # Attention, on laisse la règle mais il est possible d avoir les 2 en entrĂ©es --> attention au convert
2099 #          ------------------------------------
2100            Variable_Time_Step = SIMP(statut = 'o',typ = bool, defaut=False,
2101 #          ------------------------------------
2102               fr = 'Pas de temps variable pour avoir un nombre de courant souhaite',
2103               ang = 'Variable time-step to get a given Courant number'),
2104
2105 #          ------------------------------------
2106            b_var_time = BLOC(condition = "Variable_Time_Step == True" ,
2107 #          ------------------------------------
2108 #            ------------------------------------
2109              Desired_Courant_Number = SIMP(statut = 'o',typ = 'R',
2110 #            ------------------------------------
2111              fr = 'Nombre de Courant souhaite ',
2112              ang = 'Desired Courant number',),
2113            ),
2114
2115 #          ------------------------------------
2116            Original_Date_Of_Time = FACT( statut = 'o',
2117 #          ------------------------------------
2118               fr = "Permet de fixer la date d'origine des temps du modele lors de la prise en compte de la force generatrice de la maree.",
2119               ang = 'Give the date of the time origin of the model when taking into account the tide generating force.', 
2120                Year = SIMP(statut = 'o',typ = 'I',val_min = 1900, defaut = 1900),
2121                Month = SIMP(statut = 'o',typ = 'I',val_min = 1,val_max = 12,  defaut = 1),
2122                Day = SIMP(statut = 'o',typ = 'I',val_min = 1,val_max = 31,defaut = 1),),
2123
2124 #          ------------------------------------
2125            Original_Hour_Of_Time = FACT( statut = 'o',
2126 #          ------------------------------------
2127                fr = "Permet de fixer l'heure d'origine des temps du modele lors de la prise en compte de la force generatrice de la maree.",
2128                ang = 'Give the time of the time origin of the model when taking into account the tide generating force.', 
2129                Hour = SIMP(statut = 'o',typ = 'I',val_min = 0,val_max = 24, defaut = 0),
2130                Minute = SIMP(statut = 'o',typ = 'I',val_min = 0,val_max = 60, defaut = 0),
2131                Second = SIMP(statut = 'o',typ = 'I',val_min = 0,val_max = 60, defaut = 0),
2132              ),
2133
2134 #          ------------------------------------
2135            Stop_If_A_Steady_State_Is_Reached = SIMP(statut = 'o',
2136 #          ------------------------------------
2137                typ = bool,defaut = False),
2138
2139 #          ------------------------------------
2140            b_stop = BLOC(condition = "Stop_If_A_Steady_State_Is_Reached == True" ,
2141 #          ------------------------------------
2142 #              ------------------------------------
2143                Stop_Criteria = SIMP(statut = 'o',typ = Tuple(3),validators = VerifTypeTuple(('R','R','R')),
2144 #              ------------------------------------
2145                  fr = "Criteres d'arret pour un ecoulement permanent. ces coefficients sont respectivement appliques a\n\
2146     1- U et V 2- H 3- T ",
2147                  ang = 'Stop criteria for a steady state These coefficients are applied respectively to\n\
2148         1- U and V 2- H 3-  T ',),
2149            ), # fin b_stop
2150
2151 #          ------------------------------------
2152            Control_Of_Limits = SIMP(statut = 'o',
2153 #          ------------------------------------
2154                typ = bool, defaut = False,
2155                fr = 'Le programme s''arrete si les limites sur u,v,h ou t sont depassees',
2156                ang = 'The program is stopped if the limits on u,v,h, or t are trespassed',),
2157
2158 #          ------------------------------------
2159            b_limit = BLOC(condition = "Control_Of_Limit == True" ,
2160            Limit_Values = FACT(statut = 'o',
2161 #            Attention : 1 seul MC ds Telemac
2162 #          ------------------------------------
2163                 fr = 'valeurs mini et maxi acceptables  min puis  max',
2164                 ang = 'min and max acceptable values ',
2165
2166 #              ------------------------------------
2167                Limit_Values_H = SIMP(statut = 'o',typ = Tuple(2),
2168 #              ------------------------------------
2169                     validators = VerifTypeTuple(('R','R')), defaut = (-1000,9000)),
2170 #              ------------------------------------
2171                Limit_Values_U = SIMP(statut = 'o',typ = Tuple(2),
2172 #              ------------------------------------
2173                     validators = VerifTypeTuple(('R','R')), defaut = (-1000,1000)),
2174 #              ------------------------------------
2175                Limit_Values_V = SIMP(statut = 'o',typ = Tuple(2),
2176 #              ------------------------------------
2177                     validators = VerifTypeTuple(('R','R')), defaut = (-1000,1000)),
2178 #              ------------------------------------
2179                Limit_Values_T = SIMP(statut = 'o',typ = Tuple(2),
2180 #              ------------------------------------
2181                     validators = VerifTypeTuple(('R','R')), defaut = (-1000,1000)),
2182             ),), # fin Fact et b_limit
2183        ), # Fin de Time
2184
2185 # Attention il faut recalculer en sortie : il faut 0 ou 1 et non un boolean
2186 #  ------------------------------------
2187    Debugger = SIMP(typ = bool , statut = 'o', 
2188 #  ------------------------------------
2189         defaut = False,
2190         fr= 'Pour imprimer la sequence des appels, mettre 1',
2191         ang = 'If 1, calls of subroutines will be printed in the listing',),
2192
2193 ) # Fin GENERAL_PARAMETERS
2194
2195
2196 # -----------------------------------------------------------------------
2197 TURBULENCE = PROC(nom = "TURBULENCE",op = None,
2198 # -----------------------------------------------------------------------
2199
2200 #    -----------------------------------------------------------------------
2201      Turbulence_Model = SIMP( statut = 'o',typ = 'TXM', defaut = "Constant Viscosity", 
2202 #    -----------------------------------------------------------------------
2203           into = ("Constant Viscosity", "Elder", "K-Epsilon Model", "Smagorinski"),
2204           fr = 'Pour  Elder, il faut pas oublier d ajuster les deux valeurs du mot-cle : COEFFICIENTS ADIMENSIONNELS DE DISPERSION\n\
2205 Pour K-Epsilon Model, ce meme parametre doit retrouver sa vraie valeur physique car elle est utilisee comme telle dans le modele de turbulence',
2206     ang = 'When Elder, the two values of key-word : NON-DIMENSIONAL DISPERSION COEFFICIENTS are used \n\
2207 When K-Epsilon Model, this parameter should recover its true physical value, since it is used as such in the turbulence model.',),
2208
2209 #          ------------------------------------
2210            b_turbu_const = BLOC(condition = 'Turbulence_Model == "Constant Viscosity"',
2211 #          ------------------------------------
2212 #              ------------------------------------
2213                Velocity_Diffusivity = SIMP( statut = 'o',typ = 'R',
2214 #              ------------------------------------
2215                    defaut = 1.E-6,
2216                    fr = 'Fixe de facon uniforme pour l ensemble du domaine la valeur du coefficient de diffusion de viscosite globale (dynamique + turbulente).\n\
2217 Cette valeur peut avoir une influence non negligeable sur la forme et la taille des recirculations.',
2218                    ang = 'Sets, in an even way for the whole domain, the value of the coefficient of global (dynamic+turbulent) viscosity. \n\
2219 this value may have a significant effect both on the shapes and sizes of recirculation zones.',),
2220             ), # fin b_turbu_const
2221
2222 #          ------------------------------------
2223            b_turbu_elder = BLOC(condition = 'Turbulence_Model == "Elder"',
2224 #          ------------------------------------
2225 #              ------------------------------------
2226                Non_Dimensional_Dispersion_Coefficients = SIMP (statut = 'o',
2227 #              ------------------------------------
2228                    typ = Tuple(2),validators = VerifTypeTuple(('R','R')),defaut = (6.,0.6),
2229                    fr = 'coefficients longitudinal et transversal dans la formule de Elder.',
2230                    ang = 'Longitudinal and transversal coefficients in elder s formula.  Used only with turbulence model number 2',),
2231            ), # fin bloc b_turbu_elder
2232
2233 #    -----------------------------------------------------------------------
2234      Accuracy_Of_K = SIMP( statut = 'o',typ = 'R', defaut = 1e-09 ,
2235 #    -----------------------------------------------------------------------
2236             fr = 'Fixe la precision demandee sur k pour le test d arret dans letape de diffusion et termes sources du modele k-epsilon.',
2237             ang = 'Sets the required accuracy for computing k in the diffusion and source terms step of the k-epsilon model.',),
2238
2239 #    -----------------------------------------------------------------------
2240      Accuracy_Of_Epsilon = SIMP( statut = 'o',typ = 'R', defaut = 1e-09 ,
2241 #    -----------------------------------------------------------------------
2242             fr = 'Fixe la precision demandee sur epsilon pour le test darret dans letape de diffusion et termes sources de k et epsilon.',
2243             ang = 'Sets the required accuracy for computing epsilon in the diffusion and source-terms step of the k-epsilon model.',),
2244
2245 #    -----------------------------------------------------------------------
2246      Time_Step_Reduction_For_K_Epsilon_Model = SIMP( statut = 'f',typ = 'R', defaut = 1.0 ,
2247 #    -----------------------------------------------------------------------
2248            fr = 'Coefficient reducteur du pas de temps pour le modele k-epsilon (qui est normalement identique a celui du systeme hydrodynamique).\n\
2249 Utilisation deconseillee',
2250            ang = 'Time step reduction coefficient for k-epsilon model (which is normally same the same as that of the hydrodynamic system).\n\
2251 Not recommended for use.',),
2252
2253 #    -----------------------------------------------------------------------
2254      Maximum_Number_Of_Iterations_For_K_And_Epsilon = SIMP( statut = 'o',typ = 'I',
2255 #    -----------------------------------------------------------------------
2256            defaut = 50 ,
2257            fr = 'Fixe le nombre maximum diterations accepte lors de la resolution du systeme diffusion-termes sources du modele k-epsilon.',
2258            ang = 'Sets the maximum number of iterations that are acceptable when solving the diffusion source-terms step of the k-epsilon model.',),
2259
2260 #    -----------------------------------------------------------------------
2261      Turbulence_Model_For_Solid_Boundaries = SIMP( statut = 'o',typ = 'TXM',
2262 #    -----------------------------------------------------------------------
2263            defaut = 'Rough' ,
2264            into = ('Smooth', 'Rough'),
2265            fr = 'Permet de choisir le regime de turbulence aux parois ',
2266            ang = 'Provided for selecting the type of friction on the walls',),
2267
2268 #    -----------------------------------------------------------------------
2269       Solver_For_K_Epsilon_Model = SIMP( statut = 'o',typ = 'TXM',
2270 #    -----------------------------------------------------------------------
2271            defaut = "Conjugate gradient" ,
2272            into = ("Conjugate gradient", "Conjugate residuals", "Conjugate gradient on normal equation", 
2273                    "Minimum error", "Conjugate gradient squared", "Conjugate gradient squared stabilised (CGSTAB)",
2274                    "GMRES", "Direct"),
2275            fr = 'Permet de choisir le solveur utilise pour la resolution du systeme du modele k-epsilon',
2276            ang = 'Makes it possible to select the solver used for solving the system of the k-epsilon model.',),
2277
2278 #        -----------------------------------------------------------------------
2279          b_gmres = BLOC(condition = 'Solver_For_K_Epsilon_Model == "GMRES"',
2280 #        -----------------------------------------------------------------------
2281 #            -----------------------------------------------------------------------
2282              Option_For_The_Solver_For_K_Epsilon_Model = SIMP( statut = 'o',typ = 'I',
2283 #            -----------------------------------------------------------------------
2284                   defaut = 2 ,val_min = 2,val_max = 15,
2285                   fr = 'le mot cle est la dimension de lespace de KRILOV (valeurs conseillees entre 2 et 7)',
2286                   ang = 'dimension of the krylov space try values between 2 and 7',),
2287          ), # fin bloc b_gmres
2288
2289 #    -----------------------------------------------------------------------
2290      Preconditioning_For_K_Epsilon_Model = SIMP( statut = 'o',typ = 'TXM',
2291 #    -----------------------------------------------------------------------
2292          defaut = 'Diagonal' ,
2293          into = ("Diagonal", "No preconditioning", "Diagonal condensed", "Crout", "Diagonal and crout", "Diagonal condensed and crout"),
2294          fr = 'Permet de preconditionner le systeme relatif au modele k-epsilon',
2295          ang = 'Preconditioning of the linear system in the diffusion step of the k-epsilon model.',
2296      ),
2297 #    -----------------------------------------------------------------------
2298      Information_About_K_Epsilon_Model = SIMP(statut = 'o',typ = bool,defaut = True,
2299 #    -----------------------------------------------------------------------
2300         fr = 'Donne le nombre d iterations du solveur de l etape de diffusion et termes sources du modele k-epsilon.',
2301         ang = 'Gives the number of iterations of the solver in the diffusion and source terms step of the k-epsilon model.',
2302      ),
2303 )# fin TURBULENCE
2304
2305
2306
2307
2308 # -----------------------------------------------------------------------
2309 PARTICLE_TRANSPORT = PROC(nom = "PARTICLE_TRANSPORT",op = None,
2310 # -----------------------------------------------------------------------
2311 #    -----------------------------------------------------------------------
2312       Number_Of_Drogues = SIMP(statut = 'o',typ = 'I',defaut = 0,
2313 #    -----------------------------------------------------------------------
2314       fr = 'Permet d''effectuer un suivi de flotteurs',
2315       ang = 'Number of drogues in the computation.',),
2316
2317 #    -----------------------------------------------------------------------
2318      Algae_Transport_Model = SIMP( statut = 'o',typ = bool, defaut = False ,
2319 #    -----------------------------------------------------------------------
2320           fr = 'Si oui, les flotteurs seront des algues',
2321           ang = 'If yes, the floats or particles will be algae',),
2322
2323 #        -----------------------------------------------------------------------
2324          algae_exists = BLOC(condition = "Algae_Transport_Model == True", 
2325 #        -----------------------------------------------------------------------
2326 #            -----------------------------------------------------------------------
2327              Algae_Type = SIMP( statut = 'o',typ = 'TXM',
2328 #            -----------------------------------------------------------------------
2329                  into = ["Sphere", "Iridaea flaccida (close to ulva)", "Pelvetiopsis limitata", "Gigartina leptorhynchos"],
2330                  defaut = "Sphere",
2331                  fr = 'Type des algues. Pour sphere les algues seront modelisees comme des spheres, pour les autres choix voir Gaylord et al.(1994)',
2332                  ang = 'Algae type. For sphere, the algae particles will be modeled as spheres, for the other choices see Gaylord et al.(1994)',),
2333
2334 #            -----------------------------------------------------------------------
2335              Diameter_Of_Algae = SIMP( statut = 'o',typ = 'R', defaut = 0.1 ,
2336 #            -----------------------------------------------------------------------
2337                  fr = 'Diametre des algues en m',
2338                  ang = 'Diametre of algae in m',),
2339
2340 #            -----------------------------------------------------------------------
2341              Density_Of_Algae = SIMP( statut = 'o',typ = 'R', defaut = 1050.0 ,
2342 #            -----------------------------------------------------------------------
2343                  fr = 'Masse volumique des algues en kg/m3',
2344                  ang = 'Density of algae in kg/m3',),
2345
2346 #            -----------------------------------------------------------------------
2347              Thickness_Of_Algae = SIMP( statut = 'o',typ = 'R', defaut = 0.01 ,
2348 #            -----------------------------------------------------------------------
2349                  fr = 'Epaisseur des algues en m',
2350                  ang = 'Thickness of algae in m',),
2351       ), # fin algae
2352
2353
2354 #    -----------------------------------------------------------------------
2355      Oil_Spill_Model = SIMP( statut = 'o',typ = bool, defaut = False ,
2356 #    -----------------------------------------------------------------------
2357          fr = 'pour declencher le modele de derive de nappes, dans ce cas le fichier de commandes migrhycar est necessaire',
2358          ang = 'will trigger the oil spill model, in this case the migrhycar steering file is needed',),
2359
2360 #    -----------------------------------------------------------------------
2361      oil_exists = BLOC(condition = "Oil_Spill_Model == True", 
2362 #    -----------------------------------------------------------------------
2363 #        -----------------------------------------------------------------------
2364          Oil_Spill_Steering_File = SIMP( statut = 'o',typ = ('Fichier', 'All Files (*)',),
2365 #        -----------------------------------------------------------------------
2366              fr = 'Contient les donnees pour le modele de derive de nappes',
2367              ang = 'Contains data for the oil spill model',),
2368      ), # fin oil_exists
2369
2370 #    -----------------------------------------------------------------------
2371      drogues_exists = BLOC(condition = "Number_Of_Drogues!= 0 or Algae_Transport_Model == True or Oil_Spill_Model == True",
2372 #    -----------------------------------------------------------------------
2373 #        -----------------------------------------------------------------------
2374          Drogues_File = SIMP( statut = 'o',typ = ('Fichier', 'All Files (*)',),
2375 #        -----------------------------------------------------------------------
2376              fr = 'Fichier de resultat avec les positions des flotteurs',
2377              ang = 'Results file with positions of drogues',),
2378
2379 #        -----------------------------------------------------------------------
2380          Printout_Period_For_Drogues = SIMP(statut = 'o',typ = 'I',defaut = 1,
2381 #        -----------------------------------------------------------------------
2382               fr = 'Nombre de pas de temps entre 2 sorties de positions de flotteurs dans le fichier des resultats binaire supplementaire\n\
2383 N affecte pas la qualite du calcul de la trajectoire',
2384               ang = 'Number of time steps between 2 outputs of drogues positions in the binary file',),
2385      ),#fin drogues ou algae
2386
2387
2388 #    -----------------------------------------------------------------------
2389      Stochastic_Diffusion_Model = SIMP( statut = 'o',typ = 'I', defaut = 0 ,
2390 #    -----------------------------------------------------------------------
2391          fr = 'Pour les particules : flotteurs, algues, hydrocarbures',
2392          ang = 'Meant for particles: drogues, algae, oil spills',),
2393
2394 #    -----------------------------------------------------------------------
2395      Number_Of_Lagrangian_Drifts = SIMP( statut = 'o',typ = 'I', defaut = 0 ,
2396 #    -----------------------------------------------------------------------
2397          fr = 'Permet deffectuer simultanement plusieurs calculs de derives lagrangiennes initiees a des pas differents',
2398          ang = 'Provided for performing several computations of lagrangian drifts starting at different times.',),
2399
2400 #    -----------------------------------------------------------------------
2401      b_cons = BLOC(condition = "Number_Of_Lagrangian_Drifts != 0",
2402 #    -----------------------------------------------------------------------
2403 #        -----------------------------------------------------------------------
2404          Consigne = SIMP(statut = "o",homo = 'information',typ = "TXM", 
2405 #        -----------------------------------------------------------------------
2406              defaut = "Add A and G in the VARIABLES FOR GRAPHIC PRINTOUTS key-word in POST_PROCESSING SECTION"),
2407     ), # fin b_cons
2408
2409 )# fin PARTICULE
2410 # -----------------------------------------------------------------------
2411 TRACERS = PROC(nom = "TRACERS",op = None,
2412 # -----------------------------------------------------------------------
2413
2414 #        -----------------------------------------------------------------------
2415          Tracers_Setting = FACT(statut = 'o',
2416 #        -----------------------------------------------------------------------
2417
2418 #        -----------------------------------------------------------------------
2419          Number_Of_Tracers = SIMP( statut='o',typ='I',
2420 #        -----------------------------------------------------------------------
2421       defaut=0 ,
2422       fr = 'Definit le nombre de traceurs.',
2423       ang= 'Defines the number of tracers',),
2424 #PNPNPN Recalculer Names_Of_Tracers et Initial_Values_Of_Tracers comme des listes
2425 # pour Names_Of_Tracers = Names_Of_Tracers+Names_Of_Unit
2426 # il faut faire un validateur (la chaine doit faire 16 caracteres evtuellement complete par des blancs)
2427
2428 #        ------------------------------------
2429          Tracer = FACT(statut = 'o', max="**",
2430 #        ------------------------------------
2431 #            -----------------------------------------------------------------------
2432               Name_Of_Tracer = SIMP( statut='o',typ='TXM',
2433 #             -----------------------------------------------------------------------
2434               fr = 'Noms des traceurs en 16 caracteres',
2435               ang= 'Name of tracers in 32 characters',),
2436
2437 #            -----------------------------------------------------------------------
2438               Name_Of_Unit = SIMP( statut='o',typ='TXM',
2439 #             -----------------------------------------------------------------------
2440               fr = 'Noms de l unitĂ© en 16 caracteres',
2441               ang= 'Name of unit in 16 characters',),
2442
2443         b_Computation_Continued = BLOC(condition = 'Computation_Continued == True',
2444 #PNPNPN Attention: global_jdc ne fonctionne pas bien : pas de propagation si chgt de valeur de Computation_Continued
2445 #            -----------------------------------------------------------------------
2446              Initial_Values_Of_Tracers = SIMP( statut='o',
2447 #             -----------------------------------------------------------------------
2448               typ = Tuple(2),validators = VerifTypeTuple(('R','R')),
2449               defaut=(0.0, 0.0) ,
2450               fr = 'Fixe la valeur initiale du traceur.',
2451               ang= 'Sets the initial value of the tracer.',),
2452
2453            ), # fin b_Computation_Continued
2454 #             ------------------------------------
2455               Boundary_Conditions = FACT( statut = 'f', 
2456 #            ------------------------------------
2457 #            -----------------------------------------------------------------------
2458                   Prescribed_Tracers_Values = SIMP( statut='o',
2459 #            -----------------------------------------------------------------------
2460                    typ = Tuple(2),validators = VerifTypeTuple(('R','R')),
2461                    fr = 'Valeurs du traceur imposees aux frontieres liquides entrantes. Lire la partie du manuel consacree aux conditions aux limites',
2462                    ang= 'Tracer values prescribed at the inflow boundaries. Read the manual section dealing with the boundary conditions',),
2463            ), # fin Boundary_Conditions
2464          ), # fin tracer
2465
2466 #        -----------------------------------------------------------------------
2467          Density_Effects = SIMP( statut='o',typ=bool,
2468 #        -----------------------------------------------------------------------
2469          defaut=False ,
2470          fr = 'prise en compte du gradient horizontal de densite le traceur est alors la salinite',
2471          ang= 'the horizontal gradient of density is taken into account the tracer is then the salinity',),
2472
2473 #        -----------------------------------------------------------------------
2474          b_Density_Effects = BLOC(condition = 'Density_Effects == True',
2475 #        -----------------------------------------------------------------------
2476 #        ------------------------------------
2477          Consigne = SIMP(statut = "o",homo = 'information',typ = "TXM",
2478 #        ------------------------------------
2479          defaut='the first Tracer must be the salinity expressed in kg/m3'),
2480
2481 #        -----------------------------------------------------------------------
2482              Mean_Temperature = SIMP( statut='o',typ='R',
2483 #        -----------------------------------------------------------------------
2484              defaut=20.0 ,
2485              fr = 'temperature de reference pour le calcul des effets de densite ',
2486              ang= 'reference temperature for density effects',),
2487
2488            ), # fin b_Density_Effects
2489
2490     ), # fin b_Tracers_Settings
2491 #    -----------------------------------------------------------------------
2492      Solving = FACT( statut='o',
2493 #    -----------------------------------------------------------------------
2494 #       -----------------------------------------------------------------------
2495         Solver_For_Diffusion_Of_Tracers = SIMP( statut='o',typ='TXM',
2496 #       -----------------------------------------------------------------------
2497                defaut='1="conjugate gradient"' ,
2498                into =('1="conjugate gradient"', '2="conjugate residual"', '3="conjugate gradient on a normal equation"',
2499                       '4="minimum error"', '5="squared conjugate gradient"', '6="cgstab"', '7="gmres "', '8="direct"'),),
2500
2501 #       -----------------------------------------------------------------------
2502         Solver_Option_For_Tracers_Diffusion = SIMP( statut='o',typ='I',
2503 #       -----------------------------------------------------------------------
2504             defaut=2 ,
2505             fr = 'si le solveur est GMRES (7) le mot cle est la dimension de lespace de KRILOV (valeurs conseillees entre 2 et 15)',
2506             ang= 'WHEN GMRES (7) IS CHOSEN, DIMENSION OF THE KRYLOV SPACE TRY VALUES BETWEEN 2 AND 15',),
2507
2508 #       -----------------------------------------------------------------------
2509         Preconditioning_For_Diffusion_Of_Tracers = SIMP( statut='o',typ='TXM',
2510 #       -----------------------------------------------------------------------
2511          defaut='2="diagonal"' ,
2512          into =('2="diagonal"', '0="no preconditioning "', '3="diagonal condensed"', '7="crout"', '14="diagonal and crout"', '21="diagonal condensed and crout"'),
2513     fr = 'Permet de preconditionner le systeme relatif au traceur. Memes definition et possibilites que pour le mot-cle PRECONDITIONNEMENT.',
2514     ang= 'Preconditioning of the linear system in the tracer diffusion step.  Same definition and possibilities as for the keyword PRECONDITIONING',
2515      ),
2516      ), # fin_Solving
2517
2518 #    -----------------------------------------------------------------------
2519      Accuracy = FACT( statut='o',
2520 #    -----------------------------------------------------------------------
2521 #       -----------------------------------------------------------------------
2522         Accuracy_For_Diffusion_Of_Tracers = SIMP( statut='o',typ='R', defaut=1e-06 ,
2523 #       -----------------------------------------------------------------------
2524           fr = 'Fixe la precision demandee pour le calcul de la diffusion du traceur.',
2525           ang= 'Sets the required accuracy for computing the tracer diffusion.',),
2526
2527 #       -----------------------------------------------------------------------
2528         Maximum_Number_Of_Iterations_For_Diffusion_Of_Tracers = SIMP( statut='o',typ='I', defaut=60 ,
2529 #       -----------------------------------------------------------------------
2530           fr = 'Limite le nombre diterations du solveur a chaque pas de temps pour le calcul de la diffusion du traceur.',
2531           ang= 'Limits the number of solver iterations at each time step for the diffusion of tracer.',),
2532
2533      ), # fin Accuracy
2534 #    -----------------------------------------------------------------------
2535      Sources = FACT( statut='o',
2536 #       -----------------------------------------------------------------------
2537 #        ------------------------------------
2538          Consigne = SIMP(statut = "o",homo = 'information',typ = "TXM",
2539 #        ------------------------------------
2540              defaut = "La longueur de la liste doit etre nb de source * nb de tracers"),
2541 #       -----------------------------------------------------------------------
2542         Values_Of_The_Tracers_At_The_Sources = SIMP( statut='o',typ='R', max='**' ,
2543 #       -----------------------------------------------------------------------
2544             fr = 'Valeurs des traceurs a chacune des sources',
2545             ang= 'Values of the tracers at the sources',),
2546      ), # fin Sources
2547 #    -----------------------------------------------------------------------
2548      Metereology = FACT( statut='o',
2549 #    -----------------------------------------------------------------------
2550 # en fait, c'est une liste de Tuple de 2. Il faudrait caluler la taille en fonction du Nombre de sources
2551 #       -----------------------------------------------------------------------
2552         Values_Of_Tracers_In_The_Rain = SIMP( 
2553 #       -----------------------------------------------------------------------
2554           statut='o',typ='R',defaut=0, max=2 , fr = '', ang= '',),
2555      ), # fin Metereology
2556
2557 #    -----------------------------------------------------------------------
2558      Numerical = FACT( statut='o',
2559 #    -----------------------------------------------------------------------
2560
2561 #       -----------------------------------------------------------------------
2562         Implicitation_Coefficient_Of_Tracers = SIMP( statut='o',typ='R',
2563 #       -----------------------------------------------------------------------
2564            defaut=0.6 ,
2565            fr = 'Fixe la valeur du coefficient dimplicitation du traceur',
2566            ang= 'Sets the value of the implicitation coefficient for the tracer',),
2567
2568 #       -----------------------------------------------------------------------
2569         Diffusion_Of_Tracers = SIMP( statut='o',typ=bool,
2570 #       -----------------------------------------------------------------------
2571            defaut=True ,
2572            fr = 'Prise en compte ou non de la diffusion du traceur passif.',
2573            ang= 'The diffusion of the passive tracer is taken into account or ignored.',), 
2574
2575 #      ------------------------------------
2576        b_Diffusion_Of_Tracers = BLOC(condition = 'Diffusion_Of_Tracers == True',
2577 #      ------------------------------------
2578 #           ------------------------------------
2579             Coefficient_For_Diffusion_Of_Tracers = SIMP( statut='o',typ='R',
2580 #           ------------------------------------
2581             defaut=1e-06 ,
2582             fr = 'Fixe la valeur du coefficient de diffusion du traceur.  Linfluence de ce parametre sur levolution du traceur dans le temps est importante.',
2583             ang= 'Sets the value of the tracer diffusivity.',),
2584        
2585 #           ------------------------------------
2586             Option_For_The_Diffusion_Of_Tracers = SIMP( statut='o',typ='TXM',
2587 #           ------------------------------------
2588             defaut='Diffusion in the form div( nu grad(T))' ,
2589             into=[ 'Diffusion in the form div( nu grad(T))', 'Diffusion in the form 1/h div ( h nu grad(T))',],),
2590        ), # fin b_Diffusion_Of_Tracers
2591
2592 #      ------------------------------------
2593        Scheme_For_Advection_Of_Tracers = SIMP( statut='o',typ='TXM',
2594 #      ------------------------------------
2595            defaut="CHARACTERISTICS" ,
2596            into =("NO ADVECTION", "CHARACTERISTICS", "EXPLICIT + SUPG", "EXPLICIT LEO POSTMA", "EXPLICIT + MURD SCHEME N", 
2597                "EXPLICIT + MURD SCHEME PSI", "LEO POSTMA FOR TIDAL FLATS", "N-SCHEME FOR TIDAL FLATS"),
2598            fr = 'Choix du schema de convection pour les traceurs, remplace FORME DE LA CONVECTION',
2599            ang= 'Choice of the advection scheme for the tracers, replaces TYPE OF ADVECTION',),
2600
2601 #      ------------------------------------
2602        Scheme_Option_For_Advection_Of_Tracers = SIMP( statut='o',typ='TXM',
2603 #      ------------------------------------
2604            defaut='explicit' ,
2605            into=['explicit','predictor-corrector for tracers'],
2606            fr = 'Si present remplace et a priorite sur : OPTION POUR LES CARACTERISTIQUES OPTION DE SUPG Si schema PSI : 1=explicite 2=predicteur-correcteur pour les traceurs',
2607            ang= 'If present replaces and has priority over: OPTION FOR CHARACTERISTICS SUPG OPTION IF PSI SCHEME: 1=explicit 2=predictor-corrector for tracers',),
2608
2609 #      ------------------------------------
2610        Mass_Lumping_On_Tracers = SIMP ( statut='o',typ='R',
2611 #      ------------------------------------
2612            defaut=0,
2613            fr = 'Fixe le taux de mass-lumping effectue sur le traceur.',
2614            ang = 'Sets the amount of mass-lumping that is performed on the tracer.',),
2615
2616     ), # fin Numerical
2617 #    -----------------------------------------------------------------------
2618      Degradation = FACT( statut='o',
2619 #    -----------------------------------------------------------------------
2620
2621 # PN Attention, il faut recalculer Law_Of_Tracers_Degradation
2622 # et les coefficients.
2623 # Question : pourquoi 2 et pas selon le nb de tracer
2624 # Est ce que ce $ va sous tracer ?
2625 #        -----------------------------------------------------------------------
2626          Law1_Of_Tracers_Degradation = SIMP( statut='o',typ='TXM',
2627 #        -----------------------------------------------------------------------
2628             into=["NO DEGRADATION","F(T90) LAW"],
2629             defaut="NO DEGRADATION",
2630             fr = 'Prise en compte dune loi de decroissance des traceurs',
2631             ang= 'Take in account a law for tracers decrease',),
2632
2633 #        -----------------------------------------------------------------------
2634          b_Law1 = BLOC(condition = 'Law1_Of_Tracers_Degradation == "F(T90) LAW"',
2635 #        -----------------------------------------------------------------------
2636 #            -----------------------------------------------------------------------
2637              Coefficient_1_For_Law_Of_Tracers_Degradation = SIMP( statut='o',typ='R',
2638 #            -----------------------------------------------------------------------
2639                   fr = 'Coefficient 1 de la loi de decroissance des traceurs',
2640                    ang= 'Coefficient 1 of law for tracers decrease',),
2641          ),# fin b_Law1
2642
2643 #        -----------------------------------------------------------------------
2644          Law2_Of_Tracers_Degradation = SIMP( statut='o',typ='TXM',
2645 #        -----------------------------------------------------------------------
2646             into=["NO DEGRADATION","F(T90) LAW"],
2647             defaut="NO DEGRADATION",
2648             fr = 'Prise en compte dune loi de decroissance des traceurs',
2649             ang= 'Take in account a law for tracers decrease',),
2650
2651 #        -----------------------------------------------------------------------
2652          b_Law2 = BLOC(condition = 'Law2_Of_Tracers_Degradation == "F(T90) LAW"',
2653 #        -----------------------------------------------------------------------
2654 #            -----------------------------------------------------------------------
2655              Coefficient_2_For_Law_Of_Tracers_Degradation = SIMP( statut='o',typ='R',
2656 #            -----------------------------------------------------------------------
2657                   fr = 'Coefficient 2 de la loi de decroissance des traceurs',
2658                    ang= 'Coefficient 2 of law for tracers decrease',),
2659          ),# fin b_Law2
2660     ), # fin Degradation
2661
2662 )# fin TRACERS
2663
2664
2665 Ordre_Des_Commandes = ( 'INITIALIZATION', 'BOUNDARY_CONDITIONS','GENERAL_PARAMETERS', 'PHYSICAL_PARAMETERS', 'NUMERICAL_PARAMETERS',
2666 'TURBULENCE', 'TRACERS', 'PARTICLE_TRANSPORT', 'CONSTRUCTION_WORKS_MODELLING',  'TIDE_PARAMETERS', 'OUTPUT_FILES')