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