]> SALOME platform Git repositories - tools/eficas.git/blob - Minicode/cata_saturne.py
Salome HOME
Modif V6_4_°
[tools/eficas.git] / Minicode / cata_saturne.py
1 # -*- coding: utf-8 -*-
2 # debut entete
3
4 import Accas
5 from Accas import *
6 import types
7
8 #CONTEXT.debug=1
9
10 import ops
11
12 JdC = JDC_CATA(code='SATURNE',
13                execmodul=None,
14               )
15
16 # P. RASCLE MMN
17 # remarques diverses sur le catalogue Saturne
18 # - dans les blocs, il faut au moins un mot clé de statut obligatoire
19 # probleme de rafraichissement des blocs dépendants quand la valeur d'un mot cle global (ITURB) passe de 1 à 0
20
21 # Type le plus general
22 class entier  (ASSD):pass
23 class reel    (ASSD):pass
24 class complexe(ASSD):pass
25 class liste   (ASSD):pass
26 class chaine  (ASSD):pass
27
28 # Type geometriques
29 class no  (GEOM):pass
30 class grno(GEOM):pass
31 class ma  (GEOM):pass
32 class grma(GEOM):pass
33
34
35 class sonde(ASSD):pass
36 class varsca(ASSD):pass
37 class flusca(ASSD):pass
38 class varpre(ASSD):pass
39 class varvitx(ASSD):pass
40 class varvity(ASSD):pass
41 class varvitz(ASSD):pass
42 class eturb(ASSD):pass
43 class dturb(ASSD):pass
44 class tsr11(ASSD):pass
45 class tsr22(ASSD):pass
46 class tsr33(ASSD):pass
47 class tsr12(ASSD):pass
48 class tsr13(ASSD):pass
49 class tsr23(ASSD):pass
50 class resti(ASSD):pass
51
52 class maillage(ASSD):pass
53 class modele(ASSD):pass
54 class matr_asse(ASSD):pass
55 class cham_elem_sief_r(ASSD):pass
56 class theta_geom(ASSD):pass
57 class cham_mater(ASSD):pass
58 class cara_elem(ASSD):pass
59 class char_ther(ASSD):pass
60 class char_meca(ASSD):pass
61 class nume_ddl(ASSD):pass
62 class char_acou(ASSD):pass
63 class listr8 (ASSD):pass
64 class matr_elem(ASSD):pass
65 class matr_elem_depl_c(matr_elem):pass
66 class matr_elem_depl_r(matr_elem):pass
67 class matr_elem_pres_c(matr_elem):pass
68 class matr_elem_temp_r(matr_elem):pass
69 class mater           (ASSD):pass
70
71
72 # fonction :
73 #--------------------------------
74 class para_sensi(fonction):pass
75 class fonction_c(fonction):pass
76
77 # matr_asse :
78 #--------------------------------
79 class matr_asse(ASSD):pass
80 class matr_asse_depl_c(matr_asse):pass
81 class matr_asse_depl_r(matr_asse):pass
82 class matr_asse_gene_r(matr_asse):pass
83 class matr_asse_gene_c(matr_asse):pass
84 class matr_asse_pres_c(matr_asse):pass
85 class matr_asse_pres_r(matr_asse):pass
86 class matr_asse_temp_c(matr_asse):pass
87 class matr_asse_temp_r(matr_asse):pass
88
89
90 # fin entete
91
92 INCLUDE=MACRO(nom="INCLUDE",op=-1,docu="U4.13.01-e",
93              fr="Débranchement vers un fichier de commandes secondaires",
94              sd_prod=ops.INCLUDE,op_init=ops.INCLUDE_context,fichier_ini=1,
95          UNITE = SIMP(statut='o',typ='I'),
96          INFO  = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
97 );
98
99 POURSUITE=MACRO(nom="POURSUITE",op=0,repetable='n',fr="Poursuite d une étude",
100                 docu="U4.11.03-f1",sd_prod = ops.POURSUITE,
101                 op_init = ops.POURSUITE_context,fichier_ini = 1,
102          HDF             =FACT(statut='f',min=1,max=1,
103            FICHIER         =SIMP(fr="nom du fichier hdf associe",statut='o',typ='TXM'),
104          ),
105          PAR_LOT         =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM',
106                            into=("OUI","NON"),defaut="OUI"),
107          BASE            =FACT(fr="définition des parmètres associés aux bases JEVEUX",
108                                statut='f',min=1,max=3,
109            FICHIER         =SIMP(fr="nom de la base",statut='o',typ='TXM'),
110            TITRE           =SIMP(statut='f',typ='TXM'),
111            CAS             =SIMP(statut='f',typ='TXM'),
112            NMAX_ENRE       =SIMP(fr="nombre maximum d enregistrements",statut='f',typ='I'),
113            LONG_ENRE       =SIMP(fr="longueur des enregistrements",statut='f',typ='I'),
114            LONG_REPE       =SIMP(fr="longueur du répertoire",statut='f',typ='I'),
115          ),
116          IMPRESSION      =FACT(statut='f',min=1,max=3,
117            FICHIER         =SIMP(statut='o',typ='TXM'),
118            UNITE           =SIMP(statut='o',typ='I'),
119          ),
120          CATALOGUE       =FACT(statut='f',min=1,max=10,
121            FICHIER         =SIMP(statut='o',typ='TXM'),
122            TITRE           =SIMP(statut='f',typ='TXM'),
123            UNITE           =SIMP(statut='f',typ='I'),
124          ),
125          DEBUG           =FACT(fr="option de déboggage reservée aux développeurs",
126                                statut='f',min=1,max=1,
127            JXVERI          =SIMP(fr="vérifie l intégrité de la segmentation mémoire",
128                                  statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
129            JEVEUX          =SIMP(fr="force les déchargement sur disque",
130                                  statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
131            ENVIMA          =SIMP(fr="imprime les valeurs définies dans ENVIMA",
132                                  statut='f',typ='TXM',into=('TES',)),
133          ),
134          MEMOIRE         =FACT(fr="mode de gestion mémoire utilisé",statut='f',min=1,max=1,
135            GESTION         =SIMP(statut='f',typ='TXM',into=('COMPACTE','RAPIDE'),defaut='RAPIDE'),
136            TYPE_ALLOCATION =SIMP(statut='f',typ='I',into=(1,2,3,4),defaut=1),
137            TAILLE          =SIMP(statut='f',typ='I'),
138            TAILLE_BLOC     =SIMP(statut='f',typ='R',defaut=800.),
139            PARTITION       =SIMP(statut='f',typ='R' ),
140          ),
141          CODE            =FACT("définition d un nom pour l'esemble d'une étude",
142                                statut='f',min=1,max=1,
143            NOM             =SIMP(statut='o',typ='TXM'),
144            UNITE           =SIMP(statut='f',typ='I',defaut=15),
145          ),
146 )  ;
147
148 FORMULE = FORM( nom='FORMULE',op=-5,sd_prod=fonction,
149                 fr="Définition d une fonction",reentrant = 'n',
150                 regles=(UN_PARMI('REEL','ENTIER','COMPLEXE'),),
151                 REEL = SIMP(typ = 'shell',max=1),
152                 ENTIER = SIMP(typ = 'shell',max=1),
153                 COMPLEXE = SIMP(typ = 'shell',max=1),
154 ) ;
155
156 AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele,docu="U4.41.01-f1",
157                  fr="Affectation des éléments finis sur le maillage",reentrant='n',
158          MAILLAGE        =SIMP(statut='o',typ=(maillage) ),
159          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
160          VERIF           =SIMP(statut='f',typ='TXM',max=2,into=("MAILLE","NOEUD") ),
161                 );
162 NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl,docu="U4.61.11-f",reentrant='n',
163               fr="Etablissement de la numérotation des ddl avec ou sans renumérotation et du stockage de la matrice",
164          MATR_RIGI       =SIMP(statut='f',typ=(matr_elem_depl_r ,matr_elem_depl_c,
165                                                matr_elem_temp_r,matr_elem_pres_c),max=100 ),
166          MODELE          =SIMP(statut='f',typ=modele ),
167          b_modele        =BLOC(condition = "MODELE != None",
168            CHARGE     =SIMP(statut='f',max='**',typ=(char_meca,char_ther,char_acou, ),),
169          ),
170          METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
171          b_mult_front    =BLOC(condition="METHODE=='MULT_FRONT'",fr="paramètres associés à la méthode multifrontale",
172            RENUM           =SIMP(statut='f',typ='TXM',into=("MD","MDA","METIS"),defaut="METIS" ),
173          ),
174          b_ldlt          =BLOC(condition="METHODE=='LDLT'",fr="paramètres associés à la méthode LDLT",
175            RENUM           =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK"  ),
176          ),
177          b_gcpc          =BLOC(condition="METHODE=='GCPC'",fr="paramètres associés à la méthode gradient conjugué",
178            RENUM           =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK"  ),
179          ),
180          INFO            =SIMP(statut='f',typ='I',into=(1,2)),
181 )  ;
182
183 DEFI_SONDE = OPER(nom="DEFI_SONDE",op= 1,sd_prod=sonde,
184      docu="U2D1",
185      fr="définition d'une sonde historique avec ses coordonnées",
186                   X = SIMP(statut ='o',typ='R',
187                            fr="coordonnée X de la sonde"),
188                   Y = SIMP(statut ='o',typ='R',
189                            fr="coordonnée Y de la sonde"),
190                   Z = SIMP(statut ='o',typ='R',
191                            fr="coordonnée Z de la sonde")
192                  );
193
194 def defi_scala_prod(**args):
195    return varsca
196
197 DEFI_SCALA = OPER(nom="DEFI_SCALA",op=2,sd_prod=defi_scala_prod,
198 fr="définition d'une inconnue scalaire avec ses paramètres physico numériques",
199                   NUMERIC = FACT(statut='o',max=01,
200                                 fr="propriétés numériques liées à l'inconnue",
201                                     ICONV  = SIMP(statut='o',typ='I',defaut=1,into=(0,1),
202                                                   fr="indicateur de convection"),
203                                     ISTAT  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
204                                                   fr="présence terme instationnaire dans les matrices"),
205                                     IDIFF  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
206                                                   fr="diffusion"),
207                                     IDIRCL = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
208                                                   fr="décalage du spectre des valeurs propres en l'absence de Dirichlet"),
209                                     SCHEMA_CONVECTIF = BLOC(condition="ICONV == 1", fr ="ordre du schéma convectif",
210                                                             BLENCV = SIMP(statut='o',typ='R',defaut=0,val_min=0,val_max=1,
211                                                                           fr="pourcentage schéma convectif au second ordre"),
212                                                             ISCHCV = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
213                                                                           fr ="type schéma convectif au second ordre 1 : centré")
214                                                             ),
215                                     NITMAX = SIMP(statut='f',typ='I',defaut=10000,val_min=0,
216                                                   fr="nombre max d'itération pour la résolution des systèmes linéaires"),
217                                     EPSILO = SIMP(statut='f',typ='R',defaut=1.e-4,val_min=0,
218                                                   fr="précision relative pour la résolution des systèmes linéaires"),
219                                     IMLIGR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,-1,0,1),
220                                                   fr="type de limitation des gradients"),
221                                     NSWRGR = SIMP(statut='f',typ='I',defaut=100,val_min=0,
222                                                   fr="reconstruction des gradients"),
223                                     NSWRSM = SIMP(statut='f',typ='I',defaut=2,val_min=0,
224                                                   fr="nombre d'itérations pour la reconstruction des seconds membres"),
225                                     CLIMGR = SIMP(statut='f',typ='R',defaut=1.5,val_min=0,
226                                                   fr="facteur de limitation des gradients"),
227                                     EPSRGR = SIMP(statut='f',typ='R',defaut=1.e-5,val_min=0,
228                                                   fr="précision relative pour la reconstruction itérative des gradients")
229                                  ),
230                   RESTITUE = FACT(statut='o',max=01,
231                                   fr = "Description de la grandeur restituée",
232                                   NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur restituée"),
233                                   ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
234                                                 fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
235                                   ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
236                                                 fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
237                                   IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
238                                                 fr = "inventaire des sondes utilisées pour la grandeur scalaire")
239                                   ),
240                   MODELE = FACT(statut='o',max=01,
241                                 fr="modélisation",
242                                 VALREF = SIMP(statut='o',typ='R',fr="valeur de référence (température, masse volumique...)"),
243                                 SCAMIN = SIMP(statut='f',typ='R',defaut=1.e12,fr="valeur minimale pour le scalaire"),
244                                 SCAMAX = SIMP(statut='f',typ='R',defaut=-1.e12,fr="valeur maximale pour le scalaire"),
245                                 SIGMAS = SIMP(statut='f',typ='R',val_min=0,defaut=1,fr="nombre de Prandtl pour le scalaire"),
246                                 VISLS0 = SIMP(statut='o',typ='R',fr="valeur de référence de la viscosité associée au scalaire"),
247                                 IVISLS = SIMP(statut='f',typ='I',defaut=0,into=(0,1),fr="viscosité variable")
248                                 )
249                  );
250
251 DEFI_FLUSCA = OPER(nom="DEFI_FLUSCA",op=2,sd_prod=flusca,fr="définition des fluctuations d'une inconnue scalaire avec ses paramètres physico numériques",
252                   VARFL  = SIMP(statut='o',typ=varsca,fr="scalaire associé au calcul de la variance des fluctuations"),
253                   NUMERIC = FACT(statut='o',max=01,
254                                 fr="propriétés numériques liées à l'inconnue",
255                                     ICONV  = SIMP(statut='o',typ='I',defaut=1,into=(0,1),
256                                                   fr="indicateur de convection"),
257                                     ISTAT  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
258                                                   fr="présence terme instationnaire dans les matrices"),
259                                     IDIFF  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
260                                                   fr="diffusion"),
261                                     IDIRCL = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
262                                                   fr="décalage du spectre des valeurs propres en l'absence de Dirichlet"),
263                                     SCHEMA_CONVECTIF = BLOC(condition="ICONV == 1", fr ="ordre du schéma convectif",
264                                                             BLENCV = SIMP(statut='o',typ='R',defaut=0,val_min=0,val_max=1,
265                                                                           fr="pourcentage schéma convectif au second ordre"),
266                                                             ISCHCV = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
267                                                                           fr ="type schéma convectif au second ordre 1 : centré")
268                                                             ),
269                                     NITMAX = SIMP(statut='f',typ='I',defaut=10000,val_min=0,
270                                                   fr="nombre max d'itération pour la résolution des systèmes linéaires"),
271                                     EPSILO = SIMP(statut='f',typ='R',defaut=1.e-4,val_min=0,
272                                                   fr="précision relative pour la résolution des systèmes linéaires"),
273                                     IMLIGR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,-1,0,1),
274                                                   fr="type de limitation des gradients"),
275                                     NSWRGR = SIMP(statut='f',typ='I',defaut=100,val_min=0,
276                                                   fr="reconstruction des gradients"),
277                                     NSWRSM = SIMP(statut='f',typ='I',defaut=2,val_min=0,
278                                                   fr="nombre d'itérations pour la reconstruction des seconds membres"),
279                                     CLIMGR = SIMP(statut='f',typ='R',defaut=1.5,val_min=0,
280                                                   fr="facteur de limitation des gradients"),
281                                     EPSRGR = SIMP(statut='f',typ='R',defaut=1.e-5,val_min=0,
282                                                   fr="précision relative pour la reconstruction itérative des gradients")
283                                  ),
284                   RESTITUE = FACT(statut='o',max=01,
285                                   fr = "Description de la grandeur restituée",
286                                   NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur restituée"),
287                                   ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
288                                                 fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
289                                   ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
290                                                 fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
291                                   IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
292                                                 fr = "inventaire des sondes utilisées pour la grandeur scalaire")
293                                   ),
294                   MODELE = FACT(statut='o',max=01,
295                                 fr="modélisation",
296                                 VALREF = SIMP(statut='o',typ='R',fr="valeur de référence (température, masse volumique...)"),
297                                 SCAMIN = SIMP(statut='f',typ='R',defaut=1.e12,fr="valeur minimale pour le scalaire"),
298                                 SCAMAX = SIMP(statut='f',typ='R',defaut=-1.e12,fr="valeur maximale pour le scalaire"),
299                                 SIGMAS = SIMP(statut='f',typ='R',val_min=0,defaut=1,fr="nombre de Prandtl pour le scalaire"),
300                                 VISLS0 = SIMP(statut='o',typ='R',fr="valeur de référence de la viscosité associée au scalaire"),
301                                 IVISLS = SIMP(statut='f',typ='I',defaut=0,into=(0,1),fr="viscosité variable"),
302                                 RVARFL = SIMP(statut='o',typ='R',val_min=0,defaut=0.8,
303                                                        fr="nombre de Prandtl pour la variance des fluctuations du scalaire")
304                                 )
305                   );
306
307 DEFI_PRESSION = OPER(nom="DEFI_PRESSION",op=2,sd_prod=varpre,fr="définition del'inconnue pression avec ses paramètres physico numériques",
308                    NUMERIC = FACT(statut='o',max=01,
309                                   fr="propriétés de l'équation de pression",
310                                   ICONV  = SIMP(statut='o',typ='I',defaut=0,into=(0,1),
311                                                 fr="indicateur de convection"),
312                                   ISTAT  = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
313                                                 fr="présence terme instationnaire dans les matrices"),
314                                   IDIFF  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
315                                                 fr="diffusion"),
316                                   IDIRCL = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
317                                                 fr="décalage du spectre des valeurs propres en l'absence de Dirichlet"),
318                                   SCHEMA_CONVECTIF = BLOC(condition="ICONV == 1", fr ="ordre du schéma convectif",
319                                                           BLENCV = SIMP(statut='o',typ='R',defaut=0,val_min=0,val_max=1,
320                                                                         fr="pourcentage schéma convectif au second ordre"),
321                                                           ISCHCV = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
322                                                                         fr ="type schéma convectif au second ordre 1 : centré")
323                                                           ),
324                                   NITMAX = SIMP(statut='f',typ='I',defaut=10000,val_min=0,
325                                                 fr="nombre max d'itération pour la résolution des systèmes linéaires"),
326                                   EPSILO = SIMP(statut='f',typ='R',defaut=1.e-4,val_min=0,
327                                                 fr="précision relative pour la résolution des systèmes linéaires"),
328                                   IMLIGR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,-1,0,1),
329                                                 fr="type de limitation des gradients"),
330                                   NSWRGR = SIMP(statut='f',typ='I',defaut=100,val_min=0,
331                                                 fr="reconstruction des gradients"),
332                                   NSWRSM = SIMP(statut='f',typ='I',defaut=2,val_min=0,
333                                                 fr="nombre d'itérations pour la reconstruction des seconds membres"),
334                                   CLIMGR = SIMP(statut='f',typ='R',defaut=1.5,val_min=0,
335                                                 fr="facteur de limitation des gradients"),
336                                   EPSRGR = SIMP(statut='f',typ='R',defaut=1.e-5,val_min=0,
337                                                 fr="précision relative pour la reconstruction itérative des gradients")
338                                   ),
339                   RESTITUE = FACT(statut='o',max=01,
340                                   fr = "Description de la grandeur restituée",
341                                   NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur restituée",
342                                                 defaut="Pression"),
343                                   ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
344                                                 fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
345                                   ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
346                                                 fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
347                                   IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
348                                                 fr = "inventaire des sondes utilisées pour la grandeur")
349                                   ),
350                   MODELE = FACT(statut='o',max=01,
351                                 fr="modélisation",
352                                 VALREF = SIMP(statut='o',typ='R',fr="valeur de référence (température, masse volumique...)"),
353                                 SCAMIN = SIMP(statut='f',typ='R',defaut=1.e12,fr="valeur minimale pour la grandeur"),
354                                 SCAMAX = SIMP(statut='f',typ='R',defaut=-1.e12,fr="valeur maximale pour la grandeur"),
355                                 SIGMAS = SIMP(statut='f',typ='R',val_min=0,defaut=1,fr="nombre de Prandtl pour la grandeur"),
356                                 VISLS0 = SIMP(statut='o',typ='R',fr="valeur de référence de la viscosité associée à la grandeur"),
357                                 IVISLS = SIMP(statut='f',typ='I',defaut=0,into=(0,1),fr="viscosité variable")
358                                 )
359                     );
360
361 DEFI_VITX = OPER(nom="DEFI_VITX",op=2,sd_prod=varvitx,fr="définition de l'inconnue vitesse X avec ses paramètres physico numériques",
362                    NUMERIC = FACT(statut='o',max=01,
363                                   fr="propriétés de l'équation de vitesse X",
364                                   ICONV  = SIMP(statut='o',typ='I',defaut=1,into=(0,1),
365                                                 fr="indicateur de convection"),
366                                   ISTAT  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
367                                                 fr="présence terme instationnaire dans les matrices"),
368                                   IDIFF  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
369                                                 fr="diffusion"),
370                                   IDIRCL = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
371                                                 fr="décalage du spectre des valeurs propres en l'absence de Dirichlet"),
372                                   SCHEMA_CONVECTIF = BLOC(condition="ICONV == 1", fr ="ordre du schéma convectif",
373                                                           BLENCV = SIMP(statut='o',typ='R',defaut=0,val_min=0,val_max=1,
374                                                                         fr="pourcentage schéma convectif au second ordre"),
375                                                           ISCHCV = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
376                                                                         fr ="type schéma convectif au second ordre 1 : centré")
377                                                           ),
378                                   NITMAX = SIMP(statut='f',typ='I',defaut=10000,val_min=0,
379                                                 fr="nombre max d'itération pour la résolution des systèmes linéaires"),
380                                   EPSILO = SIMP(statut='f',typ='R',defaut=1.e-4,val_min=0,
381                                                 fr="précision relative pour la résolution des systèmes linéaires"),
382                                   IMLIGR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,-1,0,1),
383                                                 fr="type de limitation des gradients"),
384                                   NSWRGR = SIMP(statut='f',typ='I',defaut=100,val_min=0,
385                                                 fr="reconstruction des gradients"),
386                                   NSWRSM = SIMP(statut='f',typ='I',defaut=2,val_min=0,
387                                                 fr="nombre d'itérations pour la reconstruction des seconds membres"),
388                                   CLIMGR = SIMP(statut='f',typ='R',defaut=1.5,val_min=0,
389                                                 fr="facteur de limitation des gradients"),
390                                   EPSRGR = SIMP(statut='f',typ='R',defaut=1.e-5,val_min=0,
391                                                 fr="précision relative pour la reconstruction itérative des gradients")
392                                   ),
393                   RESTITUE = FACT(statut='o',max=01,
394                                   fr = "Description de la grandeur restituée",
395                                   NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur restituée",
396                                                 defaut="vitesse_u1"),
397                                   ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
398                                                 fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
399                                   ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
400                                                 fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
401                                   IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
402                                                 fr = "inventaire des sondes utilisées pour la grandeur")
403                                   ),
404                   MODELE = FACT(statut='o',max=01,
405                                 fr="modélisation",
406                                 VALREF = SIMP(statut='o',typ='R',fr="valeur de référence (température, masse volumique...)"),
407                                 SCAMIN = SIMP(statut='f',typ='R',defaut=1.e12,fr="valeur minimale pour la grandeur"),
408                                 SCAMAX = SIMP(statut='f',typ='R',defaut=-1.e12,fr="valeur maximale pour la grandeur"),
409                                 SIGMAS = SIMP(statut='f',typ='R',val_min=0,defaut=1,fr="nombre de Prandtl pour la grandeur"),
410                                 VISLS0 = SIMP(statut='o',typ='R',fr="valeur de référence de la viscosité associée à la grandeur"),
411                                 IVISLS = SIMP(statut='f',typ='I',defaut=0,into=(0,1),fr="viscosité variable")
412                                 )
413                 );
414
415 DEFI_VITY = OPER(nom="DEFI_VITY",op=2,sd_prod=varvity,fr="définition de l'inconnue vitesse Y avec ses paramètres physico numériques",
416                    NUMERIC = FACT(statut='o',max=01,
417                                   fr="propriétés de l'équation de vitesse Y",
418                                   ICONV  = SIMP(statut='o',typ='I',defaut=1,into=(0,1),
419                                                 fr="indicateur de convection"),
420                                   ISTAT  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
421                                                 fr="présence terme instationnaire dans les matrices"),
422                                   IDIFF  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
423                                                 fr="diffusion"),
424                                   IDIRCL = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
425                                                 fr="décalage du spectre des valeurs propres en l'absence de Dirichlet"),
426                                   SCHEMA_CONVECTIF = BLOC(condition="ICONV == 1", fr ="ordre du schéma convectif",
427                                                           BLENCV = SIMP(statut='o',typ='R',defaut=0,val_min=0,val_max=1,
428                                                                         fr="pourcentage schéma convectif au second ordre"),
429                                                           ISCHCV = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
430                                                                         fr ="type schéma convectif au second ordre 1 : centré")
431                                                           ),
432                                   NITMAX = SIMP(statut='f',typ='I',defaut=10000,val_min=0,
433                                                 fr="nombre max d'itération pour la résolution des systèmes linéaires"),
434                                   EPSILO = SIMP(statut='f',typ='R',defaut=1.e-4,val_min=0,
435                                                 fr="précision relative pour la résolution des systèmes linéaires"),
436                                   IMLIGR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,-1,0,1),
437                                                 fr="type de limitation des gradients"),
438                                   NSWRGR = SIMP(statut='f',typ='I',defaut=100,val_min=0,
439                                                 fr="reconstruction des gradients"),
440                                   NSWRSM = SIMP(statut='f',typ='I',defaut=2,val_min=0,
441                                                 fr="nombre d'itérations pour la reconstruction des seconds membres"),
442                                   CLIMGR = SIMP(statut='f',typ='R',defaut=1.5,val_min=0,
443                                                 fr="facteur de limitation des gradients"),
444                                   EPSRGR = SIMP(statut='f',typ='R',defaut=1.e-5,val_min=0,
445                                                 fr="précision relative pour la reconstruction itérative des gradients")
446                                   ),
447                   RESTITUE = FACT(statut='o',max=01,
448                                   fr = "Description de la grandeur restituée",
449                                   NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur restituée",
450                                                 defaut="vitesse_v1"),
451                                   ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
452                                                 fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
453                                   ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
454                                                 fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
455                                   IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
456                                                 fr = "inventaire des sondes utilisées pour la grandeur")
457                                   ),
458                   MODELE = FACT(statut='o',max=01,
459                                 fr="modélisation",
460                                 VALREF = SIMP(statut='o',typ='R',fr="valeur de référence (température, masse volumique...)"),
461                                 SCAMIN = SIMP(statut='f',typ='R',defaut=1.e12,fr="valeur minimale pour la grandeur"),
462                                 SCAMAX = SIMP(statut='f',typ='R',defaut=-1.e12,fr="valeur maximale pour la grandeur"),
463                                 SIGMAS = SIMP(statut='f',typ='R',val_min=0,defaut=1,fr="nombre de Prandtl pour la grandeur"),
464                                 VISLS0 = SIMP(statut='o',typ='R',fr="valeur de référence de la viscosité associée à la grandeur"),
465                                 IVISLS = SIMP(statut='f',typ='I',defaut=0,into=(0,1),fr="viscosité variable")
466                                 )
467                 );
468
469 DEFI_VITZ = OPER(nom="DEFI_VITZ",op=2,sd_prod=varvitz,fr="définition de l'inconnue vitesse Z avec ses paramètres physico numériques",
470                    NUMERIC = FACT(statut='o',max=01,
471                                   fr="propriétés de l'équation de vitesse Z",
472                                   ICONV  = SIMP(statut='o',typ='I',defaut=1,into=(0,1),
473                                                 fr="indicateur de convection"),
474                                   ISTAT  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
475                                                 fr="présence terme instationnaire dans les matrices"),
476                                   IDIFF  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
477                                                 fr="diffusion"),
478                                   IDIRCL = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
479                                                 fr="décalage du spectre des valeurs propres en l'absence de Dirichlet"),
480                                   SCHEMA_CONVECTIF = BLOC(condition="ICONV == 1", fr ="ordre du schéma convectif",
481                                                           BLENCV = SIMP(statut='o',typ='R',defaut=0,val_min=0,val_max=1,
482                                                                         fr="pourcentage schéma convectif au second ordre"),
483                                                           ISCHCV = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
484                                                                         fr ="type schéma convectif au second ordre 1 : centré")
485                                                           ),
486                                   NITMAX = SIMP(statut='f',typ='I',defaut=10000,val_min=0,
487                                                 fr="nombre max d'itération pour la résolution des systèmes linéaires"),
488                                   EPSILO = SIMP(statut='f',typ='R',defaut=1.e-4,val_min=0,
489                                                 fr="précision relative pour la résolution des systèmes linéaires"),
490                                   IMLIGR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,-1,0,1),
491                                                 fr="type de limitation des gradients"),
492                                   NSWRGR = SIMP(statut='f',typ='I',defaut=100,val_min=0,
493                                                 fr="reconstruction des gradients"),
494                                   NSWRSM = SIMP(statut='f',typ='I',defaut=2,val_min=0,
495                                                 fr="nombre d'itérations pour la reconstruction des seconds membres"),
496                                   CLIMGR = SIMP(statut='f',typ='R',defaut=1.5,val_min=0,
497                                                 fr="facteur de limitation des gradients"),
498                                   EPSRGR = SIMP(statut='f',typ='R',defaut=1.e-5,val_min=0,
499                                                 fr="précision relative pour la reconstruction itérative des gradients")
500                                   ),
501                   RESTITUE = FACT(statut='o',max=01,
502                                   fr = "Description de la grandeur restituée",
503                                   NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur restituée",
504                                                 defaut="vitesse_w1"),
505                                   ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
506                                                 fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
507                                   ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
508                                                 fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
509                                   IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
510                                                 fr = "inventaire des sondes utilisées pour la grandeur")
511                                   ),
512                   MODELE = FACT(statut='o',max=01,
513                                 fr="modélisation",
514                                 VALREF = SIMP(statut='o',typ='R',fr="valeur de référence (température, masse volumique...)"),
515                                 SCAMIN = SIMP(statut='f',typ='R',defaut=1.e12,fr="valeur minimale pour la grandeur"),
516                                 SCAMAX = SIMP(statut='f',typ='R',defaut=-1.e12,fr="valeur maximale pour la grandeur"),
517                                 SIGMAS = SIMP(statut='f',typ='R',val_min=0,defaut=1,fr="nombre de Prandtl pour la grandeur"),
518                                 VISLS0 = SIMP(statut='o',typ='R',fr="valeur de référence de la viscosité associée à la grandeur"),
519                                 IVISLS = SIMP(statut='f',typ='I',defaut=0,into=(0,1),fr="viscosité variable"),
520                                 )
521                 );
522
523
524 DEFI_ETURB = OPER(nom="DEFI_ETURB",op=2,sd_prod=eturb,fr="définition de l'inconnue energie turbulente k-eps avec ses paramètres physico numériques",
525                   NUMERIC = FACT(statut='o',max=01,
526                                     fr="propriétés numériques liées à l'inconnue",
527                                     ICONV  = SIMP(statut='o',typ='I',defaut=1,into=(0,1),
528                                                   fr="indicateur de convection"),
529                                     ISTAT  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
530                                                   fr="présence terme instationnaire dans les matrices"),
531                                     IDIFF  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
532                                                   fr="diffusion"),
533                                     IDIRCL = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
534                                                   fr="décalage du spectre des valeurs propres en l'absence de Dirichlet"),
535                                     SCHEMA_CONVECTIF = BLOC(condition="ICONV == 1", fr ="ordre du schéma convectif",
536                                                             BLENCV = SIMP(statut='o',typ='R',defaut=0,val_min=0,val_max=1,
537                                                                           fr="pourcentage schéma convectif au second ordre"),
538                                                             ISCHCV = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
539                                                                           fr ="type schéma convectif au second ordre 1 : centré")
540                                                             ),
541                                     NITMAX = SIMP(statut='f',typ='I',defaut=10000,val_min=0,
542                                                   fr="nombre max d'itération pour la résolution des systèmes linéaires"),
543                                     EPSILO = SIMP(statut='f',typ='R',defaut=1.e-4,val_min=0,
544                                                   fr="précision relative pour la résolution des systèmes linéaires"),
545                                     IMLIGR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,-1,0,1),
546                                                   fr="type de limitation des gradients"),
547                                     NSWRGR = SIMP(statut='f',typ='I',defaut=100,val_min=0,
548                                                   fr="reconstruction des gradients"),
549                                     NSWRSM = SIMP(statut='f',typ='I',defaut=2,val_min=0,
550                                                   fr="nombre d'itérations pour la reconstruction des seconds membres"),
551                                     CLIMGR = SIMP(statut='f',typ='R',defaut=1.5,val_min=0,
552                                                   fr="facteur de limitation des gradients"),
553                                     EPSRGR = SIMP(statut='f',typ='R',defaut=1.e-5,val_min=0,
554                                                   fr="précision relative pour la reconstruction itérative des gradients")
555                                  ),
556                   RESTITUE = FACT(statut='o',max=01,
557                                   fr = "Description de la grandeur restituée",
558                                   NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur restituée"),
559                                   ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
560                                                 fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
561                                   ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
562                                                 fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
563                                   IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
564                                                 fr = "inventaire des sondes utilisées pour la grandeur scalaire")
565                                   ),
566                   MODELE = FACT(statut='o',max=01,
567                                 fr="modélisation",
568                                 VALREF = SIMP(statut='o',typ='R',fr="valeur de référence (température, masse volumique...)"),
569                                 SCAMIN = SIMP(statut='f',typ='R',defaut=1.e12,fr="valeur minimale pour le scalaire"),
570                                 SCAMAX = SIMP(statut='f',typ='R',defaut=-1.e12,fr="valeur maximale pour le scalaire"),
571                                 SIGMAS = SIMP(statut='f',typ='R',val_min=0,defaut=1,fr="nombre de Prandtl pour le scalaire"),
572                                 VISLS0 = SIMP(statut='o',typ='R',fr="valeur de référence de la viscosité associée au scalaire"),
573                                 IVISLS = SIMP(statut='f',typ='I',defaut=0,into=(0,1),fr="viscosité variable")
574                                 )
575                  );
576
577 DEFI_DTURB = OPER(nom="DEFI_DTURB",op=2,sd_prod=dturb,fr="définition de l'inconnue dissipation turbulente k-eps avec ses paramètres physico numériques",
578                   NUMERIC = FACT(statut='o',max=01,
579                                 fr="propriétés numériques liées à l'inconnue",
580                                     ICONV  = SIMP(statut='o',typ='I',defaut=1,into=(0,1),
581                                                   fr="indicateur de convection"),
582                                     ISTAT  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
583                                                   fr="présence terme instationnaire dans les matrices"),
584                                     IDIFF  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
585                                                   fr="diffusion"),
586                                     IDIRCL = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
587                                                   fr="décalage du spectre des valeurs propres en l'absence de Dirichlet"),
588                                     SCHEMA_CONVECTIF = BLOC(condition="ICONV == 1", fr ="ordre du schéma convectif",
589                                                             BLENCV = SIMP(statut='o',typ='R',defaut=0,val_min=0,val_max=1,
590                                                                           fr="pourcentage schéma convectif au second ordre"),
591                                                             ISCHCV = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
592                                                                           fr ="type schéma convectif au second ordre 1 : centré")
593                                                             ),
594                                     NITMAX = SIMP(statut='f',typ='I',defaut=10000,val_min=0,
595                                                   fr="nombre max d'itération pour la résolution des systèmes linéaires"),
596                                     EPSILO = SIMP(statut='f',typ='R',defaut=1.e-4,val_min=0,
597                                                   fr="précision relative pour la résolution des systèmes linéaires"),
598                                     IMLIGR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,-1,0,1),
599                                                   fr="type de limitation des gradients"),
600                                     NSWRGR = SIMP(statut='f',typ='I',defaut=100,val_min=0,
601                                                   fr="reconstruction des gradients"),
602                                     NSWRSM = SIMP(statut='f',typ='I',defaut=2,val_min=0,
603                                                   fr="nombre d'itérations pour la reconstruction des seconds membres"),
604                                     CLIMGR = SIMP(statut='f',typ='R',defaut=1.5,val_min=0,
605                                                   fr="facteur de limitation des gradients"),
606                                     EPSRGR = SIMP(statut='f',typ='R',defaut=1.e-5,val_min=0,
607                                                   fr="précision relative pour la reconstruction itérative des gradients")
608                                  ),
609                   RESTITUE = FACT(statut='o',max=01,
610                                   fr = "Description de la grandeur restituée",
611                                   NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur restituée"),
612                                   ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
613                                                 fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
614                                   ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
615                                                 fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
616                                   IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
617                                                 fr = "inventaire des sondes utilisées pour la grandeur scalaire")
618                                   ),
619                   MODELE = FACT(statut='o',max=01,
620                                 fr="modélisation",
621                                 VALREF = SIMP(statut='o',typ='R',fr="valeur de référence (température, masse volumique...)"),
622                                 SCAMIN = SIMP(statut='f',typ='R',defaut=1.e12,fr="valeur minimale pour le scalaire"),
623                                 SCAMAX = SIMP(statut='f',typ='R',defaut=-1.e12,fr="valeur maximale pour le scalaire"),
624                                 SIGMAS = SIMP(statut='f',typ='R',val_min=0,defaut=1,fr="nombre de Prandtl pour le scalaire"),
625                                 VISLS0 = SIMP(statut='o',typ='R',fr="valeur de référence de la viscosité associée au scalaire"),
626                                 IVISLS = SIMP(statut='f',typ='I',defaut=0,into=(0,1),fr="viscosité variable")
627                                 )
628                  );
629
630 DEFI_TSR11 = OPER(nom="DEFI_TSR11",op=2,sd_prod=tsr11,fr="définition de l'inconnue tension Reynolds R11 Rij-eps avec ses paramètres physico numériques",
631                   NUMERIC = FACT(statut='o',max=01,
632                                 fr="propriétés numériques liées à l'inconnue",
633                                     ICONV  = SIMP(statut='o',typ='I',defaut=1,into=(0,1),
634                                                   fr="indicateur de convection"),
635                                     ISTAT  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
636                                                   fr="présence terme instationnaire dans les matrices"),
637                                     IDIFF  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
638                                                   fr="diffusion"),
639                                     IDIRCL = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
640                                                   fr="décalage du spectre des valeurs propres en l'absence de Dirichlet"),
641                                     SCHEMA_CONVECTIF = BLOC(condition="ICONV == 1", fr ="ordre du schéma convectif",
642                                                             BLENCV = SIMP(statut='o',typ='R',defaut=0,val_min=0,val_max=1,
643                                                                           fr="pourcentage schéma convectif au second ordre"),
644                                                             ISCHCV = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
645                                                                           fr ="type schéma convectif au second ordre 1 : centré")
646                                                             ),
647                                     NITMAX = SIMP(statut='f',typ='I',defaut=10000,val_min=0,
648                                                   fr="nombre max d'itération pour la résolution des systèmes linéaires"),
649                                     EPSILO = SIMP(statut='f',typ='R',defaut=1.e-4,val_min=0,
650                                                   fr="précision relative pour la résolution des systèmes linéaires"),
651                                     IMLIGR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,-1,0,1),
652                                                   fr="type de limitation des gradients"),
653                                     NSWRGR = SIMP(statut='f',typ='I',defaut=100,val_min=0,
654                                                   fr="reconstruction des gradients"),
655                                     NSWRSM = SIMP(statut='f',typ='I',defaut=2,val_min=0,
656                                                   fr="nombre d'itérations pour la reconstruction des seconds membres"),
657                                     CLIMGR = SIMP(statut='f',typ='R',defaut=1.5,val_min=0,
658                                                   fr="facteur de limitation des gradients"),
659                                     EPSRGR = SIMP(statut='f',typ='R',defaut=1.e-5,val_min=0,
660                                                   fr="précision relative pour la reconstruction itérative des gradients")
661                                  ),
662                   RESTITUE = FACT(statut='o',max=01,
663                                   fr = "Description de la grandeur restituée",
664                                   NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur restituée"),
665                                   ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
666                                                 fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
667                                   ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
668                                                 fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
669                                   IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
670                                                 fr = "inventaire des sondes utilisées pour la grandeur scalaire")
671                                   ),
672                   MODELE = FACT(statut='o',max=01,
673                                 fr="modélisation",
674                                 VALREF = SIMP(statut='o',typ='R',fr="valeur de référence (température, masse volumique...)"),
675                                 SCAMIN = SIMP(statut='f',typ='R',defaut=1.e12,fr="valeur minimale pour le scalaire"),
676                                 SCAMAX = SIMP(statut='f',typ='R',defaut=-1.e12,fr="valeur maximale pour le scalaire"),
677                                 SIGMAS = SIMP(statut='f',typ='R',val_min=0,defaut=1,fr="nombre de Prandtl pour le scalaire"),
678                                 VISLS0 = SIMP(statut='o',typ='R',fr="valeur de référence de la viscosité associée au scalaire"),
679                                 IVISLS = SIMP(statut='f',typ='I',defaut=0,into=(0,1),fr="viscosité variable")
680                                 )
681                  );
682
683 DEFI_TSR22 = OPER(nom="DEFI_TSR22",op=2,sd_prod=tsr11,fr="définition de l'inconnue tension Reynolds R22 Rij-eps avec ses paramètres physico numériques",
684                   NUMERIC = FACT(statut='o',max=01,
685                                 fr="propriétés numériques liées à l'inconnue",
686                                     ICONV  = SIMP(statut='o',typ='I',defaut=1,into=(0,1),
687                                                   fr="indicateur de convection"),
688                                     ISTAT  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
689                                                   fr="présence terme instationnaire dans les matrices"),
690                                     IDIFF  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
691                                                   fr="diffusion"),
692                                     IDIRCL = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
693                                                   fr="décalage du spectre des valeurs propres en l'absence de Dirichlet"),
694                                     SCHEMA_CONVECTIF = BLOC(condition="ICONV == 1", fr ="ordre du schéma convectif",
695                                                             BLENCV = SIMP(statut='o',typ='R',defaut=0,val_min=0,val_max=1,
696                                                                           fr="pourcentage schéma convectif au second ordre"),
697                                                             ISCHCV = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
698                                                                           fr ="type schéma convectif au second ordre 1 : centré")
699                                                             ),
700                                     NITMAX = SIMP(statut='f',typ='I',defaut=10000,val_min=0,
701                                                   fr="nombre max d'itération pour la résolution des systèmes linéaires"),
702                                     EPSILO = SIMP(statut='f',typ='R',defaut=1.e-4,val_min=0,
703                                                   fr="précision relative pour la résolution des systèmes linéaires"),
704                                     IMLIGR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,-1,0,1),
705                                                   fr="type de limitation des gradients"),
706                                     NSWRGR = SIMP(statut='f',typ='I',defaut=100,val_min=0,
707                                                   fr="reconstruction des gradients"),
708                                     NSWRSM = SIMP(statut='f',typ='I',defaut=2,val_min=0,
709                                                   fr="nombre d'itérations pour la reconstruction des seconds membres"),
710                                     CLIMGR = SIMP(statut='f',typ='R',defaut=1.5,val_min=0,
711                                                   fr="facteur de limitation des gradients"),
712                                     EPSRGR = SIMP(statut='f',typ='R',defaut=1.e-5,val_min=0,
713                                                   fr="précision relative pour la reconstruction itérative des gradients")
714                                  ),
715                   RESTITUE = FACT(statut='o',max=01,
716                                   fr = "Description de la grandeur restituée",
717                                   NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur restituée"),
718                                   ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
719                                                 fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
720                                   ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
721                                                 fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
722                                   IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
723                                                 fr = "inventaire des sondes utilisées pour la grandeur scalaire")
724                                   ),
725                   MODELE = FACT(statut='o',max=01,
726                                 fr="modélisation",
727                                 VALREF = SIMP(statut='o',typ='R',fr="valeur de référence (température, masse volumique...)"),
728                                 SCAMIN = SIMP(statut='f',typ='R',defaut=1.e12,fr="valeur minimale pour le scalaire"),
729                                 SCAMAX = SIMP(statut='f',typ='R',defaut=-1.e12,fr="valeur maximale pour le scalaire"),
730                                 SIGMAS = SIMP(statut='f',typ='R',val_min=0,defaut=1,fr="nombre de Prandtl pour le scalaire"),
731                                 VISLS0 = SIMP(statut='o',typ='R',fr="valeur de référence de la viscosité associée au scalaire"),
732                                 IVISLS = SIMP(statut='f',typ='I',defaut=0,into=(0,1),fr="viscosité variable")
733                                 )
734                  );
735
736 DEFI_TSR33 = OPER(nom="DEFI_TSR33",op=2,sd_prod=tsr11,fr="définition de l'inconnue tension Reynolds R33 Rij-eps avec ses paramètres physico numériques",
737                   NUMERIC = FACT(statut='o',max=01,
738                                 fr="propriétés numériques liées à l'inconnue",
739                                     ICONV  = SIMP(statut='o',typ='I',defaut=1,into=(0,1),
740                                                   fr="indicateur de convection"),
741                                     ISTAT  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
742                                                   fr="présence terme instationnaire dans les matrices"),
743                                     IDIFF  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
744                                                   fr="diffusion"),
745                                     IDIRCL = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
746                                                   fr="décalage du spectre des valeurs propres en l'absence de Dirichlet"),
747                                     SCHEMA_CONVECTIF = BLOC(condition="ICONV == 1", fr ="ordre du schéma convectif",
748                                                             BLENCV = SIMP(statut='o',typ='R',defaut=0,val_min=0,val_max=1,
749                                                                           fr="pourcentage schéma convectif au second ordre"),
750                                                             ISCHCV = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
751                                                                           fr ="type schéma convectif au second ordre 1 : centré")
752                                                             ),
753                                     NITMAX = SIMP(statut='f',typ='I',defaut=10000,val_min=0,
754                                                   fr="nombre max d'itération pour la résolution des systèmes linéaires"),
755                                     EPSILO = SIMP(statut='f',typ='R',defaut=1.e-4,val_min=0,
756                                                   fr="précision relative pour la résolution des systèmes linéaires"),
757                                     IMLIGR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,-1,0,1),
758                                                   fr="type de limitation des gradients"),
759                                     NSWRGR = SIMP(statut='f',typ='I',defaut=100,val_min=0,
760                                                   fr="reconstruction des gradients"),
761                                     NSWRSM = SIMP(statut='f',typ='I',defaut=2,val_min=0,
762                                                   fr="nombre d'itérations pour la reconstruction des seconds membres"),
763                                     CLIMGR = SIMP(statut='f',typ='R',defaut=1.5,val_min=0,
764                                                   fr="facteur de limitation des gradients"),
765                                     EPSRGR = SIMP(statut='f',typ='R',defaut=1.e-5,val_min=0,
766                                                   fr="précision relative pour la reconstruction itérative des gradients")
767                                  ),
768                   RESTITUE = FACT(statut='o',max=01,
769                                   fr = "Description de la grandeur restituée",
770                                   NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur restituée"),
771                                   ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
772                                                 fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
773                                   ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
774                                                 fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
775                                   IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
776                                                 fr = "inventaire des sondes utilisées pour la grandeur scalaire")
777                                   ),
778                   MODELE = FACT(statut='o',max=01,
779                                 fr="modélisation",
780                                 VALREF = SIMP(statut='o',typ='R',fr="valeur de référence (température, masse volumique...)"),
781                                 SCAMIN = SIMP(statut='f',typ='R',defaut=1.e12,fr="valeur minimale pour le scalaire"),
782                                 SCAMAX = SIMP(statut='f',typ='R',defaut=-1.e12,fr="valeur maximale pour le scalaire"),
783                                 SIGMAS = SIMP(statut='f',typ='R',val_min=0,defaut=1,fr="nombre de Prandtl pour le scalaire"),
784                                 VISLS0 = SIMP(statut='o',typ='R',fr="valeur de référence de la viscosité associée au scalaire"),
785                                 IVISLS = SIMP(statut='f',typ='I',defaut=0,into=(0,1),fr="viscosité variable")
786                                 )
787                  );
788
789 DEFI_TSR12 = OPER(nom="DEFI_TSR12",op=2,sd_prod=tsr11,fr="définition de l'inconnue tension Reynolds R12 Rij-eps avec ses paramètres physico numériques",
790                   NUMERIC = FACT(statut='o',max=01,
791                                 fr="propriétés numériques liées à l'inconnue",
792                                     ICONV  = SIMP(statut='o',typ='I',defaut=1,into=(0,1),
793                                                   fr="indicateur de convection"),
794                                     ISTAT  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
795                                                   fr="présence terme instationnaire dans les matrices"),
796                                     IDIFF  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
797                                                   fr="diffusion"),
798                                     IDIRCL = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
799                                                   fr="décalage du spectre des valeurs propres en l'absence de Dirichlet"),
800                                     SCHEMA_CONVECTIF = BLOC(condition="ICONV == 1", fr ="ordre du schéma convectif",
801                                                             BLENCV = SIMP(statut='o',typ='R',defaut=0,val_min=0,val_max=1,
802                                                                           fr="pourcentage schéma convectif au second ordre"),
803                                                             ISCHCV = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
804                                                                           fr ="type schéma convectif au second ordre 1 : centré")
805                                                             ),
806                                     NITMAX = SIMP(statut='f',typ='I',defaut=10000,val_min=0,
807                                                   fr="nombre max d'itération pour la résolution des systèmes linéaires"),
808                                     EPSILO = SIMP(statut='f',typ='R',defaut=1.e-4,val_min=0,
809                                                   fr="précision relative pour la résolution des systèmes linéaires"),
810                                     IMLIGR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,-1,0,1),
811                                                   fr="type de limitation des gradients"),
812                                     NSWRGR = SIMP(statut='f',typ='I',defaut=100,val_min=0,
813                                                   fr="reconstruction des gradients"),
814                                     NSWRSM = SIMP(statut='f',typ='I',defaut=2,val_min=0,
815                                                   fr="nombre d'itérations pour la reconstruction des seconds membres"),
816                                     CLIMGR = SIMP(statut='f',typ='R',defaut=1.5,val_min=0,
817                                                   fr="facteur de limitation des gradients"),
818                                     EPSRGR = SIMP(statut='f',typ='R',defaut=1.e-5,val_min=0,
819                                                   fr="précision relative pour la reconstruction itérative des gradients")
820                                  ),
821                   RESTITUE = FACT(statut='o',max=01,
822                                   fr = "Description de la grandeur restituée",
823                                   NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur restituée"),
824                                   ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
825                                                 fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
826                                   ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
827                                                 fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
828                                   IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
829                                                 fr = "inventaire des sondes utilisées pour la grandeur scalaire")
830                                   ),
831                   MODELE = FACT(statut='o',max=01,
832                                 fr="modélisation",
833                                 VALREF = SIMP(statut='o',typ='R',fr="valeur de référence (température, masse volumique...)"),
834                                 SCAMIN = SIMP(statut='f',typ='R',defaut=1.e12,fr="valeur minimale pour le scalaire"),
835                                 SCAMAX = SIMP(statut='f',typ='R',defaut=-1.e12,fr="valeur maximale pour le scalaire"),
836                                 SIGMAS = SIMP(statut='f',typ='R',val_min=0,defaut=1,fr="nombre de Prandtl pour le scalaire"),
837                                 VISLS0 = SIMP(statut='o',typ='R',fr="valeur de référence de la viscosité associée au scalaire"),
838                                 IVISLS = SIMP(statut='f',typ='I',defaut=0,into=(0,1),fr="viscosité variable")
839                                 )
840                  );
841
842 DEFI_TSR13 = OPER(nom="DEFI_TSR13",op=2,sd_prod=tsr11,fr="définition de l'inconnue tension Reynolds R13 Rij-eps avec ses paramètres physico numériques",
843                   NUMERIC = FACT(statut='o',max=01,
844                                 fr="propriétés numériques liées à l'inconnue",
845                                     ICONV  = SIMP(statut='o',typ='I',defaut=1,into=(0,1),
846                                                   fr="indicateur de convection"),
847                                     ISTAT  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
848                                                   fr="présence terme instationnaire dans les matrices"),
849                                     IDIFF  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
850                                                   fr="diffusion"),
851                                     IDIRCL = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
852                                                   fr="décalage du spectre des valeurs propres en l'absence de Dirichlet"),
853                                     SCHEMA_CONVECTIF = BLOC(condition="ICONV == 1", fr ="ordre du schéma convectif",
854                                                             BLENCV = SIMP(statut='o',typ='R',defaut=0,val_min=0,val_max=1,
855                                                                           fr="pourcentage schéma convectif au second ordre"),
856                                                             ISCHCV = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
857                                                                           fr ="type schéma convectif au second ordre 1 : centré")
858                                                             ),
859                                     NITMAX = SIMP(statut='f',typ='I',defaut=10000,val_min=0,
860                                                   fr="nombre max d'itération pour la résolution des systèmes linéaires"),
861                                     EPSILO = SIMP(statut='f',typ='R',defaut=1.e-4,val_min=0,
862                                                   fr="précision relative pour la résolution des systèmes linéaires"),
863                                     IMLIGR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,-1,0,1),
864                                                   fr="type de limitation des gradients"),
865                                     NSWRGR = SIMP(statut='f',typ='I',defaut=100,val_min=0,
866                                                   fr="reconstruction des gradients"),
867                                     NSWRSM = SIMP(statut='f',typ='I',defaut=2,val_min=0,
868                                                   fr="nombre d'itérations pour la reconstruction des seconds membres"),
869                                     CLIMGR = SIMP(statut='f',typ='R',defaut=1.5,val_min=0,
870                                                   fr="facteur de limitation des gradients"),
871                                     EPSRGR = SIMP(statut='f',typ='R',defaut=1.e-5,val_min=0,
872                                                   fr="précision relative pour la reconstruction itérative des gradients")
873                                  ),
874                   RESTITUE = FACT(statut='o',max=01,
875                                   fr = "Description de la grandeur restituée",
876                                   NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur restituée"),
877                                   ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
878                                                 fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
879                                   ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
880                                                 fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
881                                   IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
882                                                 fr = "inventaire des sondes utilisées pour la grandeur scalaire")
883                                   ),
884                   MODELE = FACT(statut='o',max=01,
885                                 fr="modélisation",
886                                 VALREF = SIMP(statut='o',typ='R',fr="valeur de référence (température, masse volumique...)"),
887                                 SCAMIN = SIMP(statut='f',typ='R',defaut=1.e12,fr="valeur minimale pour le scalaire"),
888                                 SCAMAX = SIMP(statut='f',typ='R',defaut=-1.e12,fr="valeur maximale pour le scalaire"),
889                                 SIGMAS = SIMP(statut='f',typ='R',val_min=0,defaut=1,fr="nombre de Prandtl pour le scalaire"),
890                                 VISLS0 = SIMP(statut='o',typ='R',fr="valeur de référence de la viscosité associée au scalaire"),
891                                 IVISLS = SIMP(statut='f',typ='I',defaut=0,into=(0,1),fr="viscosité variable")
892                                 )
893                  );
894
895 DEFI_TSR23 = OPER(nom="DEFI_TSR23",op=2,sd_prod=tsr11,fr="définition de l'inconnue tension Reynolds R23 Rij-eps avec ses paramètres physico numériques",
896                   NUMERIC = FACT(statut='o',max=01,
897                                 fr="propriétés numériques liées à l'inconnue",
898                                     ICONV  = SIMP(statut='o',typ='I',defaut=1,into=(0,1),
899                                                   fr="indicateur de convection"),
900                                     ISTAT  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
901                                                   fr="présence terme instationnaire dans les matrices"),
902                                     IDIFF  = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
903                                                   fr="diffusion"),
904                                     IDIRCL = SIMP(statut='f',typ='I',defaut=1,into=(0,1),
905                                                   fr="décalage du spectre des valeurs propres en l'absence de Dirichlet"),
906                                     SCHEMA_CONVECTIF = BLOC(condition="ICONV == 1", fr ="ordre du schéma convectif",
907                                                             BLENCV = SIMP(statut='o',typ='R',defaut=0,val_min=0,val_max=1,
908                                                                           fr="pourcentage schéma convectif au second ordre"),
909                                                             ISCHCV = SIMP(statut='f',typ='I',defaut=0,into=(0,1),
910                                                                           fr ="type schéma convectif au second ordre 1 : centré")
911                                                             ),
912                                     NITMAX = SIMP(statut='f',typ='I',defaut=10000,val_min=0,
913                                                   fr="nombre max d'itération pour la résolution des systèmes linéaires"),
914                                     EPSILO = SIMP(statut='f',typ='R',defaut=1.e-4,val_min=0,
915                                                   fr="précision relative pour la résolution des systèmes linéaires"),
916                                     IMLIGR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,-1,0,1),
917                                                   fr="type de limitation des gradients"),
918                                     NSWRGR = SIMP(statut='f',typ='I',defaut=100,val_min=0,
919                                                   fr="reconstruction des gradients"),
920                                     NSWRSM = SIMP(statut='f',typ='I',defaut=2,val_min=0,
921                                                   fr="nombre d'itérations pour la reconstruction des seconds membres"),
922                                     CLIMGR = SIMP(statut='f',typ='R',defaut=1.5,val_min=0,
923                                                   fr="facteur de limitation des gradients"),
924                                     EPSRGR = SIMP(statut='f',typ='R',defaut=1.e-5,val_min=0,
925                                                   fr="précision relative pour la reconstruction itérative des gradients")
926                                  ),
927                   RESTITUE = FACT(statut='o',max=01,
928                                   fr = "Description de la grandeur restituée",
929                                   NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur restituée"),
930                                   ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
931                                                 fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
932                                   ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
933                                                 fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
934                                   IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
935                                                 fr = "inventaire des sondes utilisées pour la grandeur scalaire")
936                                   ),
937                   MODELE = FACT(statut='o',max=01,
938                                 fr="modélisation",
939                                 VALREF = SIMP(statut='o',typ='R',fr="valeur de référence (température, masse volumique...)"),
940                                 SCAMIN = SIMP(statut='f',typ='R',defaut=1.e12,fr="valeur minimale pour le scalaire"),
941                                 SCAMAX = SIMP(statut='f',typ='R',defaut=-1.e12,fr="valeur maximale pour le scalaire"),
942                                 SIGMAS = SIMP(statut='f',typ='R',val_min=0,defaut=1,fr="nombre de Prandtl pour le scalaire"),
943                                 VISLS0 = SIMP(statut='o',typ='R',fr="valeur de référence de la viscosité associée au scalaire"),
944                                 IVISLS = SIMP(statut='f',typ='I',defaut=0,into=(0,1),fr="viscosité variable")
945                                 )
946                  );
947
948
949 DEFI_RESTI = OPER(nom="DEFI_RESTI",op=2,sd_prod=resti,fr = "Description de la grandeur restituée",
950                                   NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur restituée"),
951                                   ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
952                                                 fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
953                                   ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
954                                                 fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
955                                   IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
956                                                 fr = "inventaire des sondes utilisées pour la grandeur scalaire")
957                   );
958
959 CALCUL_SATURNE = PROC(nom = "CALCUL_SATURNE",op = 1,
960                       fr = "définition des paramètres généraux pour un calcul Saturne",
961                       docu = "néant",reentrant = 'n',
962         NomsBibliotheque   = NUPL ( max      = '**',
963                                     statut   = 'o',
964                                     elements = (  SIMP (typ='TXM',fr="Identificateur Procedure Bibliotheque"),
965                                                   SIMP (typ='TXM',fr="Identifiant de l'isotope dans la bibliotheque")
966                                                )
967                                   ),
968         ENVELOPPE = FACT(statut='o',max=01,fr = "gestion de l'enveloppe",
969                          IFOENV = SIMP(statut='o',typ='I',defaut=2,into=(0,1,2),position='global',
970                                        fr = "mode de communication enveloppe solveur"),
971                          ENVTOSOLV = BLOC(condition="IFOENV > 0",
972                                           fr = "liaison enveloppe vers solveur",
973                                           IMPEVI = SIMP(statut='o',typ='I',defaut=13,val_min=0,val_max=99,
974                                                         fr = "numéro de fichier enveloppe vers solveur"),
975                                           FICEVI = SIMP(statut='o',typ='TXM',defaut="enveloppe_vers_solveur          ",
976                                                         fr = "nom de fichier enveloppe vers solveur")
977                                          ),
978                          SOLVTOENV = BLOC(condition="IFOENV > 0",
979                                           fr = "liaison solveur vers enveloppe",
980                                           IMPEVO = SIMP(statut='o',typ='I',defaut=14,val_min=0,val_max=99,
981                                                         fr = "numéro de fichier solveur vers enveloppe"),
982                                           FICEVO = SIMP(statut='o',typ='TXM',defaut="solveur_vers_enveloppe          ",
983                                                         fr = "nom de fichier solveur vers enveloppe")
984                                          )
985                         ),
986         FICHIERS_CALCUL = FACT(statut='f',max=01,
987                                fr ="définition des fichiers géométrie, suite, stop",
988                                GEOMETRIE = BLOC(condition="IFOENV == 0",
989                                                 fr = "fichier géométrique (pas d'enveloppe)",
990                                                 IMPGEO = SIMP(statut='o',typ='I',defaut=10,val_min=0,val_max=99,
991                                                               fr = "numéro de fichier géométrique"),
992                                                 FICGEO = SIMP(statut='o',typ='TXM',defaut="geomet",
993                                                               fr = "nom de fichier géométrique")
994                                                ),
995                                SUITE_AMONT = BLOC(condition="ISUITE == 1",
996                                                   fr = "fichier suite amont",
997                                                   IMPAMO = SIMP(statut='o',typ='I',defaut=11,val_min=0,val_max=99,
998                                                               fr = "numéro de fichier suite amont"),
999                                                   FICGEO = SIMP(statut='o',typ='TXM',defaut="suiamo",
1000                                                               fr = "nom de fichier suite amont"),
1001                                                   IFOAMO = SIMP(statut='o',typ='I',defaut=1,into=(0,1),
1002                                                               fr = "format du fichier suite amont, 0 = binaire")
1003                                                  ),
1004                                FICHIER_STOP = FACT(fr = "fichier stop",
1005                                                    IMPSTP = SIMP(statut='o',typ='I',defaut=12,val_min=0,val_max=99,
1006                                                                  fr = "numéro de fichier stop"),
1007                                                    FICSTP = SIMP(statut='o',typ='TXM',defaut="ficstp",
1008                                                                  fr = "nom de fichier stop")
1009                                                   ),
1010                                SUITE_AVAL = FACT(fr = "fichier suite aval",
1011                                                  IMPAVA = SIMP(statut='o',typ='I',defaut=20,val_min=0,val_max=99,
1012                                                              fr = "numéro de fichier suite aval"),
1013                                                  FICAVA = SIMP(statut='o',typ='TXM',defaut="suiamo",
1014                                                              fr = "nom de fichier suite aval"),
1015                                                  IFOAVA = SIMP(statut='o',typ='I',defaut=1,into=(0,1),
1016                                                              fr = "format du fichier suite aval, 0 = binaire")
1017                                                 )
1018                               ),
1019         POST_PROC_ENSIGHT = FACT(statut='f',max=01,
1020                                  fr = "options de post processing par Ensight",
1021                                  IFOENS = SIMP(statut='f',typ='I',defaut=-2,into=(-2,-1,0,1),
1022                                                fr = "option type de fichier et processus générateur"),
1023                                  NTCHR  = SIMP(statut='f',typ='I',defaut=-1,
1024                                                fr = "périodicité de sortie des fichiers Ensight"),
1025                                  ITCHR  = SIMP(statut='f',typ='I',defaut=0,val_min=0,
1026                                                fr = "compteur des sorties des fichiers Ensight"),
1027                                  N3S_ASCII_NOY = BLOC(condition="(IFOENS == -1) and (IFOENV == 0)",
1028                                                       fr = "format Ensight N3S ASCII généré par le noyau",
1029                                                       IMPPST = SIMP(statut='o',typ='I',defaut=21,val_min=0,val_max=99,
1030                                                                     fr = "numéro de fichier Ensight"),
1031                                                       FICPST = SIMP(statut='o',typ='TXM',defaut="dessin",
1032                                                                     fr = "nom de fichier Ensight")
1033                                                       ),
1034                                  P0_NOY =        BLOC(condition="((IFOENS == 0) or (IFOENS == 1)) and (IFOENV == 0)",
1035                                                       fr = "format Ensight P0 généré par le noyau",
1036                                                       IMPEP0 = SIMP(statut='o',typ='I',defaut=22,val_min=0,val_max=99,
1037                                                                     fr = "numéro de fichier Ensight"),
1038                                                       EMPCHR = SIMP(statut='o',typ='TXM',defaut="./",
1039                                                                     fr = "répertoire de fichier Ensight"),
1040                                                       ENTCHR = SIMP(statut='o',typ='TXM',defaut="chr",
1041                                                                     fr = "préfixe nom de fichier Ensight")
1042                                                       )
1043                                 ),
1044         HISTORIQUE_PONCTUEL = FACT(statut='o',max=01,
1045                                    fr = "Sondes historiques",
1046                                    FICHIERS_HISTORIQUES = FACT(statut='f',max=01,
1047                                                                fr = "description des fichiers historiques",
1048                                                                EMPHIS = SIMP(statut='o',typ='TXM',defaut="./",
1049                                                                              fr="répertoire fichiers historiques"),
1050                                                                EXTHIS = SIMP(statut='o',typ='TXM',defaut="hst",
1051                                                                              fr="extension fichiers historiques")
1052                                                                ),
1053                                    NTHIST = SIMP(statut='f',typ='I',defaut=-999,
1054                                                  fr="fréquence de sortie des historiques en pas de temps"),
1055                                    NTHSAV = SIMP(statut='f',typ='I',defaut=-999,
1056                                                  fr="fréquence de sauvegarde des historiques en pas de temps")
1057                                   ),
1058         OPTIONS_TURBULENCE = FACT(statut='o',max=01,
1059                                   fr="modèle de turbulence",
1060                                   ITURB  = SIMP(statut='f',fr="laminaire : 0, k-epsilon :1,Rij-epsilon :2",
1061                                                 typ='I',into=(0,1,2),defaut=1,position='global'),
1062                                   MODTURB = BLOC(condition="ITURB == 1",
1063                                                  fr = "option k-epsilon",
1064                                                  IGRAKE = SIMP(statut='o',typ='I',
1065                                                                fr="prise en compte gravité dans k-epsilon",
1066                                                                into=(0,1),defaut=0),
1067                                                  IDEUCH = SIMP(statut='f',typ='I',
1068                                                                fr="prise en compte k-epsilon deux échelles",
1069                                                                into=(0,1),defaut=1),
1070                                                  IKEKOU = SIMP(statut='f',typ='I',
1071                                                                fr="prise en compte couplage en incréments sur k-epsilon",
1072                                                                into=(0,1),defaut=1)
1073                                                  ),
1074                                   TEMPTURB = BLOC(condition="ITURB == 1",
1075                                                   fr = "option k-epsilon",
1076                                                   ISCALT = SIMP(statut='o',typ=varsca,
1077                                                                 fr=" identificateur inconnue scalaire température ")
1078                                                   )
1079                                   ),
1080         MARCHE_TEMPS = FACT(statut='o',max=01,
1081                             fr = "définition de la marche en temps",
1082                             DTREF  = SIMP(statut='o',fr="pas de temps de référence",
1083                                                         typ='R',val_min=0),
1084                             IDTVAR = SIMP(statut='f',fr="pas de temps constant : 0, variable temps espace : 1, variable temps : 2",
1085                                           typ='I',into=(0,1,2),defaut=0,position='global'),
1086                                   # probleme trace eficas quand un mot cle position global change
1087                             PASVAR = BLOC(condition="IDTVAR != 0",fr="options pas de temps variable",
1088                                           XCFMAX = SIMP(statut='o',fr="nombre de Courant-Fourier cible",
1089                                                         typ='R',defaut=0.5,val_min=0),
1090                                           FMIN =   SIMP(statut='f',fr="rapport min pas calculé DTREF",
1091                                                         typ='R',defaut=0.1,val_min=0),
1092                                           FMAX =   SIMP(statut='f',fr="rapport max pas calculé DTREF",
1093                                                         typ='R',defaut=1000,val_min=0),
1094                                           VARRDT = SIMP(statut='f',fr="variation relative max pas calculé entre deux instants",
1095                                                         typ='R',defaut=0.1,val_min=0)
1096                                           )
1097                             ),
1098         OPTIONS_EQUATIONS = FACT(statut='o',max=01,
1099                                    fr = "propriétés des équations, inconnues principales",
1100                                    IMGR   = SIMP(statut='f',fr="utilisation du multigrille pour la résolution des systèmes linéaires",
1101                                                  typ='I',into=(0,1),defaut=0),
1102                                    IMRGRA = SIMP(statut='f',fr="type de reconstruction des gradients 1 : moindres carrés",
1103                                                  typ='I',into=(0,1),defaut=0),
1104                                    ),
1105         VARIABLES = FACT(statut='o',max=01,
1106                          fr = "Restitution des grandeurs principales",
1107                          NTLIST = SIMP(statut='f',typ='I',defaut=1,val_min=1,val_max='**',
1108                                        fr = "fréquence de sortie (en pas de temps) dans le compte rendu d'éxécution"),
1109                          IWARNI = SIMP(statut='f',typ='I',defaut=2,val_min=0,val_max='**',
1110                                        fr = "niveau de détail des impressions dans le compte rendu d'éxécution"),
1111                          MASVOL1 = FACT(statut='o',max=01,
1112                                          fr = "Description de la grandeur restituée : masse volumique",
1113                                          NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur : masse volumique",
1114                                                        defaut="Masse_vol1"),
1115                                          ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
1116                                                        fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
1117                                          ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
1118                                                        fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
1119                                          IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
1120                                                        fr = "inventaire des sondes utilisées pour la grandeur masse volumique")
1121                                         ),
1122                         TURB_KE = BLOC(condition="ITURB == 1",
1123                                        E_TURB = FACT(statut='o',max=01,
1124                                                      fr = "Description de la grandeur restituée : énergie turbulente",
1125                                                      NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur : energie turbulente",
1126                                                                    defaut="Energie_1"),
1127                                                      ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
1128                                                                    fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
1129                                                      ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
1130                                                                    fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
1131                                                      IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
1132                                                                    fr = "inventaire des sondes utilisées pour la grandeur énergie turbulente")
1133                                                     ),
1134                                        D_TURB = FACT(statut='o',max=01,
1135                                                      fr = "Description de la grandeur restituée : dissipation turbulente",
1136                                                      NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur : dissipation turbulente",
1137                                                                    defaut="Dissipation"),
1138                                                      ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
1139                                                                    fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
1140                                                      ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
1141                                                                    fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
1142                                                      IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
1143                                                                    fr = "inventaire des sondes utilisées pour la grandeur dissipation turbulente")
1144                                                     ),
1145                                        V_TURB = FACT(statut='o',max=01,
1146                                                      fr = "Description de la grandeur restituée : viscosité turbulente",
1147                                                      NOMVAR = SIMP(statut='o',typ='TXM',fr = "nom de la grandeur : viscosité turbulente",
1148                                                                    defaut="Visc_turb1"),
1149                                                      ICHRVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
1150                                                                    fr = "post-traitement (-999 : le code décide ; 0 : non ; 1 : oui)"),
1151                                                      ILISVR = SIMP(statut='f',typ='I',defaut=-999,into=(-999,0,1),
1152                                                                    fr = "impression dans CR exécution (-999 : le code décide ; 0 : non ; 1 : oui)"),
1153                                                      IHISVR = SIMP(statut='f',typ=sonde,min=0,max='**',
1154                                                                    fr = "inventaire des sondes utilisées pour la grandeur viscosité turbulente")
1155                                                     ),
1156                                       )
1157                         ),
1158         GESTION_CALCUL = FACT(statut='o',max=01,
1159                               fr = "calcul suite et numéros de pas de temps début et fin",
1160                               ISUITE = SIMP(statut='o',typ='I',defaut=0,into=(0,1),position='global',
1161                                             fr = "indicateur calcul suite (1 = suite)"),
1162                               NTPABS = SIMP(statut='f',typ='I',defaut=0,
1163                                             fr = "numéro dernier pas de temps calcul précédent (initialisation automatique)"),
1164                               NTMABS = SIMP(statut='o',typ='I',
1165                                             fr = "numéro dernier pas de temps visé (absolu)"),
1166                               TTPABS = SIMP(statut='f',typ='R',defaut=0,
1167                                             fr = "temps simulation au dernier pas de temps précédent (initialisation automatique)")
1168                              ),
1169         CONSTANTES_PHYSIQUES=FACT(statut='o',max=01,
1170                                   fr = "Grandeurs physiques et modélisation",
1171                                   GRAVITE = FACT(statut='o',max=01,
1172                                                  fr = "composantes de la gravité",
1173                                                  GX = SIMP(statut ='o',typ='R',defaut=0, fr = "gravité selon X"),
1174                                                  GY = SIMP(statut ='o',typ='R',defaut=0, fr = "gravité selon Y"),
1175                                                  GZ = SIMP(statut ='o',typ='R',defaut=0, fr = "gravité selon Z")
1176                                                  ),
1177                                   FLUIDE = FACT(statut='o',max=01,
1178                                                 fr = "propriétés du fluide",
1179                                                 RO0 = SIMP(statut ='o',typ='R',val_min=0,fr="masse volumique de référence"),
1180                                                 VISCL0 = SIMP(statut ='o',typ='R',val_min=0,fr="viscosité dynamique de référence"),
1181                                                 P0 = SIMP(statut ='o',typ='R',val_min=0,fr="pression de référence")
1182                                                 ),
1183                                   TURBULENCE = BLOC(condition="ITURB >= 0",
1184                                                     XKAPPA = SIMP(statut ='o',typ='R',defaut=0.42,val_min=0,fr="constante de Karman"),
1185                                                     CSTLOG = SIMP(statut ='f',typ='R',defaut=5.2,val_min=0,fr="constante de la loi log"),
1186                                                     YPLULI = SIMP(statut ='f',typ='R',defaut=2/0.42,val_min=0,fr="valeur limite de y+ pour la sous couche visqueuse"),
1187                                                     CMU = SIMP(statut ='f',typ='R',defaut=0.009,val_min=0,fr="constante C mu"),
1188                                                     CE1 = SIMP(statut ='f',typ='R',defaut=1.44,val_min=0,fr="constante C epsilon 1"),
1189                                                     CE2 = SIMP(statut ='f',typ='R',defaut=1.92,val_min=0,fr="constante C epsilon 2"),
1190                                                     CE3 = SIMP(statut ='f',typ='R',defaut=1.0,val_min=0,fr="constante C epsilon 3"),
1191                                                     SIGMAK = SIMP(statut ='f',typ='R',defaut=1.0,val_min=0,fr="nombre de Prandtl pour k en k-epsilon"),
1192                                                     SIGMAE = SIMP(statut ='f',typ='R',defaut=1.3,val_min=0,fr="nombre de Prandtl pour epsilon en k-epsilon"),
1193                                                     ALMAX = SIMP(statut ='f',typ='R',val_min=0,fr="longueur macroscopique caractéristique du domaine"),
1194                                                     UREF = SIMP(statut ='f',typ='R',val_min=0,fr="vitesse caractéristique de l'écoulement pour l'initialisation du k-epsilon")
1195                                                     )
1196                                   )
1197                                  );
1198
1199 CALC_FONC_INTERP=OPER(nom="CALC_FONC_INTERP",op= 134,sd_prod=fonction,
1200                       docu="U4.32.01-d1",reentrant='f',
1201          regles=(UN_PARMI('VALE_R','LIST_PARA'),),
1202          FONCTION        =SIMP(statut='o',typ=fonction ),
1203          NOM_RESU        =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"),
1204          VALE_R          =SIMP(statut='f',typ='R',max='**'),
1205          LIST_PARA       =SIMP(statut='f',typ=listr8 ),
1206          INTERPOL        =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG","INT") ),
1207          PROL_DROITE     =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("EXCLU","CONSTANT","LINEAIRE","INTERPRE") ),
1208          PROL_GAUCHE     =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("EXCLU","CONSTANT","LINEAIRE","INTERPRE") ),
1209          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
1210          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
1211 )  ;
1212
1213 LIRE_MAILLAGE=OPER(nom="LIRE_MAILLAGE",op=   1,sd_prod=maillage,
1214                    fr="Lecture d'un fichier de maillage",
1215                    ang="Readings of a mesh file",
1216                    docu="U4.21.01-f",reentrant='n',
1217 #
1218          UNITE           =SIMP(statut='f',typ='I',defaut= 20 ),
1219 #
1220          FORMAT          =SIMP(statut='f',typ='TXM',defaut="ASTER",into=("ASTER","MED"),
1221                             fr="Format du fichier : ASTER ou MED.",
1222                             ang="Format of the file : ASTER or MED.",),
1223 #
1224          ABSC_CURV       =FACT(statut='f',min=00,max=01,
1225                TOUT          =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
1226          ),
1227 #
1228          VERI_MAIL       =FACT(statut='d',min=01,max=01,
1229                APLAT         =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
1230          ),
1231 #
1232          b_format_med =BLOC( condition = " ( FORMAT == 'MED' ) " ,
1233                            fr="Informations complémentaires pour la lecture MED.",
1234                            ang="Further information for MED readings.",
1235 #
1236 # Pour une lecture dans un fichier MED, on peut préciser le nom sous lequel
1237 # le maillage y a été enregistré. Par défaut, on va le chercher sous le nom du concept à créer.
1238 #
1239               NOM_MED    = SIMP(statut='f',typ='TXM',
1240                             fr="Nom du maillage dans le fichier MED.",
1241                             ang="Name of the mesh into the MED file.",),
1242 #
1243               INFO_MED   = SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
1244 #
1245                            ) ,
1246 #
1247          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
1248 #
1249 )  ;
1250
1251 DEBUT=MACRO(nom="DEBUT",op=0 ,docu="U4.11.01-f1",repetable='n',
1252            fr="Ouverture d une étude. Allocation des ressources mémoire et disque",
1253           sd_prod=ops.DEBUT,
1254
1255          PAR_LOT         =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM',
1256                            into=("OUI","NON"),defaut="OUI"),
1257          BASE            =FACT(fr="définition des paramètres associés aux bases JEVEUX",
1258                                statut='f',min=01,max=03,
1259            FICHIER         =SIMP(fr="nom de la base",statut='o',typ='TXM',
1260                                  into=('GLOBALE','VOLATILE','LOCALE'),),
1261            TITRE           =SIMP(statut='f',typ='TXM'),
1262            CAS             =SIMP(statut='f',typ='TXM'),
1263            NMAX_ENRE       =SIMP(fr="nombre maximum d enregistrements",statut='f',typ='I'),
1264            LONG_ENRE       =SIMP(fr="longueur des enregistrements",statut='f',typ='I'),
1265            LONG_REPE       =SIMP(fr="longueur du répertoire",statut='f',typ='I'),
1266          ),
1267          IMPRESSION      =FACT(statut='f',min=01,max=03,
1268            FICHIER         =SIMP(statut='o',typ='TXM'),
1269            UNITE           =SIMP(statut='o',typ='I'),
1270          ),
1271          CATALOGUE       =FACT(statut='f',min=01,max=10,
1272            FICHIER         =SIMP(statut='o',typ='TXM'),
1273            TITRE           =SIMP(statut='f',typ='TXM'),
1274            UNITE           =SIMP(statut='f',typ='I'),
1275          ),
1276          CODE            =FACT("définition d un nom pour l'esemble d'une étude",
1277                                statut='f',min=01,max=01,
1278            NOM             =SIMP(statut='o',typ='TXM'),
1279            UNITE           =SIMP(statut='f',typ='I',defaut=15),
1280          ),
1281          DEBUG           =FACT(fr="option de déboggage reservée aux développeurs",
1282                                statut='f',min=01,max=01,
1283            JXVERI          =SIMP(fr="vérifie l intégrité de la segmentation mémoire",
1284                                  statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
1285            JEVEUX          =SIMP(fr="force les déchargement sur disque",
1286                                  statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
1287            ENVIMA          =SIMP(fr="imprime les valeurs définies dans ENVIMA",
1288                                  statut='f',typ='TXM',into=('TEST',)),
1289          ),
1290          MEMOIRE         =FACT(fr="mode de gestion mémoire utilisé",statut='f',min=01,max=01,
1291            GESTION         =SIMP(statut='f',typ='TXM',into=('COMPACTE','RAPIDE'),defaut='RAPIDE'),
1292            TYPE_ALLOCATION =SIMP(statut='f',typ='I',into=(1,2,3,4),defaut=1),
1293            TAILLE          =SIMP(statut='f',typ='I'),
1294            TAILLE_BLOC     =SIMP(statut='f',typ='R',defaut=800.),
1295            PARTITION       =SIMP(statut='f',typ='R'),
1296          ),
1297  );
1298
1299 FIN=PROC(nom="FIN",op=9999,repetable='n',fr="Fin d'une étude",
1300          docu="U4.11.02-f",
1301          RETASSAGE       =SIMP(fr="provoque le retassage de la base GLOBALE",
1302                                statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
1303          PERFORMANCE     =SIMP(fr="provoque l'impression d'un résumé des mesures de temps ",
1304                                statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ),
1305          INFO_RESU       =SIMP(fr="provoque l'impression des informations sur les structures de données",
1306                                statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ),
1307          FICHIER         =SIMP(statut='f',typ='TXM',defaut="MESSAGE"),
1308 )  ;
1309
1310
1311 def macro_matr_asse_ops(self,MODELE,CHAM_MATER,CARA_ELEM,MATR_ASSE,
1312                         SOLVEUR,NUME_DDL,CHARGE,INST,**args):
1313   """
1314      Ecriture de la macro MACRO_MATR_ASSE
1315   """
1316   ier=0
1317   # On met le mot cle NUME_DDL dans une variable locale pour le proteger
1318   numeddl=NUME_DDL
1319   # On importe les definitions des commandes a utiliser dans la macro
1320   # Le nom de la variable doit etre obligatoirement le nom de la commande
1321   CALC_MATR_ELEM=self.get_cmd('CALC_MATR_ELEM')
1322   NUME_DDL      =self.get_cmd('NUME_DDL')
1323   ASSE_MATRICE  =self.get_cmd('ASSE_MATRICE')
1324   # La macro compte pour 1 dans la numerotation des commandes
1325   self.icmd=1
1326
1327   if SOLVEUR:
1328     methode=SOLVEUR['METHODE']
1329     if methode=='LDLT':
1330       if SOLVEUR['RENUM']:
1331          renum=SOLVEUR['RENUM']
1332       else:
1333          renum='RCMK'
1334       if renum not in ('SANS','RCMK'):
1335         ier=ier+1
1336         self.cr.fatal("Avec methode LDLT, RENUM doit etre SANS ou RCMK.")
1337         return ier
1338     elif methode=='MULT_FRONT':
1339       if SOLVEUR['RENUM']:
1340          renum=SOLVEUR['RENUM']
1341       else:
1342          renum='MDA'
1343       if renum not in ('MDA','MD','METIS'):
1344         ier=ier+1
1345         self.cr.fatal("Avec methode MULT_FRONT, RENUM doit etre MDA, MD ou RCMK.")
1346         return ier
1347     elif methode=='GCPC':
1348       if SOLVEUR['RENUM']:
1349          renum=SOLVEUR['RENUM']
1350       else:
1351          renum='SANS'
1352       if renum not in ('SANS','RCMK'):
1353         ier=ier+1
1354         self.cr.fatal("Avec methode GCPC, RENUM doit etre SANS ou RCMK.")
1355         return ier
1356   else:
1357     methode='MULT_FRONT'
1358     renum  ='MDA'
1359
1360   if numeddl in self.sdprods:
1361     # Si le concept numeddl est dans self.sdprods
1362     # il doit etre  produit par la macro
1363     # il faudra donc appeler la commande NUME_DDL
1364     lnume = 1
1365   else:
1366     lnume = 0
1367   lrigel = 0
1368   lmasel = 0
1369
1370   iocc=0
1371   for m in MATR_ASSE:
1372     iocc=iocc+1
1373     option=m['OPTION']
1374     if iocc == 1 and lnume == 1 and option not in ('RIGI_MECA','RIGI_MECA_LAGR',
1375                                                    'RIGI_THER','RIGI_ACOU')      :
1376       ier=ier+1
1377       self.cr.fatal("LA PREMIERE OPTION DOIT ETRE RIGI_MECA OU RIGI_THER OU RIGI_ACOU OU RIGI_MECA_LAGR")
1378       return ier
1379
1380     if m['SIEF_ELGA']!=None and option!='RIGI_GEOM':
1381       ier=ier+1
1382       self.cr.fatal("SIEF_ELGA N EST ADMIS QU AVEC L OPTION RIGI_GEOM")
1383       return ier
1384
1385     if m['MODE_FOURIER']!=None and option not in ('RIGI_MECA','RIGI_FLUI_STRU','RIGI_THER'):
1386       ier=ier+1
1387       self.cr.fatal("MODE_FOURIER N EST ADMIS QU AVEC UNE DES OPTIONS RIGI_MECA RIGI_FLUI_STRU RIGI_THER")
1388       return ier
1389
1390     if (m['THETA']!=None or m['PROPAGATION']!=None) and option!='RIGI_MECA_LAGR':
1391       ier=ier+1
1392       self.cr.fatal("PROPAGATION ET,OU THETA NE SONT ADMIS QU AVEC L OPTION RIGI_MECA_LAGR")
1393       return ier
1394     motscles={'OPTION':option}
1395     if option == 'AMOR_MECA':
1396        if (not lrigel or not lmasel):
1397           ier=ier+1
1398           self.cr.fatal("""POUR CALCULER AMOR_MECA, IL FAUT AVOIR CALCULE
1399                            RIGI_MECA ET MASS_MECA AUPARAVANT (DANS LE MEME APPEL)""")
1400           return ier
1401        if CHAM_MATER != None:
1402           motscles['RIGI_MECA']   =rigel
1403           motscles['MASS_MECA']   =masel
1404     if CHARGE     != None:
1405        if option[0:9] not in ('MASS_THER','RIGI_GEOM','MASS_ID_M'):
1406                            motscles['CHARGE']      =CHARGE
1407     if CHAM_MATER != None: motscles['CHAM_MATER']  =CHAM_MATER
1408     if CARA_ELEM  != None: motscles['CARA_ELEM']   =CARA_ELEM
1409     if INST       != None: motscles['INST']        =INST
1410     if m['SIEF_ELGA']   :  motscles['SIEF_ELGA']   =m['SIEF_ELGA']
1411     if m['MODE_FOURIER']:  motscles['MODE_FOURIER']=m['MODE_FOURIER']
1412     if m['THETA']       :  motscles['THETA']       =m['THETA']
1413     if m['PROPAGATION'] :  motscles['PROPAGATION'] =m['PROPAGATION']
1414     __a=CALC_MATR_ELEM(MODELE=MODELE,**motscles)
1415
1416     if option == 'RIGI_MECA':
1417       rigel  = __a
1418       lrigel = 1
1419     if option == 'MASS_MECA':
1420       masel  = __a
1421       lmasel = 1
1422
1423     if lnume and option in ('RIGI_MECA','RIGI_THER','RIGI_ACOU','RIGI_MECA_LAGR'):
1424       self.DeclareOut('num',numeddl)
1425       # On peut passer des mots cles egaux a None. Ils sont ignores
1426       num=NUME_DDL(MATR_RIGI=__a,METHODE=methode,RENUM=renum)
1427     else:
1428       num=numeddl
1429
1430     self.DeclareOut('mm',m['MATRICE'])
1431     mm=ASSE_MATRICE(MATR_ELEM=__a,NUME_DDL=num)
1432   return ier
1433
1434 def macro_matr_asse_prod(self,NUME_DDL,MATR_ASSE,**args):
1435   if not MATR_ASSE:  raise AsException("Impossible de typer les concepts resultats")
1436   if not NUME_DDL:  raise AsException("Impossible de typer les concepts resultats")
1437   self.type_sdprod(NUME_DDL,nume_ddl)
1438   for m in MATR_ASSE:
1439     opti=m['OPTION']
1440
1441     if opti in ( "RIGI_MECA","RIGI_FLUI_STRU","RIGI_MECA_LAGR" ,
1442        "MASS_MECA" , "MASS_FLUI_STRU" ,"RIGI_GEOM" ,"RIGI_ROTA",
1443        "AMOR_MECA","IMPE_MECA","MASS_ID_MDEP_R","MASS_ID_MDNS_R",
1444        "ONDE_FLUI","MASS_MECA_DIAG" ) : t=matr_asse_depl_r
1445
1446     if opti in ( "RIGI_ACOU","MASS_ACOU","AMOR_ACOU",) : t=matr_asse_pres_c
1447
1448     if opti in ( "RIGI_THER","MASS_THER","RIGI_THER_CONV" ,
1449        "RIGI_THER_CONV_D","MASS_ID_MTEM_R","MASS_ID_MTNS_R",) : t=matr_asse_temp_r
1450
1451     if opti == "RIGI_MECA_HYST"   : t= matr_asse_depl_c
1452
1453     self.type_sdprod(m['MATRICE'],t)
1454   return None
1455
1456 MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops,docu="U4.61.21-c",
1457                       sd_prod=macro_matr_asse_prod,
1458                       fr="Calcul des matrices assemblées (matr_asse_gd) par exemple de rigidité, de masse ",
1459          MODELE          =SIMP(statut='o',typ=modele),
1460          CHAM_MATER      =SIMP(statut='f',typ=cham_mater),
1461          CARA_ELEM       =SIMP(statut='f',typ=cara_elem),
1462          CHARGE          =SIMP(statut='f',typ=(char_meca,char_ther,char_acou)),
1463          INST            =SIMP(statut='f',typ='R'),
1464          NUME_DDL        =SIMP(statut='o',typ=(nume_ddl,CO)),
1465          SOLVEUR         =FACT(statut='d',min=01,max=01,
1466            METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",
1467                                  into=("LDLT","MULT_FRONT","GCPC")),
1468            RENUM           =SIMP(statut='f',typ='TXM',into=("SANS","RCMK","MD","MDA","METIS")),
1469          ),
1470          MATR_ASSE       =FACT(statut='o',min=01,max='**',
1471            MATRICE         =SIMP(statut='o',typ=(matr_asse,CO)),
1472            OPTION          =SIMP(statut='o',typ='TXM',
1473                                  into=("RIGI_MECA","MASS_MECA","MASS_MECA_DIAG",
1474                                        "AMOR_MECA","RIGI_MECA_HYST","IMPE_MECA",
1475                                        "ONDE_FLUI","RIGI_FLUI_STRU","MASS_FLUI_STRU",
1476                                        "RIGI_ROTA","RIGI_GEOM","RIGI_MECA_LAGR",
1477                                        "RIGI_THER","MASS_THER",
1478                                        "RIGI_ACOU","MASS_ACOU","AMOR_ACOU",
1479                                        "MASS_ID_MTEM_R","MASS_ID_MTNS_R","MASS_ID_MDEP_R","MASS_ID_MDNS_R",)
1480                                  ),
1481            SIEF_ELGA       =SIMP(statut='f',typ=cham_elem_sief_r),
1482            MODE_FOURIER    =SIMP(statut='f',typ='I'),
1483            THETA           =SIMP(statut='f',typ=theta_geom),
1484            PROPAGATION     =SIMP(statut='f',typ='R'),
1485          ),
1486          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
1487          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
1488 )  ;
1489
1490
1491 def defi_valeur_prod(self,IS=None,R8=None,TX=None,C8=None,LS=None):
1492   if IS != None  : return entier
1493   if R8 != None  : return reel
1494   if TX != None  : return chaine
1495   if C8 != None  : return complexe
1496   if LS != None  : return liste
1497   raise AsException("type de concept resultat non prevu")
1498
1499 DEFI_VALEUR=MACRO(nom="DEFI_VALEUR",op=-4,sd_prod=defi_valeur_prod,
1500                  fr="Affectation d une valeur à une variable Superviseur",
1501                  docu="U4.31.04-e1",reentrant='f',
1502          regles=(UN_PARMI('IS','R8','TX','C8','LS'),),
1503          IS              =SIMP(statut='f',typ='I',max='**'),
1504          R8              =SIMP(statut='f',typ='R',max='**'),
1505          TX              =SIMP(statut='f',typ='TXM',max='**'),
1506          C8              =SIMP(statut='f',typ='C',max='**'),
1507          LS              =SIMP(statut='f',typ='L',max='**'),
1508 )  ;
1509
1510 def macro2_prod(self,MODELE,**args):
1511    return maillage
1512
1513 MACRO2 =MACRO(nom="MACRO2",op= -5 ,docu="U4.61.21-c",
1514                       sd_prod=macro2_prod,
1515                       fr="Calcul des matrices assemblées (matr_asse_gd) par exemple de rigidité, de masse ",
1516          MODELE          =SIMP(statut='o',typ=modele),
1517 );
1518
1519 def macro3_prod(self,MAILLAGE,MAIL2,**args):
1520    self.type_sdprod(MAIL2,maillage)
1521    if not MAILLAGE:return None
1522    return maillage
1523
1524 MACRO3 =MACRO(nom="MACRO3",op= -5 ,docu="U4.61.21-c",
1525                       sd_prod=macro3_prod,
1526                       fr="Calcul des matrices assemblées (matr_asse_gd) par exemple de rigidité, de masse ",
1527          MAILLAGE          =SIMP(statut='f',typ=maillage),
1528          MAIL2          =SIMP(statut='o',typ=(CO,maillage)),
1529 );
1530
1531 def errmacro_prod(self,MAILLAGE,**args):
1532    #Erreur de programmation
1533    a=1/0
1534    return maillage
1535
1536 ERRMACRO =MACRO(nom="ERRMACRO",op= -5 ,docu="U4.61.21-c",
1537                       sd_prod=errmacro_prod,
1538                       fr="Calcul des matrices assemblées (matr_asse_gd) par exemple de rigidité, de masse ",
1539          MAILLAGE          =SIMP(statut='o',typ=maillage),
1540 );
1541
1542 def erroper_prod(self,MAILLAGE,**args):
1543    #Erreur de programmation
1544    a=1/0
1545    return maillage
1546
1547 ERROPER =OPER(nom="ERROPER",op= -5 ,docu="U4.61.21-c",
1548                       sd_prod=erroper_prod,
1549                       fr="Calcul des matrices assemblées (matr_asse_gd) par exemple de rigidité, de masse ",
1550          MAILLAGE          =SIMP(statut='o',typ=maillage),
1551 );
1552
1553 def errproc_init(self,MAILLAGE,**args):
1554    #Erreur de programmation
1555    a=1/0
1556
1557 ERRPROC =PROC(nom="ERRPROC",op= -5 ,docu="U4.61.21-c",
1558                       op_init=errproc_init,
1559                       fr="Calcul des matrices assemblées (matr_asse_gd) par exemple de rigidité, de masse ",
1560          MAILLAGE          =SIMP(statut='o',typ=maillage),
1561 );
1562
1563 class concept(ASSD):pass
1564
1565 def op1_prod(x,**args):
1566    if x == 0:return concept
1567    if x == 1:return concept
1568    raise AsException("type de concept resultat non prevu")
1569
1570 OP1 = OPER(nom='OP1',op=1,sd_prod=op1_prod,reentrant='f',
1571            a=SIMP(statut='o',typ='I',into=(0,1,2)),
1572            b=SIMP(typ=concept),
1573            ccc=FACT(statut='d',d=SIMP(typ='I'),e=SIMP(typ='I')),
1574            b_1=BLOC(condition="a==0",
1575                     x=SIMP(statut='o',typ='I',into=(0,1)),
1576                     c=FACT(d=SIMP(typ='I'),e=SIMP(typ='I')),
1577                    ),
1578            b_2=BLOC(condition="a==1",
1579                     x=SIMP(statut='o',typ='I',into=(0,1)),
1580                     b_2=BLOC(condition="1",
1581                              cc=FACT(d=SIMP(typ='I'),e=SIMP(typ='I')),
1582                              c=FACT(d=SIMP(typ='I'),e=SIMP(typ='I')),
1583                             ),
1584                    ),
1585           );
1586
1587
1588 def op2_prod(self,x,**args):
1589    if x == 0:return concept
1590    if x == 1:return concept
1591    raise AsException("type de concept resultat non prevu")
1592
1593 OP2 = MACRO(nom='OP2',op=1,sd_prod=op2_prod,reentrant='f',
1594            a=SIMP(statut='o',typ='I',into=(0,1,2)),
1595            b=SIMP(typ=concept),
1596            ccc=FACT(statut='d',d=SIMP(typ='I'),e=SIMP(typ='I')),
1597            b_1=BLOC(condition="a==0",
1598                     x=SIMP(statut='o',typ='I',into=(0,1)),
1599                     c=FACT(d=SIMP(typ='I'),e=SIMP(typ='I')),
1600                    ),
1601            b_2=BLOC(condition="a==1",
1602                     x=SIMP(statut='o',typ='I',into=(0,1)),
1603                     b_2=BLOC(condition="1",
1604                              cc=FACT(d=SIMP(typ='I'),e=SIMP(typ='I')),
1605                              c=FACT(d=SIMP(typ='I'),e=SIMP(typ='I')),
1606                             ),
1607                    ),
1608           );
1609
1610 DETRUIRE=PROC(nom="DETRUIRE",op=-7,docu="U4.14.01-d",
1611             UIinfo={"groupes":("Gestion du travail",)},
1612               fr="Destruction d un concept utilisateur dans la base GLOBALE",
1613              op_init=ops.detruire,
1614             CONCEPT     =FACT(statut='o',min=01,
1615             NOM         =SIMP(statut='o',typ=assd,max='**'),
1616         ),
1617 );
1618
1619 INCLUDE_MATERIAU=MACRO(nom="INCLUDE_MATERIAU",op=-14,docu="U4.43.02-a",
1620             UIinfo={"groupes":("Modélisation",)},
1621                        fr=" ",
1622          sd_prod=ops.INCLUDE_MATERIAU,op_init=ops.INCLUDE_context,fichier_ini=0,
1623          NOM_AFNOR       =SIMP(statut='o',typ='TXM' ),
1624          TYPE_MODELE     =SIMP(statut='o',typ='TXM',into=("REF","PAR") ),
1625          VARIANTE        =SIMP(statut='o',typ='TXM',
1626                                into=("A","B","C","D","E","F","G","H","I","J",
1627                                      "K","L","M","N","O","P","Q","R","S","T","U","V",
1628                                      "W","X","Y","Z",) ),
1629          TYPE_VALE       =SIMP(statut='o',typ='TXM',into=("NOMI","MINI","MAXI") ),
1630          NOM_MATER       =SIMP(statut='o',typ='TXM' ),
1631          UNITE           =SIMP(statut='f',typ='I',defaut= 32 ),
1632          EXTRACTION      =FACT(statut='f',min=1,max=99,
1633            COMPOR          =SIMP(statut='o',typ='TXM' ),
1634            TEMP_EVAL       =SIMP(statut='o',typ='R' ),
1635          ),
1636          UNITE_LONGUEUR  =SIMP(statut='f',typ='TXM',into=("M","MM"),defaut="M" ),
1637          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
1638 )  ;
1639
1640 def defi_fonction_prod(VALE,VALE_PARA,VALE_C,NOEUD_PARA,**args):
1641   if VALE != None  : return fonction
1642   if VALE_C != None  : return fonction_c
1643   if VALE_PARA != None  : return fonction
1644   if NOEUD_PARA != None  : return fonction
1645   raise AsException("type de concept resultat non prevu")
1646
1647 DEFI_FONCTION=OPER(nom="DEFI_FONCTION",op=3,sd_prod=defi_fonction_prod
1648                     ,fr="Définition des valeurs réelles ou complexes d une fonction réelle",
1649                      docu="U4.31.02-g3",reentrant='n',
1650             UIinfo={"groupes":("Fonction",)},
1651          regles=(UN_PARMI('VALE','VALE_C','VALE_PARA','NOEUD_PARA'),),
1652          NOM_PARA        =SIMP(statut='o',typ='TXM',
1653                                into=("DX","DY","DZ","DRX","DRY","DRZ","TEMP",
1654                                      "INST","X","Y","Z","EPSI","META","FREQ","PULS",
1655                                      "AMOR","ABSC","SIGM","HYDR","SECH","PORO","SAT",
1656                                      "PGAZ","PCAP","VITE") ),
1657          NOM_RESU        =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"),
1658          VALE            =SIMP(statut='f',typ='R',min=2,max='**',
1659                                fr ="Fonction réelle définie par une liste de couples (abscisse,ordonnée)"),
1660          VALE_C          =SIMP(statut='f',typ='R',min=2,max='**',
1661                                fr ="Fonction complexe définie par une liste de couples"),
1662          VALE_PARA       =SIMP(statut='f',typ=listr8,
1663                                fr ="Fonction réelle définie par deux concepts de type listr8" ),
1664          b_vale_para     =BLOC(condition = "VALE_PARA != None",
1665            VALE_FONC       =SIMP(statut='o',typ=listr8 ),
1666          ),
1667          NOEUD_PARA      =SIMP(statut='f',typ=no,max='**',
1668                                fr ="Fonction réelle définie par une liste de noeuds et un maillage"),
1669          b_noeud_para    =BLOC(condition = "NOEUD_PARA != None",
1670            MAILLAGE        =SIMP(statut='o',typ=maillage ),
1671            VALE_Y          =SIMP(statut='o',typ='R',max='**'),
1672          ),
1673
1674          INTERPOL        =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
1675          PROL_DROITE     =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
1676          PROL_GAUCHE     =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
1677          VERIF           =SIMP(statut='f',typ='TXM',defaut="CROISSANT",into=("CROISSANT","NON") ),
1678          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
1679          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
1680 )  ;
1681
1682 DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater,
1683                    fr="Définition des paramètres décrivant le comportement d un matériau",
1684                    docu="U4.43.01-g4",reentrant='n',
1685             UIinfo={"groupes":("Modélisation",)},
1686        regles=(EXCLUS('ELAS','ELAS_FO','ELAS_FLUI','ELAS_ISTR','ELAS_ISTR_FO','ELAS_ORTH',
1687                       'ELAS_ORTH_FO','ELAS_COQUE','ELAS_COQUE_FO',
1688                       'SURF_ETAT_SATU','CAM_CLAY_THM','SURF_ETAT_NSAT'),
1689                EXCLUS('THER','THER_FO','THER_ORTH','THER_NL'),
1690                ),
1691 #
1692 # comportement élastique
1693 #
1694            ELAS            =FACT(statut='f',min=0,max=1,
1695              E               =SIMP(statut='o',typ='R',val_min=0.E+0),
1696              NU              =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=0.5E+0),
1697              RHO             =SIMP(statut='f',typ='R'),
1698              ALPHA           =SIMP(statut='f',typ='R'),
1699              AMOR_ALPHA      =SIMP(statut='f',typ='R'),
1700              AMOR_BETA       =SIMP(statut='f',typ='R'),
1701              AMOR_HYST       =SIMP(statut='f',typ='R'),
1702            ),
1703            ELAS_FO         =FACT(statut='f',min=0,max=1,
1704              regles=(PRESENT_PRESENT('ALPHA','TEMP_DEF_ALPHA'),),
1705              E               =SIMP(statut='o',typ=fonction),
1706              NU              =SIMP(statut='o',typ=fonction),
1707              RHO             =SIMP(statut='f',typ='R'),
1708              TEMP_DEF_ALPHA  =SIMP(statut='f',typ='R'),
1709              PRECISION       =SIMP(statut='f',typ='R',defaut= 1.),
1710              ALPHA           =SIMP(statut='f',typ=fonction),
1711              AMOR_ALPHA      =SIMP(statut='f',typ=fonction),
1712              AMOR_BETA       =SIMP(statut='f',typ=fonction),
1713              AMOR_HYST       =SIMP(statut='f',typ=fonction),
1714              K_DESSIC        =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
1715              B_ENDOGE        =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
1716              FONC_DESORP     =SIMP(statut='f',typ=fonction),
1717              VERI_P1         =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP","INST",) ),
1718              VERI_P2         =SIMP(statut='c',typ='TXM',defaut="INST",into=("TEMP","INST",) ),
1719              VERI_P3         =SIMP(statut='c',typ='TXM',defaut="HYDR",into=("HYDR",) ),
1720              VERI_P4         =SIMP(statut='c',typ='TXM',defaut="SECH",into=("SECH",) ),
1721            ),
1722 #
1723 # comportement thermique
1724 #
1725            THER_NL         =FACT(statut='f',min=0,max=1,
1726              regles=(UN_PARMI('BETA','RHO_CP', ),),
1727              LAMBDA          =SIMP(statut='o',typ=fonction),
1728              BETA            =SIMP(statut='f',typ=fonction),
1729              RHO_CP          =SIMP(statut='f',typ=fonction),
1730              VERI_P1         =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ),
1731            ),
1732            THER_HYDR       =FACT(statut='f',min=0,max=1,
1733              LAMBDA          =SIMP(statut='o',typ=fonction),
1734              BETA            =SIMP(statut='f',typ=fonction),
1735              AFFINITE        =SIMP(statut='o',typ=fonction),
1736              CHALHYDR        =SIMP(statut='o',typ='R'),
1737              QSR_K           =SIMP(statut='o',typ='R'),
1738              VERI_P1         =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("HYDR",) ),
1739              VERI_P2         =SIMP(statut='c',typ='TXM',defaut="HYDR",into=("HYDR",) ),
1740            ),
1741            THER            =FACT(statut='f',min=0,max=1,
1742              LAMBDA          =SIMP(statut='o',typ='R'),
1743              RHO_CP          =SIMP(statut='f',typ='R'),
1744            ),
1745            THER_FO         =FACT(statut='f',min=0,max=1,
1746              LAMBDA          =SIMP(statut='o',typ=fonction),
1747              RHO_CP          =SIMP(statut='f',typ=fonction),
1748              VERI_P1         =SIMP(statut='c',typ='TXM',defaut="INST",into=("INST",) ),
1749            ),
1750 )
1751
1752 RETOUR=PROC(nom="RETOUR",op= -2,docu="U4.13.02-e",
1753             UIinfo={"groupes":("Gestion du travail",)},
1754             fr="Retour au fichier de commandes appelant",
1755 ) ;
1756
1757 class LongStr:
1758   def __init__(self,min,max):
1759     self.min=min
1760     self.max=max
1761   def __convert__(self,valeur):
1762     if type(valeur) == types.StringType:
1763       if self.min <= len(valeur) <= self.max:
1764         return valeur
1765     return None
1766   def info(self):
1767     return "Chaine de longueur comprise entre %s et %s" % (self.min,self.max)
1768   __repr__=info
1769   __str__=info
1770
1771 class Tuple:
1772   def __init__(self,ntuple):
1773     self.ntuple=ntuple
1774
1775   def __convert__(self,valeur):
1776     if type(valeur) == types.StringType:
1777       return None
1778     if len(valeur) != self.ntuple:
1779       return None
1780     return valeur
1781
1782   def info(self):
1783     return "Tuple de %s elements" % self.ntuple
1784   __repr__=info
1785   __str__=info
1786
1787 CCAR=PROC(nom="CCAR",op=15,MCS=SIMP(typ=Tuple(3),statut='o',min=1,max=5),
1788                      MCS1=SIMP(typ=(Tuple(2),LongStr(3,8)),statut='o',min=3,max=8),
1789                      MCS2=SIMP(typ=Tuple(2),statut='o',min=3,max=8),
1790                      MCS3=SIMP(typ='R',statut='o',min=3,max=8),
1791          )