Salome HOME
etat provisoire pour sauvegarde avant vacances. non stable
[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 INITIALIZATION=PROC(nom="INITIALIZATION",op=None,
44      fr="Initialisation des fichiers d'entrée et de sortie",
45      ang="Input and Output files initialization",
46      #UIinfo = { "groupes" : ( "CACHE", )},
47      UIinfo = { "groupes" : ( "iiii", )},
48
49      Title = SIMP( statut='o',typ='TXM',
50             fr='Titre du cas etudie. Ce titre figurera sur les dessins.',
51             ang='Title of the case being considered. This title shall be marked on the drawings.'
52                  ),
53      #Working_Directory = SIMP( statut='o',typ='Repertoire',defaut='/tmp'),
54
55      Input_Files= FACT(statut='o',
56      #     Dictionary = SIMP( statut='o', typ = ('Fichier', 'Dico (*.dico);;All Files (*)',), 
57      #                       defaut='telemac2d.dico', 
58      #                       fr='Dictionnaire des mots cles.', ang='Key word dictionary.',),
59 # PN : le mot cle doit etre dans le dictionnaire et repris du catalogue mais n 
60 # est pas modifiable
61
62           Geometry_File_Format = SIMP( statut='o',typ='TXM',into=['SERAFIN','MED','SERAFIND'], defaut='SERAFIN',
63                                  fr='Format du fichier de geometrie. Les valeurs possibles sont : \n \
64      - SERAFIN : format standard simple precision pour Telemac;   \n \
65      - SERAFIND: format standard double precision pour Telemac;   \n \
66      - MED     : format MED base sur HDF5',
67                                 ang='Results file format. Possible values are: \n\
68      - SERAFIN : classical single precision format in Telemac;\n\
69      - SERAFIND: classical double precision format in Telemac;\n\
70      - MED     : MED format based on HDF5',) ,
71
72           Geometry_File  = SIMP( statut='o', typ = ('Fichier', 'Geo Files (*.geo);;All Files (*)',),
73                            fr='Nom du fichier contenant le maillage du calcul a realiser.',
74                            ang='Name of the file containing the mesh. \n\
75        This file may also contain the topography and the friction coefficients.'),
76
77           #Steering_File     = SIMP( statut='o', typ = ('Fichier', 'Steering Files (*.cas);;All Files (*)',),),
78
79
80           Fortran_File = SIMP(statut='f',typ = ('Fichier', 'Fortran files (*.f);;All Files (*)'),
81                               fr='Nom du fichier a soumettre',
82                               ang='Name of FORTRAN file to be submitted',),
83
84           Bottom_Topography_File  = SIMP( statut='f', typ = ('Fichier', 'Geo Files (*.geo);;All Files (*)',),
85                             fr = "Nom du fichier eventuel contenant la bathymetrie associee au maillage. \
86 Si ce mot-cle est utilise; c'est cette bathymetrie qui sera utilisee pour le calcul.",
87                             ang = 'Name of the possible file containing the bathymetric data.\
88 Where this keyword is used, these bathymetric data shall be used in the computation.',
89          ),
90           Boundary_Conditions_File = SIMP( statut='o', typ = ('Fichier', 'Boundary Condition (*.cli);;All Files (*)',),
91           fr='Nom du fichier contenant les types de conditions aux limites. Ce fichier est rempli de facon automatique\n\
92               par le mailleur au moyen de couleurs affectees aux noeuds des frontieres du domaine de calcul.',
93           ang='Name of the file containing the types of boundary conditions. This file is filled automatically\n\
94               by the mesh generator through through colours that are assigned to the boundary nodes.',),
95
96
97      Validation=FACT( statut='f',
98
99 #PNPN--> creer le Mot_clef simple Validation si ce fact existe
100           Reference_File_Format = SIMP( statut='o',typ='TXM',into=['SERAFIN','MED','SERAFIND'], defaut='SERAFIN',
101                                 fr = 'Format du fichier de resultats. Les valeurs possibles sont : \n\
102      - SERAFIN : format standard simple precision pour Telemac;  \n\
103      - SERAFIND: format standard double precision pour Telemac; \n\
104      - MED     : format MED base sur HDF5' ,
105                                ang = 'Results file format. Possible values are:\n \
106      - SERAFIN : classical single precision format in Telemac;\n\
107      - SERAFIND: classical double precision format in Telemac; \n\
108      - MED     : MED format based on HDF5' ,),
109
110              Reference_File     = SIMP( statut='o', typ = ('Fichier', 'Reference File (*.ref);;All Files (*)',), 
111           fr= 'Fichier de resultats de reference pour la validation. Les resultats a placer dans ce fichier seront a ecrire sur le canal 22.',
112           ang= 'Binary-coded result file for validation. The results to be entered into this file shall be written on channel 22.',),
113      ), # Fin de Validation
114
115
116      Formatted_And_Binary_Files=FACT( statut='f',
117          Formatted_File1    = SIMP( statut='f', typ = ('Fichier', 'formated File (*.txt);;All Files (*)',),
118               fr = "Fichier de donnees formate mis a la disposition de l''utilisateur.  \n\
119 Les donnees de ce fichier seront a lire sur le canal 26.",
120               ang = 'Formatted data file made available to the user.\n\
121 The data in this file shall be read on channel 26.',
122           ),
123
124           Formatted_File2    = SIMP( statut='f', typ = ('Fichier', 'formated File (*.txt);;All Files (*)',),
125             fr = "Fichier de donnees formate mis a la disposition de l'utilisateur. \n\
126 Les donnees de ce fichier seront a lire sur le canal 27.",
127            ang = "Formatted data file made available to the user.\n\
128 The data in this file shall be read on channel 27.",
129           ),
130           Binary_Data_File1  = SIMP( statut='f', typ = ('Fichier', 'Reference File (*.txt);;All Files (*)',),
131                   fr = 'Fichier de donnees code en binaire mis a la disposition de l utilisateur. \n\
132 Les donnees de ce fichier seront a lire sur le canal 24.',
133                   ang = 'Binary-coded data file made available to the user.\n\
134 The data in this file shall be read on channel 24.',
135           ),
136           Binary_Data_File2  = SIMP( statut='f', typ = ('Fichier', 'Reference File (*.txt);;All Files (*)',),
137                   fr = 'Fichier de donnees code en binaire mis a la disposition de l utilisateur.\n\
138 Les donnees de ce fichier seront a lire sur le canal 25.',
139                    ang = 'Binary-coded data file made available to the user. \n\
140 The data in this file shall be read on channel 25.',
141           ),
142      ), # fin Formatted_And_Binary_Files
143
144      ), # Fin de InputFile 
145
146
147      Computation_Continued=SIMP( statut='o',typ=bool,defaut=False),
148       b_comput_con  = BLOC(condition = 'Computation_Continued== True',
149
150        Computattion_Continued_Settings=FACT(statut='o',
151           Previous_Computation_File_Format=SIMP( statut='o',typ='TXM',
152                 into=['SERAFIN','MED','SERAFIND'],
153                 defaut='SERAFIN',
154                 fr='Format du fichier de resultats du calcul precedent. Les valeurs possibles sont : \n\
155          - SERAFIN : format standard simple precision pour Telemac;  \n\
156          - SERAFIND: format standard double precision pour Telemac; \n\
157          - MED     : format MED base sur HDF5',
158                 ang='Previous computation results file format. Possible values are: \n\
159          - SERAFIN : classical single precision format in Telemac;  \n\
160          - SERAFIND: classical double precision format in Telemac; \n\
161          - MED     : MED format based on HDF5',
162                   ),
163
164           Previous_Computation_File  = SIMP( statut='o', 
165               typ = ('Fichier', 'Computation File (*.res);;All Files (*)',),
166               fr = "Nom d'un fichier contenant les resultats d'un calcul precedent realise sur le meme maillage \n\
167  et dont le dernier pas de temps enregistre va fournir les conditions initiales pour une suite de de calcul.",
168                ang = 'Name of a file containing the results of an earlier computation which was made on the same mesh.\n\
169  The last recorded time step will provid the initial conditions for the new computation.',
170                     ),
171           Initial_Time_Set     = SIMP(typ=bool, statut='o',
172              fr = 'Remet le temps a zero en cas de suite de calcul',
173              ang = 'Initial time set to zero in case of restart',
174              defaut="False"),
175           Record_Number_For_Restart = SIMP(typ='I', statut='o', defaut=0,
176               fr = "numero de l'enregistrement de depart dans le fichier du calcul precedent. 0 signifie qu'on prend le dernier enregistrement", 
177               ang ="record number to start from in the previous computation file, 0 for last record" ),
178      ),
179      ),# fin Fact conputation
180
181      Coupling=FACT( statut='o',
182            Sisyphe=SIMP(statut='o',typ=bool,defaut=False),
183            Tomawac=SIMP(statut='o',typ=bool,defaut=False),
184           Delwacq=SIMP(statut='o',typ=bool,defaut=False),
185         fr='Liste des codes avec lesquels on couple Telemac-2D\n\
186      SISYPHE : couplage interne avec Sisyphe\n\
187      TOMAWAC : couplage interne avec Tomawac\n\
188      DELWAQ : sortie de fichiers de resultats pour Delwaq',
189         ang='List of codes to be coupled with Telemac-2D\n\
190      SISYPHE : internal coupling with Sisyphe\n\
191      TOMAWAC : internal coupling with Tomawac\n\
192      DELWAQ: will yield results file for Delwaq',
193         ),
194       Parallel_Computation=SIMP(statut='o',typ='TXM',into=['Sequentiel','Parallel'],defaut='Sequentiel',),
195       b_para  = BLOC(condition = 'Parallel_Computation== "Parallel"',
196         Parallel_Processors=SIMP(statut='o',typ='I',val_min=0,defaut=1),
197       ),
198 )
199
200 TIDE_PARAMETERS=PROC(nom="TIDE_PARAMETERS",op=None,
201      fr="",
202      ang="",
203      Inputs_Outputs_For_Tide=FACT( statut='o',
204         Harmonic_Constants_File = SIMP( statut='o',
205           typ = ('Fichier', 'All Files (*)',),
206           fr = 'Constantes harmoniques extraites du fichier du modele de maree',
207           ang= 'Harmonic constants extracted from the tidalmodel file',
208          ),
209
210         Tidal_Model_File = SIMP( statut='o',
211           typ = ('Fichier', 'All Files (*)',),
212           fr = 'Fichier de geometrie du modele dont sont extraites les constantes harmoniques',
213           ang= 'Geometry file of the model from which harmonic constituents are extracted',
214          ),
215
216       ),
217
218      Location=FACT( statut='o',
219         #Geographic_System=SIMP(statut='f',typ='I',into=[-1,0,1,2,3,4,5]),
220
221         Geographic_System=SIMP(statut='f',typ='TXM',
222               into=["DEFINI PAR L'UTILISATEUR", "WGS84 LONGITUDE/LATITUDE EN DEGRES REELS","WGS84 NORD UTM",'WGS84 SUD UTM','LAMBERT', 'MERCATOR'],
223               defaut="DEFINI PAR L'UTILISATEUR",
224               fr = 'Systeme de coordonnees geographiques dans lequel est construit le modele numerique.',
225               ang = 'Geographic coordinates system in which the numerical model is built.Indicate the corresponding zone with the keyword ',
226         ),
227
228         Zone_number_in_Geographic_System=SIMP(statut='f',typ='TXM',
229             #into=[-1,0,1,2,3,4,22,30],
230             into=[ 'LAMBERT 1 NORD', 'LAMBERT 2 CENTRE', 'LAMBERT 3 SUD', 'LAMBERT 4 CORSE', 'LAMBERT 2 ETENDU', 'ZONE UTM, PAR EXEMPLE'],
231             fr="Numero de zone (fuseau ou type de projection) lors de l'utilisation d'une projection plane.\n Indiquer le systeme geographique dans lequel est construit le modele numerique avec le mot-cle SYSTEME GEOGRAPHIQUE",
232             ang='Number of zone when using a plane projection. \nIndicate the geographic system in which the numerical model is built with the keyword GEOGRAPHIC SYSTEM'),
233         ),
234      Physical_Parameters=FACT(statut='o',
235           Tide_Generating_Force=SIMP(statut='o',typ=bool,defaut=False),
236           b_Tide  = BLOC(condition = "Tide_Generating_Force==True",
237             Longitude_Of_Origin_Point=SIMP(typ='R',statut='o',defaut=48.,
238               fr = 'Fixe la valeur de la longitude du point origine du modele, lors de l utilisation de la force generatrice de la maree.',
239               ang = 'Give the value of the longitude of the origin point of the model, when taking into account of the tide generator force.',
240              ),
241               Tidal_Data_Base=SIMP(statut='o',typ='TXM',
242                 into=[ "JMJ", "TPXO", "LEGOS-NEA", "FES20XX", "PREVIMER",],
243 fr = 'Pour JMJ, renseigner la localisation du fichier bdd_jmj et geofin dans les mots-cles BASE DE DONNEES DE MAREE \n\
244 et FICHIER DU MODELE DE MAREE.  Pour TPXO, LEGOS-NEA, FES20XX et PREVIMER, l utilisateur doit telecharger les fichiers \n\
245 de constantes harmoniques sur internet',
246 ang = 'For JMJ, indicate the location of the files bdd_jmj and geofin with keywords TIDE DATA BASE and TIDAL MODEL FILE.\n\
247 For TPXO, LEGOS-NEA, FES20XX and PREVIMER, the user has to download files of harmonic constituents on the internet',
248              ),
249
250        b_tpxo     =BLOC(condition = "Tidal_Data_Base=='TPXO'",
251               Minor_Constituents_Inference = SIMP( statut='o',typ='bool',
252               defaut=False ,
253               fr = 'Interpolation de composantes harmoniques mineures a partir de celles lues dans les fichiers dentree lies aux mots-cles BASE BINAIRE 1 DE DONNEES DE MAREE et BASE BINAIRE 2 DE DONNEES DE MAREE',
254     ang= 'Inference of minor constituents from the one read in input files linked to keywords BINARY DATABASE 1 FOR TIDE and BINARY DATABASE 2 FOR TIDE',
255      ),
256      ),#fin du bloc b_tpxo
257
258 #-1,1,2,3,4],
259               Coefficient_To_Calibrate_Tidal_Range=SIMP(statut='o',typ='R',sug=1.),
260               Coefficient_To_Calibrate_Tidal_Velocity=SIMP(statut='o',typ='R',sug=999999),
261               Coefficient_To_Calibrate_Sea_Level=SIMP(statut='o',typ='R',sug=0.),
262               Binary_Database_1_for_Tide  = SIMP( statut='o', typ = ('Fichier', '(All Files (*),)',),),
263               Binary_Database_2_for_Tide  = SIMP( statut='o', typ = ('Fichier', '(All Files (*),)',),),
264              ),
265           Wave_Driven_Currents=SIMP(statut='o',typ=bool,defaut=False),
266           b_Wave     =BLOC(condition = "Wave_Driver_Currents=='True'",
267               Record_Number_in_Wave_File=SIMP(statut='f',typ='I',sug=1),
268          ),
269
270        Option_For_Tidal_Boundary_Conditions   = SIMP( statut='o',typ='TXM',defaut='No tide',
271        into=['No tide', 'Real tide (recommended methodology)', 'Astronomical tide', 'Mean spring tide', 'Mean tide',\
272            'Mean neap tide', 'Astronomical neap tide', 'Real tide (methodology before 2010)'],
273        ),
274        b_Option_B = BLOC(condition ='Option_For_Tidal_Boundary_Conditions!="No tide"',
275          Coefficient_To_Calibrate_Tidal_Velocities = SIMP( statut='o',typ='R',
276                defaut=999999.0 ,
277     fr = 'Coefficient pour ajuster les composantes de vitesse de londe de maree aux frontieres maritimes.  La valeur par defaut 999999. signifie que cest la racine carree du COEFFICIENT DE CALAGE DU MARNAGE qui est prise',
278     ang= 'Coefficient to calibrate the tidal velocities of tidal wave at tidal open boundary conditions.  Default value 999999. means that the square root of COEFFICIENT TO CALIBRATE TIDAL RANGE is taken',
279                  ),
280          Coefficient_To_Calibrate_Sea_Level = SIMP( statut='o',typ='R',defaut=0,
281            fr = 'Coefficient pour ajuster le niveau de mer',
282            ang = 'Coefficient to calibrate the sea level',
283                 ),
284          Coefficient_To_Calibrate_Tidal_Range = SIMP( statut='o',typ='R',
285             defaut=1.,
286             fr = 'Coefficient pour ajuster le marnage de l''onde de maree aux frontieres maritimes',
287             ang = 'Coefficient to calibrate the tidal range of tidal wave at tidal open boundary conditions',
288               ),
289          ),
290        ),
291 #
292 ) # Fin TIDE_PARAMETERS
293
294 INITIAL_STATE=PROC(nom="INITIAL_STATE",op=None,
295
296        Initial_Conditions=SIMP(statut='o',typ='TXM',
297           into=['ZERO ELEVATION','CONSTANT ELEVATION','ZERO DEPTH','CONSTANT DEPTH','SPECIAL','TPXO SATELLITE ALTIMETRY'],
298           defaut='ZERO ELEVATION',
299           fr = "Permet de definir les conditions initiales sur les hauteurs d'eau. Les valeurs possibles sont :\n\
300        - 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\
301       - 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\
302       - HAUTEUR NULLE .Initialise les hauteurs d'eau a 0. \n\
303       - HAUTEUR CONSTANTE. Initialise les hauteurs d'eau a la valeur donnee par le mot-cle HAUTEUR INITIALE. \n\
304       - PARTICULIERES. Les conditions initiales sur la hauteur d'eau doivent etre precisees dans le sous-programme CONDIN. \n\
305       - ALTIMETRIE SATELLITE TPXO. Les conditions initiales sur la hauteur  d'eau et les vitesses sont etablies sur \n\
306         la base des donnees satellite TPXO dont les 8 premiers constistuents ont ete extraits et sauves dans le fichier\n\
307          BASE DE DONNEES DE MAREE." ,
308         ang = 'Makes it possible to define the initial conditions with the water depth. The possible values are : \n\
309        - 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\
310        - CONSTANT ELEVATION. Initializes the water elevation to the value given by the keyword \n\
311        - INITIAL ELEVATION. The initial water depths are computed as in the previous case. \n\
312        - ZERO DEPTH. Initializes the water depths to 0. \n\
313        - CONSTANT DEPTH. Initializes the water depths to the value givenby the key-word  INITIAL DEPTH. \n\
314        - SPECIAL. The initial conditions with the water depth should be stated in the CONDIN subroutine. \n\
315        - 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.', ),
316  
317          b_initial_elevation = BLOC (condition = "Initial_Conditions == 'CONSTANT ELEVATION'",
318            Initial_Elevation  = SIMP(statut='o',typ='R',
319               fr='Valeur utilisee avec l''option :  CONDITIONS INITIALES - COTE CONSTANTE',
320               ang='Value to be used with the option : INITIAL CONDITIONS  -CONSTANT ELEVATION' 
321               ),
322          ) , # fin b_initial_elevation
323
324          b_initial_depth = BLOC (condition = "Initial_Conditions == 'CONSTANT DEPTH'",
325            Initial_Depth = SIMP(statut='o',typ='R',
326                 fr='Valeur utilisee avec l''option : CONDITIONS INITIALES :-HAUTEUR CONSTANTE-',
327                 ang='Value to be used along with the option: INITIAL CONDITIONS -CONSTANT DEPTH-' ),
328          ),# fin b_initial_depth
329  
330          b_special= BLOC (condition = "Initial_Conditions == 'SPECIAL'",
331            # Ce mot clef est juste informatif
332            special    = SIMP(statut='o',typ='TXM',
333            defaut="The initial conditions with the water depth should be stated in the CONDIN subroutine"),
334          ), # fin b_special
335
336
337 #PNPN il faut changer la condition pour que cela soit dans maree. il faut une position=global_jdc et remonter
338 # cela
339          b_initial_TPXO = BLOC (condition = "Initial_Conditions == 'TPXO SATELLITE ALTIMETRY'",
340            Ascii_Database_For_Tide = SIMP( statut='o', typ = ('Fichier', 'All Files (*)',), ),
341            fr  = 'Base de donnees de constantes harmoniques tirees du fichier du modele de maree',
342            ang = 'Tide data base of harmonic constituents extracted from the tidal model file',
343          ), # fin b_initial_TPXO
344 ) # fin INITIAL_STATE
345
346 BOUNDARY_CONDITIONS=PROC(nom="BOUNDARY_CONDITIONS",op=None,
347             fr  = 'On donne un ensemble de conditions par frontiere liquide',
348             ang = 'One condition set per liquid boundary is given',
349             #UIinfo = { "groupes" : ( "CACHE", )},
350             UIinfo = { "groupes" : ( "iiii", )},
351  # Dans l ideal il faut aller regarder selon les groupes dans le fichier med
352  # en sortie il faut aller chercher le .cli qui va bien 
353             #Liquid_Boundaries=FACT(statut='f',max='**',
354             #    Options=SIMP(statut='f',typ='I',into=['classical boundary conditions','Thompson method based on characteristics'])
355             #    Prescribed_Flowrates=SIMP(statut='f',typ='R'),
356             #    Prescribed_Elevations=SIMP(statut='f',typ='R'),
357             #    Prescribed_Velocity=SIMP(statut='f',typ='R'),
358       # ),
359
360 # Il va falloir une "traduction dans le langage du dico"
361 # Il faut seulement l un des 3
362
363         Liquid_Boundaries=FACT(statut='f',max='**',
364                 
365             Options=SIMP(statut='f',typ='I',
366             into=['classical boundary conditions','Thompson method based on characteristics'],
367             fr='On donne 1 entier par frontiere liquide',
368             ang='One integer per liquid boundary is given',
369             ),
370
371         Type_Condition=SIMP(statut='o',typ='TXM',into=['Prescribed Flowrates','Prescribed Elevations','Prescribed Velocity'],),
372 #?????
373 # PN On ajouter le type pour rendre l 'ihm plus lisible
374 # mais ce mot-cle n existe pas dans le dico
375
376          b_Flowrates     = BLOC (condition = "Type_Condition == 'Prescribed Flowrates'",
377              Prescribed_Flowrates=SIMP(statut='o',typ='R',
378              fr=' Valeurs des debits imposes aux frontieres liquides entrantes.\n Lire la partie du mode d''emploi consacree aux conditions aux limites',
379             ang='Values of prescribed flowrates at the inflow boundaries.\n The section about boundary conditions is to be read in the manual'),
380              ),
381
382          b_Elevations   = BLOC (condition = "Type_Condition == 'Prescribed Elevations'",
383                 Prescribed_Elevations=SIMP(statut='o',typ='R',
384                 fr='Valeurs des cotes imposees aux frontieres liquides entrantes.\n Lire la partie du mode d''emploi consacree aux conditions aux limites',
385                 ang='Values of prescribed elevations at the inflow boundaries.\n The section about boundary conditions is to be read in the manual'),
386              ),
387
388          b_Velocity   = BLOC (condition = "Type_Condition == 'Prescribed Velocity'",
389                Prescribed_Velocity=SIMP(statut='o',typ='R',
390                fr='Valeurs des vitesses imposees aux frontieres liquides entrantes.\n Lire la partie du mode d''emploi consacree aux conditions aux limites',
391                ang='Values of prescribed velocities at the liquid inflow boundaries.\n Refer to the section dealing with the boundary conditions'),
392          ),
393
394        ), # fin des Liquid_Boundaries
395        Liquid_Boundaries_File = SIMP( statut='f', typ = ('Fichier', 'All Files (*)',),
396          fr = 'Fichier de variations en temps des conditions aux limites.\n\
397 Les donnees de ce fichier seront a lire sur le canal 12.',
398          ang = 'Variations in time of boundary conditions. Data of this file are read on channel 12.',
399       ),
400    
401
402 #PNPN Attention dans le Dico STAGE-DISCHARGE CURVES
403 #PNPN regarder le document de reference pour changer non programme
404        Stage_Discharge_Curves = SIMP(statut='f',typ='TXM',
405         #into=[0,1,2],
406         into=["no","Z(Q)","not programmed"],
407         fr='Indique si une courbe de tarage doit etre utilisee pour une frontiere',
408         ang='Says if a discharge-elevation curve must be used for a given boundary',
409         ),
410         b_discharge_curve   = BLOC (condition = "Stage_Discharge_Curves != 'no'",
411
412 #PNPN Attention dans le Dico STAGE-DISCHARGE CURVES FILES
413         Stage_Discharge_Curves_File   = SIMP( statut='f', typ = ('Fichier', 'All Files (*)',),
414           fr='Nom du fichier contenant les courbes de tarage',
415           ang='Name of the file containing stage-discharge curves',
416           ),
417         ),
418
419       Elements_Masked_By_User =SIMP(statut='o',typ=bool,
420        defaut=False,
421        fr = 'Si oui remplir le sous-programme maskob',
422        ang = 'if yes rewrite subroutine maskob',
423       ),
424       maskob = BLOC (condition = 'Elements_Masked_By_User==True',
425       Consigne = SIMP(statut="o",homo='information',typ="TXM", defaut="Remplir le sous-programme maskob"),
426       )
427
428 ) # fin Boundary_Conditions
429
430
431 NUMERICAL_PARAMETERS=PROC(nom="NUMERICAL_PARAMETERS",op=None,
432
433         #UIinfo = { "groupes" : ( "CACHE", )},
434         UIinfo = { "groupes" : ( "iiii", )},
435         Solver_Definition=FACT(statut='o',
436
437           Equations=SIMP(statut='o',typ='TXM',
438              into=['SAINT-VENANT EF','SAINT-VENANT VF','BOUSSINESQ'],
439              defaut='SAINT-VENANT EF',
440              fr='Choix des equations a resoudre',
441              ang= 'Choice of equations to solve',
442              ),
443
444           Solver=SIMP(statut='o',typ='TXM',
445            into = ["conjugate gradient", "conjugate residual","conjugate gradient on a normal equation",\
446                    "minimum error", "cgstab", "gmres", "direct",],
447            fr = 'Permet de choisir le solveur utilise pour la resolution de l''etape de propagation. \n\
448 Toutes les methodes proposees actuellement s''apparentent au Gradient Conjugue. Ce sont :\n\
449   1 : gradient conjugue 2 : residu conjugue       3 : gradient conjugue sur equation normale \n\
450   4 : erreur minimale   5 : gradient conjugue carre (non programme) 6 : gradient conjugue carre stabilise (cgstab)\n\
451   7 : gmres (voir aussi option du solveur) 8 : direct',
452 ang = 'Makes it possible to select the solver used for solving the propagation step.\n\
453 All the currently available methods are variations of the Conjugate Gradient method. They are as follows: \n\
454 1: conjugate gradient 2: conjugate residual 3: conjugate gradient on a normal equation\n\
455 4: minimum error 5: conjugate gradient squared (not implemented) 6: conjugate gradient squared stabilised (cgstab) \n\
456 7: gmres (see option for solver) 8: direct',
457             ),
458
459           b_gmres = BLOC (condition = "Solver == 'gmres'",
460           Solver_Option = SIMP(statut='o',typ='I', defaut=2, val_min=2,val_max=15,
461               fr = 'la dimension de l''espace de KRILOV',
462               ang = 'dimension of the KRYLOV space',
463                ),
464           ),
465
466           Solver_Accuracy = SIMP(statut='o',typ='R', defaut=1e-4,
467             fr = 'Precision demandee pour la resolution de l''etape de propagation (cf.  Note de principe).',
468             ang = 'Required accuracy for solving the propagation step (refer to Principle note).',
469            ),
470
471           Maximum_Number_Of_Iterations_For_Solver=SIMP(statut='o',typ='I', defaut=40,
472           fr = 'Les algorithmes utilises pour la resolution de l''etape de propagation etant iteratifs, \n\
473 il est necessaire de limiter le nombre d''iterations autorisees.\n\
474 Remarque : un maximum de 40 iterations par pas de temps semble raisonnable.',
475           ang = 'Since the algorithms used for solving the propagation step are iterative, \
476 the allowed number of iterations should be limited.\n\
477 Note: a maximum number of 40 iterations per time step seems to be reasonable.',
478            ),
479         ), # fin Solver
480
481         Time=FACT(statut='o',
482         regles=(AU_MOINS_UN('Number_Of_Time_Steps','Duration'),
483                 EXCLUS('Number_Of_Time_Steps','Duration'),
484                ),
485
486            Time_Step=SIMP(statut='o',typ='R',defaut=1),
487            Number_Of_Time_Steps=SIMP(statut='f',typ='I',
488               fr='Definit le nombre de pas de temps effectues lors de l''execution du code.',
489               ang='Specifies the number of time steps performed when running the code.'),
490            Duration=SIMP(statut='f',typ='R'),
491            Variable_Time_Step=SIMP(statut='f',typ=bool),
492            b_var_time  = BLOC(condition = "Variable_Time_Step==True" ,
493              Desired_Courant_Number=SIMP(statut='o',typ='R'),
494            ),
495            Original_Date_Of_Time=FACT( statut='o',
496               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.",
497               ang ='Give the date of the time origin of the model when taking into account the tide generating force.', 
498                Year=SIMP(statut='o',typ='I',val_min=1900,defaut=1900),
499                Month=SIMP(statut='o',typ='I',val_min=1,val_max=12,defaut=1),
500                Day=SIMP(statut='o',typ='I',val_min=1,val_max=31,defaut=1),),
501            Original_Hour_Of_Time=FACT( statut='f',
502                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.",
503                ang ='Give the time of the time origin of the model when taking into account the tide generating force.', 
504                Hour=SIMP(statut='o',typ='I',val_min=0,val_max=24,defaut=0),
505                Minute=SIMP(statut='o',typ='I',val_min=0,val_max=60,defaut=0),
506                Second=SIMP(statut='o',typ='I',val_min=0,val_max=60,defaut=0),
507              ),
508
509            Stop_If_A_Steady_State_Is_Reached=SIMP(statut='f',typ=bool,defaut='False'),
510            b_stop  = BLOC(condition = "Stop_If_A_Steady_State_Is_Reached==True" ,
511
512            Stop_Criteria=SIMP(statut='o',typ=Tuple(3),validators=VerifTypeTuple(('R','R','R')),
513             fr = "Criteres d'arret pour un ecoulement permanent. ces coefficients sont respectivement appliques a\n\
514         1- U et V 2- H 3- T ",
515             ang = 'Stop criteria for a steady state These coefficients are applied respectively to\n\
516         1- U and V 2- H 3-  T ',),
517                     ),
518
519            Control_Of_Limit=SIMP(statut='f',typ=bool,defaut='False',
520 fr = 'Le programme s''arrete si les limites sur u,v,h ou t sont depassees',
521 ang = 'The program is stopped if the limits on u,v,h, or t are trespassed',
522            ),
523
524            b_limit  = BLOC(condition = "Control_Of_Limit==True" ,
525
526               Limit_Values=FACT(statut='o',
527                   fr = 'valeurs mini et maxi acceptables  min puis  max',
528                   ang= 'min and max acceptable values ',
529                   Limit_Values_H=SIMP(statut='o',typ=Tuple(2),validators=VerifTypeTuple(('R','R')),defaut=(-1000,9000)),
530                   Limit_Values_U=SIMP(statut='o',typ=Tuple(2),validators=VerifTypeTuple(('R','R')),defaut=(-1000,1000)),
531                   Limit_Values_V=SIMP(statut='o',typ=Tuple(2),validators=VerifTypeTuple(('R','R')),defaut=(-1000,1000)),
532                   Limit_Values_T=SIMP(statut='o',typ=Tuple(2),validators=VerifTypeTuple(('R','R')),defaut=(-1000,1000)),
533                                ),
534                   ),
535     ), # Fin de Time
536
537      Linearity=FACT(statut='f',
538            Continuity_Correction  =SIMP(typ=bool, statut='o',defaut=False,
539              fr = 'Corrige les vitesses sur les points avec hauteur imposee ou l''equation de continuite n''a pas ete resolue',
540             ang = 'Correction of the velocities on points with a prescribed elevation, where the continuity equation has not been solved',
541             ),
542            Number_Of_Sub_Iterations_For_Non_Linearity=SIMP(statut='o',typ='I',defaut=1,
543 fr = 'Permet de reactualiser, pour un meme pas de temps, les champs convecteur et propagateur au cours de plusieurs sous-iterations.\n\
544 A la premiere sous-iteration, ces champs sont donnes par C et le champ de vitesses au pas de temps precedent.\n\
545 Aux iterations suivantes, ils sont pris egaux au champ de vitesse obtenu a la fin de la sous-iteration precedente. \n\
546 Cette technique permet d''ameliorer la prise en compte des non linearites.',
547 ang = 'Used for updating, within one time step, the advection and propagation field.  upon the first sub-iteration, \n\
548 these fields are given by C and the velocity field in the previous time step. At subsequent iterations, \n\
549 the results of the previous sub-iteration is used to update the advection and propagation field.\n\
550 The non-linearities can be taken into account through this technique.',),
551      ),
552      Precondionning_setting=FACT(statut='f',
553
554           Preconditionning=SIMP(statut='f',typ='I',
555               into=[ "diagonal", "no preconditioning", "diagonal condensee", "crout", \
556                      "gauss-seidel", "diagonal and crout", "diagonal condensed and crout"],
557           ),
558           C_U_Preconditionning  =SIMP(typ=bool, statut='f',
559              fr = 'Changement de variable de H en C dans le systeme lineaire final',
560             ang = 'Change of variable from H to C in the final linear system'
561            ),
562         ),# fin Preconditionnement
563      
564      
565      Matrix_Informations=FACT(statut='f',
566           Matrix_Vector_Product =SIMP(statut='f',typ='TXM',
567              into=["classic", "frontal"],
568              fr='attention, si frontal, il faut une numerotation speciale des points',
569              ang='beware, with option 2, a special numbering of points is required',
570           ),
571           Matrix_Storage =SIMP(statut='f',typ='TXM',
572              into=["EBE classique","Stockage par segments",]
573           ),
574      ),# fin Matrix_Informations
575
576      Advection=FACT(statut='o',
577  
578         Advection_Propagation=FACT(statut='o',
579           Advection_Of_U_And_V=SIMP(statut='o',typ=bool,defaut=False,
580             fr = 'Prise en compte ou non de la convection de U et V.',
581             ang= 'The advection of U and V is taken into account or ignored.'
582             ),
583
584           b_u_v = BLOC( condition = "Advection_Of_U_And_V==True",
585           Type_Of_Advection_U_And_V=SIMP(statut='o',typ='TXM',position="global",
586           into=["characteristics", "SUPG", "Conservative N-scheme",  'Conservative N-scheme',\
587                  'Conservative PSI-scheme', 'Non conservative PSI scheme', 'Implicit non conservative N scheme',\
588                  'Edge-based N-scheme'],
589           defaut="characteristics",
590
591                  ),
592            b_upwind     =BLOC(condition = "Type_Of_Advection_U_And_V== 'SUPG'",
593             Upwind_Coefficients_Of_U_And_V=SIMP(statut='o',typ='R',defaut=1.)
594                ),
595            ),
596
597           Advection_Of_H=SIMP(statut='o',typ=bool,defaut=False,
598             fr = 'Prise en compte ou non de la convection de H.',
599             ang= 'The advection of H is taken into account or ignored.'
600             ),
601
602           b_h = BLOC( condition = "Advection_Of_H==True",
603
604           Type_Of_Advection_H=SIMP(statut='o',typ='TXM',position="global",
605           into=["characteristics", "SUPG", "Conservative N-scheme",  'Conservative N-scheme',\
606                  'Conservative PSI-scheme', 'Non conservative PSI scheme', 'Implicit non conservative N scheme',\
607                  'Edge-based N-scheme'],
608           defaut="Conservative PSI-scheme",
609                  ),
610            b_upwind_H     = BLOC(condition = "Type_Of_Advection_H== 'SUPG'",
611             Upwind_Coefficients_Of_H=SIMP(statut='o',typ='R',defaut=1.)
612                ),
613            ),
614
615
616          Advection_Of_K_And_Epsilon=SIMP(statut='o',typ=bool,defaut=False,
617            fr = 'Prise en compte ou non de la convection de Tracer.',
618             ang= 'The advection of Tracer is taken into account or ignored.'
619             ),
620
621           b_k = BLOC( condition = "Advection_Of_K_And_Epsilon==True",
622
623           Type_Of_Advection_K_And_Epsilon=SIMP(statut='o',typ='TXM',position="global",
624           into=["characteristics", "SUPG", "Conservative N-scheme",  'Conservative N-scheme',\
625                  'Conservative PSI-scheme', 'Non conservative PSI scheme', 'Implicit non conservative N scheme',\
626                  'Edge-based N-scheme'],
627           defaut="characteristics",
628                  ),
629            b_upwind_k     =BLOC(condition = "Type_Of_Advection_K_And_Epsilon== 'SUPG'",
630             Upwind_Coefficients_Of_K_And_Epsilon=SIMP(statut='o',typ='R',defaut=1.)
631                ),
632            ),
633
634           Advection_Of_Tracers=SIMP(statut='o',typ=bool,defaut=False,
635             fr = 'Prise en compte ou non de la convection de Tracer.',
636             ang= 'The advection of Tracer is taken into account or ignored.'
637             ),
638
639           b_tracers = BLOC( condition = "Advection_Of_Tracers==True",
640
641           Type_Of_Advection_Tracers=SIMP(statut='o',typ='TXM',position="global",
642           into=["characteristics", "SUPG", "Conservative N-scheme",  'Conservative N-scheme',\
643                  'Conservative PSI-scheme', 'Non conservative PSI scheme', 'Implicit non conservative N scheme',\
644                  'Edge-based N-scheme'],
645                  ),
646            b_upwind_Tracers     =BLOC(condition = "Type_Of_Advection_Tracers== 'SUPG'",
647             Upwind_Coefficients_Of_Tracers=SIMP(statut='o',typ='R',defaut=1.)
648                ),
649            ),
650
651           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')",
652             Maximum_Number_Of_Iterations_For_Advection_Schemes = SIMP( statut='o',typ='I', defaut=10 ,
653                fr = 'Seulement pour schemes Edge-based N-scheme',
654                ang= 'Only for Edge-based N-scheme',
655                 ),
656           ),
657         ),
658         Scheme_For_Advection_Of_K_Epsilon=SIMP(statut='o',typ='TXM',
659         into=["no advection", "characteristics", "explicit + supg"," postma", "explicit + murd scheme n", "explicit + murd scheme psi", "leo postma for tidal flats", "n-scheme for tidal flats"],
660       fr = 'Choix du schema de convection pour k et epsilon, remplace FORME DE LA CONVECTION',
661        ang = 'Choice of the advection scheme for k and epsilon, replaces TYPE OF ADVECTION',),
662
663 #PNPNPN
664 # recalculer la liste de 4
665 # Attention bloc selon le type de convection
666      SUPG=FACT(statut='o',
667         Supg_Option_U_And_V=SIMP(statut='o',defaut='modified SUPG',typ='TXM',into=['no upwinding', 'classical SUPG','modified SUPG']),
668         Supg_Option_H=SIMP(statut='o',defaut='modified SUPG',typ='TXM',into=['no upwinding', 'classical SUPG','modified SUPG']),
669         Supg_Option_Tracers=SIMP(statut='o',defaut='modified SUPG',typ='TXM',into=['no upwinding', 'classical SUPG','modified SUPG']),
670         Supg_Option_K_and_Epsilon=SIMP(statut='o',defaut='modified SUPG',typ='TXM',into=['no upwinding', 'classical SUPG','modified SUPG']),
671          ),
672
673           Mass_Lumping_On_H =SIMP(statut='f',typ='R',defaut=0,
674             fr = 'TELEMAC offre la possibilite d''effectuer du mass-lumping sur H ou U.\n\
675 Ceci revient a ramener tout ou partie (suivant la valeur de ce coefficient) des matrices AM1 (h) ou AM2 (U) \n\
676 et AM3 (V) sur leur diagonale.  Cette technique permet d''accelerer le code dans des proportions tres\n\
677 importantes et de le rendre egalement beaucoup plus stable. Cependant les solutions obtenues se trouvent lissees.\n\
678 Ce parametre fixe le taux de mass-lumping effectue sur h.',
679             ang = 'TELEMAC provides an opportunity to carry out mass-lumping either on C,H or on the velocity. \n\
680 This is equivalent to bringing the matrices AM1(h) or AM2(U) and AM3(V) wholly or partly, back onto their diagonal.\n\
681 Thanks to that technique, the code can be speeded up to a quite significant extent and it can also be made much \n\
682 more stable. The resulting solutions, however, become artificially smoothed. \n\
683 This parameter sets the extent of mass-lumping that is performed on h.'),
684
685           Mass_Lumping_On_Velocity =SIMP(statut='f',typ='R',defaut=0,
686             fr = 'Fixe le taux de mass-lumping effectue sur la vitesse.',
687             ang = 'Sets the amount of mass-lumping that is performed on the velocity.'
688 ),
689
690
691 #PNPNPNPN
692 #
693 # Attention a recalculer
694 # Il faut recalculer des listes de 4 en sortie
695 #
696        Treatment_Of_The_Linear_System=SIMP(statut='f', typ='TXM',
697 #CHOIX1 = '1="coupled"';'2="Wave equation"'
698            into=["coupled","Wave equation"],
699            defaut="coupled",
700        ),
701        Free_Surface_Gradient_Compatibility=SIMP(statut='f',typ='R',defaut=1.,
702             fr = 'Des valeurs inferieures a 1 suppriment les oscillations parasites',
703             ang = 'Values less than 1 suppress spurious oscillations'
704        ),
705
706  ), # fin Advection
707
708         Propagation=FACT(statut='f',
709 #PNPNPN Il faut recalculer le MCSIM Propagation
710           Linearized_Propagation=SIMP(statut='o',typ=bool,defaut=False),
711           b_linear     =BLOC(condition = "Linearized_Propagation==True ",
712             Mean_Depth_For_Linearity=SIMP(statut='o',typ='R',defaut=0.0,val_min=0),
713           ),
714           Initial_Guess_for_H=SIMP(statut='f',typ='TXM',into=['zero','previous','extrapolation'],defaut='previous',
715          fr = 'Tir initial du solveur de l etape de propagation.  Offre la possibilite de modifier la valeur initiale de DH,\n\
716 accroissement de H, a chaque iteration, dans l etape de propagation en utilisant les valeurs finales de cette variable \n\
717 aux pas de temps precedents. Ceci peut permettre daccelerer la vitesse de convergence lors de la resolution du systeme.',
718     ang= 'Initial guess for the solver in the propagation step.  Makes it possible to modify the initial value of H, \n\
719 upon each iteration in the propagation step, by using the ultimate values this variable had in the earlier time steps.\n\
720 Thus, the convergence can be speeded up when the system is being solved.',
721 ),
722           Initial_Guess_for_U=SIMP(statut='f',typ='TXM',into=['zero','previous','extrapolation'], defaut='previous',
723          fr = 'Tir initial du solveur de l etape de propagation.  Offre la possibilite de modifier la valeur initiale de DH,\n\
724 accroissement de U, a chaque iteration, dans l etape de propagation en utilisant les valeurs finales de cette variable \n\
725 aux pas de temps precedents. Ceci peut permettre daccelerer la vitesse de convergence lors de la resolution du systeme.',
726     ang= 'Initial guess for the solver in the propagation step.  Makes it possible to modify the initial value of U, \n\
727 upon each iteration in the propagation step, by using the ultimate values this variable had in the earlier time steps.\n\
728 Thus, the convergence can be speeded up when the system is being solved.',
729 ),
730 ),
731         Discretisation_Implicitation=FACT(statut='f',
732           Discretisations_In_Space=SIMP(statut='f',typ='TXM', 
733             into =["linear for velocity and depth", "quasi-bubble-velocity and linear depth", "quadratic velocity and linear depth"],
734             defaut="linear for velocity and depth",),
735           Implicitation_For_Depth=SIMP(statut='f',typ='R',defaut=0.55,
736 fr = 'Fixe la valeur du coefficient d''implicitation sur C dans l''etape de propagation (cf.  Note de principe).\n\
737 Les valeurs inferieures a 0.5 donnent un schema instable.',
738 ang = 'Sets the value of the implicitation coefficient for C (the celerity of waves) in the propagation step (refer to principle note).\n\
739 Values below 0.5 result in an unstable scheme.'),
740
741           Implicitation_for_Velocity=SIMP(statut='f',typ='R',defaut=0.55,
742 fr = 'Fixe la valeur du coefficient d''implicitation sur la vitesse dans l''etape de propagation (cf.  Note de principe).\n\
743 Les valeurs inferieures a 0.5 donnent un schema instable.',
744 ang= 'Sets the value of the implicitation coefficient for velocity in the propagation step (refer to principle note).\n\
745 Values below 0.5 result in an unstable condition.'),
746
747           Implicitation_For_Diffusion_Of_Velocity=SIMP(statut='f',typ='R',defaut=0,
748           fr = 'Fixe la valeur du coefficient d''implicitation sur les termes de diffusion des vitesses',
749           ang = 'Sets the value of the implicitation coefficient for the diffusion of velocity',
750               ),
751         ),
752       
753
754         Tidal_Flats=SIMP(statut='o',typ=bool,defaut=False,
755 fr='permet de supprimer les tests sur les bancs decouvrants, dans les cas ou l''on est certain qu''il n''y en aura pas, En cas de doute : oui',
756 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'
757         ),
758         b_tidal_flats=BLOC(condition='Tidal_Flats==True',
759
760            Option_For_The_Treatment_Of_Tidal_Flats=SIMP(statut='o',typ='TXM',
761         into=["Equations resolues partout avec correction sur les bancs decouvrants",\
762         "gel des elements decouvrants","comme 1 mais avec porosite (methode defina)"],
763         defaut="equations resolues partout avec correction sur les bancs decouvrants",
764                                    ),
765                     b_option_tidal_flats=BLOC(condition='Option_For_The_Treatment_Of_Tidal_Flats=="Equations resolues partout avec correction sur les bancs decouvrants"',
766                       Treatment_Of_Negative_Depths = SIMP( statut='o',typ='TXM',
767                        into=[ 'no treatment', 'smoothing', 'flux control'],
768                        defaut='smoothing' ,),
769                      ),
770           Threshold_For_Negative_Depths = SIMP( statut='o',typ='R', defaut=0.0 ,
771              fr = 'En dessous du seuil, les hauteurs negatives sont lissees',
772              ang= 'Below the threshold the negative depths are smoothed',
773              ),
774           
775           H_Clipping=SIMP(statut='o',typ=bool,defaut=False,
776                 fr = 'Determine si l''on desire ou non limiter par valeur inferieure la hauteur d''eau H (dans le cas des bancs decouvrants par exemple).',
777               ang = 'Determines whether limiting the water depth H by a lower value desirable or not. (for instance in the case of tidal flats)\n\
778 This key-word may have an influence on mass conservation since the truncation of depth is equivalent to adding mass.',),
779
780         b_clipping=BLOC(condition='H_Clipping==True',
781           Minimum_Value_Of_Depth = SIMP( statut='o',typ='R', defaut=0.0 ,
782     fr = 'Fixe la valeur minimale de a lorsque loption CLIPPING DE H est activee.',
783     ang= 'Sets the minimum H value when option H CLIPPING is implemented. Not fully implemented.',),
784               ),
785      ),
786
787      Various=FACT(
788          Finite_Volume_Scheme = SIMP( statut='o',typ='TXM',
789               #CHoix de 0 a 6
790               into=[ "Roe scheme", "kinetic order 1", "kinetic order 2", "Zokagoa scheme order 1",\
791                      "Tchamen scheme order 1", "HLLC scheme order 1", "WAF scheme order 2"],
792               defaut="kinetic order 1",
793          ),
794          Newmark_Time_Integration_Coefficient = SIMP( statut='o',typ='R',
795              defaut=1.0 ,
796              fr = '1. : Euler explicite 0.5 : ordre 2 en temps',
797               ang= '1. : Euler explicit 0.5 : order 2 in time',
798           ),
799         Option_For_Characteristics = SIMP( statut='o',typ='TXM',
800             defaut="strong form" ,
801             into=['strong form','weak form',],
802             ),
803      ),
804     Mass_Lumping_For_Weak_Characteristics=SIMP(statut='f',typ='R',defaut=0,
805         fr = 'Applique a la matrice de masse',
806         ang = 'To be applied to the mass matrix',
807      ),
808    
809 )# fin NUMERICAL_PARAMETERS
810
811 PHYSICAL_PARAMETERS=PROC(nom="PHYSICAL_PARAMETERS",op=None,
812         Atmosphere=FACT(statut='f',
813           Wind=SIMP(statut='o',typ=bool,defaut=False),
814           b_Wind     =BLOC(condition = "Wind==True",
815             regles=( PRESENT_PRESENT('Wind_Velocity_along_X','Wind_Velocity_along_Y', ),),
816             Wind_Velocity_along_X=SIMP(statut='o',typ='R',defaut=0.,),
817             Wind_Velocity_along_Y=SIMP(statut='o',typ='R',defaut=0.,),
818             Threashold_Depth_for_Wind=SIMP(statut='o',typ='R',defaut=0.,),
819             Air_Pressure=SIMP(statut='o',typ=bool,defaut=False),
820             Coefficient_Of_Wind_Influence = SIMP( statut='o',typ='R', defaut=0.0 ,
821                fr = 'Fixe la valeur du coefficient d entrainement du vent (cf.  Note de principe).',
822                ang= 'Sets the value of the wind driving coefficient.  Refer to principle note.',
823      ),
824
825
826            Option_For_Wind = SIMP( statut='o',typ='TXM', defaut=0 ,
827            into=["no wind","constant in time and space","variable in time","variable in time and space"],
828               fr = 'donne les options pour introduire le vent',
829                ang= 'gives option for managing the wind'
830            ),
831           file_for_wind = BLOC (condition = 'Option_For_Wind== "variable in time" or Option_For_Wind == "variable in time and space"',
832           Consigne = SIMP(statut="o",homo='information',typ="TXM", defaut=" give formated file 3"),
833           ),
834           speed_for_wind = BLOC (condition = 'Option_For_Wind== "constant in time and space"',
835             Speed_And_Direction_Of_Wind = SIMP( statut='o', defaut=(0.0, 0.0) , typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
836             fr = 'Donne la vitesse et la direction (en degres de 0 a 360, 0 etant y=0 et x=+inf) du vent',
837             ang= 'gives the speed and direction (degre (from 0 to 360), 0 given y=0 anx x=+infinity)',
838                  ),
839               ),
840           ), # fin b_Wind
841
842           Value_Of_Atmospheric_Pressure = SIMP( statut='o',typ='R',
843           defaut=100000.0 ,
844           fr = 'donne la valeur de la pression atmospherique lorsquelle est constante en temps et en espace',
845           ang= 'gives the value of atmospheric pressure when it is contant in time and space',
846             ),
847
848           Rain_or_Evaporation=SIMP(statut='o',typ=bool,defaut=False),
849           b_Rain     =BLOC(condition = "Rain_or_Evaporation==True",
850             Rain_or_Evaporation_in_mm_perday=SIMP(statut='o',typ='I',defaut=0.),
851                          ),
852          ), # fin atmosphere
853
854           Friction_Data=SIMP(statut='o',typ=bool,defaut=False),
855           b_Friction  = BLOC(condition = "Friction_Data==True",
856           Friction_Setting=FACT(statut='o',
857              Friction_Data_File = SIMP( statut='o',
858                typ = ('Fichier', ';;All Files (*)'),
859                fr = 'fichier de donnees pour le frottement',
860                ang= 'friction data file',
861               ),
862               Depth_In_Friction_Terms = SIMP( statut='o',typ='TXM',
863                defaut= '1="nodal"' ,
864                into =('1="nodal"', '2="average"'),
865                fr = '1 : nodale 2 : moyenne',
866                ang= '1: nodal   2: average',
867              ),
868              Law_Of_Bottom_Friction = SIMP( statut='o',typ='TXM',
869              defaut='NO FRICTION' ,
870              into =('NO FRICTION', '1="HAALAND"', '2="CHEZY"', '3="STRICKLER"', '4="MANNING"', '5="NIKURADSE"','Log Law of Boundaries 6','Colebrooke_White Log 7'),
871              fr = 'selectionne le type de formulation utilisee pour le calcul du frottement sur le fond.',
872              ang= 'Selects the type of formulation used for the bottom friction.',
873              ),
874              b_Law_Friction  = BLOC(condition = "Law_Of_Bottom_Friction!=0",
875                      Friction_Coefficient = SIMP( statut='o',typ='R',
876                      defaut=50.0 ,
877                      fr = 'Fixe la valeur du coefficient de frottement pour la formulation choisie.  \
878 Attention, la signification de ce chiffre varie suivant la formule choisie : \
879 1 : coefficient lineaire 2 : coefficient de Chezy 3 : coefficient de Strickler \
880 4 : coefficient de Manning 5 : hauteur de rugosite de Nikuradse',
881     ang= 'Sets the value of the friction coefficient for the selected formulation. \
882 It is noteworthy that the meaning of this figure changes according to the selected formula (Chezy, Strickler, etc.) : \
883 1 : linear coefficient 2 : Chezy coefficient 3 : Strickler coefficient 4 : Manning coefficient 5 : Nikuradse grain size',
884                    ),
885               ),
886              b_Colebrooke_White  = BLOC(condition ="Law_Of_Bottom_Friction =='Colebrooke_White Log 7'",
887                  Manning_Default_Value_For_Colebrook_white_Law = SIMP( statut='o',typ='R',
888                  defaut=0.02 ,
889                  fr = 'valeur par defaut du manning pour la loi de frottement de  Colebrook-White ',
890                  ang= 'Manning default value for the friction law of Colebrook-White ',
891                   ),
892             ),
893
894          Non_submerged_Vegetation_Friction = SIMP( statut='o',typ=bool,
895            defaut=False ,
896            fr = 'calcul du frottement du a la vegetation non submergee',
897            ang= 'friction calculation of the non-submerged vegetation',
898              ),
899           b_Non_Sub  = BLOC(condition =' Non_submerged_Vegetation_Friction == True',
900             Diameter_Of_Roughness_Elements = SIMP( statut='o',typ='R',
901               defaut=0.006 ,
902               fr = 'diametre des elements de frottements',
903               ang= 'diameter of roughness element',
904                ),
905
906           Spacing_Of_Roughness_Elements = SIMP( statut='o',typ='R',
907               defaut=0.14 ,
908               fr = 'espacement des elements de frottement',
909               ang= 'spacing of rouhness element',
910               ),
911             ),
912           Law_Of_Friction_On_Lateral_Boundaries = SIMP( statut='o',typ='TXM',
913              defaut=0 ,
914              into =('0="NO FRICTION"', '1="HAALAND"', '2="CHEZY"', '3="STRICKLER"', '4="MANNING"', '5="NIKURADSE"', '6="LOG LAW"', '7="COLEBROOK-WHITE"'),
915              fr = 'selectionne le type de formulation utilisee pour le calcul du frottement sur les parois laterales.',
916              ang= 'Selects the type of formulation used for the friction on lateral boundaries.',
917             ),
918           Roughness_Coefficient_Of_Boundaries = SIMP( statut='o',typ='R',
919             defaut=100.0 ,
920             fr = 'Fixe la valeur du coefficient de frottement sur les frontieres solides avec un regime turbulent rugueux\n\
921  sur les bords du domaine.  meme convention que pour le coefficient de frottement',
922     ang= 'Sets the value of the friction coefficient of the solid boundary with the bed roughness option. Same meaning than friction coefficient',
923               ),
924           Maximum_Number_Of_Friction_Domains = SIMP( statut='o',typ='I',
925              defaut=10 ,
926              fr = 'nombre maximal de zones pouvant etre definies pour le frottement. Peut etre augmente si necessaire',
927              ang= 'maximal number of zones defined for the friction.  Could be increased if needed',
928               ),
929
930           Bottom_Smoothings = SIMP( statut='o',typ='I', defaut=0 ,
931     fr = 'Nombre de lissages effectues sur la topographie.  chaque lissage, effectue a l aide dune matrice de masse, est conservatif.\n\
932 Utilise lorsque les donnees de bathymetrie donnent des resultats trop irreguliers apres interpolation.',
933      ang= 'Number of smoothings on bottom topography.  each smoothing is mass conservative.  \n\
934 to be used when interpolation of bathymetry on the mesh gives very rough results.',
935      ),
936
937 Threshold_Depth_For_Receding_Procedure=SIMP(statut='o',typ='R',defaut=0 ,
938 fr ='Si > 0., declenche la procedure de ressuyage qui evite le franchissement parasite des digues mal discretisees',
939 ang='If > 0., will trigger the receding procedure that avoids overwhelming of dykes which are too loosely discretised ',
940      ),
941
942      ),
943      ), # Fin de Friction
944      Parameter_Estimation=FACT(statut='f',
945            Parameter_Estimation = SIMP( statut='o',typ='TXM', into =["FRICTION","FROTTEMENT, STEADY"],
946            fr ='Liste des parametres a estimer', 
947           ang = 'List of parameter to be estimated',),
948          
949       Definition_Of_Zones   = SIMP(typ=bool, statut='o', defaut=False,
950         fr = 'Declenche l''appel a def_zones, pour donner un numero de zone a chaque point',
951         ang = 'Triggers the call to def_zones to give a zone number to every point',
952        ),
953       b_def_zone = BLOC (condition = 'Definition_Of_Zones==True',
954       Consigne = SIMP(statut="o",homo='information',typ="TXM", defaut="complete DEF_ZONES subroutine"),
955        ),
956
957       Identification_Method = SIMP( statut='o',typ='TXM',
958         into=["list of tests", "gradient simple", "conj gradient", "Lagrange interp."],
959         defaut='gradient simple',
960       ),
961       Maximum_Number_Of_Iterations_For_Identification=SIMP(statut='o',typ='I',defaut=20,
962       fr = 'chaque iteration comprend au moins un calcul direct et un calcul adjoint',
963       ang = 'every iteration implies at least a direct and an adjoint computation',
964
965       ),
966       Cost_Function=SIMP(statut="o",typ='TXM', defaut = 'computed with h, u , v',
967       into=['computed with h, u , v', 'computed with c, u , v'],
968 #     fr = '1 : calculee sur h, u , v  2 : calculee avec c, u , v'
969       ),
970       Tolerances_For_Identification=SIMP( statut='o',typ='R',
971        defaut = (1.E-3,1.E-3,1.E-3,1.E-4),
972        fr = '4 nombres : precision absolue sur H, U, V, et precision relative sur la fonction cout',
973        ang = '4 numbers: absolute precision on H, U V, and relative precision on the cost function',
974        min=4,max=4,)
975       ),
976
977
978
979         Number_Of_Sources = SIMP( statut='o',typ='I', defaut=0 ,),
980 #PNPNPNPN saisir autant de source du le nombre
981 # Attention a la sortie a reformatter. voir page 68 du user manuel V7
982         sources_exist=BLOC(condition="Number_Of_Sources!=0",
983         Sources_File = SIMP( statut='o',typ = ('Fichier', 'All Files (*)',),
984           fr = 'Nom du fichier contenant les informations variables en temps des sources',
985            ang= 'Name of the file containing time-dependent information on sources',
986          ),
987         Source=FACT(statut='o',
988          max="**",
989          Abscissae_Of_Sources = SIMP( statut='o',
990           typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
991           fr = 'Valeurs des abscisses des sources de debit et de traceur.',
992           ang= 'abscissae of sources of flowrate and/or tracer',
993          ),
994
995           Ordinates_Of_Sources = SIMP( statut='o',
996           typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
997           fr = 'Valeurs des ordonnees des sources de debit et de traceur.',
998           ang= 'ordinates of sources of flowrate and/or tracer',
999           ),
1000           Water_Discharge_Of_Sources = SIMP( statut='o',
1001           typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
1002           fr = 'Valeurs des debits des sources.',
1003           ang= 'values of water discharge of sources',
1004           ),
1005           Velocities_Of_The_Sources_Along_X = SIMP( statut='f',
1006           typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
1007           fr = 'Vitesses du courant a chacune des sources. Si elles ne sont pas donnees, on considere que la vitesse est celle du courant',
1008           ang= 'Velocities at the sources. If they are not given, the velocity of the flow at this location is taken',
1009           ),
1010           Velocities_Of_The_Sources_Along_Y = SIMP( statut='f',
1011           typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
1012           fr = 'Vitesses du courant a chacune des sources',
1013           ang= 'Velocities at the sources',
1014         ),
1015         ),
1016        Type_Of_Sources=SIMP(statut='o',typ='TXM',into=["Normal","Dirac"],
1017         fr = 'Source portee par une base elements finis  Source portee  par une fonction de Dirac',
1018         ang= 'Source term multiplied by a finite element basis,  Source term multiplied by a Dirac function',
1019         ),
1020     ),#fin bloc source
1021     Water_Density=SIMP(statut='o',typ='R',defaut=1000.,
1022          fr = 'Fixe la valeur de la masse volumique de l eau.',
1023          ang = 'set the value of water density',
1024     ),
1025     Gravity_Acceleration=SIMP(statut='o',typ='R',defaut=9.81,
1026         fr = 'Fixe la valeur de l acceleration de la pesanteur.',
1027         ang = 'Set the value of the acceleration due to gravity.',
1028       ),
1029
1030
1031 )# fin PHYSICAL
1032
1033 POST_PROCESSING=PROC(nom="POST_PROCESSING",op=None,
1034    Graphic_Printouts=FACT(statut='f',
1035         Graphic_Printout_Period=SIMP(statut='o', typ='I',defaut=1),
1036         Number_Of_First_TimeStep_For_Graphic_Printouts=SIMP(statut='o', typ='I',defaut=1),
1037         Variables_For_Graphic_Printouts=SIMP(statut='o',max="**", typ='TXM',into=['a','b','c'],),
1038         # ajouter le into
1039    ),
1040 #PNPN Attention - il existe un mot clef Listing_Printouts
1041   Listing_Printouts=FACT(statut='f',
1042
1043           Results_File_Format = SIMP( statut='o',typ='TXM',into=['SERAFIN','MED','SERAFIND'], defaut='SERAFIN',
1044                                 fr = 'Format du fichier de resultats. Les valeurs possibles sont : \n\
1045      - SERAFIN : format standard simple precision pour Telemac;  \n\
1046      - SERAFIND: format standard double precision pour Telemac; \n\
1047      - MED     : format MED base sur HDF5' ,
1048                                ang = 'Results file format. Possible values are:\n \
1049      - SERAFIN : classical single precision format in Telemac;\n\
1050      - SERAFIND: classical double precision format in Telemac; \n\
1051      - MED     : MED format based on HDF5' ,
1052                                    ),
1053  
1054           Results_File     = SIMP( statut='o', typ = ('Fichier', 'Steering Files (*.cas);;All Files (*)',),
1055                            fr='Nom du fichier dans lequel seront ecrits les resultats du calcul avec la periodicite donnee par le mot cle : PERIODE POUR LES SORTIES GRAPHIQUES.', 
1056                           ang='Name of the file into which the computation results shall be written, the periodicity being given by the key-word: GRAPHIC PRINTOUT PERIOD.',
1057                                 ),
1058         Listing_Printout_Period = SIMP(statut='o', typ='I',defaut=1,
1059           fr  = 'Determine la periode en nombre de pas de temps d''impression des variables',
1060           ang = 'Determines, in number of time steps, the printout period for the variables',
1061         ),
1062
1063         Number_Of_First_TimeStep_For_Graphic_Printouts=SIMP(statut='o', typ='I',defaut=1),
1064         Variables_To_Be_Printed=SIMP(statut='o',max="**", typ='TXM',into=['a','b','c']),
1065    ),#Listing_Printouts
1066
1067    Formatted_Results_File = SIMP( statut='o',typ= ('Fichier','All Files (*)',),
1068         fr = 'Fichier de resultats formate mis a la disposition de l utilisateur. \
1069 Les resultats a placer dans ce fichier seront a ecrire sur le canal 29.',
1070        ang= 'Formatted file of results made available to the user.  \
1071 The results to be entered into this file shall be written on channel 29.',
1072      ),
1073
1074
1075    Debugger     = SIMP(typ=bool, statut='o', defaut=False),
1076    Output_Of_Initial_Conditions = SIMP(typ=bool, statut='o', defaut=True,
1077         fr = 'Si Vrai, impression des conditions initiales dans les resultats',
1078         ang = 'If True, output of initial conditions in the results'
1079    ),
1080
1081    Binary_Results_File = SIMP( statut='f', typ = ('Fichier', ';;All Files (*)',), 
1082        fr = "Fichier de resultats code en binaire mis a la disposition de l'utilisateur.\n\
1083 Les resultats a placer dans ce fichier seront a ecrire sur le canal 28.",
1084        ang = "Additional binary-coded result file made available to the user. \n\
1085 The results to be entered into this file shall be written on channel 28.",
1086     ),
1087
1088      Information_About_Solver = SIMP(typ=bool, statut='f',defaut=False,
1089        fr = "Si vrai, Donne a chaque pas de temps le nombre d'iterations necessaires a la convergence du solveur de l'etape de propagation.",
1090      ang = "if True, prints the number of iterations that have been necessary to get the solution of the linear system.",
1091       ),
1092
1093   Controls=FACT(
1094     Controls_Section=SIMP(statut='o',typ=Tuple(2),validators=VerifTypeTuple(('I','I')),
1095        fr = 'Couples de points (numeros globaux dans le maillage) entre lesquels les debits instantanes et cumules seront donnes.',
1096        ang ='Couples of points (global numbers in the mesh) defining sections where the instantaneous and cumulated discharges will be given',
1097           ),
1098
1099     Printing_Cumulated_Flowrates = SIMP( statut='o',typ=bool, defaut=False ,
1100     fr = 'IMPRESSION DU FLUX CUMULE A TRAVERS LES SECTIONS DE CONTROLE',
1101     ang= 'PRINTING THE CUMULATED FLOWRATES THROUGH CONTROL SECTIONS',
1102      ),
1103
1104     Compatible_Computation_Of_Fluxes = SIMP( statut='o',typ=bool, defaut=False ,
1105     fr = 'FLUX A TRAVERS LES SECTIONS DE CONTROLE, CALCUL COMPATIBLE AVEC LIMPERMEABILITE SOUS FORME FAIBLE',
1106     ang= 'FLOWRATES THROUGH CONTROL SECTIONS, COMPUTATION COMPATIBLE WITH THE WEAK FORMULATION OF NO-FLUX BOUNDARY CONDITION',
1107      ),
1108    Sections_Input_File = SIMP( statut='f', typ = ('Fichier', 'All Files (*)'),
1109     fr = 'sections input file, partitioned',
1110     ang= 'sections input file, partitioned',
1111      ),
1112
1113     Sections_Output_File = SIMP( statut='f', typ = ('Fichier', 'All Files (*)'),
1114     fr = 'sections output file, written by the master',
1115     ang= 'sections output file, written by the master',
1116      ),
1117
1118
1119   ),# fin controls
1120
1121 PRECONDITIONING = SIMP( statut='o',typ='I',
1122     defaut=2 ,
1123     fr = 'Permet de preconditionner le systeme de letape de propagation afin daccelerer la convergence lors de sa resolution.  - 0 : pas de preconditionnement;  - 2 : preconditionnement diagonal.  - 3 : preconditionnement diagonal-bloc  - 7 : preconditionnement de Crout par element ou segment  -11 : preconditionnement de Gauss-Seidel par element ou segment Certains preconditionnements sont cumulables (les diagonaux 2 ou 3 avec les autres) Pour cette raison on ne retient que les nombres premiers pour designer les preconditionnements. Si lon souhaite en cumuler plusieurs on formera le produit des options correspondantes.',
1124     ang= 'Choice of the preconditioning in the propagation step linear system that the convergence is speeded up when it is being solved.  0: no preconditioning  2: diagonal preconditioning  3: diagonal preconditioning with the condensed matrix  7: Crouts preconditioning per element or segment 11: Gauss-Seidels preconditioning per element or segment Some operations (either 2 or 3 diagonal preconditioning) can be performed concurrently with the others. Only prime numbers are therefore kept to denote the preconditioning operations. When several of them are to be performed concurrently, the product of relevant options shall be made.',
1125      ),
1126
1127 ) # FIN POST-PRO
1128
1129
1130 # Attention calculer le logique BREACH 
1131 CONSTRUCTION_WORKS_MODELLING=PROC(nom="CONSTRUCTION_WORKS_MODELLING",op=None,
1132
1133 # Attention calculer le logique BREACH 
1134
1135         Number_Of_Culverts = SIMP( statut='o',typ='I',
1136                defaut=0 ,
1137           fr = 'Nombre de siphons traites comme des termes sources ou puits. Ces siphons doivent etre decrits comme des sources \
1138 dans le fichier cas. Leurs caracteristiques sont donnees dans le fichier de donnees des siphons (voir la documentation ecrite)',
1139           ang= 'Number of culverts treated as source terms.  They must be described as sources in the domain\
1140  and their features are given in the culvert data file (see written documentation)',
1141            ),
1142         culvert_exist=BLOC(condition="Number_Of_Culverts!=0",
1143         Culvert_Data_File = SIMP( statut='o',typ = ('Fichier', 'All Files (*)',),
1144             fr = 'Fichier de description des siphons presents dans le modele',
1145             ang= 'Description of culvert existing in the model',
1146         ),
1147         ),
1148
1149           Number_Of_Tubes = SIMP( statut='o',typ='I',
1150           defaut=0 ,
1151           fr = 'Nombre de buses ou ponts traites comme des termes sources ou puits. Ces buses doivent etre decrits comme des sources\n\
1152 dans le fichier cas. Leurs caracteristiques sont donnees dans le fichier de donnees des buses (voir la documentation ecrite)',
1153           ang= 'Number of tubes or bridges treated as source terms.  They must be described as sources in the domain \n\
1154 and their features are given in the tubes data file (see written documentation)',
1155         ),
1156
1157         b_Tubes= BLOC(condition="Number_Of_Tubes!=0",
1158         Tubes_Data_File = SIMP( statut='o',
1159            typ = ('Fichier', 'All Files (*)',),
1160            fr = 'Fichier de description des buses/ponts presents dans le modele',
1161            ang= 'Description of tubes/bridges existing in the model',
1162           ),
1163           ),
1164
1165       Number_Of_Weirs=SIMP(statut='o',typ='I',defaut=0,
1166            fr = 'Nombre de seuils qui seront traites par des conditions aux limites. \n\
1167 Ces seuils doivent etre decrits comme des frontieres du domaine de calcul',
1168            ang = 'Number of weirs that will be treated by boundary conditions.',
1169      ),
1170
1171      b_Weirs= BLOC(condition="Number_Of_Weirs!=0",
1172         Weirs_Data_File = SIMP( statut='o',
1173         typ = ('Fichier', 'All Files (*)',),
1174         fr = 'Fichier de description des seuils presents dans le modele',
1175         ang= 'Description of weirs existing in the model',),
1176
1177 #PNPN a passer an anglais avec une solution lisible
1178      Type_Of_Weirs = SIMP( statut='o',typ='TXM',
1179        into=["HORIZONTAL AVEC MEME NOMBRE DE NOEUDS AMONT/AVAL (Solution historique avec bord)",
1180              "GENERALE (Nouvelle solution avec pts sources)"],
1181        defaut= "HORIZONTAL AVEC MEME NOMBRE DE NOEUDS AMONT/AVAL (Solution historique avec bord)",
1182        fr = 'Méthode de traitement des seuils ',
1183        ang= 'Method for treatment of weirs',
1184      ),
1185
1186      ),
1187
1188      Breach=SIMP(statut='f',typ=bool,defaut=False,
1189          fr = 'Prise en compte de breches dans le calcul par modification altimetrique dans le maillage.',
1190          ang = 'Take in account some breaches during the computation by modifying the bottom level of the mesh.',
1191      ),
1192      b_Breaches= BLOC (condition = 'Breach==True',
1193          Breaches_Data_File = SIMP( statut='o',typ = ('Fichier', 'All Files (*)',),
1194                 fr = 'Fichier de description des breches',
1195                 ang= 'Description of breaches',
1196          ),
1197       ),
1198       Vertical_Structures=SIMP(statut='o',typ=bool,defaut=False,
1199       fr = 'Prise en compte de la force de trainee de structures verticales',
1200       ang = 'drag forces from vertical structures are taken into account',
1201       ),
1202       maskob = BLOC (condition = 'Vertical_Structures==True',
1203       Consigne = SIMP(statut="o",homo='information',typ="TXM", defaut="subroutine DRAGFO must then be implemented"),
1204       ),
1205 ) # FIn STRUCTURE
1206 TRACERS=PROC(nom="TRACERS",op=None,
1207         Boundary_conditions=FACT(statut='o',
1208        Treatment_Of_Fluxes_At_The_Boundaries   = SIMP( statut='f',typ='TXM',
1209          into=["Priority to prescribed values","Priority to fluxes"],
1210          fr='Utilise pour les schemas SUPG, PSI et N, \n\
1211 si Priorité aux flux, on ne retrouve pas exactement les valeurs imposees des traceurs,mais le flux est correct',
1212          ang='Used so far only with the SUPG, PSI and N schemes.\n\
1213 if Priority to fluxes, Dirichlet prescribed values are not obeyed,but the fluxes are correct',
1214         ),
1215         ), # fin Boundary_conditions
1216 )          # FIN TRACERS
1217
1218 GENERAL_PARAMETERS=PROC(nom="GENERAL_PARAMETERS",op=None,
1219
1220         Spherical_Coordinates=SIMP(typ=bool,statut='o',defaut=False,
1221         fr = 'Choix des coordonnees spheriques pour la realisation du calcul ( pour les grands domaines de calcul).',
1222         ang = 'Selection of spherical coordinates to perform the computation (for large computation domains).'
1223         ),
1224
1225         b_Spher  = BLOC(condition = 'Spherical_Coordinates== True',
1226             Latitude_Of_Origin_Point=SIMP(typ='R',statut='o',defaut=48.,
1227               fr = 'Determine l origine utilisee pour le calcul de latitudes lorsque l on effectue un calcul en coordonnees spheriques.',
1228               ang = 'Determines the origin used for computing latitudes when a computation is made in spherical coordinates.this latitude\n\
1229 is in particular used to compute the Coriolis force. In cartesian coordinates, Coriolis coefficient is considered constant.'
1230               ),
1231             Spatial_Projection_Type=SIMP(statut='o',typ='TXM',into=["MERCATOR","LATITUDE LONGITUDE"]),
1232         ),
1233         b_Spher_faux  = BLOC(condition = 'Spherical_Coordinates== False',
1234            Spatial_Projection_Type=SIMP(statut='o',typ='TXM',into=["CARTESIAN, NOT GEOREFERENCED","MERCATOR","LATITUDE LONGITUDE"],
1235            defaut="CARTESIAN, NOT GEOREFERENCED",),
1236         ),
1237 )
1238
1239
1240 TURBULENCE=PROC(nom="TURBULENCE",op=None,
1241
1242     Turbulence_Model = SIMP( statut='o',typ='TXM', defaut="CONSTANT VISCOSITY", 
1243    #into =('1="CONSTANT VISCOSITY"', '2="ELDER"', '3="K-EPSILON MODEL"', '4="SMAGORINSKI"'),
1244    into =("Constant Viscosity", "Elder", "K-Epsilon Model", "Smagorinski"),
1245     
1246     fr = 'si on choisit loption 2 il ne faut pas oublier dajuster les deux valeurs du mot-cle : COEFFICIENTS ADIMENSIONNELS DE DISPERSION Si on choisit loption 3, ce meme parametre doit retrouver sa vraie valeur physique car elle est utilisee comme telle dans le modele de turbulence',
1247     ang= 'When option 2 is chosen, the two values of key-word : NON-DIMENSIONAL DISPERSION COEFFICIENTS are used When option 3 is chosen, this parameter should recover its true physical value, since it is used as such in the turbulence model.',
1248      ),
1249
1250     b_turbu_const=BLOC(condition='Turbulence_Model=="Constant Viscosity"',
1251       Velocity_Diffusivity=SIMP( statut='o',typ='R',defaut=1.E-6,
1252       fr='Fixe de facon uniforme pour l ensemble du domaine la valeur du coefficient de diffusion de viscosite globale (dynamique + turbulente).\n\
1253 Cette valeur peut avoir une influence non negligeable sur la forme et la taille des recirculations.',
1254       ang = 'Sets, in an even way for the whole domain, the value of the coefficient of global (dynamic+turbulent) viscosity. \n\
1255 this value may have a significant effect both on the shapes and sizes of recirculation zones.',),
1256
1257     ),
1258     b_turbu_elder=BLOC(condition='Turbulence_Model=="Elder"',
1259  Non_Dimensional_Dispersion_Coefficients = SIMP (statut='o',
1260           typ=Tuple(2),validators=VerifTypeTuple(('R','R')),defaut=(6.,0.6),
1261           fr = 'coefficients longitudinal et transversal dans la formule de Elder.',
1262            ang = 'Longitudinal and transversal coefficients in elder s formula.  Used only with turbulence model number 2',),
1263     ),
1264
1265      Accuracy_Of_K = SIMP( statut='o',typ='R', defaut=1e-09 ,
1266             fr = 'Fixe la precision demandee sur k pour le test darret dans letape de diffusion et termes sources du modele k-epsilon.',
1267             ang= 'Sets the required accuracy for computing k in the diffusion and source terms step of the k-epsilon model.',
1268      ),
1269
1270      Accuracy_Of_Epsilon = SIMP( statut='o',typ='R', defaut=1e-09 ,
1271            fr = 'Fixe la precision demandee sur epsilon pour le test darret dans letape de diffusion et termes sources de k et epsilon.',
1272            ang= 'Sets the required accuracy for computing epsilon in the diffusion and source-terms step of the k-epsilon model.',
1273      ),
1274      Time_Step_Reduction_For_K_epsilon_Model = SIMP( statut='f',typ='R', defaut=1.0 ,
1275     fr = 'Coefficient reducteur du pas de temps pour le modele k-epsilon (qui est normalement identique a celui du systeme hydrodynamique).\n\
1276 Utilisation deconseillee',
1277     ang= 'Time step reduction coefficient for k-epsilon model (which is normally same the same as that of the hydrodynamic system).\n\
1278 Not recommended for use.',
1279      ),
1280      Maximum_Number_Of_Iterations_For_K_And_Epsilon = SIMP( statut='o',typ='I',
1281                defaut=50 ,
1282            fr = 'Fixe le nombre maximum diterations accepte lors de la resolution du systeme diffusion-termes sources du modele k-epsilon.',
1283            ang= 'Sets the maximum number of iterations that are acceptable when solving the diffusion source-terms step of the k-epsilon model.',
1284      ),
1285      Turbulence_Model_For_Solid_Boundaries = SIMP( statut='o',typ='TXM',
1286          defaut='rough' ,
1287          #into =('1=smooth', '2=rough'),
1288          into =('smooth', 'rough'),
1289          fr = 'Permet de choisir le regime de turbulence aux parois ',
1290          ang= 'Provided for selecting the type of friction on the walls',
1291      ),
1292       Solver_For_K_epsilon_Model = SIMP( statut='o',typ='TXM',
1293             defaut="conjugate gradient" ,
1294    into =("conjugate gradient", "conjugate residuals", "conjugate gradient on normal equation", "minimum error", "conjugate gradient squared",\
1295         "conjugate gradient squared stabilised (cgstab)", "gmres", "direct"),
1296    #into =('1="conjugate gradient"', '2="conjugate residuals"', '3="conjugate gradient on normal equation"', '4="minimum error"', '5="conjugate gradient squared"', '6="conjugate gradient squared stabilised (cgstab)"', '7="gmres (see option for the solver for k-epsilon model)"', '8="direct"'),
1297     fr = 'Permet de choisir le solveur utilise pour la resolution du systeme du modele k-epsilon',
1298     ang= 'Makes it possible to select the solver used for solving the system of the k-epsilon model.',
1299      ),
1300
1301        b_gmres=BLOC(condition='Solver_For_K_epsilon_Model=="gmres"',
1302          Option_For_The_Solver_For_K_epsilon_Model = SIMP( statut='o',typ='I',
1303               defaut=2 ,val_min=2,val_max=15,
1304               fr = 'le mot cle est la dimension de lespace de KRILOV (valeurs conseillees entre 2 et 7)',
1305               ang= 'dimension of the krylov space try values between 2 and 7',),
1306             ),
1307
1308       Preconditioning_For_K_epsilon_Model = SIMP( statut='o',typ='TXM',
1309          defaut='diagonal' ,
1310          into =("diagonal", "no preconditioning", "diagonal condensed", "crout", "diagonal and crout", "diagonal condensed and crout"),
1311    #into =('2="diagonal"', '0="no preconditioning"', '3="diagonal condensed"', '7="crout"', '14="diagonal and crout"', '21="diagonal condensed and crout"'),
1312          fr = 'Permet de preconditionner le systeme relatif au modele k-epsilon',
1313          ang= 'Preconditioning of the linear system in the diffusion step of the k-epsilon model.',
1314      ),
1315     Information_About_K_Epsilon_Model=SIMP(statut='o',typ=bool,defaut=True,
1316         fr = 'Donne le nombre d iterations du solveur de l etape de diffusion et termes sources du modele k-epsilon.',
1317         ang = 'Gives the number of iterations of the solver in the diffusion and source terms step of the k-epsilon model.',
1318      ),
1319 )# fin Turbulence
1320
1321 PARTICULE=PROC(nom="PARTICULE",op=None,
1322       Number_Of_Drogues=SIMP(statut='o',typ='I',defaut=0,
1323       fr = 'Permet d''effectuer un suivi de flotteurs',
1324       ang = 'Number of drogues in the computation.',
1325       ),
1326
1327
1328      Algae_Transport_Model = SIMP( statut='o',typ=bool, defaut=False ,
1329           fr = 'Si oui, les flotteurs seront des algues',
1330           ang= 'If yes, the floats or particles will be algae',
1331      ),
1332
1333     algae_exist=BLOC(condition="Algae_Transport_Model==True", 
1334
1335        Algae_Type = SIMP( statut='o',typ='TXM',
1336         into=["SPHERE", "IRIDAEA FLACCIDA (CLOSE TO ULVA)", "PELVETIOPSIS LIMITATA", "GIGARTINA LEPTORHYNCHOS"],
1337         defaut="Sphere",
1338         fr = 'Type des algues. Pour le choix 1 les algues seront modelisees comme des spheres, pour les autres choix voir Gaylord et al. (1994).',
1339          ang= 'Algae type. For choice 1 the algae particles will be modeled as spheres, and for the other choices see Gaylord et al. (1994)',
1340        ),
1341       Diametre_Of_Algae = SIMP( statut='o',typ='R', defaut=0.1 ,
1342             fr = 'Diametre des algues en m',
1343             ang= 'Diametre of algae in m',
1344        ),
1345
1346       Density_Of_Algae = SIMP( statut='o',typ='R', defaut=1050.0 ,
1347          fr = 'Masse volumique des algues en kg/m3',
1348          ang= 'Density of algae in kg/m3',
1349         ),
1350
1351       Thickness_Of_Algae = SIMP( statut='o',typ='R', defaut=0.01 ,
1352          fr = 'Epaisseur des algues en m',
1353          ang= 'Thickness of algae in m',
1354        ),
1355       ), # fin algae
1356
1357
1358     Oil_Spill_Model = SIMP( statut='o',typ=bool, defaut=False ,
1359     fr = 'pour declencher le modele de derive de nappes, dans ce cas le fichier de commandes migrhycar est necessaire',
1360     ang= 'will trigger the oil spill model, in this case the migrhycar steering file is needed',
1361      ),
1362
1363     oil_exist=BLOC(condition="Oil_Spill_Model==True", 
1364         Oil_Spill_Steering_File = SIMP( statut='o',typ=('Fichier', 'All Files (*)',),
1365          fr = 'Contient les donnees pour le modele de derive de nappes',
1366          ang= 'Contains data for the oil spill model',
1367      ),
1368      ),
1369
1370      drogues_exist=BLOC(condition="Number_Of_Drogues!=0 or Algae_Transport_Model==True or Oil_Spill_Model==True",
1371         Drogues_File = SIMP( statut='o',typ = ('Fichier', 'All Files (*)',),
1372            fr = 'Fichier de resultat avec les positions des flotteurs',
1373            ang = 'Results file with positions of drogues',
1374          ),
1375
1376      Printout_Period_For_Drogues=SIMP(statut='o',typ='I',defaut=1,
1377        fr = 'Nombre de pas de temps entre 2 sorties de positions de flotteurs dans le fichier des resultats binaire supplementaire\n\
1378 N affecte pas la qualite du calcul de la trajectoire',
1379        ang = 'Number of time steps between 2 outputs of drogues positions in the binary file',
1380      ),
1381     ),#fin drogues ou algae
1382
1383
1384     Stochastic_Diffusion_Model = SIMP( statut='o',typ='I', defaut=0 ,
1385     fr = 'Pour les particules : flotteurs, algues, hydrocarbures',
1386     ang= 'Meant for particles: drogues, algae, oil spills',
1387      ),
1388
1389     Number_Of_Lagrangian_Drifts = SIMP( statut='o',typ='I', defaut=0 ,
1390       fr = 'Permet deffectuer simultanement plusieurs calculs de derives lagrangiennes initiees a des pas differents',
1391       ang= 'Provided for performing several computations of lagrangian drifts starting at different times.',
1392       ),
1393
1394     b_cons=BLOC(condition="Number_Of_Lagrangian_Drifts !=0",
1395      Consigne = SIMP(statut="o",homo='information',typ="TXM", 
1396      defaut="Add A and G in the VARIABLES FOR GRAPHIC PRINTOUTS key-word in POST_PROCESSING SECTION"),
1397     ),
1398
1399 )# fin PARTICULE