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