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