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