Salome HOME
version 19 mars
[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           Reference_File_Format = SIMP( statut='o',typ='TXM',into=['SERAFIN','MED','SERAFIND'], defaut='SERAFIN',
96                                 fr = 'Format du fichier de resultats. Les valeurs possibles sont : \n\
97      - SERAFIN : format standard simple precision pour Telemac;  \n\
98      - SERAFIND: format standard double precision pour Telemac; \n\
99      - MED     : format MED base sur HDF5' ,
100                                ang = 'Results file format. Possible values are:\n \
101      - SERAFIN : classical single precision format in Telemac;\n\
102      - SERAFIND: classical double precision format in Telemac; \n\
103      - MED     : MED format based on HDF5' ,),
104
105              Reference_File     = SIMP( statut='o', typ = ('Fichier', 'Reference File (*.ref);;All Files (*)',), 
106           fr= 'Fichier de resultats de reference pour la validation. Les resultats a placer dans ce fichier seront a ecrire sur le canal 22.',
107           ang= 'Binary-coded result file for validation. The results to be entered into this file shall be written on channel 22.',),
108      ), # Fin de Validation
109
110
111      Formatted_And_Binary_Files=FACT( statut='f',
112
113           Formatted_File2    = SIMP( statut='f', typ = ('Fichier', 'formated File (*.txt);;All Files (*)',),
114             fr = "Fichier de donnees formate mis a la disposition de l'utilisateur. \n\
115 Les donnees de ce fichier seront a lire sur le canal 27.",
116            ang = "Formatted data file made available to the user.\n\
117 The data in this file shall be read on channel 27.",
118           ),
119           Binary_Data_File1  = SIMP( statut='f', typ = ('Fichier', 'Reference File (*.txt);;All Files (*)',),
120                   fr = 'Fichier de donnees code en binaire mis a la disposition de l utilisateur. \n\
121 Les donnees de ce fichier seront a lire sur le canal 24.',
122                   ang = 'Binary-coded data file made available to the user.\n\
123 The data in this file shall be read on channel 24.',
124           ),
125           Binary_Data_File2  = SIMP( statut='f', typ = ('Fichier', 'Reference File (*.txt);;All Files (*)',),
126                   fr = 'Fichier de donnees code en binaire mis a la disposition de l utilisateur.\n\
127 Les donnees de ce fichier seront a lire sur le canal 25.',
128                    ang = 'Binary-coded data file made available to the user. \n\
129 The data in this file shall be read on channel 25.',
130           ),
131      ), # fin Formatted_And_Binary_Files
132
133      ), # Fin de InputFile 
134
135
136      Computation_Continued=FACT( statut='f',
137
138           Previous_Computation_File_Format=SIMP( statut='o',typ='TXM',
139                 into=['SERAFIN','MED','SERAFIND'],
140                 defaut='SERAFIN',
141                 fr='Format du fichier de resultats du calcul precedent. Les valeurs possibles sont : \n\
142          - SERAFIN : format standard simple precision pour Telemac;  \n\
143          - SERAFIND: format standard double precision pour Telemac; \n\
144          - MED     : format MED base sur HDF5',
145                 ang='Previous computation results file format. Possible values are: \n\
146          - SERAFIN : classical single precision format in Telemac;  \n\
147          - SERAFIND: classical double precision format in Telemac; \n\
148          - MED     : MED format based on HDF5',
149                   ),
150
151           Previous_Computation_File  = SIMP( statut='o', 
152               typ = ('Fichier', 'Computation File (*.res);;All Files (*)',),
153               fr = "Nom d'un fichier contenant les resultats d'un calcul precedent realise sur le meme maillage \n\
154  et dont le dernier pas de temps enregistre va fournir les conditions initiales pour une suite de de calcul.",
155                ang = 'Name of a file containing the results of an earlier computation which was made on the same mesh.\n\
156  The last recorded time step will provid the initial conditions for the new computation.',
157                     ),
158           Previous_Computation_Comm  = SIMP( statut='f', typ = ('Fichier', 'COMM(*.comm);;All Files (*)',),
159               fr  = "Nom du fichier .comm décrivant le cas précédent",
160               ang = "Name of a file containing the earlier study" ,),
161           Initial_Time_Set     = SIMP(typ=bool, statut='f',
162              fr = 'Remet le temps a zero en cas de suite de calcul',
163              ang = 'Initial time set to zero in case of restart',
164              defaut="False"),
165           Record_Number_For_Restart = SIMP(typ='I', statut='o', defaut=0,
166               fr = "numero de l'enregistrement de depart dans le fichier du calcul precedent. 0 signifie qu'on prend le dernier enregistrement", 
167               ang ="record number to start from in the previous computation file, 0 for last record" ),
168      ),
169
170      Computation=FACT(statut='o',
171         #Machine=FACT( statut='o',
172 # A voir plus tar Obsolete ? 
173         #   Parallel_Processors=SIMP(statut='o',typ='I',val_min=0,defaut=1),
174            #Parallel_Computation=SIMP(statut='o',typ=bool,defaut=False),
175         # ),
176         Coupling=FACT( statut='o',
177            Sisyphe=SIMP(statut='o',typ=bool,defaut=False),
178            Tomawac=SIMP(statut='o',typ=bool,defaut=False),
179           Delwacq=SIMP(statut='o',typ=bool,defaut=False),
180         fr='Liste des codes avec lesquels on couple Telemac-2D\n\
181      SISYPHE : couplage interne avec Sisyphe\n\
182      TOMAWAC : couplage interne avec Tomawac\n\
183      DELWAQ : sortie de fichiers de resultats pour Delwaq',
184         ang='List of codes to be coupled with Telemac-2D\n\
185      SISYPHE : internal coupling with Sisyphe\n\
186      TOMAWAC : internal coupling with Tomawac\n\
187      DELWAQ: will yield results file for Delwaq',
188         ),
189      ),
190 )
191
192 TIDE_PARAMETERS=PROC(nom="TIDE_PARAMETERS",op=None,
193      fr="",
194      ang="",
195      Inputs_Outputs_For_Tide=FACT( statut='o',
196         Harmonic_Constants_File = SIMP( statut='o',
197           typ = ('Fichier', 'All Files (*)',),
198           fr = 'Constantes harmoniques extraites du fichier du modele de maree',
199           ang= 'Harmonic constants extracted from the tidalmodel file',
200          ),
201
202         Tidal_Model_File = SIMP( statut='o',
203           typ = ('Fichier', 'All Files (*)',),
204           fr = 'Fichier de geometrie du modele dont sont extraites les constantes harmoniques',
205           ang= 'Geometry file of the model from which harmonic constituents are extracted',
206          ),
207
208       ),
209
210      Time=FACT( statut='o',
211        #Original_Date_Of_Time=SIMP(statut='f',typ=DateJJMMAAAA,validators=VerifTypeTuple(('R','R','R'))),
212        #Original_Hour_Of_Time=SIMP(statut='f',typ=HeureHHMMSS,validators=VerifTypeTuple(('R','R','R'))),
213        Original_Date_Of_Time=FACT( statut='o',
214          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.",
215          ang ='Give the date of the time origin of the model when taking into account the tide generating force.', 
216          Year=SIMP(statut='o',typ='I',val_min=1900,defaut=1900),
217          Month=SIMP(statut='o',typ='I',val_min=1,val_max=12,defaut=1),
218          Day=SIMP(statut='o',typ='I',val_min=1,val_max=31,defaut=1),
219           ),
220        Original_Hour_Of_Time=FACT( statut='f',
221          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.",
222          ang ='Give the time of the time origin of the model when taking into account the tide generating force.', 
223          Hour=SIMP(statut='o',typ='I',val_min=0,val_max=24,defaut=0),
224          Minute=SIMP(statut='o',typ='I',val_min=0,val_max=60,defaut=0),
225          Second=SIMP(statut='o',typ='I',val_min=0,val_max=60,defaut=0),
226          ),
227       ),
228      Location=FACT( statut='f',
229         #regles=( PRESENT_PRESENT('Longitude_Of_origin','Latitute_Of_origin', ),),
230         #Spatial_Projection=SIMP(statut='f',typ='I',into=[1,2,3]),
231         #Geographic_System=SIMP(statut='f',typ='I',into=[-1,0,1,2,3,4,5]),
232
233         Geographic_System=SIMP(statut='f',typ='TXM',
234               into=["DEFINI PAR L'UTILISATEUR", "WGS84 LONGITUDE/LATITUDE EN DEGRES REELS","WGS84 NORD UTM",'WGS84 SUD UTM','LAMBERT', 'MERCATOR'],
235               defaut="DEFINI PAR L'UTILISATEUR",
236               fr = 'Systeme de coordonnees geographiques dans lequel est construit le modele numerique.',
237               ang = 'Geographic coordinates system in which the numerical model is built.Indicate the corresponding zone with the keyword ',
238         ),
239              b_geo_system  = BLOC(condition = "Geographic_System in ('WGS84 LONGITUDE/LATITUDE EN DEGRES REELS','WGS84 NORD UTM','WGS84 SUD UTM','MERCATOR')",
240              Spatial_Projection=SIMP(statut='o',typ='TXM',into=["CARTESIAN, NOT GEOREFERENCED","MERCATOR","LATITUDE LONGITUDE"]),
241              ang = 'Option 2 or 3 mandatory for spherical coordinates Option 3: latitude and longitude in radians!',
242              b_lat     = BLOC(condition = "Spatial_Projection == 'LATITUDE LONGITUDE' ",
243                  Latitude_Of_Origin=SIMP(statut='o',typ='R',val_min=-90,val_max=90,fr="en radians", ang="in radians"),
244                  Longitude_Of_Origin=SIMP(statut='o',typ='R',fr="en radians", ang="in radians"),
245                          ), # fin bloc b_lat
246              ), # fin bloc b_geo
247
248         Zone_number_in_Geographic_System=SIMP(statut='f',typ='TXM',
249             #into=[-1,0,1,2,3,4,22,30],
250             into=[ 'LAMBERT 1 NORD', 'LAMBERT 2 CENTRE', 'LAMBERT 3 SUD', 'LAMBERT 4 CORSE', 'LAMBERT 2 ETENDU', 'ZONE UTM, PAR EXEMPLE'],
251             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",
252             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'),
253              ),
254 ) # Fin TIDE_PARAMETERS
255
256 INITIAL_STATE=PROC(nom="INITIAL_STATE",op=None,
257
258        Initial_Conditions=SIMP(statut='o',typ='TXM',
259           into=['ZERO ELEVATION','CONSTANT ELEVATION','ZERO DEPTH','CONSTANT DEPTH','SPECIAL','TPXO SATELLITE ALTIMETRY'],
260           defaut='ZERO ELEVATION',
261           fr = "Permet de definir les conditions initiales sur les hauteurs d'eau. Les valeurs possibles sont :\n\
262        - 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\
263       - 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\
264       - HAUTEUR NULLE .Initialise les hauteurs d'eau a 0. \n\
265       - HAUTEUR CONSTANTE. Initialise les hauteurs d'eau a la valeur donnee par le mot-cle HAUTEUR INITIALE. \n\
266       - PARTICULIERES. Les conditions initiales sur la hauteur d'eau doivent etre precisees dans le sous-programme CONDIN. \n\
267       - ALTIMETRIE SATELLITE TPXO. Les conditions initiales sur la hauteur  d'eau et les vitesses sont etablies sur \n\
268         la base des donnees satellite TPXO dont les 8 premiers constistuents ont ete extraits et sauves dans le fichier\n\
269          BASE DE DONNEES DE MAREE." ,
270         ang = 'Makes it possible to define the initial conditions with the water depth. The possible values are : \n\
271        - 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\
272        - CONSTANT ELEVATION. Initializes the water elevation to the value given by the keyword \n\
273        - INITIAL ELEVATION. The initial water depths are computed as in the previous case. \n\
274        - ZERO DEPTH. Initializes the water depths to 0. \n\
275        - CONSTANT DEPTH. Initializes the water depths to the value givenby the key-word  INITIAL DEPTH. \n\
276        - SPECIAL. The initial conditions with the water depth should be stated in the CONDIN subroutine. \n\
277        - 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.', ),
278  
279          b_initial_elevation = BLOC (condition = "Initial_Conditions == 'CONSTANT ELEVATION'",
280            Initial_Elevation  = SIMP(statut='o',typ='R',
281               fr='Valeur utilisee avec l''option :  CONDITIONS INITIALES - COTE CONSTANTE',
282               ang='Value to be used with the option : INITIAL CONDITIONS  -CONSTANT ELEVATION' 
283               ),
284          ) , # fin b_initial_elevation
285
286          b_initial_depth = BLOC (condition = "Initial_Conditions == 'CONSTANT DEPTH'",
287            Initial_Depth = SIMP(statut='o',typ='R',
288                 fr='Valeur utilisee avec l''option : CONDITIONS INITIALES :-HAUTEUR CONSTANTE-',
289                 ang='Value to be used along with the option: INITIAL CONDITIONS -CONSTANT DEPTH-' ),
290          ),# fin b_initial_depth
291  
292          b_special= BLOC (condition = "Initial_Conditions == 'SPECIAL'",
293            # Ce mot clef est juste informatif
294            special    = SIMP(statut='o',typ='TXM',
295            defaut="The initial conditions with the water depth should be stated in the CONDIN subroutine"),
296          ), # fin b_special
297
298
299          b_initial_TPXO = BLOC (condition = "Initial_Conditions == 'TPXO SATELLITE ALTIMETRY'",
300            Base_Ascii_De_Donnees_De_Maree = SIMP( statut='o', typ = ('Fichier', 'All Files (*)',), ),
301            fr  = 'Base de donnees de constantes harmoniques tirees du fichier du modele de maree',
302            ang = 'Tide data base of harmonic constituents extracted from the tidal model file',
303          ), # fin b_initial_TPXO
304
305     Boundary_Conditions=FACT(statut='f', 
306             fr  = 'On donne un ensemble de conditions par frontiere liquide',
307             ang = 'One condition set per liquid boundary is given',
308  # Dans l ideal il faut aller regarder selon les groupes dans le fichier med
309  # en sortie il faut aller chercher le .cli qui va bien 
310             #Liquid_Boundaries=FACT(statut='f',max='**',
311             #    Options=SIMP(statut='f',typ='I',into=['classical boundary conditions','Thompson method based on characteristics'])
312             #    Prescribed_Flowrates=SIMP(statut='f',typ='R'),
313             #    Prescribed_Elevations=SIMP(statut='f',typ='R'),
314             #    Prescribed_Velocity=SIMP(statut='f',typ='R'),
315       # ),
316
317 # Il va falloir une "traduction dans le langage du dico"
318 # Il faut seulement l un des 3
319
320         Liquid_Boundaries=FACT(statut='f',max='**',
321                 
322             Options=SIMP(statut='f',typ='I',
323             into=['classical boundary conditions','Thompson method based on characteristics'],
324             fr='On donne 1 entier par frontiere liquide',
325             ang='One integer per liquid boundary is given',
326             ),
327
328         Type_Condition=SIMP(statut='o',typ='TXM',into=['Flowrates','Elevations','Velocity'],),
329 #?????
330
331          b_Flowrates     = BLOC (condition = "Type_Condition == 'Flowrates'",
332              Prescribed_Flowrates=SIMP(statut='o',typ='R',
333              fr=' Valeurs des debits imposes aux frontieres liquides entrantes.\n Lire la partie du mode d''emploi consacree aux conditions aux limites',
334             ang='Values of prescribed flowrates at the inflow boundaries.\n The section about boundary conditions is to be read in the manual'),
335              ),
336
337          b_Elevations   = BLOC (condition = "Type_Condition == 'Elevations'",
338                 Prescribed_Elevations=SIMP(statut='o',typ='R',
339                 fr='Valeurs des cotes imposees aux frontieres liquides entrantes.\n Lire la partie du mode d''emploi consacree aux conditions aux limites',
340                 ang='Values of prescribed elevations at the inflow boundaries.\n The section about boundary conditions is to be read in the manual'),
341              ),
342
343          b_Velocity   = BLOC (condition = "Type_Condition == 'Velocity'",
344                Prescribed_Velocity=SIMP(statut='o',typ='R',
345                fr='Valeurs des vitesses imposees aux frontieres liquides entrantes.\n Lire la partie du mode d''emploi consacree aux conditions aux limites',
346                ang='Values of prescribed velocities at the liquid inflow boundaries.\n Refer to the section dealing with the boundary conditions'),
347          ),
348
349        ), # fin des Liquid_Boundaries
350
351 #PNPN Attention dans le Dico STAGE-DISCHARGE CURVES
352        Stage_Discharge_Curves = SIMP(statut='f',typ='TXM',
353         #into=[0,1,2],
354         into=["no","Z(Q)","not programmed"],
355         fr='Indique si une courbe de tarage doit etre utilisee pour une frontiere',
356         ang='Says if a discharge-elevation curve must be used for a given boundary',
357         ),
358         b_discharge_curve   = BLOC (condition = "Stage_Discharge_Curves == 'Z(Q)'",
359
360 #PNPN Attention dans le Dico STAGE-DISCHARGE CURVES FILES
361         Stage_Discharge_Curves_File   = SIMP( statut='f', typ = ('Fichier', 'All Files (*)',),
362           fr='Nom du fichier contenant les courbes de tarage',
363           ang='Name of the file containing stage-discharge curves',
364           ),
365         ),
366
367        Treatment_Of_Fluxes_At_The_Boundaries   = SIMP( statut='f',typ='TXM',
368          into=["Priority to prescribed values","Priority to fluxes"],
369          fr='Utilise pour les schemas SUPG, PSI et N, \n\
370 si Priorité aux flux, on ne retrouve pas exactement les valeurs imposees des traceurs,mais le flux est correct',
371          ang='Used so far only with the SUPG, PSI and N schemes.\n\
372 if Priority to fluxes, Dirichlet prescribed values are not obeyed,but the fluxes are correct'
373         ),
374
375 #???? into no coherent avec dico
376 # Ira dans la marée
377        Option_For_Tidal_Boundary_Conditions   = SIMP( statut='f',typ='TXM',
378        into=['No tide', 'Real tide (recommended methodology)', 'Astronomical tide', 'Mean spring tide', 'Mean tide',\
379            'Mean neap tide', 'Astronomical neap tide', 'Real tide (methodology before 2010)'],
380        ),
381
382
383   ), # fin Boundary_Conditions
384
385 ) # fin INITIAL_STATE
386
387 NUMERICAL_PARAMETERS=PROC(nom="NUMERICAL_PARAMETERS",op=None,
388
389         Solver_Definition=FACT(statut='o',
390
391           Equations=SIMP(statut='o',typ='TXM',
392              into=['SAINT-VENANT EF','SAINT-VENANT VF','BOUSSINESQ'],
393              defaut='SAINT-VENANT EF',
394              fr='Choix des equations a resoudre',
395              ang= 'Choice of equations to solve',
396              ),
397
398           Solver=SIMP(statut='o',typ='TXM',
399            into = ["conjugate gradient", "conjugate residual","conjugate gradient on a normal equation",\
400                    "minimum error", "cgstab", "gmres", "direct",],
401            fr = 'Permet de choisir le solveur utilise pour la resolution de l''etape de propagation. \n\
402 Toutes les methodes proposees actuellement s''apparentent au Gradient Conjugue. Ce sont :\n\
403   1 : gradient conjugue 2 : residu conjugue       3 : gradient conjugue sur equation normale \n\
404   4 : erreur minimale   5 : gradient conjugue carre (non programme) 6 : gradient conjugue carre stabilise (cgstab)\n\
405   7 : gmres (voir aussi option du solveur) 8 : direct',
406 ang = 'Makes it possible to select the solver used for solving the propagation step.\n\
407 All the currently available methods are variations of the Conjugate Gradient method. They are as follows: \n\
408 1: conjugate gradient 2: conjugate residual 3: conjugate gradient on a normal equation\n\
409 4: minimum error 5: conjugate gradient squared (not implemented) 6: conjugate gradient squared stabilised (cgstab) \n\
410 7: gmres (see option for solver) 8: direct',
411             ),
412
413           b_gmres = BLOC (condition = "Solver == 'gmres'",
414           Solver_Option = SIMP(statut='o',typ='I', defaut=2, val_min=2,val_max=15,
415               fr = 'la dimension de l''espace de KRILOV',
416               ang = 'dimension of the KRYLOV space',
417                ),
418           ),
419
420           Initial_Guess_for_H=SIMP(statut='f',typ='TXM',into=['zero','previous','extrapolation'],defaut='previous',),
421           Initial_Guess_for_U=SIMP(statut='f',typ='TXM',into=['zero','previous','extrapolation'],defaut='previous',),
422           Solver_Accuracy = SIMP(statut='o',typ='R', defaut=1e-4,
423             fr = 'Precision demandee pour la resolution de l''etape de propagation (cf.  Note de principe).',
424             ang = 'Required accuracy for solving the propagation step (refer to Principle note).',
425            ),
426
427           Maximum_Number_Of_Iterations_For_Solver=SIMP(statut='o',typ='I', defaut=40,
428           fr = 'Les algorithmes utilises pour la resolution de l''etape de propagation etant iteratifs, \n\
429 il est necessaire de limiter le nombre d''iterations autorisees.\n\
430 Remarque : un maximum de 40 iterations par pas de temps semble raisonnable.',
431           ang = 'Since the algorithms used for solving the propagation step are iterative, \
432 the allowed number of iterations should be limited.\n\
433 Note: a maximum number of 40 iterations per time step seems to be reasonable.',
434            ),
435         ), # fin Solver
436
437         Time=FACT(statut='f',
438         regles=(UN_PARMI('Number_Of_Time_Steps','Duration'),),
439
440            Time_Step=SIMP(statut='f',typ='R'),
441            Number_Of_Time_Steps=SIMP(statut='f',typ='I',
442               fr='Definit le nombre de pas de temps effectues lors de l''execution du code.',
443               ang='Specifies the number of time steps performed when running the code.'),
444            Duration=SIMP(statut='f',typ='R'),
445            Variable_Time_Step=SIMP(statut='f',typ=bool),
446            b_var_time  = BLOC(condition = "Variable_Time_Step==True" ,
447              Desired_Courant_Number=SIMP(statut='o',typ='R'),
448            ),
449
450            Stop_If_A_Steady_State_Is_Reached=SIMP(statut='f',typ=bool,defaut='False'),
451            b_stop  = BLOC(condition = "Stop_If_A_Steady_State_Is_Reached==True" ,
452
453            Stop_Criteria=SIMP(statut='o',typ=Tuple(3),validators=VerifTypeTuple(('R','R','R')),
454             fr = "Criteres d'arret pour un ecoulement permanent. ces coefficients sont respectivement appliques a\n\
455         1- U et V 2- H 3- T ",
456             ang = 'Stop criteria for a steady state These coefficients are applied respectively to\n\
457         1- U and V 2- H 3-  T ',),
458                     ),
459
460            Control_Of_Limit=SIMP(statut='f',typ=bool,defaut='False',
461 fr = 'Le programme s''arrete si les limites sur u,v,h ou t sont depassees',
462 ang = 'The program is stopped if the limits on u,v,h, or t are trespassed',
463            ),
464
465            b_limit  = BLOC(condition = "Control_Of_Limit==True" ,
466
467               Limit_Values=FACT(statut='o',
468                   fr = 'valeurs mini et maxi acceptables  min puis  max',
469                   ang= 'min and max acceptable values ',
470                   Limit_Values_H=SIMP(statut='o',typ=Tuple(2),validators=VerifTypeTuple(('R','R')),defaut=(-1000,9000)),
471                   Limit_Values_U=SIMP(statut='o',typ=Tuple(2),validators=VerifTypeTuple(('R','R')),defaut=(-1000,1000)),
472                   Limit_Values_V=SIMP(statut='o',typ=Tuple(2),validators=VerifTypeTuple(('R','R')),defaut=(-1000,1000)),
473                   Limit_Values_T=SIMP(statut='o',typ=Tuple(2),validators=VerifTypeTuple(('R','R')),defaut=(-1000,1000)),
474                                ),
475                   ),
476     ), # Fin de Time
477
478      Linearity=FACT(statut='f',
479            Treatment_Of_Fluxes_at_the_Boundaries =SIMP( statut='f',typ='I',into=[1,2],sug=1),
480            Continuity_Correction  =SIMP(typ=bool, statut='f'),
481            Number_Of_Sub_Iterations=SIMP(statut='f',typ='I'),
482      ),
483      Precondionning=FACT(statut='f',
484
485           Preconditionning=SIMP(statut='f',typ='I',
486               into=[ "diagonal", "no preconditioning", "diagonal condensee", "crout", \
487                      "gauss-seidel", "diagonal and crout", "diagonal condensed and crout"],
488           ),
489           C_U_Preconditionning  =SIMP(typ=bool, statut='f',
490              fr = 'Changement de variable de H en C dans le systeme lineaire final',
491             ang = 'Change of variable from H to C in the final linear system'
492            ),
493         ),# fin Preconditionnement
494      
495      
496      Matrix_Informations=FACT(statut='f',
497           Matrix_Vector_Product =SIMP(statut='f',typ='TXM',
498              into=["classic", "frontal"],
499              fr='attention, si frontal, il faut une numerotation speciale des points',
500              ang='beware, with option 2, a special numbering of points is required',
501           ),
502           Matrix_Storage =SIMP(statut='f',typ='TXM',
503              into=["EBE classique","Stockage par segments",]
504           ),
505      ),# fin Matrix_Informations
506
507      Advection=FACT(statut='f',
508
509           Mass_Lumping_On_H =SIMP(statut='f',typ='R',defaut=0,
510             fr = 'TELEMAC offre la possibilite d''effectuer du mass-lumping sur H ou U.\n\
511 Ceci revient a ramener tout ou partie (suivant la valeur de ce coefficient) des matrices AM1 (h) ou AM2 (U) \n\
512 et AM3 (V) sur leur diagonale.  Cette technique permet d''accelerer le code dans des proportions tres\n\
513 importantes et de le rendre egalement beaucoup plus stable. Cependant les solutions obtenues se trouvent lissees.\n\
514 Ce parametre fixe le taux de mass-lumping effectue sur h.',
515             ang = 'TELEMAC provides an opportunity to carry out mass-lumping either on C,H or on the velocity. \n\
516 This is equivalent to bringing the matrices AM1(h) or AM2(U) and AM3(V) wholly or partly, back onto their diagonal.\n\
517 Thanks to that technique, the code can be speeded up to a quite significant extent and it can also be made much \n\
518 more stable. The resulting solutions, however, become artificially smoothed. \n\
519 This parameter sets the extent of mass-lumping that is performed on h.'),
520
521           Mass_Lumping_On_Velocity =SIMP(statut='f',typ='R',defaut=0,
522             fr = 'Fixe le taux de mass-lumping effectue sur la vitesse.',
523             ang = 'Sets the amount of mass-lumping that is performed on the velocity.'
524 ),
525
526
527 #PNPNPNPN
528 #
529 # Attention a recalculer
530 # Il faut recalculer des listes de 4 en sortie
531 #
532         Advection_Propagation=FACT(statut='f',
533           Advection_Of_U_And_V=SIMP(statut='o',typ=bool,defaut=False,
534             fr = 'Prise en compte ou non de la convection de U et V.',
535             ang= 'The advection of U and V is taken into account or ignored.'
536             ),
537
538           b_u_v = BLOC( condition = "Advection_Of_U_And_V==True",
539           Type_Of_Advection_U_And_V=SIMP(statut='o',typ='TXM',
540           into=["characteristics", "SUPG", "Conservative N-scheme",  'Conservative N-scheme',\
541                  'Conservative PSI-scheme', 'Non conservative PSI scheme', 'Implicit non conservative N scheme',\
542                  ' Edge-based N-scheme', 'Edge-based N-scheme'],
543
544                  ),
545            b_upwind     =BLOC(condition = "Type_Of_Advection_U_And_V== 'SUPG'",
546             Upwind_Coefficients_Of_U_And_V=SIMP(statut='o',typ='R',)
547                ),
548            ),
549
550           Advection_Of_H=SIMP(statut='o',typ=bool,defaut=False,
551             fr = 'Prise en compte ou non de la convection de H.',
552             ang= 'The advection of H is taken into account or ignored.'
553             ),
554
555           b_h = BLOC( condition = "Advection_Of_H==True",
556
557           Type_Of_Advection_H=SIMP(statut='o',typ='TXM',
558           into=["characteristics", "SUPG", "Conservative N-scheme",  'Conservative N-scheme',\
559                  'Conservative PSI-scheme', 'Non conservative PSI scheme', 'Implicit non conservative N scheme',\
560                  ' Edge-based N-scheme', 'Edge-based N-scheme'],
561                  ),
562            b_upwind_H     = BLOC(condition = "Type_Of_Advection_H== 'SUPG'",
563             Upwind_Coefficients_Of_H=SIMP(statut='o',typ='R',)
564                ),
565            ),
566
567           Advection_Of_Tracers=SIMP(statut='o',typ=bool,defaut=False,
568             fr = 'Prise en compte ou non de la convection de Tracer.',
569             ang= 'The advection of Tracer is taken into account or ignored.'
570             ),
571
572           b_tracers = BLOC( condition = "Advection_Of_Tracers==True",
573
574           Type_Of_Advection_Tracers=SIMP(statut='o',typ='TXM',
575           into=["characteristics", "SUPG", "Conservative N-scheme",  'Conservative N-scheme',\
576                  'Conservative PSI-scheme', 'Non conservative PSI scheme', 'Implicit non conservative N scheme',\
577                  ' Edge-based N-scheme', 'Edge-based N-scheme'],
578                  ),
579            b_upwind_Tracers     =BLOC(condition = "Type_Of_Advection_Tracers== 'SUPG'",
580             Upwind_Coefficients_Of_Tracers=SIMP(statut='o',typ='R',)
581                ),
582            ),
583
584
585          Advection_Of_K_And_Epsilon=SIMP(statut='f',typ=bool,defaut=False,
586            fr = 'Prise en compte ou non de la convection de Tracer.',
587             ang= 'The advection of Tracer is taken into account or ignored.'
588             ),
589
590           b_k = BLOC( condition = "Advection_Of_K_And_Epsilon==True",
591
592           Type_Of_Advection_K_And_Epsilon=SIMP(statut='o',typ='TXM',
593           into=["characteristics", "SUPG", "Conservative N-scheme",  'Conservative N-scheme',\
594                  'Conservative PSI-scheme', 'Non conservative PSI scheme', 'Implicit non conservative N scheme',\
595                  ' Edge-based N-scheme', 'Edge-based N-scheme'],
596                  ),
597            b_upwind_k     =BLOC(condition = "Type_Of_Advection_K_And_Epsilon== 'SUPG'",
598             Upwind_Coefficients_Of_K_And_Epsilon=SIMP(statut='o',typ='R',)
599                ),
600            ),
601
602         ),
603       ), # fin Advection
604
605         Propagation=FACT(statut='f',
606           Linearized_Propagation=SIMP(statut='o',typ=bool,defaut=False),
607           b_linear     =BLOC(condition = "Linearized_Propagation==True ",
608             Mean_Depth_For_Linearity=SIMP(statut='o',typ='R',defaut=0.0,val_min=0),
609           ),
610         ),
611         Discretisation_Implicitation=FACT(statut='f',
612           Discretisations_In_Space=SIMP(statut='f',typ='TXM', 
613             into =["linear for velocity and depth", "quasi-bubble-velocity and linear depth", "quadratic velocity and linear depth"],
614             defaut="linear for velocity and depth",),
615           Implicitation_For_Diffusion_Of_velocity=SIMP(statut='f',typ='R',sug=0),
616           Implicitation_For_Depth=SIMP(statut='f',typ='R',sug=0.55),
617           Implicitation_for_Velocity=SIMP(statut='f',typ='R',sug=0.55),
618           Free_Surface_Gradient_Compatibility=SIMP(statut='f',typ='R',sug=1.),
619         ),
620 )# fin NUMERICAL_PARAMETERS
621
622 PHYSICAL_PARAMETERS=PROC(nom="PHYSICAL_PARAMETERS",op=None,
623         Atmosphere=FACT(statut='f',
624           Wind=SIMP(statut='f',typ=bool,sug=False),
625           b_Wind     =BLOC(condition = "Wind=='True'",
626             regles=( PRESENT_PRESENT('Wind_Velocity_along_X','Wind_Velocity_along_Y', ),),
627             Coefficient_Of_Wind_Influence=SIMP(statut='f',typ='R',sug=0,),
628             Wind_Velocity_along_X=SIMP(statut='f',typ='R',sug=0,),
629             Wind_Velocity_along_Y=SIMP(statut='f',typ='R',sug=0,),
630             Threashold_Depth_for_Wind=SIMP(statut='f',typ='R',sug=0,),
631             Air_Pressure=SIMP(statut='f',typ=bool,sug=False),
632          ),
633           Rain_or_Evaporation=SIMP(statut='f',typ=bool,sug=False),
634           b_Rain     =BLOC(condition = "Rain_or_Evaporation=='True'",
635             Rain_or_Evaporation_in_mm_perday=SIMP(statut='f',typ='I',sug=0),
636                          ),
637          ),
638
639           Tide_Generating_Force=SIMP(statut='o',typ=bool,defaut=False),
640           b_Tide  = BLOC(condition = "Tide_Generating_Force==True",
641               Tidal_Data_Base=SIMP(statut='o',typ='I',into=[-1,1,2,3,4]),
642               Coefficient_To_Calibrate_Tidal_Range=SIMP(statut='o',typ='R',sug=1.),
643               Coefficient_To_Calibrate_Tidal_Velocity=SIMP(statut='o',typ='R',sug=999999),
644               Coefficient_To_Calibrate_Sea_Level=SIMP(statut='o',typ='R',sug=0.),
645               Binary_Database_1_for_Tide  = SIMP( statut='o', typ = ('Fichier', '(All Files (*),)',),),
646               Binary_Database_2_for_Tide  = SIMP( statut='o', typ = ('Fichier', '(All Files (*),)',),),
647                       ),
648
649           Wave_Driver_Currents=SIMP(statut='f',typ=bool,sug=False),
650           b_Wave     =BLOC(condition = "Wave_Driver_Currents=='True'",
651               Record_Number_in_Wave_File=SIMP(statut='f',typ='I',sug=1),
652          ),
653
654           Friction_Data=SIMP(statut='o',typ=bool,defaut=False),
655           b_Friction  = BLOC(condition = "Friction_Data==True",
656              Friction_Data_File = SIMP( statut='o',
657                typ = ('Fichier', ';;All Files (*)'),
658                fr = 'fichier de donnees pour le frottement',
659                ang= 'friction data file',
660               ),
661               Depth_In_Friction_Terms = SIMP( statut='o',typ='TXM',
662                defaut= '1="nodal"' ,
663                into =('1="nodal"', '2="average"'),
664                fr = '1 : nodale 2 : moyenne',
665                ang= '1: nodal   2: average',
666              ),
667              Law_Of_Bottom_Friction = SIMP( statut='o',typ='TXM',
668              defaut='0="NO FRICTION"' ,
669              into =('0="NO FRICTION"', '1="HAALAND"', '2="CHEZY"', '3="STRICKLER"', '4="MANNING"', '5="NIKURADSE"','Log Law of Boundaries 6','Colebrooke_White Log 7'),
670              fr = 'selectionne le type de formulation utilisee pour le calcul du frottement sur le fond.',
671              ang= 'Selects the type of formulation used for the bottom friction.',
672              ),
673              b_Law_Friction  = BLOC(condition = "Law_Of_Bottom_Friction!=0",
674                      Friction_Coefficient = SIMP( statut='o',typ='R',
675                      defaut=50.0 ,
676                      fr = 'Fixe la valeur du coefficient de frottement pour la formulation choisie.  \
677 Attention, la signification de ce chiffre varie suivant la formule choisie : \
678 1 : coefficient lineaire 2 : coefficient de Chezy 3 : coefficient de Strickler \
679 4 : coefficient de Manning 5 : hauteur de rugosite de Nikuradse',
680     ang= 'Sets the value of the friction coefficient for the selected formulation. \
681 It is noteworthy that the meaning of this figure changes according to the selected formula (Chezy, Strickler, etc.) : \
682 1 : linear coefficient 2 : Chezy coefficient 3 : Strickler coefficient 4 : Manning coefficient 5 : Nikuradse grain size',
683                    ),
684               ),
685              b_Colebrooke_White  = BLOC(condition =' "Law_Of_Bottom_Friction" in ("Colebrooke_White Log 7",)',
686                  Manning_Default_Value_For_Colebrook_white_Law = SIMP( statut='o',typ='R',
687                  defaut=0.02 ,
688                  fr = 'valeur par defaut du manning pour la loi de frottement de  Colebrook-White ',
689                  ang= 'Manning default value for the friction law of Colebrook-White ',
690                   ),
691             ),
692
693          Non_submerged_Vegetation_Friction = SIMP( statut='o',typ=bool,
694            defaut=False ,
695            fr = 'calcul du frottement du a la vegetation non submergee',
696            ang= 'friction calculation of the non-submerged vegetation',
697              ),
698           b_Non_Sub  = BLOC(condition =' Non_submerged_Vegetation_Friction == True',
699             Diameter_Of_Roughness_Elements = SIMP( statut='o',typ='R',
700               defaut=0.006 ,
701               fr = 'diametre des elements de frottements',
702               ang= 'diameter of roughness element',
703                ),
704
705           Spacing_Of_Roughness_Elements = SIMP( statut='o',typ='R',
706               defaut=0.14 ,
707               fr = 'espacement des elements de frottement',
708               ang= 'spacing of rouhness element',
709               ),
710             ),
711           Law_Of_Friction_On_Lateral_Boundaries = SIMP( statut='o',typ='TXM',
712              defaut=0 ,
713              into =('0="NO FRICTION"', '1="HAALAND"', '2="CHEZY"', '3="STRICKLER"', '4="MANNING"', '5="NIKURADSE"', '6="LOG LAW"', '7="COLEBROOK-WHITE"'),
714              fr = 'selectionne le type de formulation utilisee pour le calcul du frottement sur les parois laterales.',
715              ang= 'Selects the type of formulation used for the friction on lateral boundaries.',
716             ),
717           Roughness_Coefficient_Of_Boundaries = SIMP( statut='o',typ='R',
718             defaut=100.0 ,
719             fr = 'Fixe la valeur du coefficient de frottement sur les frontieres solides avec un regime turbulent rugueux\n\
720  sur les bords du domaine.  meme convention que pour le coefficient de frottement',
721     ang= 'Sets the value of the friction coefficient of the solid boundary with the bed roughness option. Same meaning than friction coefficient',
722               ),
723           Maximum_Number_Of_Friction_Domains = SIMP( statut='o',typ='I',
724              defaut=10 ,
725              fr = 'nombre maximal de zones pouvant etre definies pour le frottement. Peut etre augmente si necessaire',
726              ang= 'maximal number of zones defined for the friction.  Could be increased if needed',
727               ),
728
729      ), # Fin de Friction
730 )
731
732 POST_PROCESSING=PROC(nom="POST_PROCESSING",op=None,
733    Graphic_Printouts=FACT(statut='f',
734         Graphic_Printout_Period=SIMP(statut='o', typ='I',defaut=1),
735         Number_Of_First_TimeStep_For_Graphic_Printouts=SIMP(statut='o', typ='I',defaut=1),
736         Variables_For_Graphic_Printouts=SIMP(statut='o',max="**", typ='TXM',into=['a','b','c'],),
737         # ajouter le into
738    ),
739   Listing_Printouts=FACT(statut='f',
740
741           Results_File_Format = SIMP( statut='o',typ='TXM',into=['SERAFIN','MED','SERAFIND'], defaut='SERAFIN',
742                                 fr = 'Format du fichier de resultats. Les valeurs possibles sont : \n\
743      - SERAFIN : format standard simple precision pour Telemac;  \n\
744      - SERAFIND: format standard double precision pour Telemac; \n\
745      - MED     : format MED base sur HDF5' ,
746                                ang = 'Results file format. Possible values are:\n \
747      - SERAFIN : classical single precision format in Telemac;\n\
748      - SERAFIND: classical double precision format in Telemac; \n\
749      - MED     : MED format based on HDF5' ,
750                                    ),
751  
752           Results_File     = SIMP( statut='o', typ = ('Fichier', 'Steering Files (*.cas);;All Files (*)',),
753                            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.', 
754                           ang='Name of the file into which the computation results shall be written, the periodicity being given by the key-word: GRAPHIC PRINTOUT PERIOD.',
755                                 ),
756         Listing_Printout_Period = SIMP(statut='o', typ='I',defaut=1,
757           fr  = 'Determine la periode en nombre de pas de temps d''impression des variables',
758           ang = 'Determines, in number of time steps, the printout period for the variables',
759         ),
760
761         Number_Of_First_TimeStep_For_Graphic_Printouts=SIMP(statut='o', typ='I',defaut=1),
762         Variables_To_Be_Printed=SIMP(statut='o',max="**", typ='TXM',into=['a','b','c']),
763    ),#Listing_Printouts
764
765    Formatted_Results_File = SIMP( statut='o',typ= ('Fichier','All Files (*)',),
766         fr = 'Fichier de resultats formate mis a la disposition de l utilisateur. \
767 Les resultats a placer dans ce fichier seront a ecrire sur le canal 29.',
768        ang= 'Formatted file of results made available to the user.  \
769 The results to be entered into this file shall be written on channel 29.',
770      ),
771
772
773    Debugger     = SIMP(typ=bool, statut='o', defaut=False),
774    Output_Of_Initial_Conditions = SIMP(typ=bool, statut='o', defaut=True,
775         fr = 'Si Vrai, impression des conditions initiales dans les resultats',
776         ang = 'If True, output of initial conditions in the results'
777    ),
778
779    Binary_Results_File = SIMP( statut='f', typ = ('Fichier', ';;All Files (*)',), 
780        fr = "Fichier de resultats code en binaire mis a la disposition de l'utilisateur.\n\
781 Les resultats a placer dans ce fichier seront a ecrire sur le canal 28.",
782        ang = "Additional binary-coded result file made available to the user. \n\
783 The results to be entered into this file shall be written on channel 28.",
784     ),
785
786 Information_About_Solver = SIMP(typ=bool, statut='f',defaut=False,
787        fr = "Si vrai, Donne a chaque pas de temps le nombre d'iterations necessaires a la convergence du solveur de l'etape de propagation.",
788      ang = "if True, prints the number of iterations that have been necessary to get the solution of the linear system.",
789 ),
790
791
792
793 PRECONDITIONING = SIMP( statut='o',typ='I',
794     defaut=2 ,
795     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.',
796     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.',
797      ),
798
799 ) # FIN POST-PRO
800
801
802 # Attention calculer le logique BREACH 
803 STRUCTURES=PROC(nom="STRUCTURES",op=None,
804
805 # Attention calculer le logique BREACH 
806      Breaches= FACT(statut='f',
807          Breaches_Data_File = SIMP( statut='o',typ = ('Fichier', 'All Files (*)',),
808                 fr = 'Fichier de description des breches',
809                 ang= 'Description of breaches',
810          ),
811       ),
812
813      Culverts= FACT(statut='o',
814
815         Number_Of_Culverts = SIMP( statut='o',typ='I',
816                defaut=0 ,
817           fr = 'Nombre de siphons traites comme des termes sources ou puits. Ces siphons doivent etre decrits comme des sources \
818 dans le fichier cas. Leurs caracteristiques sont donnees dans le fichier de donnees des siphons (voir la documentation ecrite)',
819           ang= 'Number of culverts treated as source terms.  They must be described as sources in the domain\
820  and their features are given in the culvert data file (see written documentation)',
821            ),
822
823         Culvert_Data_File = SIMP( statut='o',typ = ('Fichier', 'All Files (*)',),
824             fr = 'Fichier de description des siphons presents dans le modele',
825             ang= 'Description of culvert existing in the model',
826         ),
827
828         Formatted_File1    = SIMP( statut='f', typ = ('Fichier', 'formated File (*.txt);;All Files (*)',),
829               fr = "Fichier de donnees formate mis a la disposition de l''utilisateur.  \n\
830 Les donnees de ce fichier seront a lire sur le canal 26.",
831               ang = 'Formatted data file made available to the user.\n\
832 The data in this file shall be read on channel 26.',
833           ),
834
835
836          Abscissae_Of_Sources = SIMP( statut='o',
837           typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
838           fr = 'Valeurs des abscisses des sources de debit et de traceur.',
839           ang= 'abscissae of sources of flowrate and/or tracer',
840          ),
841
842           Ordinates_Of_Sources = SIMP( statut='o',
843           typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
844           fr = 'Valeurs des ordonnees des sources de debit et de traceur.',
845           ang= 'ordinates of sources of flowrate and/or tracer',
846           ),
847           Water_Discharge_Of_Sources = SIMP( statut='o',
848           typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
849           fr = 'Valeurs des debits des sources.',
850           ang= 'values of water discharge of sources',
851           ),
852           Velocities_Of_The_Sources_Along_X = SIMP( statut='o',
853           typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
854           fr = 'Vitesses du courant a chacune des sources. Si elles ne sont pas donnees, on considere que la vitesse est celle du courant',
855           ang= 'Velocities at the sources. If they are not given, the velocity of the flow at this location is taken',
856           ),
857           Velocities_Of_The_Sources_Along_Y = SIMP( statut='o',
858           typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
859           fr = 'Vitesses du courant a chacune des sources',
860           ang= 'Velocities at the sources',
861          ),
862     ),
863
864      Tubes= FACT(statut='f',
865           Number_Of_Tubes = SIMP( statut='o',typ='I',
866           defaut=0 ,
867           fr = 'Nombre de buses ou ponts traites comme des termes sources ou puits. Ces buses doivent etre decrits comme des sources\n\
868 dans le fichier cas. Leurs caracteristiques sont donnees dans le fichier de donnees des buses (voir la documentation ecrite)',
869           ang= 'Number of tubes or bridges treated as source terms.  They must be described as sources in the domain \n\
870 and their features are given in the tubes data file (see written documentation)',
871               ),
872
873         Tubes_Data_File = SIMP( statut='o',
874            typ = ('Fichier', 'All Files (*)',),
875            fr = 'Fichier de description des buses/ponts presents dans le modele',
876            ang= 'Description of tubes/bridges existing in the model',
877           ),
878           ),
879
880      Weirs= FACT(statut='f',
881         Weirs_Data_File = SIMP( statut='o',
882         typ = ('Fichier', 'All Files (*)',),
883         fr = 'Fichier de description des seuils presents dans le modele',
884         ang= 'Description of weirs existing in the model',
885         ),
886      ),
887
888 ) # FIN STRUCTURES