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