Salome HOME
7627bc48dc427ce04f14537ad33f5be32c9f71ba
[tools/eficas.git] / Telemac / artemis_cata_auto.py
1
2 # -*- coding: latin-1 -*-
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 class grma(GEOM):
21   pass
22
23 import types
24 class Tuple:
25   def __init__(self,ntuple):
26     self.ntuple=ntuple
27
28   def __convert__(self,valeur):
29     if type(valeur) == types.StringType:
30       return None
31     if len(valeur) != self.ntuple:
32       return None
33     return valeur
34
35   def info(self):
36     return "Tuple de %s elements" % self.ntuple
37
38
39
40 JdC = JDC_CATA (code = 'ARTEMIS',
41                 execmodul = None,
42                 )
43 # =======================================================================
44 # Catalog entry for the MAP function : c_pre_interfaceBody_mesh
45 # =======================================================================
46
47 VERSION_CATALOGUE="TRUNK_20201028"
48 # -----------------------------------------------------------------------
49 COMPUTATION_ENVIRONMENT = PROC(nom= "COMPUTATION_ENVIRONMENT",op = None,
50 # -----------------------------------------------------------------------
51 #   -----------------------------------
52     INPUT = FACT(statut='o',
53 #   -----------------------------------
54 #       -----------------------------------
55         DATA = FACT(statut='o',
56 #       -----------------------------------
57 #           -----------------------------------
58             GEOMETRY_FILE = SIMP(statut ='f',
59 #           -----------------------------------
60                 typ = ('Fichier','All Files (*)'), max='**',
61                 fr = """Nom du fichier contenant le maillage du calcul a realiser.""",
62                 ang = """Name of the file which contains the computational mesh.""",
63             ),
64 #           -----------------------------------
65             BOTTOM_TOPOGRAPHY_SMOOTHING = SIMP(statut ='f',
66 #           -----------------------------------
67                 typ = 'I',
68                 defaut = 0,
69                 fr = """Nombre de lissages effectues sur la topographie.
70 Chaque lissage, effectue a l aide d une matrice de masse,
71 est conservatif.
72 Utilise lorsque les donnees de bathymetrie donnent des resultats
73 trop irreguliers apres interpolation.""",
74                 ang = """Number of smoothings done on the topography.
75 Each smoothing, using a mass matrix, is conservative.
76 It is used when bathymetric data provide too irregular results
77 after interpolation.""",
78             ),
79 #           -----------------------------------
80             FORTRAN_FILE = SIMP(statut ='f',
81 #           -----------------------------------
82                 typ = ('Fichier','All Files (*)'), max='**',
83                 defaut = '',
84                 fr = """Nom du fichier FORTRAN a soumettre, contenant les
85 sous-programmes specifiques au modele.""",
86                 ang = """Name of the FORTRAN file to be submitted, including specific
87 subroutines of the model.""",
88             ),
89 #           -----------------------------------
90             BOUNDARY_CONDITIONS_FILE = SIMP(statut ='f',
91 #           -----------------------------------
92                 typ = ('Fichier','All Files (*)'), max='**',
93                 fr = """Nom du fichier contenant les types de conditions aux limites.
94 Ce fichier est construit de facon automatique par le mailleur et \stbtel
95 au moyen de couleurs affectees aux noeuds des frontieres du domaine
96 de calcul.""",
97                 ang = """Name of the boundary conditions file. It is automatically built
98 by \stbtel or by the mesh generator MATISSE.""",
99             ),
100 #           -----------------------------------
101             BOTTOM_TOPOGRAPHY_FILE = SIMP(statut ='f',
102 #           -----------------------------------
103                 typ = ('Fichier','All Files (*)'), max='**',
104                 defaut = '',
105                 fr = """Nom du fichier eventuel contenant la bathymetrie associee au
106 maillage.
107 Si ce mot-cle est utilise, c est cette bathymetrie qui sera
108 utilisee pour le calcul.""",
109                 ang = """Name of a potential bathymetry file. If this keyword is specified,
110 the bathymetry which it is defining is accounted for.""",
111             ),
112 #           -----------------------------------
113             BINARY_DATA_FILE_1 = SIMP(statut ='f',
114 #           -----------------------------------
115                 typ = ('Fichier','All Files (*)'), max='**',
116                 defaut = '',
117                 fr = """Fichier de donnees, code en binaire, mis a la disposition de
118 l utilisateur.""",
119                 ang = """Data file, written in binary mode, at the disposal of the user.""",
120             ),
121 #           -----------------------------------
122             BINARY_DATA_FILE_2 = SIMP(statut ='f',
123 #           -----------------------------------
124                 typ = ('Fichier','All Files (*)'), max='**',
125                 defaut = '',
126                 fr = """Fichier de donnees, code en binaire, mis a la disposition de
127 l utilisateur.""",
128                 ang = """Data file, written in binary mode, at the disposal of the user.""",
129             ),
130 #           -----------------------------------
131             FORMATTED_DATA_FILE_1 = SIMP(statut ='f',
132 #           -----------------------------------
133                 typ = ('Fichier','All Files (*)'), max='**',
134                 defaut = '',
135                 fr = """Fichier de donnees formate mis a la disposition de l utilisateur.""",
136                 ang = """Data file, written in ASCII mode, at the disposal of the user.""",
137             ),
138 #           -----------------------------------
139             FORMATTED_DATA_FILE_2 = SIMP(statut ='f',
140 #           -----------------------------------
141                 typ = ('Fichier','All Files (*)'), max='**',
142                 defaut = '',
143                 fr = """Fichier de donnees formate mis a la disposition de l utilisateur.""",
144                 ang = """Data file, written in ASCII mode, at the disposal of the user.""",
145             ),
146 #           -----------------------------------
147             VALIDATION = SIMP(statut ='f',
148 #           -----------------------------------
149                 typ = bool,
150                 defaut = False,
151                 fr = """Option utilisee principalement pour le dossier de validation.
152 Le \telkey{FICHIER DE REFERENCE} est alors considere comme une
153 reference a laquelle on va comparer le calcul. La comparaison est
154 effectuee par le sous-programme \telfile{BIEF\_VALIDA} qui peut etre une
155 comparaison avec une solution exacte par exemple.""",
156                 ang = """This option is primarily used for the validation documents.
157 The \telkey{REFERENCE FILE} is then considered as a
158 reference which the computation is going to be compared with.
159 The comparison is made by the subroutine \telfile{BIEF\_VALIDA},
160 which can be modified as to
161 so as to include, for example, a comparison with an exact solution.""",
162             ),
163 #           -----------------------------------
164             b_VALIDATIONG = BLOC(condition="VALIDATION == True",
165 #           -----------------------------------
166 #               -----------------------------------
167                 REFERENCE_FILE_FORMAT = SIMP(statut ='f',
168 #               -----------------------------------
169                     typ = 'TXM',
170                     into = ['SERAFIN','SERAFIND','MED'],
171                     defaut = 'SERAFIN',
172                     fr = """Format du \telkey{FICHIER DE REFERENCE}.
173 Les valeurs possibles sont :
174 \begin{itemize}
175 \item SERAFIN : format standard simple precision pour \tel ;
176 \item SERAFIND: format standard double precision pour \tel ;
177 \item MED     : format MED double precision base sur HDF5.
178 \end{itemize}""",
179                     ang = """\telkey{REFERENCE FILE} format.
180 Possible values are:
181 \begin{itemize}
182 \item SERAFIN : classical single precision format in \tel,
183 \item SERAFIND: classical double precision format in \tel,
184 \item MED     : MED double precision format based on HDF5.
185 \end{itemize}""",
186                 ),
187 #               -----------------------------------
188                 REFERENCE_FILE = SIMP(statut ='f',
189 #               -----------------------------------
190                     typ = ('Fichier','All Files (*)'), max='**',
191                     defaut = '',
192                     fr = """Fichier de resultats de reference pour la validation.""",
193                     ang = """Binary-coded result file for validation.""",
194                 ),
195             ),
196 #           -----------------------------------
197             GEOMETRY_FILE_FORMAT = SIMP(statut ='f',
198 #           -----------------------------------
199                 typ = 'TXM',
200                 into = ['SERAFIN','SERAFIND','MED'],
201                 defaut = 'SERAFIN',
202                 fr = """Format du \telkey{FICHIER DE GEOMETRIE}.
203 Les valeurs possibles sont :
204 \begin{itemize}
205 \item SERAFIN : format standard simple precision pour \tel ;
206 \item SERAFIND: format standard double precision pour \tel ;
207 \item MED     : format MED double precision base sur HDF5.
208 \end{itemize}""",
209                 ang = """Format of the \telkey{GEOMETRY FILE}.
210 Possible values are:
211 \begin{itemize}
212 \item SERAFIN : classical single precision format in \tel,
213 \item SERAFIND: classical double precision format in \tel,
214 \item MED     : MED double precision format based on HDF5.
215 \end{itemize}""",
216             ),
217 #           -----------------------------------
218             BINARY_DATA_FILE_1_FORMAT = SIMP(statut ='f',
219 #           -----------------------------------
220                 typ = 'TXM',
221                 into = ['SERAFIN','SERAFIND','MED'],
222                 defaut = 'SERAFIN',
223                 fr = """Format du \telkey{FICHIER DE DONNEES BINAIRE 1}.
224 Les valeurs possibles sont :
225 \begin{itemize}
226 \item SERAFIN : format standard simple precision pour \tel ;
227 \item SERAFIND: format standard double precision pour \tel ;
228 \item MED     : format MED double precision base sur HDF5.
229 \end{itemize}""",
230                 ang = """\telkey{BINARY DATA FILE 1} format.
231 Possible values are:
232 \begin{itemize}
233 \item SERAFIN : classical single precision format in \tel,
234 \item SERAFIND: classical double precision format in \tel,
235 \item MED     : MED double precision format based on HDF5.
236 \end{itemize}""",
237             ),
238 #           -----------------------------------
239             BINARY_DATA_FILE_2_FORMAT = SIMP(statut ='f',
240 #           -----------------------------------
241                 typ = 'TXM',
242                 into = ['SERAFIN','SERAFIND','MED'],
243                 defaut = 'SERAFIN',
244                 fr = """Format du \telkey{FICHIER DE DONNEES BINAIRE 2}.
245 Les valeurs possibles sont :
246 \begin{itemize}
247 \item SERAFIN : format standard simple precision pour \tel ;
248 \item SERAFIND: format standard double precision pour \tel ;
249 \item MED     : format MED double precision base sur HDF5.
250 \end{itemize}""",
251                 ang = """\telkey{BINARY DATA FILE 2} format.
252 Possible values are:
253 \begin{itemize}
254 \item SERAFIN : classical single precision format in \tel,
255 \item SERAFIND: classical double precision format in \tel,
256 \item MED     : MED double precision format based on HDF5.
257 \end{itemize}""",
258             ),
259         ),
260     ),
261 #   -----------------------------------
262     GLOBAL = FACT(statut='o',
263 #   -----------------------------------
264 #       -----------------------------------
265         TITLE = SIMP(statut ='f',
266 #       -----------------------------------
267             typ = 'TXM',
268             defaut = '',
269             fr = """Titre du cas etudie.""",
270             ang = """Title of the studied case.""",
271         ),
272 #       -----------------------------------
273         VECTOR_LENGTH = SIMP(statut ='f',
274 #       -----------------------------------
275             typ = 'I',
276             defaut = 1,
277             fr = """Longueur du vecteur pour les machines vectorielles.""",
278             ang = """Vector length on vector machines.""",
279         ),
280 #       -----------------------------------
281         PARALLEL_PROCESSORS = SIMP(statut ='f',
282 #       -----------------------------------
283             typ = 'I',
284             defaut = 0,
285             fr = """Nombre de processeurs pour la decomposition en parallele :
286 \begin{itemize}
287 \item 0 : 1 machine, compilation sans bibliotheque de parallelisme ;
288 \item 1 : 1 machine, compilation avec bibliotheque de parallelisme ;
289 \item 2 : 2 processeurs ou machines en parallele.
290 etc...
291 \end{itemize}""",
292             ang = """Number of processors for domain partition:
293 \begin{itemize}
294 \item 0: 1 machine, compiling without parallel library,
295 \item 1: 1 machine, compiling with a parallel library,
296 \item 2: 2 processors or machines in parallel.
297 etc...
298 \end{itemize}""",
299         ),
300 #       -----------------------------------
301         CHECKING_THE_MESH = SIMP(statut ='f',
302 #       -----------------------------------
303             typ = bool,
304             defaut = False,
305             fr = """Si OUI on appelle le sous-programme \telfile{CHECKMESH}
306 qui verifie la coherence du maillage, points superposes, etc.""",
307             ang = """If this keyword is equal to YES, a call to subroutine
308 \telfile{CHECKMESH} will look for errors in the mesh,
309 superimposed points, etc.""",
310         ),
311     ),
312 #   -----------------------------------
313     OUTPUT = FACT(statut='o',
314 #   -----------------------------------
315 #       -----------------------------------
316         RESULTS = FACT(statut='o',
317 #       -----------------------------------
318 #           -----------------------------------
319             GRAPHIC_PRINTOUT_PERIOD = SIMP(statut ='f',
320 #           -----------------------------------
321                 typ = 'I',
322                 defaut = 1,
323                 fr = """Determine la periode, en nombre de periodes de houle,
324 d impression des \telkey{VARIABLES POUR LES SORTIES GRAPHIQUES}
325 (voir ce mot-cle) dans le \telkey{FICHIER DES RESULTATS}.""",
326                 ang = """Fixes the period, in number of wave periods, for the writing
327 of the \telkey{VARIABLES FOR GRAPHIC PRINTOUTS} (see this keyword)
328 in the \telkey{RESULTS FILE}.""",
329             ),
330 #           -----------------------------------
331             VARIABLES_FOR_GRAPHIC_PRINTOUTS = SIMP(statut ='f',
332 #           -----------------------------------
333                 typ = 'TXM',
334                 into = ["wave height","wave phase","velocity u (free surface)(t=0)","velocity v (free surface)(t=0)","free surface elevation (t=0)","bottom elevation","still water height","phase velocity","group velocity","wave number","real potential","imaginal potential","prive(1,1)","prive(1,2)","prive(1,3)","prive(1,4)","first mean spectral period","second mean spectral period","third mean spectral period","force along X","force along Y","wave incidence radian","breaking rate","SXX stress","SXY stress","SYY stress"],
335                 defaut = [],
336                 fr = """Noms des variables que l utilisateur veut ecrire dans
337 le \telkey{FICHIER DES RESULTATS}.
338 Le choix des separateurs est libre.
339 Les possibilites offertes sont les suivantes :
340 \begin{itemize}
341 \item HS hauteur de la houle ;
342 \item PHAS phase de la houle ;
343 \item U0 vitesse u en surface      (a $t$ = 0) ;
344 \item V0 vitesse v en surface      (a $t$ = 0) ;
345 \item ZS cote de la surface libre  (a $t$ = 0) ;
346 \item ZF fond ;
347 \item HW hauteur d eau au repos ;
348 \item C vitesse de phase ;
349 \item CG vitesse de groupe ;
350 \item K nombre d onde ;
351 \item PHIR potentiel reel ;
352 \item PHII potentiel imaginaire ;
353 \item D prive(1,1) (variable 13) ;
354 \item E prive(1,2) (variable 14) ;
355 \item F prive(1,3) (variable 15) ;
356 \item G prive(1,4) (variable 16) ;
357 \item T01 premiere periode moyenne spectrale ;
358 \item T02 deuxieme periode moyenne spectrale ;
359 \item TM troisieme periode moyenne spectrale ;
360 \item FX force en X ;
361 \item FY force en Y ;
362 \item INC incidence de la houle ;
363 \item QB taux de deferlement ;
364 \item SXX contrainte SXX ;
365 \item SXY contrainte SXY ;
366 \item SYY contrainte SYY.
367 \end{itemize}
368 L utilisateur dispose de 4 champs libres, qu il peut
369 utiliser pour ecrire dans le fichier des resultats des variables
370 qu il cree lui-meme. Ces variables propres a l utlisateur doivent
371 etre calculees dans le sous-programme \telfile{CALRES} et le nom que
372 l on desire leur donner doit etre ecrit dans le sous-programme
373 \telfile{NOMVAR}.
374 Ces 4 champs sont :
375 \telfile{D, E, F, G} qui correspondent aux tableaux
376 \telfile{PRIVE(1,1), PRIVE(1,2), PRIVE(1,3), PRIVE(1,4)}.
377 A la difference des variables
378      precedentes, celles-ci sont conservees dans tout le programme, et
379      peuvent donc etre reutilisees.
380      Dans ce dernier cas ne pas oublier de donner une taille
381      suffisante au tableau PRIVE,
382 en precisant le parametre \telfile{NPRIV}
383 (dans le programme principal).""",
384                 ang = """Names of the variables that the user wants to write in the
385 \telkey{RESULTS FILE}.
386 Separators between variable names can be choosen free.
387  The allowable values are:
388 \begin{itemize}
389 \item HS=wave height,
390 \item PHAS=wave phase,
391 \item U0=velocity u (free surface at $t$ = 0),
392 \item V0=velocity v (free surface at $t$ = 0),
393 \item ZS=free surface elevation (at $t$ = 0),
394 \item ZF=bottom elevation,
395 \item HW=still water height,
396 \item C=phase velocity,
397 \item CG=group velocity,
398 \item K=wave number,
399 \item PHIR=real potential,
400 \item PHII=imaginal potential,
401 \item D=prive(1,1),
402 \item E=prive(1,2),
403 \item F=prive(1,3),
404 \item G=prive(1,4),
405 \item T01=first mean spectral period,
406 \item T02=second mean spectral period,
407 \item TM=third mean spectral period,
408 \item FX=force along X,
409 \item FY=force along Y,
410 \item INC=wave incidence radian,
411 \item QB=breaking rate,
412 \item SXX=SXX stress,
413 \item SXY=SXY stress,
414 \item SYY=SYY stress.
415 \end{itemize}
416 The user has 4 free variables at his/her disposal to create other
417 variables by him/herself. These variables have to be computed
418 in the \telfile{CALRES} subroutine, and the name that we want to
419 attribute has to be precibed in the \telfile{NOMVAR} subroutine.
420 The 4 free variable fields are:
421 \telfile{D, E, F, G} which corresponds to the private arrays
422 \telfile{PRIVE(1,1), PRIVE(1,2), PRIVE(1,3) and PRIVE (1,4)}.
423 Contrary to the previous
424      variables, these are conserved all through the computation, and can
425      be used again.
426      Do not forget to specify the number of private arrays you want to
427 use in the principal programme (variable \telfile{NPRIV}).""",
428             ),
429 #           -----------------------------------
430             RESULTS_FILE = SIMP(statut ='f',
431 #           -----------------------------------
432                 typ = ('Fichier','All Files (*)','Sauvegarde'), max='**',
433                 defaut = '',
434                 fr = """Nom du fichier dans lequel seront ecrits les resultats du calcul,
435 avec la periodicite donnee par le mot cle
436 \telkey{PERIODE DE SORTIE GRAPHIQUE}.
437 Sur IBM, ce fichier est alloue automatiquement s il n existe pas,
438 avec les caracteristiques suivantes :
439   Format d enregistrement   : VBS ;
440   Longueur d enregistrement : X ;
441   Taille de bloc            : 6204 ;
442   Nombre de pistes          : 50 en primaire, 10 en secondaire.
443 La place memoire ainsi reservee est suffisante pour la plupart des
444 calculs de dimension moyenne.""",
445                 ang = """Name of the results file corresponding to the computations and
446 which contains the variables specified by the keyword
447 \telkey{VARIABLES FOR GRAPHIC PRINTOUTS}.""",
448             ),
449 #           -----------------------------------
450             BINARY_RESULTS_FILE = SIMP(statut ='f',
451 #           -----------------------------------
452                 typ = ('Fichier','All Files (*)','Sauvegarde'), max='**',
453                 defaut = '',
454                 fr = """Fichier des resultats, code en binaire, mis a la disposition de
455 l utilisateur.""",
456                 ang = """Results file, written in binary mode, at the disposal of the user.""",
457             ),
458 #           -----------------------------------
459             FORMATTED_RESULTS_FILE = SIMP(statut ='f',
460 #           -----------------------------------
461                 typ = ('Fichier','All Files (*)','Sauvegarde'), max='**',
462                 defaut = '',
463                 fr = """Fichier des resultats formate mis a la disposition de l utilisateur.""",
464                 ang = """Results file, written in ASCII mode, at the disposal of the user.""",
465             ),
466 #           -----------------------------------
467             NUMBER_OF_PRIVATE_VARIABLES = SIMP(statut ='f',
468 #           -----------------------------------
469                 typ = 'I',
470                 defaut = 0,
471                 fr = """Permet de fixer le nombre de variables privees.""",
472                 ang = """Give the number of private variables.""",
473             ),
474 #           -----------------------------------
475             RESULTS_FILE_FORMAT = SIMP(statut ='f',
476 #           -----------------------------------
477                 typ = 'TXM',
478                 into = ['SERAFIN','SERAFIND','MED'],
479                 defaut = 'SERAFIN',
480                 fr = """Format du \telkey{FICHIER DE RESULTATS}.
481 Les valeurs possibles sont :
482 \begin{itemize}
483 \item SERAFIN : format standard simple precision pour \tel ;
484 \item SERAFIND: format standard double precision pour \tel ;
485 \item MED     : format MED double precision base sur HDF5.
486 \end{itemize}""",
487                 ang = """Format of the \telkey{RESULTS FILE}. Possible values are:
488 \begin{itemize}
489 \item SERAFIN : classical single precision format in \tel,
490 \item SERAFIND: classical double precision format in \tel,
491 \item MED     : MED double precision format based on HDF5.
492 \end{itemize}""",
493             ),
494         ),
495 #       -----------------------------------
496         LISTING = FACT(statut='o',
497 #       -----------------------------------
498 #           -----------------------------------
499             LISTING_PRINTOUT_PERIOD = SIMP(statut ='f',
500 #           -----------------------------------
501                 typ = 'I',
502                 defaut = 1,
503                 fr = """Determine la periode, en nombre de periodes de houle,
504 d impression des \telkey{VARIABLES A IMPRIMER} (voir ce mot-cle). Pour
505 la mise au point, il faut savoir que la sortie des resultats est
506 effectuee systematiquement sur le fichier de retour d execution du code
507 (actuellement accessible par le menu 3.e de SPF sur IBM).""",
508                 ang = """Fixes the period, in number of wave periods, for the writing
509 of the \telkey{VARIABLES TO BE PRINTED} (see this keyword).""",
510             ),
511 #           -----------------------------------
512             LISTING_PRINTOUT = SIMP(statut ='f',
513 #           -----------------------------------
514                 typ = bool,
515                 defaut = True,
516                 fr = """Sortie des resultats sur support papier.
517 Si l on met NON le listing ne contient que l en-tete et la mention
518 FIN NORMALE DU PROGRAMME.
519 Commande a eviter.""",
520                 ang = """If NO is specified for this keyword, the printout listing just
521 contains the head and the sentence END OF PROGRAM.
522 It is advised not to use this way.""",
523             ),
524 #           -----------------------------------
525             INFORMATIONS_ABOUT_SOLVER = SIMP(statut ='f',
526 #           -----------------------------------
527                 typ = bool,
528                 defaut = True,
529                 fr = """Donne le nombre d iterations necessaires a la convergence du solveur.""",
530                 ang = """Gives the iterations number which was necessary for the solver
531 to converge.""",
532             ),
533 #           -----------------------------------
534             VARIABLES_TO_BE_PRINTED = SIMP(statut ='f',
535 #           -----------------------------------
536                 typ = 'TXM',
537                 into = ["wave height","wave phase","velocity u (free surface)(t=0)","velocity v (free surface)(t=0)","free surface elevation (t=0)","bottom elevation","still water height","phase velocity","group velocity","wave number","real potential","imaginal potential","prive(1,1)","prive(1,2)","prive(1,3)","prive(1,4)","first mean spectral period","second mean spectral period","third mean spectral period","force along X","force along Y","wave incidence radian","breaking rate","SXX stress","SXY stress","SYY stress"],
538                 defaut = '',
539                 fr = """Nom des variables que l utilisateur desire ecrire a l ecran.
540 Memes possibilites que pour les sorties graphiques.""",
541                 ang = """Name of variables taht the user whishes to write on the screen.
542 Possibilities are the same as for graphic outputs.""",
543             ),
544         ),
545 #       -----------------------------------
546         FREE_SURFACE = FACT(statut='o',
547 #       -----------------------------------
548 #           -----------------------------------
549             FREE_SURFACE_ANIMATION = SIMP(statut ='f',
550 #           -----------------------------------
551                 typ = bool,
552                 defaut = [False],
553                 fr = """Option utilisee si l on veut produire le fichier de phases
554 et amplitudes qui servira a calculer la position de la surface libre
555 en tout point du maillage.
556 A besoin des noms de \telkey{FICHIER DES PHASES ET AMPLITUDES} et
557 \telkey{FICHIER DE SURFACE LIBRE}.""",
558                 ang = """This option informs that the phase and amplitude file is to
559 be generated. This file will be used to determine the free surface
560 elevation throughout the model area.
561 Remember to give \telkey{AMPLITUDE AND PHASE FILE} and
562 \telkey{FREE SURFACE FILE}.""",
563             ),
564 #           -----------------------------------
565             AMPLITUDE_AND_PHASE_FILE = SIMP(statut ='f',
566 #           -----------------------------------
567                 typ = ('Fichier','All Files (*)','Sauvegarde'), max='**',
568                 defaut = '',
569                 fr = """Nom du fichier dans lequel seront ecrits les phases et amplitudes
570 pour toutes les periodes et directions simulees dans le fichier des
571 parametres.""",
572                 ang = """Name of the results file corresponding to the computations and
573 which contains the phase and amplitude at every point for all the
574 periods and directions specified in the steering file.""",
575             ),
576 #           -----------------------------------
577             AMPLITUDE_AND_PHASE_FILE_FORMAT = SIMP(statut ='f',
578 #           -----------------------------------
579                 typ = 'TXM',
580                 defaut = 'SERAFIN',
581                 fr = """Format du \telkey{FICHIER DES PHASES ET AMPLITUDES}.
582 Les valeurs possibles sont :
583 \begin{itemize}
584 \item SERAFIN : format standard simple precision pour \tel ;
585 \item SERAFIND: format standard double precision pour \tel ;
586 \item MED     : format MED double precision base sur HDF5.
587 \end{itemize}""",
588                 ang = """Format of the \telkey{AMPLITUDE AND PHASE FILE}.
589 Possible choices are:
590 \begin{itemize}
591 \item SERAFIN : classical single precision format in \tel,
592 \item SERAFIND: classical double precision format in \tel,
593 \item MED     : MED double precision format based on HDF5.
594 \end{itemize}""",
595             ),
596 #           -----------------------------------
597             FREE_SURFACE_FILE = SIMP(statut ='f',
598 #           -----------------------------------
599                 typ = 'TXM', max='**',
600                 defaut = '',
601                 fr = """Nom du fichier dans lequel sera ecrite la surface libre fonction du
602 temps pour permettre une animation du fichier.""",
603                 ang = """Name of the results file corresponding to the computations and
604 which contains the free surface at every point as a function of time.
605 This file can be animated to check free surface variations with time.""",
606             ),
607 #           -----------------------------------
608             FREE_SURFACE_FILE_FORMAT = SIMP(statut ='f',
609 #           -----------------------------------
610                 typ = 'TXM',
611                 defaut = 'SERAFIN',
612                 fr = """Format du \telkey{FICHIER DE SURFACE LIBRE}.
613 Les valeurs possibles sont :
614 \begin{itemize}
615 \item SERAFIN : format standard simple precision pour \tel ;
616 \item SERAFIND: format standard double precision pour \tel ;
617 \item MED     : format MED double precision base sur HDF5.
618 \end{itemize}""",
619                 ang = """Format of the \telkey{FREE SURFACE FILE}.
620 Possible values are:
621 \begin{itemize}
622 \item SERAFIN : classical single precision format in \tel,
623 \item SERAFIND: classical double precision format in \tel,
624 \item MED     : MED double precision format based on HDF5.
625 \end{itemize}""",
626             ),
627 #           -----------------------------------
628             FIRST_TIME_IN_THE_FREE_SURFACE_FILE = SIMP(statut ='f',
629 #           -----------------------------------
630                 typ = 'R',
631                 defaut = [10000.],
632                 fr = """Determine le temps a partir duquel debute l ecriture
633 des resultats dans le \telkey{FICHIER DE SURFACE LIBRE}.""",
634                 ang = """Determines the time from which the results are written
635 in the \telkey{FREE SURFACE FILE}.""",
636             ),
637 #           -----------------------------------
638             TIME_STEP = SIMP(statut ='f',
639 #           -----------------------------------
640                 typ = 'R',
641                 defaut = 0.25,
642                 fr = """Definit le pas de temps en secondes pour la sortie graphique
643 \telkey{FICHIER DE SURFACE LIBRE}.""",
644                 ang = """Specifies the time step in seconds in
645  \telkey{FREE SURFACE FILE}.""",
646             ),
647 #           -----------------------------------
648             NUMBER_OF_TIME_STEPS = SIMP(statut ='f',
649 #           -----------------------------------
650                 typ = 'I',
651                 defaut = 0,
652                 fr = """Definit le nombre de pas de temps pour la sortie graphique
653 \telkey{FICHIER DE SURFACE LIBRE}.""",
654                 ang = """Specifies the number of time steps in
655  \telkey{FREE SURFACE FILE}.""",
656             ),
657         ),
658     ),
659 )
660 # -----------------------------------------------------------------------
661 GENERAL_PARAMETERS = PROC(nom= "GENERAL_PARAMETERS",op = None,
662 # -----------------------------------------------------------------------
663 #   -----------------------------------
664     DEBUGGER = SIMP(statut ='f',
665 #   -----------------------------------
666         typ = 'I',
667         defaut = 0,
668         fr = """Pour imprimer la sequence des appels, mettre 1.""",
669         ang = """If 1, calls of subroutines will be printed in the listing.""",
670     ),
671 #   -----------------------------------
672     TIME = FACT(statut='o',
673 #   -----------------------------------
674 #       -----------------------------------
675         ORIGINAL_DATE_OF_TIME = SIMP(statut ='f',
676 #       -----------------------------------
677             typ = 'I', min= 3, max= 3,
678             defaut = [0,0,0],
679             fr = """Permet de fixer la date d origine des temps du modele lors
680 de la prise en compte de la force generatrice de la maree.""",
681             ang = """Give the date of the time origin of the model when taking into
682 account the tide generating force.""",
683         ),
684 #       -----------------------------------
685         ORIGINAL_HOUR_OF_TIME = SIMP(statut ='f',
686 #       -----------------------------------
687             typ = 'I', min= 3, max= 3,
688             defaut = [0,0,0],
689             fr = """Permet de fixer l heure d origine des temps du modele lors
690 de la prise en compte de la force generatrice de la maree.""",
691             ang = """Give the time of the time origin of the model when taking into
692 account the tide generating force.""",
693         ),
694     ),
695 #   -----------------------------------
696     LOCATION = FACT(statut='o',
697 #   -----------------------------------
698 #       -----------------------------------
699         ORIGIN_COORDINATES = SIMP(statut ='f',
700 #       -----------------------------------
701             typ = 'I', min= 2, max= 2,
702             defaut = [0,0],
703             fr = """Valeur en metres, utilise pour eviter les trop grands
704 nombres, transmis
705 dans le format SERAFIN mais pas d autre traitement pour l instant.""",
706             ang = """Value in metres, used to avoid large real numbers,
707 added in SERAFIN format, but so far no other treatment.""",
708         ),
709     ),
710 )
711 # -----------------------------------------------------------------------
712 NUMERICAL_PARAMETERS = PROC(nom= "NUMERICAL_PARAMETERS",op = None,
713 # -----------------------------------------------------------------------
714 #   -----------------------------------
715     MATRIX_STORAGE = SIMP(statut ='f',
716 #   -----------------------------------
717         typ = 'TXM',
718         into = ["Classical EBE","Assembled EBE","Edge-based storage"],
719         defaut = "Edge-based storage",
720         fr = """Permet de definir la methode de stockage des matrices.
721 Les choix possibles sont :
722 \begin{itemize}
723 \item 1 : EBE classique ;
724 \item 2 : EBE assemble ;
725 \item 3 : stockage par segments.
726 \end{itemize}
727 Attention, avec 2, il faut une numerotation speciale des points.""",
728         ang = """Defines the method to store matrices. The possible choices are:
729 \begin{itemize}
730 \item 1: classical EBE,
731 \item 2: assembled EBE,
732 \item 3: edge-based storage.
733 \end{itemize}
734 Beware, with option 2, a special numbering of points is required.""",
735     ),
736 #   -----------------------------------
737     MATRIX_VECTOR_PRODUCT = SIMP(statut ='f',
738 #   -----------------------------------
739         typ = 'I',
740         defaut = 1,
741         fr = """Les choix possibles sont :
742 \begin{itemize}
743 \item 1 : Ancien Produit ;
744 \item 2 : Nouveau Produit Frontal.
745 \end{itemize}""",
746         ang = """Possible choices are:
747 \begin{itemize}
748 \item 1: Classical Product,
749 \item 2: New Frontal Product.
750 \end{itemize}""",
751     ),
752 #   -----------------------------------
753     ZERO = SIMP(statut ='f',
754 #   -----------------------------------
755         typ = 'R',
756         defaut = [1.E-12],
757         fr = """Non active pour l instant.""",
758         ang = """Non active at the moment.""",
759     ),
760 #   -----------------------------------
761     SOLVER_INFO = FACT(statut='o',
762 #   -----------------------------------
763 #       -----------------------------------
764         MAXIMUM_NUMBER_OF_ITERATIONS_FOR_SOLVER = SIMP(statut ='f',
765 #       -----------------------------------
766             typ = 'I',
767             defaut = 60000,
768             fr = """Les algorithmes utilises pour la resolution du systeme
769 matriciel etant iteratifs, il est necessaire de limiter le nombre
770 d iterations autorisees.""",
771             ang = """Algorithms used for solving the matrix system are iterative.
772 It is then necessary to limit the maximum number of iterations.""",
773         ),
774 #       -----------------------------------
775         PRECONDITIONING = SIMP(statut ='f',
776 #       -----------------------------------
777             typ = 'TXM',
778             into = ["no preconditioning","diagonal preconditioning","block-diagonal preconditioning","absolute value diagonal preconditioning","Crout preconditioning"],
779             defaut = "diagonal preconditioning",
780             fr = """Permet de preconditionner le systeme de l etape de propagation afin
781 d accelerer la convergence lors de sa resolution.
782 \begin{itemize}
783 \item 0 : pas de preconditionnement ;
784 \item 2 : preconditionnement diagonal ;
785 \item 3 : preconditionnement bloc-diagonal ;
786 \item 5 : preconditionnement diagonal en valeur absolue ;
787 \item 7 : preconditionnement de Crout par element.
788 \end{itemize}
789 Certains preconditionnements sont cumulables
790 (les diagonaux 2 ou 3 avec les autres).
791 Pour cette raison on ne retient que les nombres premiers pour
792 designer les preconditionnements. Si l on souhaite en cumuler
793 plusieurs on formera le produit des options correspondantes.""",
794             ang = """Enables to apply preconditionning the matrix system to accelerate
795 the convergence of the solver.
796 \begin{itemize}
797 \item 0: no preconditionning,
798 \item 2: diagonal preconditionning,
799 \item 3: block-diagonal preconditionning,
800 \item 5: diagonal preconditionning in absolute value,
801 \item 7: Element Crout preconditionning.
802 \end{itemize}
803 Few of them can be combined
804 (numbers 2 or 3 with the other).
805 To combine some preconditionnings, impose the product of the previous
806 numbers: example 6 means preconditioning 2 and 3 applied.""",
807         ),
808 #       -----------------------------------
809         SOLVER = SIMP(statut ='f',
810 #       -----------------------------------
811             typ = 'TXM',
812             into = ["conjugate gradient","conjugate residual","conjugate gradient on a normal equation","minimum error","squared conjugate gradient","CGSTAB","GMRES","direct","parallel direct (MUMPS)"],
813             defaut = "direct",
814             fr = """Permet de choisir le solveur utilise pour la resolution de l etape de
815 propagation. Toutes les methodes proposees actuellement s apparentent
816 au Gradient Conjugue. Ce sont :
817 \begin{itemize}
818 \item 1 : gradient conjugue ;
819 \item 2 : residu conjugue ;
820 \item 3 : gradient conjugue sur equation normale ;
821 \item 4 : erreur minimale ;
822 \item 5 : gradient conjugue carre (non programme) ;
823 \item 6 : gradient conjugue de type CGSTAB ;
824 \item 7 : GMRES ;
825 \item 8 : solveur direct.
826 \end{itemize}""",
827             ang = """Enables to choose the solver used for solving the matrix system.
828 They are:
829 \begin{itemize}
830 \item 1: conjugate gradient,
831 \item 2: conjugate residual,
832 \item 3: conjugate gradient on the normal equation,
833 \item 4: minimum error,
834 \item 5: squared conjugate gradient (not programmed),
835 \item 6: CGSTAB conjugate gradient,
836 \item 7: GMRES,
837 \item 8: direct solver.
838 \end{itemize}""",
839         ),
840 #       -----------------------------------
841         SOLVER_OPTION = SIMP(statut ='f',
842 #       -----------------------------------
843             typ = 'I',
844             defaut = 3,
845             fr = """Parametre definissant la dimension de l espace de Krylov
846 pour le solveur 7 (GMRES).""",
847             ang = """Defines the dimension of the Krylov space when using
848 the solver 7 (GMRES).""",
849         ),
850 #       -----------------------------------
851         SOLVER_ACCURACY = SIMP(statut ='f',
852 #       -----------------------------------
853             typ = 'R',
854             defaut = 1.E-4,
855             fr = """Precision demandee pour la resolution de l equation de Berkhoff.""",
856             ang = """Accuracy requested for the linear system solver.""",
857         ),
858     ),
859 #   -----------------------------------
860     DISSIPATION = FACT(statut='o',
861 #   -----------------------------------
862 #       -----------------------------------
863         SUB_ITERATIONS_ACCURACY_FOR_DISSIPATION = SIMP(statut ='f',
864 #       -----------------------------------
865             typ = 'R',
866             defaut = [1.E-2],
867             fr = """Donne la precision requise pour les sous-iterations du calcul
868 du coefficient de dissipation.""",
869             ang = """Fixes the accuracy requested for sub-iterations necessary to
870 determine the dissipation coefficients.""",
871         ),
872 #       -----------------------------------
873         MAXIMUM_OF_SUB_ITERATIONS = SIMP(statut ='f',
874 #       -----------------------------------
875             typ = 'I',
876             defaut = [15],
877             fr = """Donne le nombre maximum admis de sous-iterations pour le calcul
878 du coefficient de dissipation.""",
879             ang = """Fixes the maximum number of sub-iterations for the computation
880 of dissipation.""",
881         ),
882 #       -----------------------------------
883         DISSIPATION_RELAXATION = SIMP(statut ='f',
884 #       -----------------------------------
885             typ = 'R',
886             defaut = [0.5],
887             fr = """Donne le coefficient de relaxation entre deux sous-iterations
888 pour le calcul du coefficient de dissipation.""",
889             ang = """Fixes the relaxation coefficient used between two sub-iterations
890 for the computation of the dissipation term.""",
891         ),
892     ),
893 )
894 # -----------------------------------------------------------------------
895 BOUNDARY_CONDITIONS = PROC(nom= "BOUNDARY_CONDITIONS",op = None,
896 # -----------------------------------------------------------------------
897 #   -----------------------------------
898     PHASE_REFERENCE_COORDINATES = SIMP(statut ='f',
899 #   -----------------------------------
900         typ = 'R', min= 2, max= 2,
901         defaut = [0.,0.],
902         fr = """Coordonnees pour l origine des phases. Ne change rien
903 aux hauteurs de vagues calculees.""",
904         ang = """Coordinates of reference point for phase. Will
905 not change the wave height computed.""",
906     ),
907 #   -----------------------------------
908     RANDOM_WAVE = FACT(statut='o',
909 #   -----------------------------------
910 #       -----------------------------------
911         NUMBER_OF_PERIODS = SIMP(statut ='f',
912 #       -----------------------------------
913             typ = 'I',
914             defaut = [5],
915             fr = """Valeur utilisee avec l option
916 \telkey{HOULE ALEATOIRE MONODIRECTIONNELLE} = OUI
917   ou avec l option
918 \telkey{HOULE ALEATOIRE MULTIDIRECTIONNELLE} = OUI.
919 Pour un calcul en houle aleatoire monodirectionnelle ou
920 multidirectionnelle, nombre de bandes d egale energie servant a
921 discretiser le spectre d energie en frequence.""",
922             ang = """Used with option
923 \telkey{MONODIRECTIONAL RANDOM WAVE} = YES
924    or
925 \telkey{MULTIDIRECTIONAL RANDOM WAVE} = YES.
926 It fixes the number of iso-energy frequency bands which discretize
927 the energy spectrum.""",
928         ),
929 #       -----------------------------------
930         PEAK_PERIOD = SIMP(statut ='f',
931 #       -----------------------------------
932             typ = 'R',
933             defaut = [10.0],
934             fr = """Valeur utilisee avec l option
935 \telkey{HOULE ALEATOIRE MONODIRECTIONNELLE} = OUI
936   ou avec l option
937 \telkey{HOULE ALEATOIRE MULTIDIRECTIONNELLE} = OUI.
938 Fixe la periode de pic (en secondes) du spectre d energie.""",
939             ang = """Used with option
940 \telkey{MONODIRECTIONAL RANDOM WAVE} = YES
941    or
942 \telkey{MULTIDIRECTIONAL RANDOM WAVE} = YES.
943 Fixes the peak period (in seconds) of the energy spectrum.""",
944         ),
945 #       -----------------------------------
946         GAMMA = SIMP(statut ='f',
947 #       -----------------------------------
948             typ = 'R',
949             defaut = [3.3],
950             fr = """Valeur utilisee avec l option
951 \telkey{HOULE ALEATOIRE MONODIRECTIONNELLE} = OUI
952   ou avec l option
953 \telkey{HOULE ALEATOIRE MULTIDIRECTIONNELLE} = OUI.
954 Indique la valeur de $\gamma$ pour le spectre d energie :
955 \begin{itemize}
956 \item GAMMA = 1   : spectre de Pierson-Moskowitz ;
957 \item GAMMA = 3.3 : spectre de JONSWAP moyen (valeur par defaut).
958 \end{itemize}""",
959             ang = """Used with option
960 \telkey{MONODIRECTIONAL RANDOM WAVE} = YES
961    or
962 \telkey{MULTIDIRECTIONAL RANDOM WAVE} = YES.
963 Fixes the $\gamma$ value tor the JONSWAP wave energy spectrum:
964 \begin{itemize}
965 \item GAMMA = 1: Pierson-Moskowitz,
966 \item GAMMA = 3.3: mean JONSWAP spectrum (default value).
967 \end{itemize}""",
968         ),
969 #       -----------------------------------
970         MINIMUM_SPECTRAL_PERIOD = SIMP(statut ='f',
971 #       -----------------------------------
972             typ = 'R',
973             defaut = [0.02],
974             fr = """Valeur de la periode minimum voulue en secondes
975 si on veut tronquer le spectre pour le calcul
976 des periodes en houle aleatoire (voir sous-programme \telfile{PERALE}).""",
977             ang = """Minimum period value requested in seconds
978 if it is necessary to alter the energy spectrum
979 for the computation of the periods in the case
980 of random waves (see \telfile{PERALE} subroutine).""",
981         ),
982 #       -----------------------------------
983         MAXIMUM_SPECTRAL_PERIOD = SIMP(statut ='f',
984 #       -----------------------------------
985             typ = 'R',
986             defaut = [200.],
987             fr = """Valeur de la periode maximum voulue en secondes
988 si on veut tronquer le spectre pour le calcul
989 des periodes en houle aleatoire (voir sous-programme \telfile{PERALE}).""",
990             ang = """Maximum period value requested in seconds
991 if it is necessary to alter the energy spectrum
992 for the computation of the periods in the case
993 of random waves (see \telfile{PERALE} subroutine).""",
994         ),
995 #       -----------------------------------
996         MONODIRECTIONAL = FACT(statut='o',
997 #       -----------------------------------
998 #           -----------------------------------
999             MONODIRECTIONAL_RANDOM_WAVE = SIMP(statut ='f',
1000 #           -----------------------------------
1001                 typ = bool,
1002                 defaut = [False],
1003                 fr = """Oui, si l on veut effectuer un calcul en houle aleatoire
1004 monodirectionnelle (voir reels index 12, 13 et entier index 10).""",
1005                 ang = """Yes, if one wants to run computation in random monodirectional waves
1006 (see real keywords of index 12, 13 and integer of index 10).""",
1007             ),
1008         ),
1009 #       -----------------------------------
1010         MULTIDIRECTIONAL = FACT(statut='o',
1011 #       -----------------------------------
1012 #           -----------------------------------
1013             MULTIDIRECTIONAL_RANDOM_WAVE = SIMP(statut ='f',
1014 #           -----------------------------------
1015                 typ = bool,
1016                 defaut = [False],
1017                 fr = """Oui, si l on veut effectuer un calcul en houle aleatoire
1018 multidirectionnelle (voir les reels index 12, 13, 14, 15 et 16 et
1019 les entiers index 10 et 11.""",
1020                 ang = """Yes, if one wants to run computation in random multidirectional waves
1021 (see real keywords of index 12, 13 and integer of index 10).""",
1022             ),
1023 #           -----------------------------------
1024             NUMBER_OF_DIRECTIONS = SIMP(statut ='f',
1025 #           -----------------------------------
1026                 typ = 'I',
1027                 defaut = [5],
1028                 fr = """Valeur utilisee avec l option
1029 \telkey{HOULE ALEATOIRE MULTIDIRECTIONNELLE} = OUI.
1030 Pour un calcul en houle aleatoire multidirectionnelle,
1031 nombre de bandes d egale energie servant a discretiser le spectre
1032 directionnel d energie.""",
1033                 ang = """Used with the option
1034 \telkey{MULTIDIRECTIONAL RANDOM WAVE} = YES.
1035 It fixes the number of iso-energy bands which discretizes the wave
1036 directional spectrum.""",
1037             ),
1038 #           -----------------------------------
1039             MINIMUM_ANGLE_OF_PROPAGATION = SIMP(statut ='f',
1040 #           -----------------------------------
1041                 typ = 'R',
1042                 defaut = [-180.],
1043                 fr = """Valeur utilisee avec l option
1044 \telkey{HOULE ALEATOIRE MULTIDIRECTIONNELLE} = OUI.
1045 Indique la borne inferieure de l intervalle des directions de
1046   propagation dans le cas d une houle aleatoire multidirectionnelle
1047   L angle est donne en degres et est compte positivement dans le sens
1048   direct a partir de l axe $x$.""",
1049                 ang = """Used with the option
1050 \telkey{MULTIDIRECTIONAL RANDOM WAVE} = YES.
1051 Fixes the minimum value (in degrees) of the directions range. It is
1052 counted positively in the trigonometric sense relatively to the $x$
1053 axis.""",
1054             ),
1055 #           -----------------------------------
1056             MAXIMUM_ANGLE_OF_PROPAGATION = SIMP(statut ='f',
1057 #           -----------------------------------
1058                 typ = 'R',
1059                 defaut = [180.],
1060                 fr = """Valeur utilisee avec l option
1061 \telkey{HOULE ALEATOIRE MULTIDIRECTIONNELLE} = OUI.
1062 Indique la borne superieure de l intervalle des directions de
1063   propagation dans le cas d une houle aleatoire multidirectionnelle.
1064   L angle est donne en degres et est compte positivement dans le sens
1065   direct a partir de l axe $x$.""",
1066                 ang = """Used with the option
1067 \telkey{MULTIDIRECTIONAL RANDOM WAVE} = YES.
1068 Fixes the maximum value (in degrees) of the directions range. It is
1069 counted positively in the trigonometric sense relatively to the $x$
1070 axis.""",
1071             ),
1072 #           -----------------------------------
1073             S_EXPONENT = SIMP(statut ='f',
1074 #           -----------------------------------
1075                 typ = 'R',
1076                 defaut = [20.],
1077                 fr = """Valeur utilisee avec l option
1078 \telkey{HOULE ALEATOIRE MULTIDIRECTIONNELLE} = OUI.
1079 Indique la valeur maximale de l exposant $s$ dans l expression donnant
1080   la repartition directionnelle de la houle.
1081   Cette expression est celle donnee par Goda dans Random Seas and
1082   Design of Maritime Structures - University of Tokyo Press:
1083   G(f,teta) = G0 * (cos(teta/2))**2s. f est la frequence et teta est
1084   la direction de propagation de la houle.""",
1085                 ang = """Used with the option
1086 \telkey{MULTIDIRECTIONAL RANDOM WAVE} = YES.
1087 Fixes the maximum value of exponent $S$ in the Goda formula used to
1088 express the directional wave energy spreading.
1089 See GODA Y., Random Seas and Design of Maritime Structures - Univ.
1090 of Tokyo Press, 1987.""",
1091             ),
1092         ),
1093     ),
1094 #   -----------------------------------
1095     PERIODS_SCANNING = FACT(statut='o',
1096 #   -----------------------------------
1097 #       -----------------------------------
1098         PERIOD_SCANNING = SIMP(statut ='f',
1099 #       -----------------------------------
1100             typ = bool,
1101             defaut = [False],
1102             fr = """Oui, si l on veut effectuer plusieurs calculs en balayant un
1103 intervalle de periodes (voir reels index 8,9 et 10).""",
1104             ang = """Yes, if one wants to run computations by scanning a period range
1105 (resonance computations, see also reals of index 8, 9, and 10).""",
1106         ),
1107 #       -----------------------------------
1108         DATA = FACT(statut='o',
1109 #       -----------------------------------
1110 #           -----------------------------------
1111             BEGINNING_PERIOD_FOR_PERIOD_SCANNING = SIMP(statut ='f',
1112 #           -----------------------------------
1113                 typ = 'R',
1114                 defaut = [0.],
1115                 fr = """Valeur utilisee avec l option
1116 \telkey{BALAYAGE EN PERIODE} = OUI.
1117 Indique la borne gauche de l intervalle de periodes a parcourir
1118   (pour par exemple rechercher les periodes de resonances).""",
1119                 ang = """Used with the option
1120 \telkey{PERIOD SCANNING} = YES.
1121 Fixes the minimum value (in seconds) of the period range to be used for
1122 the period scanning.""",
1123             ),
1124 #           -----------------------------------
1125             ENDING_PERIOD_FOR_PERIOD_SCANNING = SIMP(statut ='f',
1126 #           -----------------------------------
1127                 typ = 'R',
1128                 defaut = [0.],
1129                 fr = """Valeur utilisee avec l option
1130 \telkey{BALAYAGE EN PERIODE} = OUI.
1131 Indique la borne droite de l intervalle de periodes a parcourir
1132   (pour par exemple rechercher les periodes de resonances).""",
1133                 ang = """Used with the option
1134 \telkey{PERIOD SCANNING} = YES.
1135 Fixes the maximum value (in seconds) of the period range to be used for
1136 the period scanning.""",
1137             ),
1138 #           -----------------------------------
1139             STEP_FOR_PERIOD_SCANNING = SIMP(statut ='f',
1140 #           -----------------------------------
1141                 typ = 'R',
1142                 defaut = [0.],
1143                 fr = """Valeur utilisee avec l option
1144 \telkey{BALAYAGE EN PERIODE} = OUI.
1145 Indique le pas a prendre pour effectuer le balayage en periodes
1146   (pour par exemple rechercher les periodes de resonances).""",
1147                 ang = """Used with the option
1148 \telkey{PERIOD SCANNING} = YES.
1149 Fixes the value of the period step (in seconds) to be used for
1150 the period scanning.""",
1151             ),
1152         ),
1153     ),
1154 #   -----------------------------------
1155     MONOCHROMATIC_WAVE = FACT(statut='o',
1156 #   -----------------------------------
1157 #       -----------------------------------
1158         WAVE_PERIOD = SIMP(statut ='f',
1159 #       -----------------------------------
1160             typ = 'R',
1161             defaut = [10.],
1162             fr = """Definit la periode de la houle en mode monochromatique.""",
1163             ang = """Defines the wave period for monochromatic mode.""",
1164         ),
1165 #       -----------------------------------
1166         DIRECTION_OF_WAVE_PROPAGATION = SIMP(statut ='f',
1167 #       -----------------------------------
1168             typ = 'R',
1169             defaut = [0.0],
1170             fr = """Donne la direction du vecteur d onde de la houle incidente. L angle
1171 est donne en degres et est compte positivement dans le sens direct
1172 a partir de l axe des $x$.
1173 Il s agit de la direction principale de propagation.
1174 Cette direction est la meme a toutes les frontieres maritimes.
1175 Si l utilisateur veut specifier des directions differentes sur
1176 differentes frontieres, il doit le faire dans son FORTRAN dans le
1177 sous-programme \telfile{BORH} en specifiant la variable
1178 \telfile{TETAB}.""",
1179             ang = """Fixes the direction towards the incident waves at boundaries go to.
1180 It is counted in degrees and positively in the trigonometric sense
1181 relatively to the $x$ axis.
1182 This value is prescribed as a constant value along all the wave
1183 incident type boundaries. If one wants to specify a non uniform value,
1184 the user has to specify the value \telfile{TETAB} in the subroutine
1185  \telfile{BORH}.""",
1186         ),
1187 #       -----------------------------------
1188         WAVE_HEIGHTS_SMOOTHING = SIMP(statut ='f',
1189 #       -----------------------------------
1190             typ = bool,
1191             defaut = [False],
1192             fr = """OUI si on souhaite lisser les hauteurs de houle
1193 pour ameliorer le calcul des contraintes de radiation
1194 (actif uniquement en houle reguliere).
1195 Valeur par defaut = NON.""",
1196             ang = """YES when one wants to smooth the wave heights
1197 to improve the radiation stresses computation
1198 (only used in regular wave mode).
1199 Default value = NO.""",
1200         ),
1201     ),
1202 #   -----------------------------------
1203     AUTOMATIC_TETAP_ANGLE = FACT(statut='o',
1204 #   -----------------------------------
1205 #       -----------------------------------
1206         SUB_ITERATIONS_ACCURACY_FOR_TETAP = SIMP(statut ='f',
1207 #       -----------------------------------
1208             typ = 'R',
1209             defaut = [1.E-2],
1210             fr = """Donne la precision requise pour les sous-iterations du calcul
1211 automatique de cos($\theta_p$).""",
1212             ang = """Fixes the accuracy requested for sub-iterations necessary to
1213 determine value of $\theta_p$ (criterion on cos($\theta_p$)).""",
1214         ),
1215 #       -----------------------------------
1216         AUTOMATIC_TETAP_CALCULATION = SIMP(statut ='f',
1217 #       -----------------------------------
1218             typ = bool,
1219             defaut = [False],
1220             fr = """Si = OUI : calcul automatique des angles $\theta_p$
1221 (basee sur la direction de la vitesse).""",
1222             ang = """If = TRUE: automatic calculation of $\theta_p$
1223 (based on velocity direction).""",
1224         ),
1225 #       -----------------------------------
1226         MAXIMUM_OF_SUB_ITERATIONS_FOR_TETAP = SIMP(statut ='f',
1227 #       -----------------------------------
1228             typ = 'I',
1229             defaut = [15],
1230             fr = """Donne le nombre maximum admis de sous-iterations pour le calcul
1231 automatique de $\theta_p$.""",
1232             ang = """Fixes the maximum number of sub-iterations for the automatic
1233 computation of $\theta_p$.""",
1234         ),
1235 #       -----------------------------------
1236         RELAXATION_ON_TETAP = SIMP(statut ='f',
1237 #       -----------------------------------
1238             typ = 'R',
1239             defaut = [1.],
1240             fr = """Donne le coefficient de relaxation entre deux sous-iterations
1241 pour le calcul de l angle d incidence automatique.""",
1242             ang = """Fixes the relaxation coefficient used between two sub-iterations
1243 for the computation of automatic $\theta_p$.""",
1244         ),
1245     ),
1246 #   -----------------------------------
1247     AUTOMATIC_PHASE = FACT(statut='o',
1248 #   -----------------------------------
1249 #       -----------------------------------
1250         AUTOMATIC_CALCULATION_OF_PHASE = SIMP(statut ='f',
1251 #       -----------------------------------
1252             typ = bool,
1253             defaut = [False],
1254             fr = """OUI : calcul automatique de la phase
1255 (basee sur une profondeur de reference).""",
1256             ang = """TRUE: automatic calculation of incident phase
1257 (based on reference water depth).""",
1258         ),
1259 #       -----------------------------------
1260         REFERENCE_WATER_DEPTH_FOR_AUTOMATIC_PHASE = SIMP(statut ='f',
1261 #       -----------------------------------
1262             typ = 'R',
1263             defaut = [-1.0],
1264             fr = """Profondeur de reference pour le calcul de la phase.
1265 Essayez de mettre la frontiere incidente sur une zone
1266 de bathymetrie homogene.
1267 La profondeur a renseigner doit etre representative de la profondeur
1268 d eau sur la frontiere.""",
1269             ang = """Water depth for automatic incident phase calculation.
1270 Try to put the incident wave boundary on a regular topography zone.
1271 The reference water depth should be representative of the water depth
1272 on the boundary.""",
1273         ),
1274     ),
1275 )
1276 # -----------------------------------------------------------------------
1277 PHYSICAL_PARAMETERS = PROC(nom= "PHYSICAL_PARAMETERS",op = None,
1278 # -----------------------------------------------------------------------
1279 #   -----------------------------------
1280     GRAVITY_ACCELERATION = SIMP(statut ='f',
1281 #   -----------------------------------
1282         typ = 'R',
1283         defaut = 9.81,
1284         fr = """Fixe la valeur de l acceleration de la pesanteur en m/s$^2$.""",
1285         ang = """Sets the value of the acceleration due to gravity in m/s$^2$.""",
1286     ),
1287 #   -----------------------------------
1288     INITIALIZATION = FACT(statut='o',
1289 #   -----------------------------------
1290 #       -----------------------------------
1291         INITIAL_WATER_LEVEL = SIMP(statut ='f',
1292 #       -----------------------------------
1293             typ = 'R',
1294             defaut = 0.,
1295             fr = """Valeur utilisee avec l option
1296 \telkey{CONDITIONS INITIALES} : ''COTE CONSTANTE''.""",
1297             ang = """Value to be used with the option
1298 \telkey{INITIAL CONDITIONS}: ''CONSTANT ELEVATION''.""",
1299         ),
1300 #       -----------------------------------
1301         INITIAL_DEPTH = SIMP(statut ='f',
1302 #       -----------------------------------
1303             typ = 'R',
1304             defaut = [0.],
1305             fr = """Valeur utilisee avec l option
1306 \telkey{CONDITIONS INITIALES} : ''HAUTEUR CONSTANTE''.""",
1307             ang = """Value to be used along with the option
1308 \telkey{INITIAL CONDITIONS}: ''CONSTANT DEPTH''.""",
1309         ),
1310 #       -----------------------------------
1311         INITIAL_CONDITIONS = SIMP(statut ='f',
1312 #       -----------------------------------
1313             typ = 'TXM',
1314             into = ['ZERO ELEVATION','CONSTANT ELEVATION','ZERO DEPTH','CONSTANT DEPTH','SPECIAL'],
1315             defaut = 'ZERO ELEVATION',
1316             fr = """Permet de definir les conditions initiales sur les hauteurs d eau.
1317 Les valeurs possibles sont :
1318 \begin{itemize}
1319 \item COTE NULLE : Initialise la cote de surface libre a 0.
1320            Les hauteurs d eau initiales sont alors retrouvees en
1321            faisant la difference entre les cotes de surface libre
1322            et du fond ;
1323 \item COTE CONSTANTE : Initialise la cote de surface libre a la
1324 valeur donnee par le mot-cle \telkey{COTE INITIALE}. Les hauteurs
1325 d eau initiales sont calculees comme precedemment.
1326 \item HAUTEUR NULLE : Initialise les hauteurs d eau a 0.
1327 \item HAUTEUR CONSTANTE : Initialise les hauteurs d eau a la valeur
1328 donnee par le mot-cle \telkey{HAUTEUR INITIALE}.
1329 \item PARTICULIERES : Les conditions initiales sur la hauteur d eau
1330 doivent etre precisees dans le sous-programme \telfile{CONDIH}.
1331 \end{itemize}""",
1332             ang = """Enables to define the initial conditions on water depths.
1333 The possible values are as follows:
1334 \begin{itemize}
1335 \item ZERO ELEVATION: fixes the free surface level to 0.
1336 Water depths are then equal to the difference between
1337 free surface level and bottom level,
1338 \item CONSTANT ELEVATION: fixes the free surface level to the value
1339 specified by the keyword \telkey{INITIAL WATER LEVEL}. Water
1340 level are then computed as before,
1341 \item ZERO DEPTH: initializes the water depths to 0,
1342 \item CONSTANT DEPTH: initializes the water depths to the value
1343 specified by the keyword \telkey{INITIAL DEPTH},
1344 \item SPECIAL: initial conditions on water depths are to be
1345 precised in the subroutine \telfile{CONDIH}.
1346 \end{itemize}""",
1347         ),
1348     ),
1349 #   -----------------------------------
1350     DISSIPATION = FACT(statut='o',
1351 #   -----------------------------------
1352 #       -----------------------------------
1353         BATHYMETRIC_BREAKING = FACT(statut='o',
1354 #       -----------------------------------
1355 #           -----------------------------------
1356             BREAKING = SIMP(statut ='f',
1357 #           -----------------------------------
1358                 typ = bool,
1359                 defaut = [False],
1360                 fr = """Oui, si l on souhaite integrer le processus de deferlement
1361 bathymetrique (voir reels index 18, 19, 20, 21, 22, 23
1362 et entiers index 12, 13).""",
1363                 ang = """Yes, if one wants to account for breaking process (see also
1364 reals of index 18, 19, 20, 21, 22, 23, and integer of index
1365 12, 13).""",
1366             ),
1367 #           -----------------------------------
1368             KDALLY = SIMP(statut ='f',
1369 #           -----------------------------------
1370                 typ = 'R',
1371                 defaut = [0.1],
1372                 fr = """Donne le coefficient $K$ dans la formulation de la dissipation
1373 par deferlement d apres Dally et al., 1984.""",
1374                 ang = """Fixes the coefficient $K$ used in the formulation of the dissipation
1375 coefficient proposed by Dally et al. 1984.""",
1376             ),
1377 #           -----------------------------------
1378             BREAKING_LAW = SIMP(statut ='f',
1379 #           -----------------------------------
1380                 typ = 'TXM',
1381                 into = ["BATTJES \& JANSSEN","DALLY"],
1382                 defaut = ["BATTJES \& JANSSEN"],
1383                 fr = """Specifie la formulation choisie pour le coefficient de dissipation
1384 par deferlement. N est effectif qu en houle reguliere.
1385 \begin{itemize}
1386 \item 1 : Formulation de Battjes \& Jansen, 1978 ;
1387 \item 2 : Formulation de Dally et al., 1984.
1388 \end{itemize}
1389 En houle aleatoire, la seule formulation utilisee est celle de
1390 Battjes \& Janssen, 1978.""",
1391                 ang = """Specifies the formulation chosen for calculating the dissipation
1392 coefficient through breaking. Only effective for monochromatic wave
1393 mode.
1394 \begin{itemize}
1395 \item 1: Formulation of Battjes \& Janssen, 1978,
1396 \item 2: Formulation of Dally et al., 1984.
1397 \end{itemize}
1398 In random wave mode, the formulation of B \& J, 1978 is the only one
1399 to be used.""",
1400             ),
1401 #           -----------------------------------
1402             ALPHA = SIMP(statut ='f',
1403 #           -----------------------------------
1404                 typ = 'R',
1405                 defaut = [1.0],
1406                 fr = """Donne le coefficient $\alpha$ dans la formulation de la dissipation
1407 par deferlement en houle aleatoire d apres Battjes \& Janssen.""",
1408                 ang = """Fixes the coefficient $\alpha$ used in the formulation of the
1409 dissipation coefficient through breaking proposed by Battjes \& Janssen,
1410 1978 for random waves.""",
1411             ),
1412 #           -----------------------------------
1413             GAMMAS = SIMP(statut ='f',
1414 #           -----------------------------------
1415                 typ = 'R',
1416                 defaut = [0.88],
1417                 fr = """Donne le coefficient $\gamma_s$ dans le critere de la hauteur de
1418 deferlement. Ne pas confondre avec le coefficient $\gamma$ qui
1419 intervient dans la formule du spectre de JONSWAP.""",
1420                 ang = """Fixes the coefficient $\gamma_s$ used in the criterion of the critical
1421 breaking wave height. Do not confuse with coefficient $\gamma$
1422 used in the JONSWAP spectrum.""",
1423             ),
1424 #           -----------------------------------
1425             GDALLY = SIMP(statut ='f',
1426 #           -----------------------------------
1427                 typ = 'R',
1428                 defaut = [0.4],
1429                 fr = """Donne le coefficient $\Gamma$ dans la formulation de la dissipation par
1430 Dally et al., 1984. Ne pas confondre avec $\gamma$ (Formule de JONSWAP)
1431 et Gammas (Critere de deferlement).""",
1432                 ang = """Fixes the $\Gamma$ coefficient used in the formulation of Dally et al.,
1433 1984, for the dissipation coefficient in surf-breaking. Do not confuse
1434 with the coefficient $\gamma$ used in the JONSWAP formulae and
1435 coefficient gammas used to determine the breaking wave height
1436 criterion.""",
1437             ),
1438         ),
1439 #       -----------------------------------
1440         BOTTOM_FRICTION = FACT(statut='o',
1441 #       -----------------------------------
1442 #           -----------------------------------
1443             FRICTION = SIMP(statut ='f',
1444 #           -----------------------------------
1445                 typ = bool,
1446                 defaut = [False],
1447                 fr = """Oui, si on veut prendre en compte le frottement sur le fond dans
1448 la simulation.""",
1449                 ang = """Yes, if one wants to include dissipation through bottom friction
1450 in the computation.""",
1451             ),
1452 #           -----------------------------------
1453             FLUID_KINEMATIC_VISCOSITY = SIMP(statut ='f',
1454 #           -----------------------------------
1455                 typ = 'R', max='**',
1456                 defaut = [1.0E-6],
1457                 fr = """Viscosite cinematique du fluide (eau) en m$^2$/s.
1458 \begin{itemize}
1459 \item 1.793E-6 : Pour une temperature de 0 C ;
1460 \item 1.567E-6 : Pour une temperature de 4 C ;
1461 \item 1.237E-6 : Pour une temperature de 12 C ;
1462 \item 1.112E-6 : Pour une temperature de 16 C ;
1463 \item 1.011E-6 : Pour une temperature de 20 C ;
1464 \item 0.802E-6 : Pour une temperature de 30 C ;
1465 \item 0.661E-6 : Pour une temperature de 40 C.
1466 \item 1.0E-6   : Valeur par defaut.
1467 \end{itemize}""",
1468                 ang = """Kinematic viscosity of the fluid (water) in m$^2$/s.
1469 \begin{itemize}
1470 \item 1.793E-6: for a temperature of 0 C,
1471 \item 1.567E-6: for a temperature of 4 C,
1472 \item 1.237E-6: for a temperature of 12 C,
1473 \item 1.112E-6: for a temperature of 16 C,
1474 \item 1.011E-6: for a temperature of 20 C,
1475 \item 0.802E-6: for a temperature of 30 C,
1476 \item 0.661E-6: for a temperature of 40 C,
1477 \item 1.0E-6: default value.
1478 \end{itemize}""",
1479             ),
1480 #           -----------------------------------
1481             DIAMETER90 = SIMP(statut ='f',
1482 #           -----------------------------------
1483                 typ = 'R', max='**',
1484                 defaut = [0.15E-3],
1485                 fr = """\telfile{DIAM90} represente le diametre maximum, en m, de 90 \%
1486 en poids des sediments.
1487 \begin{itemize}
1488 \item 1.0E-3   : Pour des sables tres grossiers ;
1489 \item 0.5E-3   : Pour des sables grossiers ;
1490 \item 0.25E-3  : Pour des sables moyens ;
1491 \item 0.125E-3 : Pour des sables fins ;
1492 \item 0.062E-3 : Pour des sables tres fins ;
1493 \item 0.15E-3  : Valeur par defaut.
1494 \end{itemize}""",
1495                 ang = """\telfile{DIAM90} is the maximum grain diameter, in m, which defines
1496 90 \% of the total weight of sediment.
1497 \begin{itemize}
1498 \item 1.0E-3: for very coarse sand,
1499 \item 0.5E-3: for coarse sand,
1500 \item 0.25E-3: for medium sand,
1501 \item 0.125E-3: for fine sand,
1502 \item 0.062E-3: for very fine sand,
1503 \item 0.15E-3: default value.
1504 \end{itemize}""",
1505             ),
1506 #           -----------------------------------
1507             DIAMETER50 = SIMP(statut ='f',
1508 #           -----------------------------------
1509                 typ = 'R', max='**',
1510                 defaut = [0.10E-3],
1511                 fr = """\telfile{DIAM50} represente le diametre maximum de 50 \% en poids des
1512 sediments. En general, on a \telfile{DIAM90} = 1.5 $\times$
1513 \telfile{DIAM50}
1514 \telfile{DIAM50} est plus souvent donne dans des tables
1515 \begin{itemize}
1516 \item 0.66E-3  : Pour des sables tres grossiers ;
1517 \item 0.33E-3  : Pour des sables grossiers ;
1518 \item 0.17E-3  : Pour des sables moyens ;
1519 \item 0.083E-3 : Pour des sables fins ;
1520 \item 0.040E-3 : Pour des sables tres fins ;
1521 \item 0.10E-3  : Valeur par defaut.
1522 \end{itemize}""",
1523                 ang = """\telfile{DIAM50} is the maximum grain diameter, in m, which defines
1524 50 \% of the total weight of sediment. Usually, we have
1525 \telfile{DIAM90} = 1.5 $\times$ \telfile{DIAM50}.
1526 \telfile{DIAM50} is a more common value used.
1527 \begin{itemize}
1528 \item 0.66E-3: for very coarse sand,
1529 \item 0.33E-3: for coarse sand,
1530 \item 0.17E-3: for medium sand,
1531 \item 0.083E-3: for fine sand,
1532 \item 0.040E-3: for very fine sand,
1533 \item 0.10E-3: default value.
1534 \end{itemize}""",
1535             ),
1536 #           -----------------------------------
1537             SEDIMENT_SPECIFIC_WEIGHT = SIMP(statut ='f',
1538 #           -----------------------------------
1539                 typ = 'R',
1540                 defaut = [2650.0],
1541                 fr = """Masse volumique du sediment en kg/m$^3$.""",
1542                 ang = """Sediment specific weight in kg/m$^3$.""",
1543             ),
1544 #           -----------------------------------
1545             FLUID_SPECIFIC_MASS = SIMP(statut ='f',
1546 #           -----------------------------------
1547                 typ = 'R',
1548                 defaut = [1000.0],
1549                 fr = """Masse volumique du fluide (eau) en kg/m$^3$.""",
1550                 ang = """Fluid specific weight (water) in kg/m$^3$.""",
1551             ),
1552 #           -----------------------------------
1553             HYDRAULIC_REGIME_IMPOSED = SIMP(statut ='f',
1554 #           -----------------------------------
1555                 typ = bool,
1556                 defaut = [False],
1557                 fr = """Utilise avec l option \telkey{FROTTEMENT} = OUI.
1558 Permet de choisir d imposer le regime hydraulique dans le cas
1559 d un calcul automatique du facteur de frottement sur fonds sableux.""",
1560                 ang = """Used with the option \telkey{FRICTION} = YES.
1561 Enables to impose the hydraulic regime in the case of an automatic
1562 calculation of the friction factor for sandy beds.""",
1563             ),
1564 #           -----------------------------------
1565             SKIN_ROUGHNESS_ONLY = SIMP(statut ='f',
1566 #           -----------------------------------
1567                 typ = bool,
1568                 defaut = [False],
1569                 fr = """Utilise avec l option \telkey{FROTTEMENT} = OUI.
1570 Permet de choisir de ne prendre en compte
1571 que la rugosite de peau dans le cas d un calcul automatique
1572 du facteur de frottement sur fonds sableux.""",
1573                 ang = """Used with the option \telkey{FRICTION} = YES.
1574 Enables to restrict the total roughness to the skin roughness
1575 in the case of an automatic calculation of the friction
1576 factor for sandy beds.""",
1577             ),
1578 #           -----------------------------------
1579             HYDRAULIC_REGIME_TYPE = SIMP(statut ='f',
1580 #           -----------------------------------
1581                 typ = 'TXM', max='**',
1582                 into = ["laminar regime","smooth-turbulent regime","rough-turbulent regime","transient regime"],
1583                 defaut = ["laminar regime"],
1584                 fr = """Utilise si le mot-cle \telkey{REGIME HYDRAULIQUE IMPOSE} = OUI.
1585 Determine le regime hydraulique.
1586 \begin{itemize}
1587 \item regime laminaire ;
1588 \item turbulent lisse ;
1589 \item turbulent rugueux ;
1590 \item transitoire.
1591 \end{itemize}""",
1592                 ang = """Used with option \telkey{HYDRAULIC REGIME IMPOSED} = YES.
1593 Determines the type of the hydraulic regime (laminar,
1594 smooth-turbulent, rough-turbulent, transient).
1595 \begin{itemize}
1596 \item laminar regime,
1597 \item smooth-turbulent regime,
1598 \item rough-turbulent regime,
1599 \item transient regime.
1600 \end{itemize}""",
1601             ),
1602 #           -----------------------------------
1603             BOTTOM_FRICTION_LAW = SIMP(statut ='f',
1604 #           -----------------------------------
1605                 typ = 'TXM', max='**',
1606                 into = ["Kostense formulation integrating Ue calculation (1986)","Putnam \& Johnson formulation (1949)"],
1607                 defaut = ["Kostense formulation integrating Ue calculation (1986)"],
1608                 fr = """Utilise avec l option \telkey{FROTTEMENT} = OUI.
1609 Fixe le choix de la formulation du frottement :
1610 \begin{itemize}
1611 \item 1 : Kostense et al., 1986 ;
1612 \item 2 : Putnam \& Johnson, 1949.
1613 \end{itemize}""",
1614                 ang = """Used with the option \telkey{FRICTION} = YES.
1615 Fixes the formulation used for bottom friction law:
1616 \begin{itemize}
1617 \item 1: Kostense et al., 1986,
1618 \item 2: Putnam \& Johnson, 1949.
1619 \end{itemize}""",
1620             ),
1621 #           -----------------------------------
1622             FRICTION_FACTOR_IMPOSED = SIMP(statut ='f',
1623 #           -----------------------------------
1624                 typ = bool,
1625                 defaut = [False],
1626                 fr = """Utilise avec l option \telkey{FROTTEMENT} = OUI.
1627 OUI permet de choisir d imposer un facteur de frottement, par un
1628 mot-cle s il est uniforme (voir le reel d index 29) ou en
1629 programmant dans le sous-programme \telfile{FWSPEC}.
1630 Si NON, \artemis considere par defaut que les fonds sont sableux,
1631 et calcule automatiquement le facteur de frottement avec les
1632 caracteristiques du sediment et de l ecoulement.""",
1633                 ang = """Used with the option \telkey{FRICTION} = YES.
1634 If YES, enables the user to impose a friction factor, by a keyword
1635 for a constant value (see real of index 29) or by programming in
1636 the \telfile{FWSPEC} subroutine for non-uniform value.
1637 If NO, \artemis automatically computes the friction factor assuming
1638 that the bottom is sandy and uses the characteristics of sediment
1639 and of motion.""",
1640             ),
1641 #           -----------------------------------
1642             FRICTION_FACTOR = SIMP(statut ='f',
1643 #           -----------------------------------
1644                 typ = 'R',
1645                 defaut = [0.],
1646                 fr = """Utilise si le mot-cle \telkey{FACTEUR DE FROTTEMENT IMPOSE} = OUI.
1647 Fixe le facteur de frottement choisi uniforme sur le domaine.""",
1648                 ang = """Used with the option \telkey{FRICTION FACTOR IMPOSED} = YES.
1649 Fixes the value of the friction factor uniform over the domain.""",
1650             ),
1651 #           -----------------------------------
1652             FRICTION_COEFFICIENT = SIMP(statut ='f',
1653 #           -----------------------------------
1654                 typ = 'R',
1655                 defaut = [0.],
1656                 fr = """A ne pas confondre avec le \telkey{FACTEUR DE FROTTEMENT}.
1657 Non utilise dans \artemis.
1658 On le laisse par coherence avec \telemac{2d}.""",
1659                 ang = """Do not confuse with the \telkey{FRICTION FACTOR}.
1660 Not used in \artemis.
1661 It is let here for consistence with \telemac{2d}.""",
1662             ),
1663 #           -----------------------------------
1664             RIPPLES_COEFFICIENT = SIMP(statut ='f',
1665 #           -----------------------------------
1666                 typ = 'R', max='**',
1667                 defaut = [0.7],
1668                 fr = """Specifie le coefficient de rides utilise dans la formule de
1669 Van Rijn pour calculer le facteur de frottement :
1670 \begin{itemize}
1671 \item 1.0 : pour des rides seules,
1672 \item 0.7 : pour des rides superposees a des vagues de sable.
1673 \end{itemize}""",
1674                 ang = """Fixes the ripples coefficient used in the formulae of Van Rijn
1675 to calculate the friction factor:
1676 \begin{itemize}
1677 \item 1.0: for single ripples,
1678 \item 0.7: for ripples superimposed to sand waves.
1679 \end{itemize}""",
1680             ),
1681         ),
1682     ),
1683 #   -----------------------------------
1684     CURRENT_INFO = FACT(statut='o',
1685 #   -----------------------------------
1686 #       -----------------------------------
1687         SUB_ITERATIONS_ACCURACY_FOR_CURRENT = SIMP(statut ='f',
1688 #       -----------------------------------
1689             typ = 'R',
1690             defaut = [1.E-2],
1691             fr = """Donne la precision requise pour les sous-iterations du calcul
1692 du nombre d onde en presence de courant (vecteur d onde).""",
1693             ang = """Fixes the accuracy requested for sub-iterations necessary to
1694 determine the wave vector.""",
1695         ),
1696 #       -----------------------------------
1697         CURRENT = SIMP(statut ='f',
1698 #       -----------------------------------
1699             typ = bool,
1700             defaut = [False],
1701             fr = """Si = OUI : Prise en compte de la refraction de la houle par le courant.
1702 Modele retenu : Kostense et Al. (1988).""",
1703             ang = """If = TRUE: Wave refraction due to current is described using
1704  Kostense model (1988).""",
1705         ),
1706     ),
1707 #   -----------------------------------
1708     VARYING_TOPOGRAPHY = FACT(statut='o',
1709 #   -----------------------------------
1710 #       -----------------------------------
1711         RAPIDLY_VARYING_TOPOGRAPHY = SIMP(statut ='f',
1712 #       -----------------------------------
1713             typ = 'TXM',
1714             into = ["mild-slope equation","gradient second order term","curvature second order term","gradient + curvature second order terms"],
1715             defaut = ["mild-slope equation"],
1716             fr = """Prise en compte des fortes pentes et courbures dans Berkhoff
1717 \begin{itemize}
1718 \item 0 : Berkhoff simple ;
1719 \item 1 : prise en compte terme pente en grad($h$)$^2$ ;
1720 \item 2 : prise en compte terme courbure en laplacien($h$) ;
1721 \item 3 : prise en compte des termes de pente et courbure.
1722 \end{itemize}
1723 Modele retenu pour les fonctions E1 et E2 : Chamberlain
1724 et Porter (1995).""",
1725             ang = """Extension of mild-slope equation with second
1726           order bottom effects
1727 \begin{itemize}
1728 \item 0: mild-slope equation,
1729 \item 1: gradient second order term: grad($h$)$^2$,
1730 \item 2: curvature second order term: laplacian($h$),
1731 \item 3: gradient + curvature second order terms.
1732 \end{itemize}
1733 Model used for functions E1 and E2 expression: Chamberlain
1734 and Porter (1995).""",
1735         ),
1736     ),
1737 )
1738 # -----------------------------------------------------------------------
1739 INTERNAL = PROC(nom= "INTERNAL",op = None,
1740 # -----------------------------------------------------------------------
1741     UIinfo = {"groupes": ("CACHE")},
1742 #   -----------------------------------
1743     STEERING_FILE = SIMP(statut ='f',
1744 #   -----------------------------------
1745         typ = ('Fichier','All Files (*)'), max='**',
1746         defaut = '',
1747         fr = """Nom du fichier contenant les parametres du calcul a realiser.""",
1748         ang = """Name of the steering file used for the computation.""",
1749     ),
1750 #   -----------------------------------
1751     PARTITIONING_TOOL = SIMP(statut ='f',
1752 #   -----------------------------------
1753         typ = 'TXM',
1754         into = ['METIS','SCOTCH','PARMETIS','PTSCOTCH'],
1755         defaut = 'METIS',
1756         fr = """Choix du partitionneur :
1757 \begin{itemize}
1758 \item 1 : METIS ;
1759 \item 2 : SCOTCH ;
1760 \item 3 : PARMETIS ;
1761 \item 4 : PTSCOTCH.
1762 \end{itemize}""",
1763         ang = """Partitioning tool selection:
1764 \begin{itemize}
1765 \item 1: METIS,
1766 \item 2: SCOTCH,
1767 \item 3: PARMETIS,
1768 \item 4: PTSCOTCH.
1769 \end{itemize}""",
1770     ),
1771 #   -----------------------------------
1772     DICTIONARY = SIMP(statut ='f',
1773 #   -----------------------------------
1774         typ = ('Fichier','All Files (*)'),
1775         defaut = 'artemis.dico',
1776         fr = """Dictionnaire des mots cles.""",
1777         ang = """Key word dictionary.""",
1778     ),
1779 #   -----------------------------------
1780     CONCATENATE_PARTEL_OUTPUT = SIMP(statut ='o',
1781 #   -----------------------------------
1782         typ = bool,
1783         defaut = False,
1784         fr = """Avec cette option, partel ne generera plus un fichier (GEO/CLI/PAR)
1785 par processeur mais une concatenation de ceux-ci, ainsi qu un fichier
1786 d index associe. Ainsi plutot que d avoir 3P fichiers, il n y en a
1787 plus que 6.""",
1788         ang = """With this option, partel no more generates a file (GEO/CLI/PAR) per
1789 process but a single concatenate file of them, associated to an index
1790 file. Then instead of having partel generating 3P files, it only
1791 generates 6 files.""",
1792     ),
1793 )
1794 # -----------------------------------------------------------------------
1795 NESTING_WITH_TOMAWAC = PROC(nom= "NESTING_WITH_TOMAWAC",op = None,
1796 # -----------------------------------------------------------------------
1797 #   -----------------------------------
1798     NESTING_WITHIN_TOMAWAC_OUTER_MODEL = SIMP(statut ='f',
1799 #   -----------------------------------
1800         typ = 'TXM',
1801         into = ["No nesting","Uses a TOMAWAC spectrum (1 point) as input to ARTEMIS","Uses several TOMAWAC spectra located along ARTEMIS boundary"],
1802         defaut = ["No nesting"],
1803         fr = """A besoin de NOMBRE DE DIRECTION DANS LE SPECTRE TOMAWAC et
1804 NOMBRE DE FREQUENCES DANS LE SPECTRE TOMAWAC pour l option 1.
1805 A besoin des noms de \telkey{FICHIER DE RESULTATS GLOBAL TOMAWAC},
1806 \telkey{FICHIER DE SPECTRE GLOBAL TOMAWAC} et
1807 \telkey{COORDONNEES POUR LE SPECTRE F DE REFERENCE} pour l option 2.
1808 Donner \telkey{INSTANT DE LECTURE DU SPECTRE TOMAWAC} pour 1 et 2""",
1809         ang = """Remember to give NUMBER OF DIRECTIONS IN TOMAWAC SPECTRUM
1810 and NUMBER OF FREQUENCIES IN TOMAWAC SPECTRUM with option 1.
1811 Remember to give \telkey{TOMAWAC OUTER RESULT FILE},
1812 \telkey{TOMAWAC OUTER SPECTRAL FILE} and
1813 \telkey{COORDINATES OF THE REFERENCE F SPECTRUM} if using option 2.
1814 \telkey{INSTANT FOR READING TOMAWAC SPECTRUM} required
1815 in cases 1 and 2.""",
1816     ),
1817 #   -----------------------------------
1818     INSTANT_FOR_READING_TOMAWAC_SPECTRUM = SIMP(statut ='f',
1819 #   -----------------------------------
1820         typ = 'R',
1821         defaut = [0.],
1822         fr = """Indique l instant de calcul \tomawac associe au spectre
1823 qui doit etre importe dans \artemis.""",
1824         ang = """Give the instant of the \tomawac computation at which we
1825 want to import the spectrum for \artemis.""",
1826     ),
1827 #   -----------------------------------
1828     COORDINATES_OF_THE_REFERENCE_F_SPECTRUM = SIMP(statut ='f',
1829 #   -----------------------------------
1830         typ = 'R', min= 2, max= 2,
1831         defaut = [-99999.9,-99999.9],
1832         fr = """Coordonnees du point de reference pour le spectre en
1833 frequence.""",
1834         ang = """Coordinates for the frequency spectrum reference point.""",
1835     ),
1836 #   -----------------------------------
1837     INPUT = FACT(statut='o',
1838 #   -----------------------------------
1839 #       -----------------------------------
1840         DATA = FACT(statut='o',
1841 #       -----------------------------------
1842 #           -----------------------------------
1843             TOMAWAC_OUTER_SPECTRAL_FILE = SIMP(statut ='f',
1844 #           -----------------------------------
1845                 typ = ('Fichier','All Files (*)'), max='**',
1846                 defaut = '',
1847                 fr = """Nom du fichier de spectre provenant d un modele global
1848 \tomawac.""",
1849                 ang = """Name of the spectral file from an outer \tomawac wave
1850 model.""",
1851             ),
1852 #           -----------------------------------
1853             TOMAWAC_OUTER_SPECTRAL_FILE_FORMAT = SIMP(statut ='f',
1854 #           -----------------------------------
1855                 typ = 'TXM',
1856                 defaut = 'SERAFIN',
1857                 fr = """Format du \telkey{FICHIER DE SPECTRE GLOBAL TOMAWAC}.
1858 Les valeurs possibles sont :
1859 \begin{itemize}
1860 \item SERAFIN : format standard simple precision pour \tel ;
1861 \item SERAFIND: format standard double precision pour \tel ;
1862 \item MED     : format MED double precision base sur HDF5.
1863 \end{itemize}""",
1864                 ang = """Format of the \telkey{TOMAWAC OUTER SPECTRAL FILE}.
1865 Possible choices are:
1866 \begin{itemize}
1867 \item SERAFIN : classical single precision format in \tel,
1868 \item SERAFIND: classical double precision format in \tel,
1869 \item MED     : MED double precision format based on HDF5.
1870 \end{itemize}""",
1871             ),
1872 #           -----------------------------------
1873             TOMAWAC_LIQUID_BOUNDARY_FILE = SIMP(statut ='f',
1874 #           -----------------------------------
1875                 typ = ('Fichier','All Files (*)'), max='**',
1876                 defaut = '',
1877                 fr = """Nom du fichier de frontieres liquides provenant d un modele
1878 global \tomawac.""",
1879                 ang = """Name of a file containing the liquid boundaries derived
1880 from an outer \tomawac wave model.""",
1881             ),
1882 #           -----------------------------------
1883             TOMAWAC_LIQUID_BOUNDARY_FILE_FORMAT = SIMP(statut ='f',
1884 #           -----------------------------------
1885                 typ = 'TXM', max='**',
1886                 defaut = 'SERAFIN',
1887                 fr = """Format du \telkey{FICHIER DE FRONTIERES LIQUIDES TOMAWAC}.
1888 Les valeurs possibles sont :
1889 \begin{itemize}
1890 \item SERAFIN : format standard simple precision pour \tel ;
1891 \item SERAFIND: format standard double precision pour \tel ;
1892 \item MED     : format MED double precision base sur HDF5.
1893 \end{itemize}""",
1894                 ang = """Format of the \telkey{TOMAWAC LIQUID BOUNDARY FILE}.
1895 Possible choices are:
1896 \begin{itemize}
1897 \item SERAFIN : classical single precision format in \tel,
1898 \item SERAFIND: classical double precision format in \tel,
1899 \item MED     : MED double precision format based on HDF5.
1900 \end{itemize}""",
1901             ),
1902         ),
1903     ),
1904 #   -----------------------------------
1905     OUTPUT = FACT(statut='o',
1906 #   -----------------------------------
1907 #       -----------------------------------
1908         RESULTS = FACT(statut='o',
1909 #       -----------------------------------
1910 #           -----------------------------------
1911             TOMAWAC_OUTER_RESULT_FILE = SIMP(statut ='f',
1912 #           -----------------------------------
1913                 typ = ('Fichier','All Files (*)'), max='**',
1914                 defaut = '',
1915                 fr = """Nom du fichier de resultats 2D provenant d un modele global
1916 \tomawac.""",
1917                 ang = """Name of a file containing the results of an outer \tomawac
1918 wave model.""",
1919             ),
1920 #           -----------------------------------
1921             TOMAWAC_OUTER_RESULT_FILE_FORMAT = SIMP(statut ='f',
1922 #           -----------------------------------
1923                 typ = 'TXM',
1924                 defaut = 'SERAFIN',
1925                 fr = """Format du \telkey{FICHIER DE RESULTATS GLOBAL TOMAWAC}.
1926 Les valeurs possibles sont :
1927 \begin{itemize}
1928 \item SERAFIN : format standard simple precision pour \tel ;
1929 \item SERAFIND: format standard double precision pour \tel ;
1930 \item MED     : format MED double precision base sur HDF5.
1931 \end{itemize}""",
1932                 ang = """Format of the \telkey{TOMAWAC OUTER RESULT FILE}.
1933 Possible choices are:
1934 \begin{itemize}
1935 \item SERAFIN : classical single precision format in \tel,
1936 \item SERAFIND: classical double precision format in \tel,
1937 \item MED     : MED double precision format based on HDF5.
1938 \end{itemize}""",
1939             ),
1940         ),
1941     ),
1942 )
1943 TEXTE_NEW_JDC = "\
1944 COMPUTATION_ENVIRONMENT();\
1945 GENERAL_PARAMETERS();\
1946 NUMERICAL_PARAMETERS();\
1947 BOUNDARY_CONDITIONS();\
1948 PHYSICAL_PARAMETERS();\
1949 NESTING_WITH_TOMAWAC();\
1950 "
1951 Ordre_Des_Commandes = (
1952 'COMPUTATION_ENVIRONMENT',
1953 'GENERAL_PARAMETERS',
1954 'NUMERICAL_PARAMETERS',
1955 'BOUNDARY_CONDITIONS',
1956 'PHYSICAL_PARAMETERS',
1957 'INTERNAL',
1958 'NESTING_WITH_TOMAWAC')
1959 try:
1960     import TelApy
1961     source = "eficas"
1962 except Exception as excpt:
1963     source = "Telemac"
1964 enum = source+'.artemis_enum_auto'
1965 dicoCasEn = source+'.artemis_dicoCasEnToCata'
1966 dicoCasFr = source+'.artemis_dicoCasFrToCata'