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