]> SALOME platform Git repositories - tools/eficas.git/blob - Aster/Cata/cataSTA9/Macro/macr_aspic_calc_ops.py
Salome HOME
Modif V6_4_°
[tools/eficas.git] / Aster / Cata / cataSTA9 / Macro / macr_aspic_calc_ops.py
1 #@ MODIF macr_aspic_calc_ops Macro  DATE 24/03/2009   AUTEUR GALENNE E.GALENNE 
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,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','ASPIC0_1')
81 #
82   if (TYPE_MAILLAGE[:4]=='SAIN') and (TUBULURE==None) :
83      UTMESS('E','ASPIC0_2')
84 #
85   if EQUILIBRE['NOEUD'] not in ('P1_CORP','P2_CORP') :
86      UTMESS('E','ASPIC0_3')
87 #
88   if PRES_REP['EFFE_FOND']=='OUI' :
89      if PRES_REP['NOEUD']==None :
90        UTMESS('E','ASPIC0_4')
91      if PRES_REP['NOEUD'] not in ('P1_CORP','P2_CORP') :
92        UTMESS('E','ASPIC0_5')
93      if PRES_REP['NOEUD']==EQUILIBRE['NOEUD'] :
94        UTMESS('E','ASPIC0_6')
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','ASPIC0_7')
100          if tors['NOEUD']==EQUILIBRE['NOEUD'] :
101             UTMESS('E','ASPIC0_8')
102 #
103   if (TYPE_MAILLAGE[:4]=='SAIN') and (THETA_3D!=None) :
104      UTMESS('E','ASPIC0_9')
105 #
106   if OPTION in ('CALC_G_MAX','CALC_G_MAX_LOCAL') :
107     if BORNES==None :
108        UTMESS('E','ASPIC0_10')
109 #
110   if IMPRESSION!=None :
111     if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
112       if IMPRESSION['NOM_CHAM']==None :
113        UTMESS('E','ASPIC0_11')
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']))
141      else                   : mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER']))
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_INST_INIT']=INCREMENT['NUME_INST_INIT']
177      if INCREMENT['NUME_INST_FIN' ]!=None : mcsimp['NUME_INST_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                              ETAT_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' ]=='OUI' :
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 #
295 #     --- commande AFFE_CHAR_MECA ---
296 #         chargement mecanique :  verif contact levres
297 #
298   if TYPE_MAILLAGE[:4]=='FISS' :
299     if TYPE_MAILLAGE in ('FISS_LONG_NONDEB','FISS_AXIS_NONDEB') :
300        mcfond = ('FOND_SUP','FOND_INF')
301     else :
302        mcfond = ('FONDFISS')
303     _chcont = AFFE_CHAR_MECA( MODELE   = modele ,
304                                CONTACT =_F(GROUP_MA_MAIT = 'LEVRCORP',
305                                            GROUP_MA_ESCL = 'LEVRTUBU',
306                                            METHODE='VERIF',
307                                            TOLE_INTERP = -1.e-6,
308                                            GROUP_MA_FOND=mcfond,),)
309
310
311 #
312 #     --- commande STAT_NON_LINE ---
313 #
314   motscles={}
315 #
316   mcfex=[]  # mot clé facteur EXCIT
317   mcfex.append(_F(CHARGE=_conlim,))
318   if PRES_REP['FONC_MULT']!=None :
319      mcfex.append(_F(CHARGE=_chpres,FONC_MULT=PRES_REP['FONC_MULT']))
320   else :
321      mcfex.append(_F(CHARGE=_chpres,))
322   if TORS_CORP!=None:
323      i=0
324      for tors in TORS_CORP :
325        if tors['FONC_MULT']!=None :
326           mcfex.append(_F(CHARGE=_chtrc[i],FONC_MULT=tors['FONC_MULT']))
327        else :
328           mcfex.append(_F(CHARGE=_chtrc[i],))
329        i=i+1
330   if TORS_TUBU!=None:
331      i=0
332      for tors in TORS_TUBU :
333        if tors['FONC_MULT']!=None :
334           mcfex.append(_F(CHARGE=_chtrt[i],FONC_MULT=tors['FONC_MULT']))
335        else :
336           mcfex.append(_F(CHARGE=_chtrt[i],))
337        i=i+1
338   if TYPE_MAILLAGE[:4]=='FISS' :
339      mcfex.append(_F(CHARGE=_chcont,))
340   motscles['EXCIT'] =mcfex
341 #
342   mcfci=[]  # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets
343   if COMP_INCR!=None :
344     mcfci.append(_F(TOUT    ='OUI' ,RELATION=COMP_INCR['RELATION']))
345   mcfci.append(  _F(GROUP_MA=NOMNOE,RELATION='ELAS'))
346   motscles['COMP_INCR'] =mcfci
347 #
348   if COMP_ELAS!=None :
349     motscles['COMP_ELAS'] =_F(GROUP_MA=GRMAIL[:-2] ,RELATION=COMP_ELAS['RELATION'])
350 #
351   dSolveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
352   for i in dSolveur.keys():
353       if dSolveur[i]==None : del dSolveur[i]
354 #
355   dConverg=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
356   for i in dConverg.keys():
357       if dConverg[i]==None : del dConverg[i]
358 #
359   dNewton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
360   for i in dNewton.keys():
361       if dNewton[i]==None : del dNewton[i]
362 #
363   dRechlin=RECH_LINEAIRE[0].cree_dict_valeurs(RECH_LINEAIRE[0].mc_liste)
364   for i in dRechlin.keys():
365       if dRechlin[i]==None : del dRechlin[i]
366 #
367   dIncrem=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
368   for i in dIncrem.keys():
369       if dIncrem[i]==None : del dIncrem[i]
370 #
371   if TITRE!=None :
372     motscles['TITRE'        ] =TITRE
373   motscles  ['SOLVEUR'      ] =dSolveur
374   motscles  ['CONVERGENCE'  ] =dConverg
375   motscles  ['NEWTON'       ] =dNewton
376   motscles  ['RECH_LINEAIRE'] =dRechlin
377   motscles  ['INCREMENT'    ] =dIncrem
378   self.DeclareOut('nomres',self.sd)
379   nomres = STAT_NON_LINE( MODELE     = modele ,
380                           CHAM_MATER = affmth ,
381                           CARA_ELEM  = carael ,
382                           INFO       = INFO   , **motscles)
383 #
384   nomres = CALC_ELEM( reuse      = nomres,
385                       RESULTAT   = nomres ,
386                       TOUT_ORDRE = 'OUI'  ,
387                       OPTION     = ('SIEF_ELNO_ELGA','VARI_ELNO_ELGA','EQUI_ELNO_SIGM') ,
388                       INFO       = INFO ,)
389 #
390 #-----------------------------------------------------------------------
391   if TYPE_MAILLAGE[:4]=='SAIN' :
392 #-----------------------------------------------------------------------
393 #
394 #     --- post traitement :  POST_RELEVE_T  --- azimuts droits
395 #
396 #     ----  champs de contrainte SI, SII ET SIII  ----
397 #
398     if TYPE_MAILLAGE=='SAIN_GROS' : NBAZIM = 40
399     else                          : NBAZIM = 48
400     mcfact=[]
401     TYPSOU=None
402     if TUBULURE!=None : TYPSOU = TUBULURE['TYPE']
403     for i in range(1,NBAZIM+1,PAS_AZIMUT):
404       if i<10 : NUME = '0'+str(i)
405       else    : NUME =     str(i)
406       mcsimp={}
407       if TYPSOU=='TYPE_1':
408           mcsimp['REPERE' ]='CYLINDRIQUE',
409           mcsimp['ORIGINE']=( 0.0 , 0.0 , 0.0 )
410           mcsimp['AXE_Z'  ]=( 0.0 , 0.0 , 1.0 )
411           INTITD = 'AZI_'+NUME+'_D-REP_CYL'
412       else:
413           mcsimp['REPERE' ]='LOCAL'
414           mcsimp['VECT_Y' ]=( 0.0 , 0.0 , 1.0 )
415           INTITD = 'AZI_'+NUME+'_D-REP_LOC'
416       mcsimp['INTITULE' ]=INTITD
417       mcsimp['GROUP_NO' ]='LD'+str(i)
418       mcfact.append( _F( RESULTAT   = nomres,
419                          TOUT_ORDRE ='OUI',
420                          NOM_CHAM   ='SIEF_ELNO_ELGA',
421                          PRECISION  =55.E-1,
422                          TOUT_CMP   ='OUI',
423                          OPERATION  ='EXTRACTION',**mcsimp))
424     __noposd=POST_RELEVE_T(ACTION = mcfact,
425                            TITRE  = '-- TRAITEMENT DES AZIMUTS DROITS --')
426 #
427 #     --- IMPR_TABLE dans un repere cylindrique ou local
428 #         des champs de contrainte SI, SII ET SIII
429 #
430     if TYPSOU=='TYPE_1' : nompara=IMPRT1
431     else                : nompara=IMPRT2
432     IMPR_TABLE(TABLE    = __noposd,
433                NOM_PARA = nompara   )
434 #
435 #     ----  Pm, Pm+Pb sur les lignes de depouillement  ----
436 #
437     if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
438       mcfact=[]
439       for i in range(1,NBAZIM+1,PAS_AZIMUT):
440         if i<10 : NUME = '0'+str(i)
441         else    : NUME =     str(i)
442         mcsimp={}
443         mcsimp['INTITULE'   ]='LD'+str(i)
444         mcsimp['GROUP_NO'   ]='LD'+str(i)
445         mcsimp['RESULTAT'   ]=nomres
446         mcsimp['TOUT_ORDRE' ]='OUI'
447         mcsimp['NOM_CHAM'   ]='SIEF_ELNO_ELGA'
448         mcsimp['PRECISION'  ]=55.E-1
449         mcsimp['TOUT_CMP'   ]='OUI'
450         mcsimp['OPERATION'  ]='EXTRACTION'
451         mcfact.append( _F(**mcsimp) )
452       __prelsd=POST_RELEVE_T(ACTION=mcfact)
453       __pmpbsd=POST_RCCM(OPTION         = 'PM_PB',
454                          TYPE_RESU_MECA = 'EVOLUTION',
455                          TYPE_RESU      = 'VALE_MAX',
456                          MATER          = MRCCM,
457                          TRANSITOIRE = _F(TABL_RESU_MECA = __prelsd,),
458                          TITRE       = '-- TRAITEMENT DES AZIMUTS DROITS --',)
459       IMPR_TABLE(TABLE = __pmpbsd, )
460 #
461 #     ----  champ de temperature, si il a ete calcule, sur les lignes de depouillement  ----
462 #
463     if ECHANGE!=None :
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'  ]='EXTRACTION'
477         mcfact.append( _F(**mcsimp) )
478       __rthazd=POST_RELEVE_T(ACTION=mcfact)
479       IMPR_TABLE(TABLE = __rthazd, )
480 #
481 #     ----  parametres caracterisant la distribution de temperature,
482 #           si elle a ete calculee, dans l epaisseur du ligament  ----
483 #
484       mcfact=[]
485       for i in range(1,NBAZIM+1,PAS_AZIMUT):
486         if i<10 : NUME = '0'+str(i)
487         else    : NUME =     str(i)
488         mcsimp={}
489         mcsimp['GROUP_NO'   ]='LD'+str(i)
490         mcsimp['RESULTAT'   ]=resuth
491         mcsimp['TOUT_ORDRE' ]='OUI'
492         mcsimp['NOM_CHAM'   ]='TEMP'
493         mcsimp['PRECISION'  ]=55.E-1
494         mcsimp['TOUT_CMP'   ]='OUI'
495         mcsimp['INTITULE'   ]='AZI_'+NUME+'_D'
496         mcsimp['OPERATION'  ]='MOYENNE'
497         mcfact.append( _F(**mcsimp) )
498       __rmothd=POST_RELEVE_T(ACTION=mcfact)
499       IMPR_TABLE(TABLE = __rmothd, )
500 #
501 #-----------------------------------------------------------------------
502 #
503 #     --- post traitement :  POST_RELEVE_T  --- azimuts inclines
504 #     --- champs de contrainte SI, SII ET SIII  ----
505 #
506     mcfact=[]
507     for i in range(1,NBAZIM+1,PAS_AZIMUT):
508       if i<10 : NUME = '0'+str(i)
509       else    : NUME =     str(i)
510       mcsimp={}
511       mcsimp['GROUP_NO'   ]='LI'+str(i)
512       mcsimp['RESULTAT'   ]=nomres
513       mcsimp['TOUT_ORDRE' ]='OUI'
514       mcsimp['NOM_CHAM'   ]='SIEF_ELNO_ELGA'
515       mcsimp['PRECISION'  ]=55.E-1
516       mcsimp['TOUT_CMP'   ]='OUI'
517       mcsimp['REPERE'     ]='LOCAL'
518       mcsimp['VECT_Y'     ]=( 0.0 , 0.0 , 1.0 )
519       mcsimp['INTITULE'   ]='AZI_'+NUME+'_I-REP_LOC'
520       mcsimp['OPERATION'  ]='EXTRACTION'
521       mcfact.append( _F(**mcsimp) )
522     __noposi=POST_RELEVE_T(ACTION=mcfact)
523     IMPR_TABLE(TABLE = __noposi, )
524 #
525 #     ----  Pm, Pm+Pb sur les lignes de depouillement  ----
526 #
527     if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
528       mcfact=[]
529       for i in range(1,NBAZIM+1,PAS_AZIMUT):
530         if i<10 : NUME = '0'+str(i)
531         else    : NUME =     str(i)
532         mcsimp={}
533         mcsimp['INTITULE'   ]='LI'+str(i)
534         mcsimp['GROUP_NO'   ]='LI'+str(i)
535         mcsimp['RESULTAT'   ]=nomres
536         mcsimp['TOUT_ORDRE' ]='OUI'
537         mcsimp['NOM_CHAM'   ]='SIEF_ELNO_ELGA'
538         mcsimp['PRECISION'  ]=55.E-1
539         mcsimp['TOUT_CMP'   ]='OUI'
540         mcsimp['OPERATION'  ]='EXTRACTION'
541         mcfact.append( _F(**mcsimp) )
542       __prelsi=POST_RELEVE_T(ACTION=mcfact)
543       __pmpbsi=POST_RCCM(OPTION         = 'PM_PB',
544                          TYPE_RESU_MECA = 'EVOLUTION',
545                          TYPE_RESU      = 'VALE_MAX',
546                          MATER          = MRCCM,
547                          TRANSITOIRE = _F(TABL_RESU_MECA = __prelsi,),
548                          TITRE       = '-- TRAITEMENT DES AZIMUTS INCLINES --',)
549       IMPR_TABLE(TABLE = __pmpbsi, )
550 #
551 #     ----  champs de temperature,si il a ete calcule, sur les lignes de depouillement  ----
552 #
553     if ECHANGE!=None :
554       mcfact=[]
555       for i in range(1,NBAZIM+1,PAS_AZIMUT):
556         if i<10 : NUME = '0'+str(i)
557         else    : NUME =     str(i)
558         mcsimp={}
559         mcsimp['GROUP_NO'   ]='LI'+str(i)
560         mcsimp['RESULTAT'   ]=resuth
561         mcsimp['TOUT_ORDRE' ]='OUI'
562         mcsimp['NOM_CHAM'   ]='TEMP'
563         mcsimp['PRECISION'  ]=55.E-1
564         mcsimp['TOUT_CMP'   ]='OUI'
565         mcsimp['INTITULE'   ]='AZI_'+NUME+'_I'
566         mcsimp['OPERATION'  ]='EXTRACTION'
567         mcfact.append( _F(**mcsimp) )
568       __rthazi=POST_RELEVE_T(ACTION=mcfact)
569       IMPR_TABLE(TABLE    = __rthazi,
570                  NOM_PARA = IMPRT3 )
571 #
572 #     ----  parametres caracterisant la distribution de temperature,
573 #           si elle a ete calculee, dans l epaisseur du ligament  ----
574 #
575       mcfact=[]
576       for i in range(1,NBAZIM+1,PAS_AZIMUT):
577         if i<10 : NUME = '0'+str(i)
578         else    : NUME =     str(i)
579         mcsimp={}
580         mcsimp['GROUP_NO'   ]='LI'+str(i)
581         mcsimp['RESULTAT'   ]=resuth
582         mcsimp['TOUT_ORDRE' ]='OUI'
583         mcsimp['NOM_CHAM'   ]='TEMP'
584         mcsimp['PRECISION'  ]=55.E-1
585         mcsimp['TOUT_CMP'   ]='OUI'
586         mcsimp['INTITULE'   ]='AZI_'+NUME+'_I'
587         mcsimp['OPERATION'  ]='MOYENNE'
588         mcfact.append( _F(**mcsimp) )
589       __rmothi=POST_RELEVE_T(ACTION=mcfact)
590       IMPR_TABLE(TABLE = __rmothi, )
591 #
592 #-----------------------------------------------------------------------
593   elif TYPE_MAILLAGE[:4]=='FISS' :
594 #-----------------------------------------------------------------------
595 #
596     NOMGRO=[]
597     NOMGRE=[]
598     TABMA8=[]
599     NOMMA =[]
600     if TYPE_MAILLAGE in ('FISS_COUR_DEB','FISS_LONG_DEB','FISS_AXIS_DEB','FISS_COUR_NONDEB') :
601        NBFIS = 1
602        NOMGRO.append(('P_FON1' ,'P_FIS1' ),)
603        NOMGRE.append(('P_FON2' ,'P_FIS2' ),)
604        TABMA8.append('FONDFISS')
605        if TYPE_MAILLAGE in ('FISS_COUR_DEB','FISS_LONG_DEB') : FERME=0
606        else :
607           FERME=1
608           NOMMA.append('MAIL_ORI')
609     elif TYPE_MAILLAGE in ('FISS_LONG_NONDEB','FISS_AXIS_NONDEB') :
610        NBFIS = 2
611 #       NOMGRO.append(('P_FON1' ,'P_FIS1' ),)
612 #       NOMGRE.append(('P_FON2' ,'P_FIS2' ),)
613        NOMGRO.append(('PS_FON1','PS_FIS1'),)
614        NOMGRO.append(('PI_FON1','PI_FIS1'),)
615        NOMGRE.append(('PS_FON2','PS_FIS2'),)
616        NOMGRE.append(('PI_FON2','PI_FIS2'),)
617        TABMA8.append('FOND_SUP')
618        TABMA8.append('FOND_INF')
619        if TYPE_MAILLAGE=='FISS_LONG_NONDEB' : FERME=0
620        else :
621           FERME=1
622           NOMMA.append('MA_ORI_S')
623           NOMMA.append('MA_ORI_I')
624 #
625     if ECHANGE!=None:
626 #
627 #     ----  champs de temperature en fond de fissure
628 #           si il a ete calcule, cas 1 fond de fissure  ----
629 #
630       if NBFIS==1:
631         __rthfis=POST_RELEVE_T(ACTION=_F(GROUP_NO   ='FONDFISS',
632                                          RESULTAT   =resuth,
633                                          TOUT_ORDRE ='OUI',
634                                          NOM_CHAM   ='TEMP',
635                                          PRECISION  =55.E-1,
636                                          TOUT_CMP   ='OUI',
637                                          INTITULE   ='FONDFISS',
638                                          OPERATION  ='EXTRACTION',))
639         IMPR_TABLE(TABLE = __rthfis, )
640 #
641 #     ----  champs de temperature en fond de fissure
642 #           si il a ete calcule, cas 2 fonds de fissure  ----
643 #
644       elif NBFIS==2:
645 #
646         __rthfis1=POST_RELEVE_T(ACTION=_F(GROUP_NO   ='FOND_SUP',
647                                           RESULTAT   =resuth,
648                                           TOUT_ORDRE ='OUI',
649                                           NOM_CHAM   ='TEMP',
650                                           PRECISION  =55.E-1,
651                                           TOUT_CMP   ='OUI',
652                                           INTITULE   ='FOND_SUP',
653                                           OPERATION  ='EXTRACTION',))
654         IMPR_TABLE(TABLE = __rthfis1, )
655         __rthfis2=POST_RELEVE_T(ACTION=_F(GROUP_NO   ='FOND_INF',
656                                           RESULTAT   =resuth,
657                                           TOUT_ORDRE ='OUI',
658                                           NOM_CHAM   ='TEMP',
659                                           PRECISION  =55.E-1,
660                                           TOUT_CMP   ='OUI',
661                                           INTITULE   ='FOND_INF',
662                                           OPERATION  ='EXTRACTION',))
663         IMPR_TABLE(TABLE = __rthfis2, )
664 #
665 #   --- post traitement fissure :  interpénétration des lèvres ----
666 #
667
668     if TYPE_MAILLAGE[:4]=='FISS' :
669       __tcont=POST_RELEVE_T( ACTION=_F(  INTITULE = 'Contact levres',
670                                 GROUP_NO = 'LEVRTUBU',
671                                 RESULTAT = nomres,
672                                 TOUT_ORDRE = 'OUI',
673                                 NOM_CHAM = 'VALE_CONT',
674                                 NOM_CMP = 'CONT',
675                                 OPERATION = 'EXTRACTION'))
676       tcont=__tcont.EXTR_TABLE()
677 #      print tcont
678       numo = tcont['NUME_ORDRE'].values()['NUME_ORDRE']
679       numo=dict([(i,0) for i in numo]).keys()
680       nbinst = len(numo)
681       for i in range(1,nbinst+1) :
682         tabi = tcont.NUME_ORDRE==i
683         nbtot = len(tabi)
684         cont_actif=tabi.CONT>0.
685         nb_no_cont = len(cont_actif)
686         if nb_no_cont > 0 :
687            UTMESS('A','ASPIC0_22',vali=[i,nbtot,nb_no_cont])
688
689
690 #
691 #        boucle sur le nombre de fond de fissure
692 #
693     fond3d = [None]*2
694     for j in range(NBFIS):
695       if FOND_FISS_1!=None : self.DeclareOut('fond3d_0',FOND_FISS_1)
696       if FOND_FISS_2!=None : self.DeclareOut('fond3d_1',FOND_FISS_2)
697 #
698 #          --- commande DEFI_FOND_FISS ---
699 #
700       motscles={}
701       if not FERME:
702          motscles['FOND_FISS']=_F(GROUP_MA     =TABMA8[j],
703                                   GROUP_NO_ORIG=NOMGRO[j][0],
704                                   GROUP_NO_EXTR=NOMGRE[j][0],)
705          motscles['VECT_GRNO_ORIG']=NOMGRO[j]
706          motscles['VECT_GRNO_EXTR']=NOMGRE[j]
707       else:
708          if TYPE_MAILLAGE.find('AXIS')!=-1  : grnoorig=NOMGRE[j][0]
709 #                  si AXIS, P_FON1 est remplace par P_FON2 pour
710 #                  fermer le fond de fissure
711          else                               : grnoorig=NOMGRO[j][0]
712          motscles['FOND_FERME']=_F(GROUP_MA     =TABMA8[j],
713                                    GROUP_NO_ORIG=grnoorig,
714                                    GROUP_MA_ORIG=NOMMA[j],)
715       fond3d[j]=DEFI_FOND_FISS( MAILLAGE  = MAILLAGE,
716                                 LEVRE_SUP = _F(GROUP_MA='LEVRCORP',),
717                                 LEVRE_INF = _F(GROUP_MA='LEVRTUBU',),**motscles)
718       if THETA_3D!=None:
719         for tht3d in THETA_3D :
720 #
721 #          --- commande CALC_THETA ---
722 #
723           __theta = CALC_THETA( MODELE    = modele,
724                                 FOND_FISS = fond3d[j],
725                                 THETA_3D  = _F( TOUT    = 'OUI',
726                                                 MODULE  =  1.0 ,
727                                                 R_INF   = tht3d['R_INF'],
728                                                 R_SUP   = tht3d['R_SUP'], ) )
729 #
730 #          --- commande CALC_G (3D GLOBAL) ---
731 #
732           montit = 'G_THETA AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
733           motscles={}
734           if COMP_ELAS!=None:  motscles['COMP_ELAS']=  _F(TOUT     = 'OUI',
735                                                           RELATION = COMP_ELAS['RELATION'],)
736           if COMP_INCR!=None:  motscles['COMP_INCR']=  _F(RELATION = COMP_INCR['RELATION'],)
737           __gtheta = CALC_G ( THETA      = _F(THETA=__theta),
738                               OPTION     = 'CALC_G_GLOB',
739                               RESULTAT   = nomres,
740                               TOUT_ORDRE = 'OUI',
741                               TITRE      = montit,**motscles)
742           IMPR_TABLE(TABLE = __gtheta, )
743 #
744 #           recherche du g max
745 #
746           if OPTION=='CALC_G_MAX' :
747             if BORNES!=None:
748               mcfact=[]
749               for born in BORNES :
750                 mcfact.append(_F( NUME_ORDRE = born['NUME_ORDRE'] ,
751                                   VALE_MIN   = born['VALE_MIN'  ] ,
752                                   VALE_MAX   = born['VALE_MAX'  ]   ) )
753               __gbil = CALC_G( THETA      = _F(THETA=__theta),
754                                RESULTAT   = nomres,
755                                TOUT_ORDRE = 'OUI',
756                                COMP_ELAS  =  _F(TOUT     = 'OUI',
757                                                 RELATION = COMP_ELAS['RELATION'],),
758                                TITRE    = montit,
759                                OPTION   = 'G_MAX_GLOB',
760                                BORNES   = mcfact,)
761               IMPR_TABLE(TABLE = __gbil, )
762 #
763 #          --- commande CALC_G (3D LOCAL) ---
764 #
765           montit = 'G_LOCAL AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
766           motscles={}
767           if COMP_ELAS!=None:  motscles['COMP_ELAS'    ]=  _F(TOUT     = 'OUI',
768                                                               RELATION = COMP_ELAS['RELATION'],)
769           if FERME:
770                                motscles['LISSAGE']=_F(LISSAGE_THETA= 'LAGRANGE',
771                                                       LISSAGE_G= 'LAGRANGE',)
772           __glocal = CALC_G( THETA=_F( FOND_FISS  = fond3d[j],
773                                        R_INF      = tht3d['R_INF'],
774                                        R_SUP      = tht3d['R_SUP'],),
775                              RESULTAT   = nomres,
776                              TOUT_ORDRE = 'OUI',
777                              TITRE      = montit,**motscles)
778           IMPR_TABLE(TABLE = __glocal, )
779 #
780 #          recherche du g max local
781 #
782           if OPTION=='CALC_G_MAX_LOCAL' :
783             if BORNES!=None:
784               motscles={}
785               mcfact=[]
786               if FERME:
787                 motscles['LISSAGE']=_F(LISSAGE_THETA= 'LAGRANGE',
788                                        LISSAGE_G= 'LAGRANGE',)
789               for born in BORNES :
790                 mcfact.append(_F( NUME_ORDRE = born['NUME_ORDRE'] ,
791                                   VALE_MIN   = born['VALE_MIN'  ] ,
792                                   VALE_MAX   = born['VALE_MAX'  ]   ) )
793               motscles['BORNES']=mcfact
794               __glbil = CALC_G( THETA=_F( FOND_FISS  = fond3d[j],
795                                           R_INF      = tht3d['R_INF'],
796                                           R_SUP      = tht3d['R_SUP'],),
797                                 RESULTAT   = nomres,
798                                 TOUT_ORDRE = 'OUI',
799                                 COMP_ELAS  =  _F(TOUT     = 'OUI',
800                                                  RELATION = COMP_ELAS['RELATION'],),
801                                 TITRE      = montit,
802                                 OPTION     = 'G_MAX',**motscles)
803               IMPR_TABLE(TABLE = __glbil, )
804 #
805 #     --- commande IMPR_RESU  ---
806 #
807   if IMPRESSION!=None:
808     mcfresu =[]
809     motscles={}
810     motsclei={}
811     if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
812       ncham   =[]
813       if IMPRESSION['NOM_CHAM']!=None :
814          if type(IMPRESSION['NOM_CHAM']) in (types.TupleType,types.ListType) : ncham= IMPRESSION['NOM_CHAM']
815          else                                                                : ncham=[IMPRESSION['NOM_CHAM'],]
816       if    len(ncham)==3       : motscles['NOM_CHAM'  ]=('DEPL','EQUI_ELNO_SIGM')
817       elif (len(ncham)==1) and (ncham[0][:4]!='TEMP')  :
818                                   motscles['NOM_CHAM'  ]= ncham[0]
819       elif (len(ncham)==2) and (ncham[0][:4]!='TEMP') and (ncham[1][:4]!='TEMP')  :
820                                   motscles['NOM_CHAM'  ]=(ncham[0],ncham[1])
821       elif (len(ncham)==2) and (ncham[0][:4]=='TEMP')  :
822                                   motscles['NOM_CHAM'  ]= ncham[1]
823       elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
824                                   motscles['NOM_CHAM'  ]= ncham[0]
825       if   IMPRESSION['TOUT_ORDRE']!=None :
826                                   motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
827       elif IMPRESSION['NUME_ORDRE']!=None :
828                                   motscles['NUME_ORDRE']= IMPRESSION['NUME_ORDRE']
829       elif IMPRESSION['INST']!=None :
830                                   motscles['INST'      ]= IMPRESSION['INST']
831     if IMPRESSION['FORMAT']=='IDEAS' :
832                                   motsclei['VERSION'   ]= IMPRESSION['VERSION']
833     if IMPRESSION['FORMAT']=='CASTEM' :
834                                   motsclei['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
835     mcfresu.append(_F(MAILLAGE=MAILLAGE,RESULTAT=nomres,**motscles))
836     if ECHANGE!=None:
837       motscles={}
838       if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
839         if    len(ncham)==3       : motscles['NOM_CHAM'  ]=('TEMP',)
840         elif (len(ncham)==1) and (ncham[0][:4]=='TEMP') :
841                                     motscles['NOM_CHAM'  ]= ncham[0]
842         elif (len(ncham)==2) and (ncham[0][:4]=='TEMP') :
843                                     motscles['NOM_CHAM'  ]= ncham[0]
844         elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
845                                     motscles['NOM_CHAM'  ]= ncham[1]
846         if   IMPRESSION['TOUT_ORDRE']!=None :
847                                     motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
848         elif IMPRESSION['NUME_ORDRE']!=None :
849                                     motscles['NUME_ORDRE']= IMPRESSION['NUME_ORDRE']
850         elif IMPRESSION['INST']!=None :
851                                     motscles['INST'      ]= IMPRESSION['INST']
852       if IMPRESSION['FORMAT']=='IDEAS' :
853                                     motsclei['VERSION'   ]= IMPRESSION['VERSION']
854       if IMPRESSION['FORMAT']=='CASTEM' :
855                                     motsclei['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
856       mcfresu.append(_F(RESULTAT=resuth,**motscles))
857     IMPR_RESU( MODELE = modele,
858                RESU   = mcfresu,
859                FORMAT=IMPRESSION['FORMAT'],**motsclei)
860 #
861   return ier