1 #@ MODIF macr_aspic_calc_ops Macro DATE 09/05/2007 AUTEUR REZETTE C.REZETTE
2 # -*- coding: iso-8859-1 -*-
3 # CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
6 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
7 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
8 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
9 # (AT YOUR OPTION) ANY LATER VERSION.
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', "MACR_ASPIC_CALC", "vous affectez plus d un materiau contenant l option rccm")
82 if (TYPE_MAILLAGE[:4]=='SAIN') and (TUBULURE==None) :
83 UTMESS('E', "MACR_ASPIC_CALC", "pour les piquages sains, TUBULURE doit etre renseigne")
85 if EQUILIBRE['NOEUD'] not in ('P1_CORP','P2_CORP') :
86 UTMESS('E', "MACR_ASPIC_CALC", "EQUILIBRE[NOEUD] : on attend P1_CORP ou P2_CORP")
88 if PRES_REP['EFFE_FOND']=='OUI' :
89 if PRES_REP['NOEUD']==None :
90 UTMESS('E', "MACR_ASPIC_CALC", "il faut preciser un noeud pour EFFE_FOND")
91 if PRES_REP['NOEUD'] not in ('P1_CORP','P2_CORP') :
92 UTMESS('E', "MACR_ASPIC_CALC", "PRES_REP[NOEUD] : on attend P1_CORP ou P2_CORP")
93 if PRES_REP['NOEUD']==EQUILIBRE['NOEUD'] :
94 UTMESS('E', "MACR_ASPIC_CALC", "on ne peut appliquer un EFFE_FOND sur PRES_REP[NOEUD] car ce noeud est bloque")
97 for tors in TORS_CORP :
98 if tors['NOEUD'] not in ('P1_CORP','P2_CORP') :
99 UTMESS('E', "MACR_ASPIC_CALC", "TORS_CORP[NOEUD] : on attend P1_CORP ou P2_CORP")
100 if tors['NOEUD']==EQUILIBRE['NOEUD'] :
101 UTMESS('E', "MACR_ASPIC_CALC", "on ne peut appliquer un torseur sur TORS_CORP[NOEUD] car ce noeud est bloque")
103 if (TYPE_MAILLAGE[:4]=='SAIN') and (THETA_3D!=None) :
104 UTMESS('E', "MACR_ASPIC_CALC", "si TYPE_MAILLAGE SAIN : mecanique de la rupture impossible")
106 if OPTION in ('CALC_G_MAX','CALC_G_MAX_LOCAL') :
108 UTMESS('E', "MACR_ASPIC_CALC", "mot-clef <BORNES> obligatoire avec cette option")
110 if IMPRESSION!=None :
111 if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
112 if IMPRESSION['NOM_CHAM']==None :
113 UTMESS('E', "MACR_ASPIC_CALC", "impression de resultats demandée sans preciser le nom des champs cf. la documentation utilisateur : U4.PC.20.")
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'],TEMP_REF=mater['TEMP_REF']))
141 else : mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
142 __affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
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_INIT']=INCREMENT['NUME_INST_INIT']
177 if INCREMENT['NUME_INST_FIN' ]!=None : mcsimp['NUME_FIN' ]=INCREMENT['NUME_INST_FIN' ]
178 mcfact=_F(LIST_INST=INCREMENT['LIST_INST'],**mcsimp)
179 resuth = THER_LINEAIRE( MODELE = __modthe ,
180 CHAM_MATER = __affmat ,
181 TEMP_INIT = _F(STATIONNAIRE='OUI',),
182 EXCIT = _F(CHARGE=__chther,),
183 INCREMENT = mcfact, )
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' ]!=None :
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 , )
294 # --- commande STAT_NON_LINE ---
298 mcfex=[] # mot clé facteur EXCIT
299 mcfex.append(_F(CHARGE=_conlim,))
300 if PRES_REP['FONC_MULT']!=None :
301 mcfex.append(_F(CHARGE=_chpres,FONC_MULT=PRES_REP['FONC_MULT']))
303 mcfex.append(_F(CHARGE=_chpres,))
306 for tors in TORS_CORP :
307 if tors['FONC_MULT']!=None :
308 mcfex.append(_F(CHARGE=_chtrc[i],FONC_MULT=tors['FONC_MULT']))
310 mcfex.append(_F(CHARGE=_chtrc[i],))
314 for tors in TORS_TUBU :
315 if tors['FONC_MULT']!=None :
316 mcfex.append(_F(CHARGE=_chtrt[i],FONC_MULT=tors['FONC_MULT']))
318 mcfex.append(_F(CHARGE=_chtrt[i],))
320 motscles['EXCIT'] =mcfex
322 mcfci=[] # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets
324 mcfci.append(_F(TOUT ='OUI' ,RELATION=COMP_INCR['RELATION']))
325 mcfci.append( _F(GROUP_MA=NOMNOE,RELATION='ELAS'))
326 motscles['COMP_INCR'] =mcfci
329 motscles['COMP_ELAS'] =_F(GROUP_MA=GRMAIL[:-2] ,RELATION=COMP_ELAS['RELATION'])
331 dSolveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
332 for i in dSolveur.keys():
333 if dSolveur[i]==None : del dSolveur[i]
335 dConverg=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
336 for i in dConverg.keys():
337 if dConverg[i]==None : del dConverg[i]
339 dNewton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
340 for i in dNewton.keys():
341 if dNewton[i]==None : del dNewton[i]
343 dRechlin=RECH_LINEAIRE[0].cree_dict_valeurs(RECH_LINEAIRE[0].mc_liste)
344 for i in dRechlin.keys():
345 if dRechlin[i]==None : del dRechlin[i]
347 dIncrem=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
348 for i in dIncrem.keys():
349 if dIncrem[i]==None : del dIncrem[i]
352 motscles['TITRE' ] =TITRE
353 motscles ['SOLVEUR' ] =dSolveur
354 motscles ['CONVERGENCE' ] =dConverg
355 motscles ['NEWTON' ] =dNewton
356 motscles ['RECH_LINEAIRE'] =dRechlin
357 motscles ['INCREMENT' ] =dIncrem
358 self.DeclareOut('nomres',self.sd)
359 nomres = STAT_NON_LINE( MODELE = modele ,
360 CHAM_MATER = affmth ,
362 INFO = INFO , **motscles)
364 nomres = CALC_ELEM( reuse = nomres,
367 OPTION = ('SIEF_ELNO_ELGA','VARI_ELNO_ELGA','EQUI_ELNO_SIGM') ,
370 #-----------------------------------------------------------------------
371 if TYPE_MAILLAGE[:4]=='SAIN' :
372 #-----------------------------------------------------------------------
374 # --- post traitement : POST_RELEVE_T --- azimuts droits
376 # ---- champs de contrainte SI, SII ET SIII ----
378 if TYPE_MAILLAGE=='SAIN_GROS' : NBAZIM = 40
382 if TUBULURE!=None : TYPSOU = TUBULURE['TYPE']
383 for i in range(1,NBAZIM+1,PAS_AZIMUT):
384 if i<10 : NUME = '0'+str(i)
388 mcsimp['REPERE' ]='CYLINDRIQUE',
389 mcsimp['ORIGINE']=( 0.0 , 0.0 , 0.0 )
390 mcsimp['AXE_Z' ]=( 0.0 , 0.0 , 1.0 )
391 INTITD = 'AZI_'+NUME+'_D-REP_CYL'
393 mcsimp['REPERE' ]='LOCAL'
394 mcsimp['VECT_Y' ]=( 0.0 , 0.0 , 1.0 )
395 INTITD = 'AZI_'+NUME+'_D-REP_LOC'
396 mcsimp['INTITULE' ]=INTITD
397 mcsimp['GROUP_NO' ]='LD'+str(i)
398 mcfact.append( _F( RESULTAT = nomres,
400 NOM_CHAM ='SIEF_ELNO_ELGA',
403 OPERATION ='EXTRACTION',**mcsimp))
404 __noposd=POST_RELEVE_T(ACTION = mcfact,
405 TITRE = '-- TRAITEMENT DES AZIMUTS DROITS --')
407 # --- IMPR_TABLE dans un repere cylindrique ou local
408 # des champs de contrainte SI, SII ET SIII
410 if TYPSOU=='TYPE_1' : nompara=IMPRT1
411 else : nompara=IMPRT2
412 IMPR_TABLE(TABLE = __noposd,
415 # ---- Pm, Pm+Pb sur les lignes de depouillement ----
417 if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
419 for i in range(1,NBAZIM+1,PAS_AZIMUT):
420 if i<10 : NUME = '0'+str(i)
423 mcsimp['INTITULE' ]='LD'+str(i)
424 mcsimp['GROUP_NO' ]='LD'+str(i)
425 mcsimp['RESULTAT' ]=nomres
426 mcsimp['TOUT_ORDRE' ]='OUI'
427 mcsimp['NOM_CHAM' ]='SIEF_ELNO_ELGA'
428 mcsimp['PRECISION' ]=55.E-1
429 mcsimp['TOUT_CMP' ]='OUI'
430 mcsimp['OPERATION' ]='EXTRACTION'
431 mcfact.append( _F(**mcsimp) )
432 __prelsd=POST_RELEVE_T(ACTION=mcfact)
433 __pmpbsd=POST_RCCM(OPTION = 'PM_PB',
434 TYPE_RESU_MECA = 'EVOLUTION',
435 TYPE_RESU = 'VALE_MAX',
437 TRANSITOIRE = _F(TABL_RESU_MECA = __prelsd,),
438 TITRE = '-- TRAITEMENT DES AZIMUTS DROITS --',)
439 IMPR_TABLE(TABLE = __pmpbsd, )
441 # ---- champ de temperature, si il a ete calcule, sur les lignes de depouillement ----
445 for i in range(1,NBAZIM+1,PAS_AZIMUT):
446 if i<10 : NUME = '0'+str(i)
449 mcsimp['GROUP_NO' ]='LD'+str(i)
450 mcsimp['RESULTAT' ]=resuth
451 mcsimp['TOUT_ORDRE' ]='OUI'
452 mcsimp['NOM_CHAM' ]='TEMP'
453 mcsimp['PRECISION' ]=55.E-1
454 mcsimp['TOUT_CMP' ]='OUI'
455 mcsimp['INTITULE' ]='AZI_'+NUME+'_D'
456 mcsimp['OPERATION' ]='EXTRACTION'
457 mcfact.append( _F(**mcsimp) )
458 __rthazd=POST_RELEVE_T(ACTION=mcfact)
459 IMPR_TABLE(TABLE = __rthazd, )
461 # ---- parametres caracterisant la distribution de temperature,
462 # si elle a ete calculee, dans l epaisseur du ligament ----
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' ]='MOYENNE'
477 mcfact.append( _F(**mcsimp) )
478 __rmothd=POST_RELEVE_T(ACTION=mcfact)
479 IMPR_TABLE(TABLE = __rmothd, )
481 #-----------------------------------------------------------------------
483 # --- post traitement : POST_RELEVE_T --- azimuts inclines
484 # --- champs de contrainte SI, SII ET SIII ----
487 for i in range(1,NBAZIM+1,PAS_AZIMUT):
488 if i<10 : NUME = '0'+str(i)
491 mcsimp['GROUP_NO' ]='LI'+str(i)
492 mcsimp['RESULTAT' ]=nomres
493 mcsimp['TOUT_ORDRE' ]='OUI'
494 mcsimp['NOM_CHAM' ]='SIEF_ELNO_ELGA'
495 mcsimp['PRECISION' ]=55.E-1
496 mcsimp['TOUT_CMP' ]='OUI'
497 mcsimp['REPERE' ]='LOCAL'
498 mcsimp['VECT_Y' ]=( 0.0 , 0.0 , 1.0 )
499 mcsimp['INTITULE' ]='AZI_'+NUME+'_I-REP_LOC'
500 mcsimp['OPERATION' ]='EXTRACTION'
501 mcfact.append( _F(**mcsimp) )
502 __noposi=POST_RELEVE_T(ACTION=mcfact)
503 IMPR_TABLE(TABLE = __noposi, )
505 # ---- Pm, Pm+Pb sur les lignes de depouillement ----
507 if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
509 for i in range(1,NBAZIM+1,PAS_AZIMUT):
510 if i<10 : NUME = '0'+str(i)
513 mcsimp['INTITULE' ]='LI'+str(i)
514 mcsimp['GROUP_NO' ]='LI'+str(i)
515 mcsimp['RESULTAT' ]=nomres
516 mcsimp['TOUT_ORDRE' ]='OUI'
517 mcsimp['NOM_CHAM' ]='SIEF_ELNO_ELGA'
518 mcsimp['PRECISION' ]=55.E-1
519 mcsimp['TOUT_CMP' ]='OUI'
520 mcsimp['OPERATION' ]='EXTRACTION'
521 mcfact.append( _F(**mcsimp) )
522 __prelsi=POST_RELEVE_T(ACTION=mcfact)
523 __pmpbsi=POST_RCCM(OPTION = 'PM_PB',
524 TYPE_RESU_MECA = 'EVOLUTION',
525 TYPE_RESU = 'VALE_MAX',
527 TRANSITOIRE = _F(TABL_RESU_MECA = __prelsi,),
528 TITRE = '-- TRAITEMENT DES AZIMUTS INCLINES --',)
529 IMPR_TABLE(TABLE = __pmpbsi, )
531 # ---- champs de temperature,si il a ete calcule, sur les lignes de depouillement ----
535 for i in range(1,NBAZIM+1,PAS_AZIMUT):
536 if i<10 : NUME = '0'+str(i)
539 mcsimp['GROUP_NO' ]='LI'+str(i)
540 mcsimp['RESULTAT' ]=resuth
541 mcsimp['TOUT_ORDRE' ]='OUI'
542 mcsimp['NOM_CHAM' ]='TEMP'
543 mcsimp['PRECISION' ]=55.E-1
544 mcsimp['TOUT_CMP' ]='OUI'
545 mcsimp['INTITULE' ]='AZI_'+NUME+'_I'
546 mcsimp['OPERATION' ]='EXTRACTION'
547 mcfact.append( _F(**mcsimp) )
548 __rthazi=POST_RELEVE_T(ACTION=mcfact)
549 IMPR_TABLE(TABLE = __rthazi,
552 # ---- parametres caracterisant la distribution de temperature,
553 # si elle a ete calculee, dans l epaisseur du ligament ----
556 for i in range(1,NBAZIM+1,PAS_AZIMUT):
557 if i<10 : NUME = '0'+str(i)
560 mcsimp['GROUP_NO' ]='LI'+str(i)
561 mcsimp['RESULTAT' ]=resuth
562 mcsimp['TOUT_ORDRE' ]='OUI'
563 mcsimp['NOM_CHAM' ]='TEMP'
564 mcsimp['PRECISION' ]=55.E-1
565 mcsimp['TOUT_CMP' ]='OUI'
566 mcsimp['INTITULE' ]='AZI_'+NUME+'_I'
567 mcsimp['OPERATION' ]='MOYENNE'
568 mcfact.append( _F(**mcsimp) )
569 __rmothi=POST_RELEVE_T(ACTION=mcfact)
570 IMPR_TABLE(TABLE = __rmothi, )
572 #-----------------------------------------------------------------------
573 elif TYPE_MAILLAGE[:4]=='FISS' :
574 #-----------------------------------------------------------------------
580 if TYPE_MAILLAGE in ('FISS_COUR_DEB','FISS_LONG_DEB','FISS_AXIS_DEB','FISS_COUR_NONDEB') :
582 NOMGRO.append(('P_FON1' ,'P_FIS1' ),)
583 NOMGRE.append(('P_FON2' ,'P_FIS2' ),)
584 TABMA8.append('FONDFISS')
585 if TYPE_MAILLAGE in ('FISS_COUR_DEB','FISS_LONG_DEB') : FERME=0
588 NOMMA.append('MAIL_ORI')
589 elif TYPE_MAILLAGE in ('FISS_LONG_NONDEB','FISS_AXIS_NONDEB') :
591 NOMGRO.append(('P_FON1' ,'P_FIS1' ),)
592 NOMGRE.append(('P_FON2' ,'P_FIS2' ),)
593 NOMGRO.append(('PI_FON1','PI_FIS1'),)
594 NOMGRE.append(('PI_FON2','PI_FIS2'),)
595 TABMA8.append('FOND_SUP')
596 TABMA8.append('FOND_INF')
597 if TYPE_MAILLAGE=='FISS_LONG_NONDEB' : FERME=0
600 NOMMA.append('MA_ORI_S')
601 NOMMA.append('MA_ORI_I')
605 # ---- champs de temperature en fond de fissure
606 # si il a ete calcule, cas 1 fond de fissure ----
609 __rthfis=POST_RELEVE_T(ACTION=_F(GROUP_NO ='FONDFISS',
615 INTITULE ='FONDFISS',
616 OPERATION ='EXTRACTION',))
617 IMPR_TABLE(TABLE = __rthfis, )
619 # ---- champs de temperature en fond de fissure
620 # si il a ete calcule, cas 2 fonds de fissure ----
624 __rthfis1=POST_RELEVE_T(ACTION=_F(GROUP_NO ='FOND_SUP',
630 INTITULE ='FOND_SUP',
631 OPERATION ='EXTRACTION',))
632 IMPR_TABLE(TABLE = __rthfis1, )
633 __rthfis2=POST_RELEVE_T(ACTION=_F(GROUP_NO ='FOND_INF',
639 INTITULE ='FOND_INF',
640 OPERATION ='EXTRACTION',))
641 IMPR_TABLE(TABLE = __rthfis2, )
643 # boucle sur le nombre de fond de fissure
646 for j in range(NBFIS):
647 if FOND_FISS_1!=None : self.DeclareOut('fond3d_0',FOND_FISS_1)
648 if FOND_FISS_2!=None : self.DeclareOut('fond3d_1',FOND_FISS_2)
650 # --- commande DEFI_FOND_FISS ---
654 motscles['FOND_FISS']=_F(GROUP_MA =TABMA8[j],
655 GROUP_NO_ORIG=NOMGRO[j][0],
656 GROUP_NO_EXTR=NOMGRE[j][0],)
657 motscles['VECT_GRNO_ORIG']=NOMGRO[j]
658 motscles['VECT_GRNO_EXTR']=NOMGRE[j]
660 if TYPE_MAILLAGE.find('AXIS')!=-1 : grnoorig=NOMGRE[j][0]
661 # si AXIS, P_FON1 est remplace par P_FON2 pour
662 # fermer le fond de fissure
663 else : grnoorig=NOMGRO[j][0]
664 motscles['FOND_FERME']=_F(GROUP_MA =TABMA8[j],
665 GROUP_NO_ORIG=grnoorig,
666 GROUP_MA_ORIG=NOMMA[j],)
667 fond3d[j]=DEFI_FOND_FISS( MAILLAGE = MAILLAGE,
668 LEVRE_SUP = _F(GROUP_MA='LEVRCORP',),
669 LEVRE_INF = _F(GROUP_MA='LEVRTUBU',),**motscles)
671 for tht3d in THETA_3D :
673 # --- commande CALC_THETA ---
675 __theta = CALC_THETA( MODELE = modele,
676 FOND_FISS = fond3d[j],
677 THETA_3D = _F( TOUT = 'OUI',
679 R_INF = tht3d['R_INF'],
680 R_SUP = tht3d['R_SUP'], ) )
682 # --- commande CALC_G (3D GLOBAL) ---
684 montit = 'G_THETA AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
686 if COMP_ELAS!=None: motscles['COMP_ELAS']= _F(TOUT = 'OUI',
687 RELATION = COMP_ELAS['RELATION'],)
688 if COMP_INCR!=None: motscles['COMP_INCR']= _F(RELATION = COMP_INCR['RELATION'],)
689 __gtheta = CALC_G ( THETA = _F(THETA=__theta),
690 OPTION = 'CALC_G_GLOB',
693 TITRE = montit,**motscles)
694 IMPR_TABLE(TABLE = __gtheta, )
698 if OPTION=='CALC_G_MAX' :
702 mcfact.append(_F( NUME_ORDRE = born['NUME_ORDRE'] ,
703 VALE_MIN = born['VALE_MIN' ] ,
704 VALE_MAX = born['VALE_MAX' ] ) )
705 __gbil = CALC_G( THETA = _F(THETA=__theta),
708 COMP_ELAS = _F(TOUT = 'OUI',
709 RELATION = COMP_ELAS['RELATION'],),
711 OPTION = 'G_MAX_GLOB',
713 IMPR_TABLE(TABLE = __gbil, )
715 # --- commande CALC_G (3D LOCAL) ---
717 montit = 'G_LOCAL AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
719 if COMP_ELAS!=None: motscles['COMP_ELAS' ]= _F(TOUT = 'OUI',
720 RELATION = COMP_ELAS['RELATION'],)
722 motscles['LISSAGE']=_F(LISSAGE_THETA= 'LAGRANGE',
723 LISSAGE_G= 'LAGRANGE',)
724 __glocal = CALC_G( THETA=_F( FOND_FISS = fond3d[j],
725 R_INF = tht3d['R_INF'],
726 R_SUP = tht3d['R_SUP'],),
729 TITRE = montit,**motscles)
730 IMPR_TABLE(TABLE = __glocal, )
732 # recherche du g max local
734 if OPTION=='CALC_G_MAX_LOCAL' :
739 motscles['LISSAGE']=_F(LISSAGE_THETA= 'LAGRANGE',
740 LISSAGE_G= 'LAGRANGE',)
742 mcfact.append(_F( NUME_ORDRE = born['NUME_ORDRE'] ,
743 VALE_MIN = born['VALE_MIN' ] ,
744 VALE_MAX = born['VALE_MAX' ] ) )
745 motscles['BORNES']=mcfact
746 __glbil = CALC_G( THETA=_F( FOND_FISS = fond3d[j],
747 R_INF = tht3d['R_INF'],
748 R_SUP = tht3d['R_SUP'],),
751 COMP_ELAS = _F(TOUT = 'OUI',
752 RELATION = COMP_ELAS['RELATION'],),
754 OPTION = 'G_MAX',**motscles)
755 IMPR_TABLE(TABLE = __glbil, )
757 # --- commande IMPR_RESU ---
763 if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
765 if IMPRESSION['NOM_CHAM']!=None :
766 if type(IMPRESSION['NOM_CHAM']) in (types.TupleType,types.ListType) : ncham= IMPRESSION['NOM_CHAM']
767 else : ncham=[IMPRESSION['NOM_CHAM'],]
768 if len(ncham)==3 : motscles['NOM_CHAM' ]=('DEPL','EQUI_ELNO_SIGM')
769 elif (len(ncham)==1) and (ncham[0][:4]!='TEMP') :
770 motscles['NOM_CHAM' ]= ncham[0]
771 elif (len(ncham)==2) and (ncham[0][:4]!='TEMP') and (ncham[1][:4]!='TEMP') :
772 motscles['NOM_CHAM' ]=(ncham[0],ncham[1])
773 elif (len(ncham)==2) and (ncham[0][:4]=='TEMP') :
774 motscles['NOM_CHAM' ]= ncham[1]
775 elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
776 motscles['NOM_CHAM' ]= ncham[0]
777 if IMPRESSION['TOUT_ORDRE']!=None :
778 motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
779 elif IMPRESSION['NUME_ORDRE']!=None :
780 motscles['NUME_ORDRE']= IMPRESSION['NUME_ORDRE']
781 elif IMPRESSION['INST']!=None :
782 motscles['INST' ]= IMPRESSION['INST']
783 if IMPRESSION['FORMAT']=='IDEAS' :
784 motsclei['VERSION' ]= IMPRESSION['VERSION']
785 if IMPRESSION['FORMAT']=='CASTEM' :
786 motsclei['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
787 mcfresu.append(_F(MAILLAGE=MAILLAGE,RESULTAT=nomres,**motscles))
790 if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
791 if len(ncham)==3 : motscles['NOM_CHAM' ]=('TEMP',)
792 elif (len(ncham)==1) and (ncham[0][:4]=='TEMP') :
793 motscles['NOM_CHAM' ]= ncham[0]
794 elif (len(ncham)==2) and (ncham[0][:4]=='TEMP') :
795 motscles['NOM_CHAM' ]= ncham[0]
796 elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
797 motscles['NOM_CHAM' ]= ncham[1]
798 if IMPRESSION['TOUT_ORDRE']!=None :
799 motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
800 elif IMPRESSION['NUME_ORDRE']!=None :
801 motscles['NUME_ORDRE']= IMPRESSION['NUME_ORDRE']
802 elif IMPRESSION['INST']!=None :
803 motscles['INST' ]= IMPRESSION['INST']
804 if IMPRESSION['FORMAT']=='IDEAS' :
805 motsclei['VERSION' ]= IMPRESSION['VERSION']
806 if IMPRESSION['FORMAT']=='CASTEM' :
807 motsclei['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
808 mcfresu.append(_F(RESULTAT=resuth,**motscles))
809 IMPR_RESU( MODELE = modele,
811 FORMAT=IMPRESSION['FORMAT'],**motsclei)