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