1 #@ MODIF macr_aspic_calc_ops Macro DATE 14/04/2008 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.
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.
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 # ======================================================================
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):
28 Ecriture de la macro MACR_ASPIC_CALC
32 from Utilitai.Utmess import UTMESS
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' )
55 # La macro compte pour 1 dans la numerotation des commandes
58 #------------------------------------------------------------------
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' ,
71 APPRES= ('PEAUINT ','LEVRTUBU','LEVRCORP')
72 #------------------------------------------------------------------
75 for mate in mc_AFFE_MATERIAU:
76 if mate['RCCM']=='OUI' :
80 UTMESS('E','ASPIC0_1')
82 if (TYPE_MAILLAGE[:4]=='SAIN') and (TUBULURE==None) :
83 UTMESS('E','ASPIC0_2')
85 if EQUILIBRE['NOEUD'] not in ('P1_CORP','P2_CORP') :
86 UTMESS('E','ASPIC0_3')
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')
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')
103 if (TYPE_MAILLAGE[:4]=='SAIN') and (THETA_3D!=None) :
104 UTMESS('E','ASPIC0_9')
106 if OPTION in ('CALC_G_MAX','CALC_G_MAX_LOCAL') :
108 UTMESS('E','ASPIC0_10')
110 if IMPRESSION!=None :
111 if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
112 if IMPRESSION['NOM_CHAM']==None :
113 UTMESS('E','ASPIC0_11')
115 #------------------------------------------------------------------
117 # --- commande AFFE_MODELE ---
119 if MODELE!=None : self.DeclareOut('modele',MODELE)
121 if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[-4:]=='_DEB') :
122 mcfact.append(_F(GROUP_MA=GRMAIL, PHENOMENE='MECANIQUE',MODELISATION='3D' ))
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 ,
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' ) )
136 # --- commande AFFE_MATERIAU (thermique)---
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 ,
146 # --- commande AFFE_CARA_ELEM ---
148 if CARA_ELEM!=None : self.DeclareOut('carael',CARA_ELEM)
149 carael = AFFE_CARA_ELEM( MODELE = modele ,
150 DISCRET = ( _F( GROUP_MA='P1_CORP' ,
152 VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),
153 _F( GROUP_MA='P2_CORP' ,
155 VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),
156 _F( GROUP_MA='P_TUBU' ,
158 VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ), ) )
160 # --- commande AFFE_CHAR_THER_F ---
161 # condition aux limites
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'],),))
172 # --- calcul thermique ---
174 if RESU_THER!=None : self.DeclareOut('resuth',RESU_THER)
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, )
185 # --- commande AFFE_MATERIAU (mécanique)---
187 if CHAM_MATER!=None : self.DeclareOut('affmth',CHAM_MATER)
189 if ECHANGE!=None and RESU_THER!=None : indther=1
192 for mater in mc_AFFE_MATERIAU :
193 if mater['TOUT']!=None :
194 mcfact.append(_F(TOUT =mater['TOUT' ],MATER=mater['MATER'],))
196 mcfac2.append(_F(NOM_VARC='TEMP',TOUT='OUI',
197 EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF']),)
199 mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],))
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 ,
208 # --- commande AFFE_CHAR_MECA ---
209 # condition aux limites
211 if EQUILIBRE['NOEUD']=='P1_CORP' :
212 NENCAS = EQUILIBRE['NOEUD']
216 elif EQUILIBRE['NOEUD']=='P2_CORP' :
217 NENCAS = EQUILIBRE['NOEUD']
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' ,
230 GROUP_NO_2='P_TUBU'), ),
231 DDL_IMPO = _F( GROUP_NO = NENCAS ,
239 # --- commande AFFE_CHAR_MECA ---
240 # chargement mecanique : pres_rep, effet de fond
243 if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[-4:]=='_DEB') :
244 motscles['PRES_REP' ]= _F(GROUP_MA=APPRES, PRES=PRES_REP['PRES'])
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']),
253 PRES =PRES_REP['PRES']))
254 _chpres = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
256 # --- commande AFFE_CHAR_MECA ---
257 # chargement mecanique : torseur sur le corps
262 for tors in TORS_CORP :
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 , )
275 # --- commande AFFE_CHAR_MECA ---
276 # chargement mecanique : torseur sur la tubulure
281 for tors in TORS_TUBU :
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 , )
295 # --- commande AFFE_CHAR_MECA ---
296 # chargement mecanique : verif contact levres
298 if TYPE_MAILLAGE[:4]=='FISS' :
299 if TYPE_MAILLAGE in ('FISS_LONG_NONDEB','FISS_AXIS_NONDEB') :
300 mcfond = ('FOND_SUP','FOND_INF')
302 mcfond = ('FONDFISS')
303 _chcont = AFFE_CHAR_MECA( MODELE = modele ,
304 CONTACT =_F(GROUP_MA_MAIT = 'LEVRCORP',
305 GROUP_MA_ESCL = 'LEVRTUBU',
307 TOLE_INTERP = -1.e-6,
308 GROUP_MA_FOND=mcfond,),)
312 # --- commande STAT_NON_LINE ---
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']))
321 mcfex.append(_F(CHARGE=_chpres,))
324 for tors in TORS_CORP :
325 if tors['FONC_MULT']!=None :
326 mcfex.append(_F(CHARGE=_chtrc[i],FONC_MULT=tors['FONC_MULT']))
328 mcfex.append(_F(CHARGE=_chtrc[i],))
332 for tors in TORS_TUBU :
333 if tors['FONC_MULT']!=None :
334 mcfex.append(_F(CHARGE=_chtrt[i],FONC_MULT=tors['FONC_MULT']))
336 mcfex.append(_F(CHARGE=_chtrt[i],))
338 if TYPE_MAILLAGE[:4]=='FISS' :
339 mcfex.append(_F(CHARGE=_chcont,))
340 motscles['EXCIT'] =mcfex
342 mcfci=[] # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets
344 mcfci.append(_F(TOUT ='OUI' ,RELATION=COMP_INCR['RELATION']))
345 mcfci.append( _F(GROUP_MA=NOMNOE,RELATION='ELAS'))
346 motscles['COMP_INCR'] =mcfci
349 motscles['COMP_ELAS'] =_F(GROUP_MA=GRMAIL[:-2] ,RELATION=COMP_ELAS['RELATION'])
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]
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]
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]
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]
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]
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 ,
382 INFO = INFO , **motscles)
384 nomres = CALC_ELEM( reuse = nomres,
387 OPTION = ('SIEF_ELNO_ELGA','VARI_ELNO_ELGA','EQUI_ELNO_SIGM') ,
390 #-----------------------------------------------------------------------
391 if TYPE_MAILLAGE[:4]=='SAIN' :
392 #-----------------------------------------------------------------------
394 # --- post traitement : POST_RELEVE_T --- azimuts droits
396 # ---- champs de contrainte SI, SII ET SIII ----
398 if TYPE_MAILLAGE=='SAIN_GROS' : NBAZIM = 40
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)
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'
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,
420 NOM_CHAM ='SIEF_ELNO_ELGA',
423 OPERATION ='EXTRACTION',**mcsimp))
424 __noposd=POST_RELEVE_T(ACTION = mcfact,
425 TITRE = '-- TRAITEMENT DES AZIMUTS DROITS --')
427 # --- IMPR_TABLE dans un repere cylindrique ou local
428 # des champs de contrainte SI, SII ET SIII
430 if TYPSOU=='TYPE_1' : nompara=IMPRT1
431 else : nompara=IMPRT2
432 IMPR_TABLE(TABLE = __noposd,
435 # ---- Pm, Pm+Pb sur les lignes de depouillement ----
437 if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
439 for i in range(1,NBAZIM+1,PAS_AZIMUT):
440 if i<10 : NUME = '0'+str(i)
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',
457 TRANSITOIRE = _F(TABL_RESU_MECA = __prelsd,),
458 TITRE = '-- TRAITEMENT DES AZIMUTS DROITS --',)
459 IMPR_TABLE(TABLE = __pmpbsd, )
461 # ---- champ de temperature, si il a ete calcule, sur les lignes de depouillement ----
465 for i in range(1,NBAZIM+1,PAS_AZIMUT):
466 if i<10 : NUME = '0'+str(i)
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, )
481 # ---- parametres caracterisant la distribution de temperature,
482 # si elle a ete calculee, dans l epaisseur du ligament ----
485 for i in range(1,NBAZIM+1,PAS_AZIMUT):
486 if i<10 : NUME = '0'+str(i)
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, )
501 #-----------------------------------------------------------------------
503 # --- post traitement : POST_RELEVE_T --- azimuts inclines
504 # --- champs de contrainte SI, SII ET SIII ----
507 for i in range(1,NBAZIM+1,PAS_AZIMUT):
508 if i<10 : NUME = '0'+str(i)
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, )
525 # ---- Pm, Pm+Pb sur les lignes de depouillement ----
527 if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
529 for i in range(1,NBAZIM+1,PAS_AZIMUT):
530 if i<10 : NUME = '0'+str(i)
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',
547 TRANSITOIRE = _F(TABL_RESU_MECA = __prelsi,),
548 TITRE = '-- TRAITEMENT DES AZIMUTS INCLINES --',)
549 IMPR_TABLE(TABLE = __pmpbsi, )
551 # ---- champs de temperature,si il a ete calcule, sur les lignes de depouillement ----
555 for i in range(1,NBAZIM+1,PAS_AZIMUT):
556 if i<10 : NUME = '0'+str(i)
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,
572 # ---- parametres caracterisant la distribution de temperature,
573 # si elle a ete calculee, dans l epaisseur du ligament ----
576 for i in range(1,NBAZIM+1,PAS_AZIMUT):
577 if i<10 : NUME = '0'+str(i)
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, )
592 #-----------------------------------------------------------------------
593 elif TYPE_MAILLAGE[:4]=='FISS' :
594 #-----------------------------------------------------------------------
600 if TYPE_MAILLAGE in ('FISS_COUR_DEB','FISS_LONG_DEB','FISS_AXIS_DEB','FISS_COUR_NONDEB') :
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
608 NOMMA.append('MAIL_ORI')
609 elif TYPE_MAILLAGE in ('FISS_LONG_NONDEB','FISS_AXIS_NONDEB') :
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
622 NOMMA.append('MA_ORI_S')
623 NOMMA.append('MA_ORI_I')
627 # ---- champs de temperature en fond de fissure
628 # si il a ete calcule, cas 1 fond de fissure ----
631 __rthfis=POST_RELEVE_T(ACTION=_F(GROUP_NO ='FONDFISS',
637 INTITULE ='FONDFISS',
638 OPERATION ='EXTRACTION',))
639 IMPR_TABLE(TABLE = __rthfis, )
641 # ---- champs de temperature en fond de fissure
642 # si il a ete calcule, cas 2 fonds de fissure ----
646 __rthfis1=POST_RELEVE_T(ACTION=_F(GROUP_NO ='FOND_SUP',
652 INTITULE ='FOND_SUP',
653 OPERATION ='EXTRACTION',))
654 IMPR_TABLE(TABLE = __rthfis1, )
655 __rthfis2=POST_RELEVE_T(ACTION=_F(GROUP_NO ='FOND_INF',
661 INTITULE ='FOND_INF',
662 OPERATION ='EXTRACTION',))
663 IMPR_TABLE(TABLE = __rthfis2, )
665 # --- post traitement fissure : interpénétration des lèvres ----
668 if TYPE_MAILLAGE[:4]=='FISS' :
669 __tcont=POST_RELEVE_T( ACTION=_F( INTITULE = 'Contact levres',
670 GROUP_NO = 'LEVRTUBU',
673 NOM_CHAM = 'VALE_CONT',
675 OPERATION = 'EXTRACTION'))
676 tcont=__tcont.EXTR_TABLE()
678 numo = tcont['NUME_ORDRE'].values()['NUME_ORDRE']
679 numo=dict([(i,0) for i in numo]).keys()
681 for i in range(1,nbinst+1) :
682 tabi = tcont.NUME_ORDRE==i
684 cont_actif=tabi.CONT>0.
685 nb_no_cont = len(cont_actif)
687 UTMESS('A','ASPIC0_22',vali=[i,nbtot,nb_no_cont])
691 # boucle sur le nombre de fond de fissure
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)
698 # --- commande DEFI_FOND_FISS ---
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]
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)
719 for tht3d in THETA_3D :
721 # --- commande CALC_THETA ---
723 __theta = CALC_THETA( MODELE = modele,
724 FOND_FISS = fond3d[j],
725 THETA_3D = _F( TOUT = 'OUI',
727 R_INF = tht3d['R_INF'],
728 R_SUP = tht3d['R_SUP'], ) )
730 # --- commande CALC_G (3D GLOBAL) ---
732 montit = 'G_THETA AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
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',
741 TITRE = montit,**motscles)
742 IMPR_TABLE(TABLE = __gtheta, )
746 if OPTION=='CALC_G_MAX' :
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),
756 COMP_ELAS = _F(TOUT = 'OUI',
757 RELATION = COMP_ELAS['RELATION'],),
759 OPTION = 'G_MAX_GLOB',
761 IMPR_TABLE(TABLE = __gbil, )
763 # --- commande CALC_G (3D LOCAL) ---
765 montit = 'G_LOCAL AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
767 if COMP_ELAS!=None: motscles['COMP_ELAS' ]= _F(TOUT = 'OUI',
768 RELATION = COMP_ELAS['RELATION'],)
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'],),
777 TITRE = montit,**motscles)
778 IMPR_TABLE(TABLE = __glocal, )
780 # recherche du g max local
782 if OPTION=='CALC_G_MAX_LOCAL' :
787 motscles['LISSAGE']=_F(LISSAGE_THETA= 'LAGRANGE',
788 LISSAGE_G= 'LAGRANGE',)
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'],),
799 COMP_ELAS = _F(TOUT = 'OUI',
800 RELATION = COMP_ELAS['RELATION'],),
802 OPTION = 'G_MAX',**motscles)
803 IMPR_TABLE(TABLE = __glbil, )
805 # --- commande IMPR_RESU ---
811 if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
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))
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,
859 FORMAT=IMPRESSION['FORMAT'],**motsclei)