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.
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 ,**args):
28 Ecriture de la macro MACR_ASPIC_CALC
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' )
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' :
81 self.cr.fatal("""<E> <MACR_ASPIC_CALC> vous affectez plus d un materiau contenant l option rccm""")
84 if (TYPE_MAILLAGE[:4]=='SAIN') and (TUBULURE==None) :
86 self.cr.fatal("""<E> <MACR_ASPIC_CALC> pour les piquages sains, TUBULURE doit etre renseigne""")
89 if EQUILIBRE['NOEUD'] not in ('P1_CORP','P2_CORP') :
91 self.cr.fatal("""<E> <MACR_ASPIC_CALC> EQUILIBRE[NOEUD] : on attend 'P1_CORP ' ou 'P2_CORP'""")
94 if PRES_REP['EFFE_FOND']=='OUI' :
95 if PRES_REP['NOEUD']==None :
97 self.cr.fatal("""<E> <MACR_ASPIC_CALC> il faut preciser un noeud pour EFFE_FOND""")
99 if PRES_REP['NOEUD'] not in ('P1_CORP','P2_CORP') :
101 self.cr.fatal("""<E> <MACR_ASPIC_CALC> PRES_REP[NOEUD] : on attend 'P1_CORP' ou 'P2_CORP'""")
103 if PRES_REP['NOEUD']==EQUILIBRE['NOEUD'] :
105 self.cr.fatal("""<E> <MACR_ASPIC_CALC> on ne peut appliquer un EFFE_FOND sur PRES_REP[NOEUD] car ce noeud est bloque""")
109 for tors in TORS_CORP :
110 if tors['NOEUD'] not in ('P1_CORP','P2_CORP') :
112 self.cr.fatal("""<E> <MACR_ASPIC_CALC> TORS_CORP[NOEUD] : on attend 'P1_CORP' ou 'P2_CORP'""")
114 if tors['NOEUD']==EQUILIBRE['NOEUD'] :
116 self.cr.fatal("""<E> <MACR_ASPIC_CALC> on ne peut appliquer un torseur sur TORS_CORP[NOEUD] car ce noeud est bloque""")
119 if (TYPE_MAILLAGE[:4]=='SAIN') and (THETA_3D!=None) :
121 self.cr.fatal("""<E> <MACR_ASPIC_CALC> si TYPE_MAILLAGE SAIN : mecanique de la rupture impossible""")
124 if OPTION in ('CALC_G_MAX','CALC_G_MAX_LOCAL') :
127 self.cr.fatal("""<E> <MACR_ASPIC_CALC> mot-clef <BORNES> obligatoire avec cette option""")
130 if IMPRESSION!=None :
131 if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
132 if IMPRESSION['NOM_CHAM']==None :
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.""")
138 #------------------------------------------------------------------
140 # --- commande AFFE_MODELE ---
142 if MODELE!=None : self.DeclareOut('modele',MODELE)
144 if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[-4:]=='_DEB') :
145 mcfact.append(_F(GROUP_MA=GRMAIL, PHENOMENE='MECANIQUE',MODELISATION='3D' ))
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 ,
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' ) )
159 # --- commande AFFE_MATERIAU ---
161 if CHAM_MATER!=None : self.DeclareOut('affmat',CHAM_MATER)
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 ,
170 # --- commande AFFE_CARA_ELEM ---
172 if CARA_ELEM!=None : self.DeclareOut('carael',CARA_ELEM)
173 carael = AFFE_CARA_ELEM( MODELE = modele ,
174 DISCRET = ( _F( GROUP_MA='P1_CORP' ,
176 VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),
177 _F( GROUP_MA='P2_CORP' ,
179 VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),
180 _F( GROUP_MA='P_TUBU' ,
182 VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ), ) )
184 # --- commande AFFE_CHAR_THER_F ---
185 # condition aux limites
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'],),))
196 # --- calcul thermique ---
198 if RESU_THER!=None : self.DeclareOut('resuth',RESU_THER)
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, )
209 if CHARGE!=None : self.DeclareOut('chmeth',CHARGE)
210 chmeth = AFFE_CHAR_MECA( MODELE = modele ,
211 TEMP_CALCULEE = resuth )
213 # --- commande AFFE_CHAR_MECA ---
214 # condition aux limites
216 if EQUILIBRE['NOEUD']=='P1_CORP' :
217 NENCAS = EQUILIBRE['NOEUD']
221 elif EQUILIBRE['NOEUD']=='P2_CORP' :
222 NENCAS = EQUILIBRE['NOEUD']
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' ,
235 GROUP_NO_2='P_TUBU'), ),
236 DDL_IMPO = _F( GROUP_NO = NENCAS ,
244 # --- commande AFFE_CHAR_MECA ---
245 # chargement mecanique : pres_rep, effet de fond
248 if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[-4:]=='_DEB') :
249 motscles['PRES_REP' ]= _F(GROUP_MA=APPRES, PRES=PRES_REP['PRES'])
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']),
258 PRES =PRES_REP['PRES']))
259 __chpres = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
261 # --- commande AFFE_CHAR_MECA ---
262 # chargement mecanique : torseur sur le corps
267 for tors in TORS_CORP :
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 , )
280 # --- commande AFFE_CHAR_MECA ---
281 # chargement mecanique : torseur sur la tubulure
286 for tors in TORS_TUBU :
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 , )
299 # --- commande STAT_NON_LINE ---
303 mcfex=[] # mot clé facteur EXCIT
304 mcfex.append(_F(CHARGE=__conlim,))
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']))
310 mcfex.append(_F(CHARGE=__chpres,))
313 for tors in TORS_CORP :
314 if tors['FONC_MULT']!=None :
315 mcfex.append(_F(CHARGE=__chtrc[i],FONC_MULT=tors['FONC_MULT']))
317 mcfex.append(_F(CHARGE=__chtrc[i],))
321 for tors in TORS_TUBU :
322 if tors['FONC_MULT']!=None :
323 mcfex.append(_F(CHARGE=__chtrt[i],FONC_MULT=tors['FONC_MULT']))
325 mcfex.append(_F(CHARGE=__chtrt[i],))
327 motscles['EXCIT'] =mcfex
329 mcfci=[] # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets
331 mcfci.append(_F(TOUT ='OUI' ,RELATION=COMP_INCR['RELATION']))
332 mcfci.append( _F(GROUP_MA=NOMNOE,RELATION='ELAS'))
333 motscles['COMP_INCR'] =mcfci
336 motscles['COMP_ELAS'] =_F(GROUP_MA=GRMAIL[:-2] ,RELATION=COMP_ELAS['RELATION'])
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]
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]
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]
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]
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]
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 ,
369 INFO = INFO , **motscles)
371 nomres = CALC_ELEM( reuse = nomres,
374 OPTION = ('SIEF_ELNO_ELGA','VARI_ELNO_ELGA','EQUI_ELNO_SIGM') ,
377 #-----------------------------------------------------------------------
378 if TYPE_MAILLAGE[:4]=='SAIN' :
379 #-----------------------------------------------------------------------
381 # --- post traitement : POST_RELEVE_T --- azimuts droits
383 # ---- champs de contrainte SI, SII ET SIII ----
385 if TYPE_MAILLAGE=='SAIN_GROS' : NBAZIM = 40
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)
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'
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,
407 NOM_CHAM ='SIEF_ELNO_ELGA',
410 OPERATION ='EXTRACTION',**mcsimp))
411 __noposd=POST_RELEVE_T(ACTION = mcfact,
412 TITRE = '-- TRAITEMENT DES AZIMUTS DROITS --')
414 # --- IMPR_TABLE dans un repere cylindrique ou local
415 # des champs de contrainte SI, SII ET SIII
417 if TYPSOU=='TYPE_1' : nompara=IMPRT1
418 else : nompara=IMPRT2
419 IMPR_TABLE(TABLE = __noposd,
422 # ---- Pm, Pm+Pb sur les lignes de depouillement ----
424 if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
426 for i in range(1,NBAZIM+1,PAS_AZIMUT):
427 if i<10 : NUME = '0'+str(i)
430 mcsimp['PRECISION']=55.E-1
431 mcsimp['GROUP_NO' ]='LD'+str(i)
432 mcfact.append( _F(**mcsimp) )
433 __pmpbsd=POST_RCCM(MATER = MRCCM,
435 TYPE_RESU_MECA = 'EVOLUTION',
436 TYPE_RESU = 'VALE_MAX',
439 TRANSITOIRE = _F(RESULTAT =nomres,
440 NOM_CHAM ='SIEF_ELNO_ELGA',
442 TITRE = '-- TRAITEMENT DES AZIMUTS DROITS --',)
443 IMPR_TABLE(TABLE = __pmpbsd, )
445 # ---- champ de temperature, si il a ete calcule, sur les lignes de depouillement ----
449 for i in range(1,NBAZIM+1,PAS_AZIMUT):
450 if i<10 : NUME = '0'+str(i)
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, )
465 # ---- parametres caracterisant la distribution de temperature,
466 # si elle a ete calculee, dans l epaisseur du ligament ----
469 for i in range(1,NBAZIM+1,PAS_AZIMUT):
470 if i<10 : NUME = '0'+str(i)
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, )
485 #-----------------------------------------------------------------------
487 # --- post traitement : POST_RELEVE_T --- azimuts inclines
488 # --- champs de contrainte SI, SII ET SIII ----
491 for i in range(1,NBAZIM+1,PAS_AZIMUT):
492 if i<10 : NUME = '0'+str(i)
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, )
509 # ---- Pm, Pm+Pb sur les lignes de depouillement ----
511 if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
513 for i in range(1,NBAZIM+1,PAS_AZIMUT):
514 if i<10 : NUME = '0'+str(i)
517 mcsimp['PRECISION']=55.E-1
518 mcsimp['GROUP_NO' ]='LI'+str(i)
519 mcfact.append( _F(**mcsimp) )
520 __pmpbsi=POST_RCCM(MATER = MRCCM,
522 TYPE_RESU_MECA = 'EVOLUTION',
523 TYPE_RESU = 'VALE_MAX',
526 TRANSITOIRE = _F(RESULTAT =nomres,
527 NOM_CHAM ='SIEF_ELNO_ELGA',
529 TITRE = '-- TRAITEMENT DES AZIMUTS INCLINES --',)
530 IMPR_TABLE(TABLE = __pmpbsi, )
532 # ---- champs de temperature,si il a ete calcule, sur les lignes de depouillement ----
536 for i in range(1,NBAZIM+1,PAS_AZIMUT):
537 if i<10 : NUME = '0'+str(i)
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,
553 # ---- parametres caracterisant la distribution de temperature,
554 # si elle a ete calculee, dans l epaisseur du ligament ----
557 for i in range(1,NBAZIM+1,PAS_AZIMUT):
558 if i<10 : NUME = '0'+str(i)
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, )
573 #-----------------------------------------------------------------------
574 elif TYPE_MAILLAGE[:4]=='FISS' :
575 #-----------------------------------------------------------------------
581 if TYPE_MAILLAGE in ('FISS_COUR_DEB','FISS_LONG_DEB','FISS_AXIS_DEB','FISS_COUR_NONDEB') :
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
589 NOMMA.append('MAIL_ORI')
590 elif TYPE_MAILLAGE in ('FISS_LONG_NONDEB','FISS_AXIS_NONDEB') :
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
601 NOMMA.append('MA_ORI_S')
602 NOMMA.append('MA_ORI_I')
606 # ---- champs de temperature en fond de fissure
607 # si il a ete calcule, cas 1 fond de fissure ----
610 __rthfis=POST_RELEVE_T(ACTION=_F(GROUP_NO ='FONDFISS',
616 INTITULE ='FONDFISS',
617 OPERATION ='EXTRACTION',))
618 IMPR_TABLE(TABLE = __rthfis, )
620 # ---- champs de temperature en fond de fissure
621 # si il a ete calcule, cas 2 fonds de fissure ----
625 __rthfis1=POST_RELEVE_T(ACTION=_F(GROUP_NO ='FOND_SUP',
631 INTITULE ='FOND_SUP',
632 OPERATION ='EXTRACTION',))
633 IMPR_TABLE(TABLE = __rthfis1, )
634 __rthfis2=POST_RELEVE_T(ACTION=_F(GROUP_NO ='FOND_INF',
640 INTITULE ='FOND_INF',
641 OPERATION ='EXTRACTION',))
642 IMPR_TABLE(TABLE = __rthfis2, )
644 # boucle sur le nombre de fond de fissure
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)
651 # --- commande DEFI_FOND_FISS ---
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]
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)
672 for tht3d in THETA_3D :
674 # --- commande CALC_THETA ---
676 __theta = CALC_THETA( MODELE = modele,
677 FOND_FISS = fond3d[j],
678 THETA_3D = _F( TOUT = 'OUI',
680 R_INF = tht3d['R_INF'],
681 R_SUP = tht3d['R_SUP'], ) )
683 # --- commande CALC_G_THETA_T ---
685 montit = 'G_THETA AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
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'],)
691 __gtheta = CALC_G_THETA_T( MODELE = modele,
696 TITRE = montit,**motscles)
697 IMPR_TABLE(TABLE = __gtheta, )
701 if OPTION=='CALC_G_MAX' :
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,
713 COMP_ELAS = _F(TOUT = 'OUI',
714 RELATION = COMP_ELAS['RELATION'],),
718 IMPR_TABLE(TABLE = __gbil, )
720 # --- commande CALC_G_LOCAL_T ---
722 montit = 'G_LOCAL AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
724 if COMP_ELAS!=None: motscles['COMP_ELAS' ]= _F(TOUT = 'OUI',
725 RELATION = COMP_ELAS['RELATION'],)
727 motscles['LISSAGE_THETA']= 'LAGRANGE'
728 motscles['LISSAGE_G' ]= 'LAGRANGE'
729 __glocal = CALC_G_LOCAL_T( MODELE = modele,
731 FOND_FISS = fond3d[j],
734 R_INF = tht3d['R_INF'],
735 R_SUP = tht3d['R_SUP'],
736 TITRE = montit,**motscles)
738 # recherche du g max local
740 if OPTION=='CALC_G_MAX_LOCAL' :
745 motscles['LISSAGE_THETA']= 'LAGRANGE'
746 motscles['LISSAGE_G' ]= 'LAGRANGE'
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,
754 FOND_FISS = fond3d[j],
757 COMP_ELAS = _F(TOUT = 'OUI',
758 RELATION = COMP_ELAS['RELATION'],),
760 OPTION = 'CALC_G_MAX',
761 R_INF = tht3d['R_INF'],
762 R_SUP = tht3d['R_SUP'],**motscles)
763 IMPR_TABLE(TABLE = __glbil, )
765 # --- commande IMPR_RESU ---
771 if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
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))
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,
819 FORMAT=IMPRESSION['FORMAT'],**motsclei)