]> SALOME platform Git repositories - tools/eficas.git/blob - Aster/Cata/cataSTA9/Macro/macr_aspic_calc_ops.py
Salome HOME
CCAR: merge de la version de developpement V1_12a2 dans la branche principale
[tools/eficas.git] / Aster / Cata / cataSTA9 / Macro / macr_aspic_calc_ops.py
1 #@ MODIF macr_aspic_calc_ops Macro  DATE 09/05/2007   AUTEUR REZETTE C.REZETTE 
2 # -*- coding: iso-8859-1 -*-
3 #            CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2004  EDF R&D                  WWW.CODE-ASTER.ORG
6 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
7 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
8 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
9 # (AT YOUR OPTION) ANY LATER VERSION.                                                  
10 #                                                                       
11 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
12 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
13 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
14 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
15 #                                                                       
16 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
17 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
18 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
19 # ======================================================================
20
21
22 def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM,
23                              FOND_FISS_1,FOND_FISS_2,CHARGE,RESU_THER,AFFE_MATERIAU,EQUILIBRE,
24                              PRES_REP,ECHANGE,TORS_CORP,TORS_TUBU,COMP_INCR,COMP_ELAS,
25                              THETA_3D,OPTION,SOLVEUR,CONVERGENCE,NEWTON,RECH_LINEAIRE,
26                              INCREMENT,PAS_AZIMUT,IMPRESSION,INFO,TITRE,BORNES ,**args):          
27   """
28      Ecriture de la macro MACR_ASPIC_CALC
29   """
30   from Accas import _F
31   import types
32   from Utilitai.Utmess     import UTMESS
33   ier=0
34 #------------------------------------------------------------------
35   # On recopie le mot cle affe_materiau pour le proteger
36   mc_AFFE_MATERIAU=AFFE_MATERIAU
37 #------------------------------------------------------------------
38   # On importe les definitions des commandes a utiliser dans la macro
39   AFFE_MODELE      =self.get_cmd('AFFE_MODELE'     )
40   AFFE_MATERIAU    =self.get_cmd('AFFE_MATERIAU'   )
41   AFFE_CARA_ELEM   =self.get_cmd('AFFE_CARA_ELEM'  )
42   AFFE_CHAR_THER_F =self.get_cmd('AFFE_CHAR_THER_F')
43   THER_LINEAIRE    =self.get_cmd('THER_LINEAIRE'   )
44   AFFE_CHAR_MECA   =self.get_cmd('AFFE_CHAR_MECA'  )
45   STAT_NON_LINE    =self.get_cmd('STAT_NON_LINE'   )
46   CALC_ELEM        =self.get_cmd('CALC_ELEM'       )
47   POST_RELEVE_T    =self.get_cmd('POST_RELEVE_T'   )
48   IMPR_TABLE       =self.get_cmd('IMPR_TABLE'      )
49   POST_RCCM        =self.get_cmd('POST_RCCM'       )
50   DEFI_FOND_FISS   =self.get_cmd('DEFI_FOND_FISS'  )
51   CALC_THETA       =self.get_cmd('CALC_THETA'      )
52   CALC_G           =self.get_cmd('CALC_G'          )
53   IMPR_RESU        =self.get_cmd('IMPR_RESU'       )
54
55   # La macro compte pour 1 dans la numerotation des commandes
56   self.set_icmd(1)
57  
58 #------------------------------------------------------------------
59 # data
60   GRMAIL= ('EQUERRE','PEAUINT','EXCORP1','EXCORP2','EXTUBU','LEVRTUBU','LEVRCORP')
61   NOMNOE= ('P1_CORP','P2_CORP','P_TUBU ')
62   IMPRT1= ('NUME_ORDRE','INTITULE','RESU'  ,'NOM_CHAM',
63            'ABSC_CURV' ,'COOR_X'  ,'COOR_Y','COOR_Z'  ,
64            'SIXX'      ,'SIXY'    ,'SIXZ'   )
65   IMPRT2= ('NUME_ORDRE','INTITULE','RESU'  ,'NOM_CHAM',
66            'ABSC_CURV' ,'COOR_X'  ,'COOR_Y','COOR_Z'  ,
67            'SIYY'      ,'SIXY'    ,'SIYZ'   )
68   IMPRT3= ('NUME_ORDRE','INTITULE','RESU'  ,'NOM_CHAM',
69            'ABSC_CURV' ,'COOR_X'  ,'COOR_Y','COOR_Z'  ,
70            'TEMP'   )
71   APPRES= ('PEAUINT ','LEVRTUBU','LEVRCORP')
72 #------------------------------------------------------------------
73 #
74   i=0
75   for mate in mc_AFFE_MATERIAU:
76      if mate['RCCM']=='OUI' :
77         i=i+1
78         MRCCM=mate['MATER']
79   if i>1 :
80      UTMESS('E', "MACR_ASPIC_CALC", "vous affectez plus d un materiau contenant l option rccm")
81 #
82   if (TYPE_MAILLAGE[:4]=='SAIN') and (TUBULURE==None) :
83      UTMESS('E', "MACR_ASPIC_CALC", "pour les piquages sains, TUBULURE doit etre renseigne")
84 #
85   if EQUILIBRE['NOEUD'] not in ('P1_CORP','P2_CORP') :
86      UTMESS('E', "MACR_ASPIC_CALC", "EQUILIBRE[NOEUD] : on attend P1_CORP ou P2_CORP")
87 #
88   if PRES_REP['EFFE_FOND']=='OUI' :
89      if PRES_REP['NOEUD']==None :
90        UTMESS('E', "MACR_ASPIC_CALC", "il faut preciser un noeud pour EFFE_FOND")
91      if PRES_REP['NOEUD'] not in ('P1_CORP','P2_CORP') :
92        UTMESS('E', "MACR_ASPIC_CALC", "PRES_REP[NOEUD] : on attend P1_CORP ou P2_CORP")
93      if PRES_REP['NOEUD']==EQUILIBRE['NOEUD'] :
94        UTMESS('E', "MACR_ASPIC_CALC", "on ne peut appliquer un EFFE_FOND sur PRES_REP[NOEUD] car ce noeud est bloque")
95 #
96   if TORS_CORP!=None :
97      for tors in TORS_CORP :
98          if tors['NOEUD'] not in ('P1_CORP','P2_CORP') :
99             UTMESS('E', "MACR_ASPIC_CALC", "TORS_CORP[NOEUD] : on attend P1_CORP ou P2_CORP")
100          if tors['NOEUD']==EQUILIBRE['NOEUD'] :
101             UTMESS('E', "MACR_ASPIC_CALC", "on ne peut appliquer un torseur sur TORS_CORP[NOEUD] car ce noeud est bloque")
102 #
103   if (TYPE_MAILLAGE[:4]=='SAIN') and (THETA_3D!=None) :
104      UTMESS('E', "MACR_ASPIC_CALC", "si TYPE_MAILLAGE SAIN : mecanique de la rupture impossible")
105 #
106   if OPTION in ('CALC_G_MAX','CALC_G_MAX_LOCAL') :
107     if BORNES==None :
108        UTMESS('E', "MACR_ASPIC_CALC", "mot-clef <BORNES> obligatoire avec cette option")
109 #
110   if IMPRESSION!=None :
111     if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
112       if IMPRESSION['NOM_CHAM']==None :
113        UTMESS('E', "MACR_ASPIC_CALC", "impression de resultats demandée sans preciser le nom des champs cf. la documentation utilisateur : U4.PC.20.")
114 #
115 #------------------------------------------------------------------
116 #
117 #     --- commande AFFE_MODELE ---
118 #
119   if MODELE!=None : self.DeclareOut('modele',MODELE)
120   mcfact=[]
121   if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[-4:]=='_DEB') :
122      mcfact.append(_F(GROUP_MA=GRMAIL,     PHENOMENE='MECANIQUE',MODELISATION='3D'    ))
123   else:
124      mcfact.append(_F(GROUP_MA=GRMAIL[:-2],PHENOMENE='MECANIQUE',MODELISATION='3D'    ))
125   mcfact.append(   _F(GROUP_MA='P1_CORP'  ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
126   mcfact.append(   _F(GROUP_MA='P2_CORP'  ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
127   mcfact.append(   _F(GROUP_MA='P_TUBU'   ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
128   modele = AFFE_MODELE( MAILLAGE = MAILLAGE ,
129                         AFFE     = mcfact    )
130   if ECHANGE!=None :                                # modele thermique
131      __modthe = AFFE_MODELE( MAILLAGE = MAILLAGE ,
132                              AFFE     = _F(GROUP_MA    =GRMAIL[:-2],
133                                            PHENOMENE   ='THERMIQUE',
134                                            MODELISATION='3D' )       )
135 #
136 #     --- commande AFFE_MATERIAU (thermique)---
137 #
138   mcfact=[]
139   for mater in mc_AFFE_MATERIAU :
140      if mater['TOUT']!=None : mcfact.append(_F(TOUT    =mater['TOUT'    ],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
141      else                   : mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
142   __affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
143                           MODELE   = modele ,
144                           AFFE     = mcfact    )
145 #
146 #     --- commande AFFE_CARA_ELEM ---
147 #
148   if CARA_ELEM!=None : self.DeclareOut('carael',CARA_ELEM)
149   carael = AFFE_CARA_ELEM( MODELE   = modele ,
150                            DISCRET  = ( _F( GROUP_MA='P1_CORP' ,
151                                             CARA    ='K_TR_D_N',
152                                             VALE    = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),
153                                         _F( GROUP_MA='P2_CORP' ,
154                                             CARA    ='K_TR_D_N',
155                                             VALE    = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),
156                                         _F( GROUP_MA='P_TUBU' ,
157                                             CARA    ='K_TR_D_N',
158                                             VALE    = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ), ) )
159 #
160 #     --- commande AFFE_CHAR_THER_F ---
161 #         condition aux limites
162 #
163   if ECHANGE!=None :
164      __chther = AFFE_CHAR_THER_F( MODELE = __modthe ,
165                                   ECHANGE=( _F(GROUP_MA='PEAUTUBU',
166                                                COEF_H  =ECHANGE['COEF_H_TUBU'],
167                                                TEMP_EXT=ECHANGE['TEMP_EXT'],),
168                                             _F(GROUP_MA='PEAUCORP',
169                                                COEF_H  =ECHANGE['COEF_H_CORP'],
170                                                TEMP_EXT=ECHANGE['TEMP_EXT'],),))
171 #
172 #     --- calcul thermique ---
173 #
174      if RESU_THER!=None : self.DeclareOut('resuth',RESU_THER)
175      mcsimp={}
176      if INCREMENT['NUME_INST_INIT']!=None : mcsimp['NUME_INIT']=INCREMENT['NUME_INST_INIT']
177      if INCREMENT['NUME_INST_FIN' ]!=None : mcsimp['NUME_FIN' ]=INCREMENT['NUME_INST_FIN' ]
178      mcfact=_F(LIST_INST=INCREMENT['LIST_INST'],**mcsimp)
179      resuth = THER_LINEAIRE( MODELE     = __modthe ,
180                              CHAM_MATER = __affmat ,
181                              TEMP_INIT  = _F(STATIONNAIRE='OUI',),
182                              EXCIT      = _F(CHARGE=__chther,),
183                              INCREMENT  = mcfact, )
184 #
185 #     --- commande AFFE_MATERIAU (mécanique)---
186 #
187   if CHAM_MATER!=None : self.DeclareOut('affmth',CHAM_MATER)
188   indther=0
189   if ECHANGE!=None and RESU_THER!=None : indther=1
190   mcfact=[]
191   mcfac2=[]
192   for mater in mc_AFFE_MATERIAU :
193      if mater['TOUT']!=None : 
194        mcfact.append(_F(TOUT    =mater['TOUT'    ],MATER=mater['MATER'],))
195        if indther==1:
196          mcfac2.append(_F(NOM_VARC='TEMP',TOUT='OUI',
197                         EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF']),)
198      else: 
199        mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],))
200        if indther==1:
201          mcfac2.append(_F(NOM_VARC='TEMP',GROUP_MA=mater['GROUP_MA'],
202                         EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF']),)
203   affmth = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
204                           MODELE   = modele ,
205                           AFFE     = mcfact,
206                           AFFE_VARC= mcfac2,)
207 #
208 #     --- commande AFFE_CHAR_MECA ---
209 #         condition aux limites
210 #
211   if     EQUILIBRE['NOEUD']=='P1_CORP' :
212          NENCAS = EQUILIBRE['NOEUD']
213          AEFOCO = 'EXCORP2'
214          ATORCO = 'P2_CORP'
215          LINTC  = 'L_INT_C2'
216   elif   EQUILIBRE['NOEUD']=='P2_CORP' :
217          NENCAS = EQUILIBRE['NOEUD']
218          AEFOCO = 'EXCORP1'
219          ATORCO = 'P1_CORP'
220          LINTC  = 'L_INT_C1'
221   _conlim = AFFE_CHAR_MECA(  MODELE   = modele ,
222                              LIAISON_ELEM  = ( _F( OPTION    ='3D_POU'  ,
223                                                    GROUP_MA_1='EXCORP1',
224                                                    GROUP_NO_2='P1_CORP'),
225                                                _F( OPTION    ='3D_POU'  ,
226                                                    GROUP_MA_1='EXCORP2' ,
227                                                    GROUP_NO_2='P2_CORP'),
228                                                _F( OPTION    ='3D_POU'  ,
229                                                    GROUP_MA_1='EXTUBU',
230                                                    GROUP_NO_2='P_TUBU'), ),
231                              DDL_IMPO      =   _F( GROUP_NO  = NENCAS  ,
232                                                    DX        = 0.0 ,
233                                                    DY        = 0.0 ,
234                                                    DZ        = 0.0 ,
235                                                    DRX       = 0.0 ,
236                                                    DRY       = 0.0 ,
237                                                    DRZ       = 0.0 , ) )
238 #
239 #     --- commande AFFE_CHAR_MECA ---
240 #         chargement mecanique : pres_rep, effet de fond 
241 #
242   motscles={}
243   if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[-4:]=='_DEB') :
244       motscles['PRES_REP'  ]= _F(GROUP_MA=APPRES,   PRES=PRES_REP['PRES'])
245   else :
246       motscles['PRES_REP'  ]= _F(GROUP_MA=APPRES[0],PRES=PRES_REP['PRES'])
247   if  PRES_REP['EFFE_FOND' ]!=None :
248       motscles['EFFE_FOND' ]=(_F(GROUP_MA    ='EXTUBU  ',
249                                  GROUP_MA_INT='L_INT_TU',
250                                  PRES        =PRES_REP['PRES']),
251                               _F(GROUP_MA    =AEFOCO,
252                                  GROUP_MA_INT=LINTC,
253                                  PRES        =PRES_REP['PRES']))
254   _chpres = AFFE_CHAR_MECA( MODELE   = modele ,**motscles)
255 #
256 #     --- commande AFFE_CHAR_MECA ---
257 #         chargement mecanique : torseur sur le corps
258 #
259   if TORS_CORP!=None:
260      _chtrc = [None]*6
261      i=0
262      for tors in TORS_CORP :
263        mcsimp={}
264        if tors['FX']!=None : mcsimp['FX']=tors['FX']
265        if tors['FY']!=None : mcsimp['FY']=tors['FY']
266        if tors['FZ']!=None : mcsimp['FZ']=tors['FZ']
267        if tors['MX']!=None : mcsimp['MX']=tors['MX']
268        if tors['MY']!=None : mcsimp['MY']=tors['MY']
269        if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
270        mcfact=_F(GROUP_NO=ATORCO,**mcsimp)
271        _chtrc[i] = AFFE_CHAR_MECA(  MODELE       = modele ,
272                                     FORCE_NODALE = mcfact , )
273        i=i+1
274 #
275 #     --- commande AFFE_CHAR_MECA ---
276 #         chargement mecanique : torseur sur la tubulure
277 #
278   if TORS_TUBU!=None:
279      _chtrt = [None]*6
280      i=0
281      for tors in TORS_TUBU :
282        mcsimp={}
283        if tors['FX']!=None : mcsimp['FX']=tors['FX']
284        if tors['FY']!=None : mcsimp['FY']=tors['FY']
285        if tors['FZ']!=None : mcsimp['FZ']=tors['FZ']
286        if tors['MX']!=None : mcsimp['MX']=tors['MX']
287        if tors['MY']!=None : mcsimp['MY']=tors['MY']
288        if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
289        mcfact=_F(GROUP_NO='P_TUBU  ',**mcsimp)
290        _chtrt[i] = AFFE_CHAR_MECA( MODELE       = modele ,
291                                     FORCE_NODALE = mcfact , )
292        i=i+1
293 #
294 #     --- commande STAT_NON_LINE ---
295 #
296   motscles={}
297 #
298   mcfex=[]  # mot clé facteur EXCIT
299   mcfex.append(_F(CHARGE=_conlim,))
300   if PRES_REP['FONC_MULT']!=None :
301      mcfex.append(_F(CHARGE=_chpres,FONC_MULT=PRES_REP['FONC_MULT']))
302   else :
303      mcfex.append(_F(CHARGE=_chpres,))
304   if TORS_CORP!=None:
305      i=0
306      for tors in TORS_CORP :
307        if tors['FONC_MULT']!=None :
308           mcfex.append(_F(CHARGE=_chtrc[i],FONC_MULT=tors['FONC_MULT']))
309        else :
310           mcfex.append(_F(CHARGE=_chtrc[i],))
311        i=i+1
312   if TORS_TUBU!=None:
313      i=0
314      for tors in TORS_TUBU :
315        if tors['FONC_MULT']!=None :
316           mcfex.append(_F(CHARGE=_chtrt[i],FONC_MULT=tors['FONC_MULT']))
317        else :
318           mcfex.append(_F(CHARGE=_chtrt[i],))
319        i=i+1
320   motscles['EXCIT'] =mcfex
321 #
322   mcfci=[]  # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets
323   if COMP_INCR!=None :
324     mcfci.append(_F(TOUT    ='OUI' ,RELATION=COMP_INCR['RELATION']))
325   mcfci.append(  _F(GROUP_MA=NOMNOE,RELATION='ELAS'))
326   motscles['COMP_INCR'] =mcfci
327 #
328   if COMP_ELAS!=None :
329     motscles['COMP_ELAS'] =_F(GROUP_MA=GRMAIL[:-2] ,RELATION=COMP_ELAS['RELATION'])
330 #
331   dSolveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
332   for i in dSolveur.keys():
333       if dSolveur[i]==None : del dSolveur[i]
334 #
335   dConverg=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
336   for i in dConverg.keys():
337       if dConverg[i]==None : del dConverg[i]
338 #
339   dNewton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
340   for i in dNewton.keys():
341       if dNewton[i]==None : del dNewton[i]
342 #
343   dRechlin=RECH_LINEAIRE[0].cree_dict_valeurs(RECH_LINEAIRE[0].mc_liste)
344   for i in dRechlin.keys():
345       if dRechlin[i]==None : del dRechlin[i]
346 #
347   dIncrem=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
348   for i in dIncrem.keys():
349       if dIncrem[i]==None : del dIncrem[i]
350 #
351   if TITRE!=None :
352     motscles['TITRE'        ] =TITRE
353   motscles  ['SOLVEUR'      ] =dSolveur
354   motscles  ['CONVERGENCE'  ] =dConverg
355   motscles  ['NEWTON'       ] =dNewton
356   motscles  ['RECH_LINEAIRE'] =dRechlin
357   motscles  ['INCREMENT'    ] =dIncrem
358   self.DeclareOut('nomres',self.sd)
359   nomres = STAT_NON_LINE( MODELE     = modele ,
360                           CHAM_MATER = affmth ,
361                           CARA_ELEM  = carael ,
362                           INFO       = INFO   , **motscles)
363 #
364   nomres = CALC_ELEM( reuse      = nomres,
365                       RESULTAT   = nomres ,
366                       TOUT_ORDRE = 'OUI'  ,
367                       OPTION     = ('SIEF_ELNO_ELGA','VARI_ELNO_ELGA','EQUI_ELNO_SIGM') ,
368                       INFO       = INFO ,)
369 #
370 #-----------------------------------------------------------------------
371   if TYPE_MAILLAGE[:4]=='SAIN' :
372 #-----------------------------------------------------------------------
373 #
374 #     --- post traitement :  POST_RELEVE_T  --- azimuts droits
375 #
376 #     ----  champs de contrainte SI, SII ET SIII  ----
377 #
378     if TYPE_MAILLAGE=='SAIN_GROS' : NBAZIM = 40
379     else                          : NBAZIM = 48
380     mcfact=[]
381     TYPSOU=None
382     if TUBULURE!=None : TYPSOU = TUBULURE['TYPE']
383     for i in range(1,NBAZIM+1,PAS_AZIMUT):
384       if i<10 : NUME = '0'+str(i)
385       else    : NUME =     str(i)
386       mcsimp={}
387       if TYPSOU=='TYPE_1':
388           mcsimp['REPERE' ]='CYLINDRIQUE',
389           mcsimp['ORIGINE']=( 0.0 , 0.0 , 0.0 )
390           mcsimp['AXE_Z'  ]=( 0.0 , 0.0 , 1.0 )
391           INTITD = 'AZI_'+NUME+'_D-REP_CYL'
392       else:
393           mcsimp['REPERE' ]='LOCAL'
394           mcsimp['VECT_Y' ]=( 0.0 , 0.0 , 1.0 )
395           INTITD = 'AZI_'+NUME+'_D-REP_LOC'
396       mcsimp['INTITULE' ]=INTITD
397       mcsimp['GROUP_NO' ]='LD'+str(i)
398       mcfact.append( _F( RESULTAT   = nomres,
399                          TOUT_ORDRE ='OUI',
400                          NOM_CHAM   ='SIEF_ELNO_ELGA',
401                          PRECISION  =55.E-1,
402                          TOUT_CMP   ='OUI',
403                          OPERATION  ='EXTRACTION',**mcsimp))
404     __noposd=POST_RELEVE_T(ACTION = mcfact,
405                            TITRE  = '-- TRAITEMENT DES AZIMUTS DROITS --')
406 #
407 #     --- IMPR_TABLE dans un repere cylindrique ou local
408 #         des champs de contrainte SI, SII ET SIII
409 #
410     if TYPSOU=='TYPE_1' : nompara=IMPRT1
411     else                : nompara=IMPRT2
412     IMPR_TABLE(TABLE    = __noposd,
413                NOM_PARA = nompara   )
414 #
415 #     ----  Pm, Pm+Pb sur les lignes de depouillement  ----
416 #
417     if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
418       mcfact=[]
419       for i in range(1,NBAZIM+1,PAS_AZIMUT):
420         if i<10 : NUME = '0'+str(i)
421         else    : NUME =     str(i)
422         mcsimp={}
423         mcsimp['INTITULE'   ]='LD'+str(i)
424         mcsimp['GROUP_NO'   ]='LD'+str(i)
425         mcsimp['RESULTAT'   ]=nomres
426         mcsimp['TOUT_ORDRE' ]='OUI'
427         mcsimp['NOM_CHAM'   ]='SIEF_ELNO_ELGA'
428         mcsimp['PRECISION'  ]=55.E-1
429         mcsimp['TOUT_CMP'   ]='OUI'
430         mcsimp['OPERATION'  ]='EXTRACTION'
431         mcfact.append( _F(**mcsimp) )
432       __prelsd=POST_RELEVE_T(ACTION=mcfact)
433       __pmpbsd=POST_RCCM(OPTION         = 'PM_PB',
434                          TYPE_RESU_MECA = 'EVOLUTION',
435                          TYPE_RESU      = 'VALE_MAX',
436                          MATER          = MRCCM,
437                          TRANSITOIRE = _F(TABL_RESU_MECA = __prelsd,),
438                          TITRE       = '-- TRAITEMENT DES AZIMUTS DROITS --',)
439       IMPR_TABLE(TABLE = __pmpbsd, )
440 #
441 #     ----  champ de temperature, si il a ete calcule, sur les lignes de depouillement  ----
442 #
443     if ECHANGE!=None :
444       mcfact=[]
445       for i in range(1,NBAZIM+1,PAS_AZIMUT):
446         if i<10 : NUME = '0'+str(i)
447         else    : NUME =     str(i)
448         mcsimp={}
449         mcsimp['GROUP_NO'   ]='LD'+str(i)
450         mcsimp['RESULTAT'   ]=resuth
451         mcsimp['TOUT_ORDRE' ]='OUI'
452         mcsimp['NOM_CHAM'   ]='TEMP'
453         mcsimp['PRECISION'  ]=55.E-1
454         mcsimp['TOUT_CMP'   ]='OUI'
455         mcsimp['INTITULE'   ]='AZI_'+NUME+'_D'
456         mcsimp['OPERATION'  ]='EXTRACTION'
457         mcfact.append( _F(**mcsimp) )
458       __rthazd=POST_RELEVE_T(ACTION=mcfact)
459       IMPR_TABLE(TABLE = __rthazd, )
460 #
461 #     ----  parametres caracterisant la distribution de temperature,
462 #           si elle a ete calculee, dans l epaisseur du ligament  ----
463 #
464       mcfact=[]
465       for i in range(1,NBAZIM+1,PAS_AZIMUT):
466         if i<10 : NUME = '0'+str(i)
467         else    : NUME =     str(i)
468         mcsimp={}
469         mcsimp['GROUP_NO'   ]='LD'+str(i)
470         mcsimp['RESULTAT'   ]=resuth
471         mcsimp['TOUT_ORDRE' ]='OUI'
472         mcsimp['NOM_CHAM'   ]='TEMP'
473         mcsimp['PRECISION'  ]=55.E-1
474         mcsimp['TOUT_CMP'   ]='OUI'
475         mcsimp['INTITULE'   ]='AZI_'+NUME+'_D'
476         mcsimp['OPERATION'  ]='MOYENNE'
477         mcfact.append( _F(**mcsimp) )
478       __rmothd=POST_RELEVE_T(ACTION=mcfact)
479       IMPR_TABLE(TABLE = __rmothd, )
480 #
481 #-----------------------------------------------------------------------
482 #
483 #     --- post traitement :  POST_RELEVE_T  --- azimuts inclines
484 #     --- champs de contrainte SI, SII ET SIII  ----
485 #
486     mcfact=[]
487     for i in range(1,NBAZIM+1,PAS_AZIMUT):
488       if i<10 : NUME = '0'+str(i)
489       else    : NUME =     str(i)
490       mcsimp={}
491       mcsimp['GROUP_NO'   ]='LI'+str(i)
492       mcsimp['RESULTAT'   ]=nomres
493       mcsimp['TOUT_ORDRE' ]='OUI'
494       mcsimp['NOM_CHAM'   ]='SIEF_ELNO_ELGA'
495       mcsimp['PRECISION'  ]=55.E-1
496       mcsimp['TOUT_CMP'   ]='OUI'
497       mcsimp['REPERE'     ]='LOCAL'
498       mcsimp['VECT_Y'     ]=( 0.0 , 0.0 , 1.0 )
499       mcsimp['INTITULE'   ]='AZI_'+NUME+'_I-REP_LOC'
500       mcsimp['OPERATION'  ]='EXTRACTION'
501       mcfact.append( _F(**mcsimp) )
502     __noposi=POST_RELEVE_T(ACTION=mcfact)
503     IMPR_TABLE(TABLE = __noposi, )
504 #
505 #     ----  Pm, Pm+Pb sur les lignes de depouillement  ----
506 #
507     if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
508       mcfact=[]
509       for i in range(1,NBAZIM+1,PAS_AZIMUT):
510         if i<10 : NUME = '0'+str(i)
511         else    : NUME =     str(i)
512         mcsimp={}
513         mcsimp['INTITULE'   ]='LI'+str(i)
514         mcsimp['GROUP_NO'   ]='LI'+str(i)
515         mcsimp['RESULTAT'   ]=nomres
516         mcsimp['TOUT_ORDRE' ]='OUI'
517         mcsimp['NOM_CHAM'   ]='SIEF_ELNO_ELGA'
518         mcsimp['PRECISION'  ]=55.E-1
519         mcsimp['TOUT_CMP'   ]='OUI'
520         mcsimp['OPERATION'  ]='EXTRACTION'
521         mcfact.append( _F(**mcsimp) )
522       __prelsi=POST_RELEVE_T(ACTION=mcfact)
523       __pmpbsi=POST_RCCM(OPTION         = 'PM_PB',
524                          TYPE_RESU_MECA = 'EVOLUTION',
525                          TYPE_RESU      = 'VALE_MAX',
526                          MATER          = MRCCM,
527                          TRANSITOIRE = _F(TABL_RESU_MECA = __prelsi,),
528                          TITRE       = '-- TRAITEMENT DES AZIMUTS INCLINES --',)
529       IMPR_TABLE(TABLE = __pmpbsi, )
530 #
531 #     ----  champs de temperature,si il a ete calcule, sur les lignes de depouillement  ----
532 #
533     if ECHANGE!=None :
534       mcfact=[]
535       for i in range(1,NBAZIM+1,PAS_AZIMUT):
536         if i<10 : NUME = '0'+str(i)
537         else    : NUME =     str(i)
538         mcsimp={}
539         mcsimp['GROUP_NO'   ]='LI'+str(i)
540         mcsimp['RESULTAT'   ]=resuth
541         mcsimp['TOUT_ORDRE' ]='OUI'
542         mcsimp['NOM_CHAM'   ]='TEMP'
543         mcsimp['PRECISION'  ]=55.E-1
544         mcsimp['TOUT_CMP'   ]='OUI'
545         mcsimp['INTITULE'   ]='AZI_'+NUME+'_I'
546         mcsimp['OPERATION'  ]='EXTRACTION'
547         mcfact.append( _F(**mcsimp) )
548       __rthazi=POST_RELEVE_T(ACTION=mcfact)
549       IMPR_TABLE(TABLE    = __rthazi,
550                  NOM_PARA = IMPRT3 )
551 #
552 #     ----  parametres caracterisant la distribution de temperature,
553 #           si elle a ete calculee, dans l epaisseur du ligament  ----
554 #
555       mcfact=[]
556       for i in range(1,NBAZIM+1,PAS_AZIMUT):
557         if i<10 : NUME = '0'+str(i)
558         else    : NUME =     str(i)
559         mcsimp={}
560         mcsimp['GROUP_NO'   ]='LI'+str(i)
561         mcsimp['RESULTAT'   ]=resuth
562         mcsimp['TOUT_ORDRE' ]='OUI'
563         mcsimp['NOM_CHAM'   ]='TEMP'
564         mcsimp['PRECISION'  ]=55.E-1
565         mcsimp['TOUT_CMP'   ]='OUI'
566         mcsimp['INTITULE'   ]='AZI_'+NUME+'_I'
567         mcsimp['OPERATION'  ]='MOYENNE'
568         mcfact.append( _F(**mcsimp) )
569       __rmothi=POST_RELEVE_T(ACTION=mcfact)
570       IMPR_TABLE(TABLE = __rmothi, )
571 #
572 #-----------------------------------------------------------------------
573   elif TYPE_MAILLAGE[:4]=='FISS' :
574 #-----------------------------------------------------------------------
575 #
576     NOMGRO=[]
577     NOMGRE=[]
578     TABMA8=[]
579     NOMMA =[]
580     if TYPE_MAILLAGE in ('FISS_COUR_DEB','FISS_LONG_DEB','FISS_AXIS_DEB','FISS_COUR_NONDEB') :
581        NBFIS = 1
582        NOMGRO.append(('P_FON1' ,'P_FIS1' ),)
583        NOMGRE.append(('P_FON2' ,'P_FIS2' ),)
584        TABMA8.append('FONDFISS')
585        if TYPE_MAILLAGE in ('FISS_COUR_DEB','FISS_LONG_DEB') : FERME=0
586        else :
587           FERME=1
588           NOMMA.append('MAIL_ORI')
589     elif TYPE_MAILLAGE in ('FISS_LONG_NONDEB','FISS_AXIS_NONDEB') :
590        NBFIS = 2
591        NOMGRO.append(('P_FON1' ,'P_FIS1' ),)
592        NOMGRE.append(('P_FON2' ,'P_FIS2' ),)
593        NOMGRO.append(('PI_FON1','PI_FIS1'),)
594        NOMGRE.append(('PI_FON2','PI_FIS2'),)
595        TABMA8.append('FOND_SUP')
596        TABMA8.append('FOND_INF')
597        if TYPE_MAILLAGE=='FISS_LONG_NONDEB' : FERME=0
598        else :
599           FERME=1
600           NOMMA.append('MA_ORI_S')
601           NOMMA.append('MA_ORI_I')
602 #
603     if ECHANGE!=None:
604 #
605 #     ----  champs de temperature en fond de fissure
606 #           si il a ete calcule, cas 1 fond de fissure  ----
607 #
608       if NBFIS==1:
609         __rthfis=POST_RELEVE_T(ACTION=_F(GROUP_NO   ='FONDFISS',
610                                          RESULTAT   =resuth,
611                                          TOUT_ORDRE ='OUI',
612                                          NOM_CHAM   ='TEMP',
613                                          PRECISION  =55.E-1,
614                                          TOUT_CMP   ='OUI',
615                                          INTITULE   ='FONDFISS',
616                                          OPERATION  ='EXTRACTION',))
617         IMPR_TABLE(TABLE = __rthfis, )
618 #
619 #     ----  champs de temperature en fond de fissure
620 #           si il a ete calcule, cas 2 fonds de fissure  ----
621 #
622       elif NBFIS==2:
623 #
624         __rthfis1=POST_RELEVE_T(ACTION=_F(GROUP_NO   ='FOND_SUP',
625                                           RESULTAT   =resuth,
626                                           TOUT_ORDRE ='OUI',
627                                           NOM_CHAM   ='TEMP',
628                                           PRECISION  =55.E-1,
629                                           TOUT_CMP   ='OUI',
630                                           INTITULE   ='FOND_SUP',
631                                           OPERATION  ='EXTRACTION',))
632         IMPR_TABLE(TABLE = __rthfis1, )
633         __rthfis2=POST_RELEVE_T(ACTION=_F(GROUP_NO   ='FOND_INF',
634                                           RESULTAT   =resuth,
635                                           TOUT_ORDRE ='OUI',
636                                           NOM_CHAM   ='TEMP',
637                                           PRECISION  =55.E-1,
638                                           TOUT_CMP   ='OUI',
639                                           INTITULE   ='FOND_INF',
640                                           OPERATION  ='EXTRACTION',))
641         IMPR_TABLE(TABLE = __rthfis2, )
642 #
643 #        boucle sur le nombre de fond de fissure
644 #
645     fond3d = [None]*2
646     for j in range(NBFIS):
647       if FOND_FISS_1!=None : self.DeclareOut('fond3d_0',FOND_FISS_1)
648       if FOND_FISS_2!=None : self.DeclareOut('fond3d_1',FOND_FISS_2)
649 #
650 #          --- commande DEFI_FOND_FISS ---
651 #
652       motscles={}
653       if not FERME:
654          motscles['FOND_FISS']=_F(GROUP_MA     =TABMA8[j],
655                                   GROUP_NO_ORIG=NOMGRO[j][0],
656                                   GROUP_NO_EXTR=NOMGRE[j][0],)
657          motscles['VECT_GRNO_ORIG']=NOMGRO[j]
658          motscles['VECT_GRNO_EXTR']=NOMGRE[j]
659       else:
660          if TYPE_MAILLAGE.find('AXIS')!=-1  : grnoorig=NOMGRE[j][0]
661 #                  si AXIS, P_FON1 est remplace par P_FON2 pour
662 #                  fermer le fond de fissure
663          else                               : grnoorig=NOMGRO[j][0]
664          motscles['FOND_FERME']=_F(GROUP_MA     =TABMA8[j],
665                                    GROUP_NO_ORIG=grnoorig,
666                                    GROUP_MA_ORIG=NOMMA[j],)
667       fond3d[j]=DEFI_FOND_FISS( MAILLAGE  = MAILLAGE,
668                                 LEVRE_SUP = _F(GROUP_MA='LEVRCORP',),
669                                 LEVRE_INF = _F(GROUP_MA='LEVRTUBU',),**motscles)
670       if THETA_3D!=None:
671         for tht3d in THETA_3D : 
672 #
673 #          --- commande CALC_THETA ---
674 #
675           __theta = CALC_THETA( MODELE    = modele,
676                                 FOND_FISS = fond3d[j],
677                                 THETA_3D  = _F( TOUT    = 'OUI',
678                                                 MODULE  =  1.0 ,
679                                                 R_INF   = tht3d['R_INF'],
680                                                 R_SUP   = tht3d['R_SUP'], ) )
681 #
682 #          --- commande CALC_G (3D GLOBAL) ---
683 #
684           montit = 'G_THETA AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
685           motscles={}
686           if COMP_ELAS!=None:  motscles['COMP_ELAS']=  _F(TOUT     = 'OUI',
687                                                           RELATION = COMP_ELAS['RELATION'],)
688           if COMP_INCR!=None:  motscles['COMP_INCR']=  _F(RELATION = COMP_INCR['RELATION'],)
689           __gtheta = CALC_G ( THETA      = _F(THETA=__theta),
690                               OPTION     = 'CALC_G_GLOB',
691                               RESULTAT   = nomres,
692                               TOUT_ORDRE = 'OUI',
693                               TITRE      = montit,**motscles)
694           IMPR_TABLE(TABLE = __gtheta, )
695 #
696 #           recherche du g max
697 #
698           if OPTION=='CALC_G_MAX' :
699             if BORNES!=None:
700               mcfact=[]
701               for born in BORNES :
702                 mcfact.append(_F( NUME_ORDRE = born['NUME_ORDRE'] ,
703                                   VALE_MIN   = born['VALE_MIN'  ] ,
704                                   VALE_MAX   = born['VALE_MAX'  ]   ) )
705               __gbil = CALC_G( THETA      = _F(THETA=__theta),
706                                RESULTAT   = nomres,
707                                TOUT_ORDRE = 'OUI',
708                                COMP_ELAS  =  _F(TOUT     = 'OUI',
709                                                 RELATION = COMP_ELAS['RELATION'],),
710                                TITRE    = montit,
711                                OPTION   = 'G_MAX_GLOB',
712                                BORNES   = mcfact,)
713               IMPR_TABLE(TABLE = __gbil, )
714 #
715 #          --- commande CALC_G (3D LOCAL) ---
716 #
717           montit = 'G_LOCAL AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
718           motscles={}
719           if COMP_ELAS!=None:  motscles['COMP_ELAS'    ]=  _F(TOUT     = 'OUI',
720                                                               RELATION = COMP_ELAS['RELATION'],)
721           if FERME:
722                                motscles['LISSAGE']=_F(LISSAGE_THETA= 'LAGRANGE',
723                                                       LISSAGE_G= 'LAGRANGE',)
724           __glocal = CALC_G( THETA=_F( FOND_FISS  = fond3d[j],
725                                        R_INF      = tht3d['R_INF'],
726                                        R_SUP      = tht3d['R_SUP'],),
727                              RESULTAT   = nomres,
728                              TOUT_ORDRE = 'OUI',
729                              TITRE      = montit,**motscles)
730           IMPR_TABLE(TABLE = __glocal, )
731 #
732 #          recherche du g max local
733 #
734           if OPTION=='CALC_G_MAX_LOCAL' :
735             if BORNES!=None:
736               motscles={}
737               mcfact=[]
738               if FERME:
739                 motscles['LISSAGE']=_F(LISSAGE_THETA= 'LAGRANGE',
740                                        LISSAGE_G= 'LAGRANGE',)
741               for born in BORNES :
742                 mcfact.append(_F( NUME_ORDRE = born['NUME_ORDRE'] ,
743                                   VALE_MIN   = born['VALE_MIN'  ] ,
744                                   VALE_MAX   = born['VALE_MAX'  ]   ) )
745               motscles['BORNES']=mcfact
746               __glbil = CALC_G( THETA=_F( FOND_FISS  = fond3d[j],
747                                           R_INF      = tht3d['R_INF'],
748                                           R_SUP      = tht3d['R_SUP'],),
749                                 RESULTAT   = nomres,
750                                 TOUT_ORDRE = 'OUI',
751                                 COMP_ELAS  =  _F(TOUT     = 'OUI',
752                                                  RELATION = COMP_ELAS['RELATION'],),
753                                 TITRE      = montit,
754                                 OPTION     = 'G_MAX',**motscles)
755               IMPR_TABLE(TABLE = __glbil, )
756 #
757 #     --- commande IMPR_RESU  ---
758 #
759   if IMPRESSION!=None:
760     mcfresu =[]
761     motscles={}
762     motsclei={}
763     if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
764       ncham   =[]
765       if IMPRESSION['NOM_CHAM']!=None :
766          if type(IMPRESSION['NOM_CHAM']) in (types.TupleType,types.ListType) : ncham= IMPRESSION['NOM_CHAM']
767          else                                                                : ncham=[IMPRESSION['NOM_CHAM'],]
768       if    len(ncham)==3       : motscles['NOM_CHAM'  ]=('DEPL','EQUI_ELNO_SIGM')
769       elif (len(ncham)==1) and (ncham[0][:4]!='TEMP')  :
770                                   motscles['NOM_CHAM'  ]= ncham[0]
771       elif (len(ncham)==2) and (ncham[0][:4]!='TEMP') and (ncham[1][:4]!='TEMP')  :
772                                   motscles['NOM_CHAM'  ]=(ncham[0],ncham[1])
773       elif (len(ncham)==2) and (ncham[0][:4]=='TEMP')  :
774                                   motscles['NOM_CHAM'  ]= ncham[1]
775       elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
776                                   motscles['NOM_CHAM'  ]= ncham[0]
777       if   IMPRESSION['TOUT_ORDRE']!=None :
778                                   motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
779       elif IMPRESSION['NUME_ORDRE']!=None :
780                                   motscles['NUME_ORDRE']= IMPRESSION['NUME_ORDRE']
781       elif IMPRESSION['INST']!=None :
782                                   motscles['INST'      ]= IMPRESSION['INST']
783     if IMPRESSION['FORMAT']=='IDEAS' :
784                                   motsclei['VERSION'   ]= IMPRESSION['VERSION']
785     if IMPRESSION['FORMAT']=='CASTEM' :
786                                   motsclei['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
787     mcfresu.append(_F(MAILLAGE=MAILLAGE,RESULTAT=nomres,**motscles))
788     if ECHANGE!=None:
789       motscles={}
790       if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
791         if    len(ncham)==3       : motscles['NOM_CHAM'  ]=('TEMP',)
792         elif (len(ncham)==1) and (ncham[0][:4]=='TEMP') :
793                                     motscles['NOM_CHAM'  ]= ncham[0]
794         elif (len(ncham)==2) and (ncham[0][:4]=='TEMP') :
795                                     motscles['NOM_CHAM'  ]= ncham[0]
796         elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
797                                     motscles['NOM_CHAM'  ]= ncham[1]
798         if   IMPRESSION['TOUT_ORDRE']!=None :
799                                     motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
800         elif IMPRESSION['NUME_ORDRE']!=None :
801                                     motscles['NUME_ORDRE']= IMPRESSION['NUME_ORDRE']
802         elif IMPRESSION['INST']!=None :
803                                     motscles['INST'      ]= IMPRESSION['INST']
804       if IMPRESSION['FORMAT']=='IDEAS' :
805                                     motsclei['VERSION'   ]= IMPRESSION['VERSION']
806       if IMPRESSION['FORMAT']=='CASTEM' :
807                                     motsclei['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
808       mcfresu.append(_F(RESULTAT=resuth,**motscles))
809     IMPR_RESU( MODELE = modele,
810                RESU   = mcfresu,
811                FORMAT=IMPRESSION['FORMAT'],**motsclei)
812 #
813   return ier