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