1 #@ MODIF macr_ascouf_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_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM,
23 FOND_FISS,CHARGE,RESU_THER,AFFE_MATERIAU,
24 PRES_REP,ECHANGE,TORS_P1,COMP_INCR,COMP_ELAS,
25 SOLVEUR,CONVERGENCE,NEWTON,RECH_LINEAIRE,
26 INCREMENT,THETA_3D,IMPR_TABLE,IMPRESSION,INFO,TITRE ,**args):
28 Ecriture de la macro MACR_ASCOUF_CALC
34 from math import pi,sin,cos,sqrt,atan2
36 # On recopie les mots cles affe_materiau et impr_table pour les proteger
37 mc_AFFE_MATERIAU=AFFE_MATERIAU
38 mc_IMPR_TABLE =IMPR_TABLE
39 # On importe les definitions des commandes a utiliser dans la macro
40 AFFE_MODELE =self.get_cmd('AFFE_MODELE' )
41 AFFE_MATERIAU =self.get_cmd('AFFE_MATERIAU' )
42 AFFE_CARA_ELEM =self.get_cmd('AFFE_CARA_ELEM' )
43 AFFE_CHAR_THER_F =self.get_cmd('AFFE_CHAR_THER_F')
44 THER_LINEAIRE =self.get_cmd('THER_LINEAIRE' )
45 AFFE_CHAR_MECA =self.get_cmd('AFFE_CHAR_MECA' )
46 STAT_NON_LINE =self.get_cmd('STAT_NON_LINE' )
47 CALC_ELEM =self.get_cmd('CALC_ELEM' )
48 IMPR_RESU =self.get_cmd('IMPR_RESU' )
49 IMPR_TABLE =self.get_cmd('IMPR_TABLE' )
50 DEFI_FOND_FISS =self.get_cmd('DEFI_FOND_FISS' )
51 CALC_THETA =self.get_cmd('CALC_THETA' )
52 CALC_G_THETA_T =self.get_cmd('CALC_G_THETA_T' )
53 CALC_G_LOCAL_T =self.get_cmd('CALC_G_LOCAL_T' )
54 POST_RCCM =self.get_cmd('POST_RCCM' )
55 POST_RELEVE_T =self.get_cmd('POST_RELEVE_T' )
57 # La macro compte pour 1 dans la numerotation des commandes
59 #------------------------------------------------------------------
61 GRMAIL = ('COUDE','PEAUINT','PEAUEXT','EXTUBE','CLGV','FACE1','FACE2')
62 #------------------------------------------------------------------
64 if CL_BOL_P2_GV!=None :
65 if TYPE_MAILLAGE=='SOUS_EPAIS_COUDE' :
66 print '<A> <MACR_ASCOUF_CALC> la condition aux limites sur bol a section conique'
67 print ' est ignoree pour un coude avec sous-epaisseurs'
68 elif (TYPE_MAILLAGE[:4]!='FISS') and (CL_BOL_P2_GV['AZIMUT']!=None) :
70 self.cr.fatal("""<E> <MACR_ASCOUF_CALC> mot-cle AZIMUT non autorise dans le cas d''un coude sain""")
73 if mc_IMPR_TABLE!=None :
75 if (mc_IMPR_TABLE['NOM_PARA']==None) and (mc_IMPR_TABLE['POSI_ANGUL']==None) and (mc_IMPR_TABLE['POSI_CURV_LONGI']==None) :
77 self.cr.fatal("""<E> <MACR_ASCOUF_CALC> POSI_ANGUL POSI_CURV_LONGI est obligatoire""")
79 if (mc_IMPR_TABLE['NOM_PARA']!=None) :
80 impr_table_nom_para= mc_IMPR_TABLE['NOM_PARA']
81 for impt in impr_table_nom_para :
82 if impt in ('SI_LONG','SI_CIRC','SI_RADI') :
84 if (((impt['ANGLE']==None) and (impt['POSI_ANGUL']==None) and (impt['R_CINTR' ]==None)) or
85 ((impt['ANGLE']==None) and (impt['R_CINTR' ]==None) and (impt['POSI_CURV_LONGI']==None)) ) :
87 self.cr.fatal("""<E> <MACR_ASCOUF_CALC> il faut renseigner : ANGLE, R_CINTR et POSI_ANGUL ou ANGLE, R_CINTR et POSI_CURV_LONGI""")
89 if (mc_IMPR_TABLE['NOM_PARA']==None) : FLAG = 1
90 if not FLAG : print '<A> <MACR_ASCOUF_CALC> ANGL_COUDE et ANGL_SOUS_EPAI sont inutiles dans ce cas'
92 #------------------------------------------------------------------
94 # --- commande AFFE_MODELE ---
96 self.DeclareOut('modele',MODELE)
98 if (PRES_REP!=None) and (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[:4]=='FISS') :
99 mcfact.append(_F(GROUP_MA=GRMAIL ,PHENOMENE='MECANIQUE',MODELISATION='3D' ))
101 mcfact.append(_F(GROUP_MA=GRMAIL[:5] ,PHENOMENE='MECANIQUE',MODELISATION='3D' ))
103 mcfact.append(_F(GROUP_MA='P1' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
104 if CL_BOL_P2_GV==None :
105 mcfact.append(_F(GROUP_MA='P2' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
106 modele = AFFE_MODELE( MAILLAGE = MAILLAGE ,
108 if ECHANGE!=None : # modele thermique
109 __modthe = AFFE_MODELE( MAILLAGE = MAILLAGE ,
110 AFFE = _F(TOUT ='OUI',
111 PHENOMENE ='THERMIQUE',
112 MODELISATION='3D' ) )
113 #------------------------------------------------------------------
115 # --- commande AFFE_MATERIAU ---
117 if CHAM_MATER!=None : self.DeclareOut('affmat',CHAM_MATER)
119 for mater in mc_AFFE_MATERIAU :
120 if mater['TOUT']!=None :
121 mcfact.append(_F(TOUT =mater['TOUT' ],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
122 rccmat = mater['MATER']
124 mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
125 if mater['GROUP_MA'][:5]=='COUDE' :
127 mcfact.append(_F(GROUP_MA='P1',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
128 mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
129 elif (len(mc_AFFE_MATERIAU)==1) and (CL_BOL_P2_GV==None) :
130 mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
131 elif (mater['BOL' ][:3]=='BOL' ) and (CL_BOL_P2_GV==None) :
132 mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
133 affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
136 #------------------------------------------------------------------
138 # --- commande AFFE_CARA_ELEM ---
140 if (TORS_P1!=None) or (CL_BOL_P2_GV==None) :
141 if CARA_ELEM!=None : self.DeclareOut('carael',CARA_ELEM)
143 motscles['DISCRET']=[]
144 if (TORS_P1!=None) : motscles['DISCRET'].append(_F( GROUP_MA='P1' ,
146 VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),)
147 if (CL_BOL_P2_GV==None) : motscles['DISCRET'].append(_F( GROUP_MA='P2' ,
149 VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),)
151 carael = AFFE_CARA_ELEM( MODELE = modele ,**motscles)
154 #------------------------------------------------------------------
156 # --- commande AFFE_CHAR_THER_F ---
157 # condition aux limites
159 __chther = AFFE_CHAR_THER_F( MODELE = __modthe ,
160 ECHANGE= _F(GROUP_MA='PEAUINT',
161 COEF_H =ECHANGE['COEF_H'],
162 TEMP_EXT=ECHANGE['TEMP_EXT'],), )
163 #------------------------------------------------------------------
165 # --- calcul thermique ---
167 if RESU_THER!=None : self.DeclareOut('resuth',RESU_THER)
169 if INCREMENT['NUME_INST_INIT']!=None : mcsimp['NUME_INIT']=INCREMENT['NUME_INST_INIT']
170 if INCREMENT['NUME_INST_FIN' ]!=None : mcsimp['NUME_FIN' ]=INCREMENT['NUME_INST_FIN' ]
171 mcfact=_F(LIST_INST=INCREMENT['LIST_INST'],**mcsimp)
172 resuth = THER_LINEAIRE( MODELE = __modthe ,
173 CHAM_MATER = affmat ,
174 TEMP_INIT = _F(STATIONNAIRE='OUI',),
175 EXCIT = _F(CHARGE=__chther,),
176 INCREMENT = mcfact, )
178 if CHARGE!=None : self.DeclareOut('chmeth',CHARGE)
179 chmeth = AFFE_CHAR_MECA( MODELE = modele ,
180 TEMP_CALCULEE = resuth )
181 #------------------------------------------------------------------
183 # --- commande AFFE_CHAR_MECA ---
184 # condition aux limites de type raccord 3d-poutre
185 # ou bien blocage de mouvements rigides en cas d embout
186 # a section conique, bol de type gv
189 motscles['LIAISON_ELEM']=[]
191 motscles['LIAISON_ELEM'].append(_F( OPTION ='3D_POU' ,
194 if CL_BOL_P2_GV==None :
195 motscles['LIAISON_ELEM'].append(_F( OPTION ='3D_POU' ,
198 motscles['DDL_IMPO' ]=_F( GROUP_NO ='P2' ,
206 motscles['FACE_IMPO' ]=_F( GROUP_MA ='CLGV' ,
208 ALPHA = CL_BOL_P2_GV['ANGLE' ]
209 AZIM = CL_BOL_P2_GV['AZIMUT']
210 ALPHAR = ALPHA*pi/180.0
211 AZIMR = AZIM *pi/180.0
214 if (AZIM!=0.0) and (AZIM!=180.0) and (ALPHA!=90.0) :
216 COEFB1.append(SIN(AZIMR)*COS(ALPHAR))
219 COEFB1.append(COS(AZIMR))
220 if (AZIM!=0.) and (AZIM!=180.) and (ALPHA!=0.):
222 COEFB1.append(-SIN(AZIMR)*SIN(ALPHAR))
223 POINT=['BOUT1',]*len(DDLB1)
224 motscles['LIAISON_DDL']=_F( GROUP_NO = POINT ,
229 __conlim = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
231 # --- commande AFFE_CHAR_MECA ---
232 # chargement mecanique : pres_rep, effet de fond
236 if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[:4]=='FISS') :
237 motscles['PRES_REP']=_F( GROUP_MA = ('PEAUINT','FACE1','FACE2') ,
238 PRES = PRES_REP['PRES'] ,)
240 motscles['PRES_REP']=_F( GROUP_MA = 'PEAUINT',
241 PRES = PRES_REP['PRES'] ,)
242 if PRES_REP['EFFE_FOND_P1']!=None :
243 motscles['EFFE_FOND']=_F( GROUP_MA_INT = 'BORDTU' ,
244 GROUP_MA = 'EXTUBE' ,
245 PRES = PRES_REP['PRES'] ,)
247 __chpres = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
249 # --- commande AFFE_CHAR_MECA ---
250 # chargement mecanique : torseur d efforts
257 if tors['FX']!=None : mcsimp['FX']=tors['FX']
258 if tors['FY']!=None : mcsimp['FY']=tors['FY']
259 if tors['FZ']!=None : mcsimp['FZ']=tors['FZ']
260 if tors['MX']!=None : mcsimp['MX']=tors['MX']
261 if tors['MY']!=None : mcsimp['MY']=tors['MY']
262 if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
263 mcfact=_F(GROUP_NO='P1',**mcsimp)
264 __chtor[i] = AFFE_CHAR_MECA( MODELE = modele ,
265 FORCE_NODALE = mcfact , )
268 # --- commande STAT_NON_LINE ---
272 mcfex=[] # mot clé facteur EXCIT
273 mcfex.append(_F(CHARGE=__conlim,))
275 mcfex.append(_F(CHARGE=chmeth,))
277 if PRES_REP['FONC_MULT']!=None :
278 mcfex.append(_F(CHARGE=__chpres,FONC_MULT=PRES_REP['FONC_MULT']))
280 mcfex.append(_F(CHARGE=__chpres,))
283 for tors in TORS_P1 :
284 if tors['FONC_MULT']!=None :
285 mcfex.append(_F(CHARGE=__chtor[i],FONC_MULT=tors['FONC_MULT']))
287 mcfex.append(_F(CHARGE=__chtor[i],))
289 motscles['EXCIT'] =mcfex
291 mcfci=[] # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets
293 mcfci.append(_F(TOUT='OUI' ,RELATION=COMP_INCR['RELATION']))
294 elif COMP_ELAS!=None :
295 motscles['COMP_ELAS'] =_F(GROUP_MA='COUDE',RELATION=COMP_ELAS['RELATION'])
296 if TORS_P1!=None : mcfci.append( _F(GROUP_MA='P1',RELATION='ELAS'))
297 if CL_BOL_P2_GV==None: mcfci.append( _F(GROUP_MA='P2',RELATION='ELAS'))
298 motscles['COMP_INCR'] =mcfci
300 dSolveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
301 for i in dSolveur.keys():
302 if dSolveur[i]==None : del dSolveur[i]
304 dConverg=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
305 for i in dConverg.keys():
306 if dConverg[i]==None : del dConverg[i]
308 dNewton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
309 for i in dNewton.keys():
310 if dNewton[i]==None : del dNewton[i]
312 dRechlin=RECH_LINEAIRE[0].cree_dict_valeurs(RECH_LINEAIRE[0].mc_liste)
313 for i in dRechlin.keys():
314 if dRechlin[i]==None : del dRechlin[i]
316 dIncrem=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
317 for i in dIncrem.keys():
318 if dIncrem[i]==None : del dIncrem[i]
321 motscles['TITRE' ] =TITRE
322 motscles ['SOLVEUR' ] =dSolveur
323 motscles ['CONVERGENCE' ] =dConverg
324 motscles ['NEWTON' ] =dNewton
325 motscles ['RECH_LINEAIRE'] =dRechlin
326 motscles ['INCREMENT' ] =dIncrem
327 self.DeclareOut('nomres',self.sd)
328 nomres = STAT_NON_LINE( MODELE = modele ,
329 CHAM_MATER = affmat ,
331 INFO = INFO , **motscles)
333 # --- commande CALC_ELEM ---
335 nomres = CALC_ELEM( reuse = nomres,
339 OPTION = ('SIEF_ELNO_ELGA','EQUI_ELNO_SIGM') ,
342 # --- post-traitements ---
344 if TYPE_MAILLAGE=='SOUS_EPAIS_COUDE':
346 # --- post traitement sous-epaisseurs: ligaments ---
348 if mc_IMPR_TABLE!=None:
350 SECT=('MI','TU','GV')
351 LIG=('FDRO','EXDR','EXTR','EXGA','FGAU','INGA','INTR','INDR')
352 if mc_IMPR_TABLE['POSI_ANGUL']==None:
353 ASEP=(mc_IMPR_TABLE['POSI_CURV_LONGI']/mc_IMPR_TABLE['R_CINTR'])*(180./pi)
355 ASEP=mc_IMPR_TABLE['POSI_ANGUL']
357 # moyenne_rccm, invariant et moyenne sur les ligaments dans
360 l_grno=MAILLAGE.LIST_GROUP_NO()
363 # prelevements des ligaments circonferentiels et longitudinaux
364 # de la sous-epaisseur
367 for tgrno in l_grno :
368 if tgrno[0][:3] in ('CIR','LON') : lgrno.append(tgrno[0])
369 elif tgrno[0][:5]=='PCENT' : lgrno.append(tgrno[0])
370 elif (tgrno[0][:4] in LIG) and (tgrno[0][4:6] not in ('GV','TU','MI')): lgrno.append(tgrno[0])
373 motscles['SEGMENT']=[]
374 for grno in lgrno : motscles['SEGMENT'].append(_F(INTITULE=grno,GROUP_NO=grno))
375 motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
376 tablig[1]=POST_RCCM(MATER = rccmat,
378 TYPE_RESU_MECA = 'EVOLUTION',
380 TRANSITOIRE=_F(RESULTAT=nomres,
381 NOM_CHAM='SIEF_ELNO_ELGA',),**motscles)
384 motscles['ACTION']=[]
386 motscles['ACTION'].append(_F(RESULTAT=nomres,
387 NOM_CHAM='SIEF_ELNO_ELGA',
391 OPERATION='EXTRACTION',))
392 motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
394 tablig[2]=POST_RELEVE_T(**motscles)
398 coord =aster.getvectjev(nommail.ljust(8)+'.COORDO .VALE')
399 linomno =aster.getvectjev(nommail.ljust(8)+'.NOMNOE')
400 collgrno=aster.getcolljev(nommail.ljust(8)+'.GROUPENO')
402 motscles['ACTION']=[]
404 if tgrno[:3]!='LON' :
405 if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
406 else : vecty=(sin(ASEP*pi/180.),0.,cos(ASEP*pi/180.))
408 if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
410 grpn=collgrno['FGAUTU ']
411 LT1=coord[3*(grpn[0]-1)+2]
413 X = coord[3*(node-1)]
414 Y = coord[3*(node-1)+1]
415 Z = coord[3*(node-1)+2]
416 RCIN = mc_IMPR_TABLE['R_CINTR']
418 elif X<(-1*RCIN) : ANGSEC=mc_IMPR_TABLE['ANGLE']*pi/180.
420 VCOS = cos((-LT1-Z)/(sqrt((X+RCIN)**2+Y**2 )))
421 VSIN = sin((-LT1-Z)/(sqrt((X+RCIN)**2+Y**2 )))
422 ANGSEC = atan2(VSIN,VCOS)
423 vecty=(sin(ANGSEC),0.,cos(ANGSEC))
424 motscles['ACTION'].append(_F(RESULTAT=nomres,
425 NOM_CHAM='SIEF_ELNO_ELGA',
428 NOM_CMP=('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ',),
431 OPERATION='MOYENNE',))
432 motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
433 tablig[3]=POST_RELEVE_T(**motscles)
435 # prelevements des ligaments sur les sections MI,TU et GV
436 # les 8 ligaments sont tous les 45 degres
438 ACOUR = mc_IMPR_TABLE['ANGLE']*pi/180.0
443 if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
445 if i==0 : vecty=(sin(ACOUR/2.),0.,cos(ACOUR/2.))
446 if i==1 : vecty=(0.,0.,1.)
447 if i==2 : vecty=(sin(ACOUR),0.,cos(ACOUR))
449 motscles['TITRE']='TABLE DE POST-TRAITEMENT MOYENNE RCCM SECTION '+SECT[i]
451 # moyenne RCCM sur les sections MI,TU et GV
453 motscles['SEGMENT']=[]
454 for j in range(8) : motscles['SEGMENT'].append(_F(INTITULE=LIG[j]+SECT[i],
455 GROUP_NO=LIG[j]+SECT[i]))
456 secrcm[i] = POST_RCCM( MAILLAGE = MAILLAGE ,
458 TYPE_RESU_MECA = 'EVOLUTION' ,
460 TRANSITOIRE = _F(RESULTAT = nomres,NOM_CHAM='SIEF_ELNO_ELGA'),
463 # invariants sur les sections MI,TU et GV
466 motscles['TITRE']='TABLE DE POST-TRAITEMENT INVARIANTS SECTION '+SECT[i]
467 motscles['ACTION']=[]
468 for j in range(8) : motscles['ACTION'].append(_F(INTITULE =LIG[j]+SECT[i],
469 GROUP_NO =LIG[j]+SECT[i],
471 NOM_CHAM ='SIEF_ELNO_ELGA',
473 OPERATION='EXTRACTION'))
474 secinv[i] = POST_RELEVE_T(**motscles)
476 # moyennes contraintes sur les sections MI,TU et GV
479 motscles['TITRE']='TABLE DE POST-TRAITEMENT MOYENNE SECTION '+SECT[i]
480 motscles['ACTION']=[]
481 for j in range(8) : motscles['ACTION'].append(_F(INTITULE =LIG[j]+SECT[i],
484 GROUP_NO =LIG[j]+SECT[i],
486 NOM_CHAM ='SIEF_ELNO_ELGA',
487 NOM_CMP =('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ'),
488 OPERATION='MOYENNE'))
489 secmoy[i] = POST_RELEVE_T(**motscles)
492 # impression des valeurs maximales pour chaque sous-epaisseur
494 if mc_IMPR_TABLE['TOUT_PARA']=='OUI' :
495 list_para=['TRESCA_MEMBRANE','TRESCA_MFLE','TRESCA','SI_LONG','SI_RADI','SI_CIRC']
496 else : list_para=mc_IMPR_TABLE['NOM_PARA']
497 if 'TRESCA_MEMBRANE' in list_para:
498 IMPR_TABLE(TABLE = tablig[1],
499 FILTRE = _F( NOM_PARA ='PM', CRIT_COMP ='MAXI'),
500 NOM_PARA = ('INTITULE','PM'));
501 if 'TRESCA_MFLE' in list_para:
502 IMPR_TABLE(TABLE = tablig[1],
503 FILTRE =(_F( NOM_PARA ='LIEU',VALE_K ='ORIG'),
504 _F( NOM_PARA ='PMB', CRIT_COMP='MAXI'),),
505 NOM_PARA = ('INTITULE','PMB'));
506 IMPR_TABLE(TABLE = tablig[1],
507 FILTRE =(_F( NOM_PARA='LIEU', VALE_K ='EXTR'),
508 _F( NOM_PARA ='PMB', CRIT_COMP='MAXI'),),
509 NOM_PARA = ('INTITULE','PMB'));
510 if 'SI_RADI' in list_para:
511 IMPR_TABLE(TABLE = tablig[3],
512 FILTRE =(_F( NOM_PARA='QUANTITE',VALE_K ='MOMENT_0'),
513 _F( NOM_PARA ='SIXX', CRIT_COMP='MAXI'),),
514 NOM_PARA = ('INTITULE','SIXX'));
515 if 'SI_LONG' in list_para:
516 IMPR_TABLE(TABLE = tablig[3],
517 FILTRE =(_F( NOM_PARA='QUANTITE',VALE_K ='MOMENT_0'),
518 _F( NOM_PARA ='SIYY', CRIT_COMP='MAXI'),),
519 NOM_PARA = ('INTITULE','SIYY'));
520 if 'SI_CIRC' in list_para:
521 IMPR_TABLE(TABLE = tablig[3],
522 FILTRE =(_F( NOM_PARA='QUANTITE',VALE_K ='MOMENT_0'),
523 _F( NOM_PARA ='SIZZ', CRIT_COMP='MAXI'),),
524 NOM_PARA = ('INTITULE','SIZZ'));
525 if 'TRESCA' in list_para:
526 IMPR_TABLE(TABLE = tablig[2],
527 NOM_PARA = ('INTITULE','NOEUD','TRESCA',),
528 PAGINATION = 'INTITULE',
529 FILTRE = _F( NOM_PARA = 'TRESCA',
530 CRIT_COMP = 'MAXI' ) ) ;
532 # impression des resultats pour chaque sous-epaisseur
534 if 'TRESCA_MEMBRANE' in list_para:
535 IMPR_TABLE(TABLE = tablig[1],
536 FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
537 NOM_PARA = ('INTITULE','PM'));
538 if 'TRESCA_MFLE' in list_para:
539 IMPR_TABLE(TABLE = tablig[1],
540 FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
541 NOM_PARA = ('INTITULE','PMB'));
542 IMPR_TABLE(TABLE = tablig[1],
543 FILTRE = _F( NOM_PARA='LIEU', VALE_K ='EXTR'),
544 NOM_PARA = ('INTITULE','PMB'));
545 if 'SI_RADI' in list_para:
546 IMPR_TABLE(TABLE = tablig[3],
547 FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
548 NOM_PARA = ('INTITULE','SIXX'));
549 if 'SI_LONG' in list_para:
550 IMPR_TABLE(TABLE = tablig[3],
551 FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
552 NOM_PARA = ('INTITULE','SIYY'));
553 if 'SI_CIRC' in list_para:
554 IMPR_TABLE(TABLE = tablig[3],
555 FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
556 NOM_PARA = ('INTITULE','SIZZ'));
557 if 'TRESCA' in list_para:
558 IMPR_TABLE(TABLE = tablig[2],
559 NOM_PARA = ('INTITULE','NOEUD','TRESCA',),
560 PAGINATION = 'INTITULE');
562 # impression des resultats pour les sections MI, TU et GV
565 if 'TRESCA_MEMBRANE' in list_para:
566 IMPR_TABLE(TABLE = secrcm[k],
567 FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
568 NOM_PARA = ('INTITULE','PM'));
569 if 'TRESCA_MFLE' in list_para:
570 IMPR_TABLE(TABLE = secrcm[k],
571 FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
572 NOM_PARA = ('INTITULE','PMB'));
573 IMPR_TABLE(TABLE = secrcm[k],
574 FILTRE = _F( NOM_PARA='LIEU', VALE_K ='EXTR'),
575 NOM_PARA = ('INTITULE','PMB'));
576 if 'SI_RADI' in list_para:
577 IMPR_TABLE(TABLE = secmoy[k],
578 FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
579 NOM_PARA = ('INTITULE','SIXX'));
580 if 'SI_LONG' in list_para:
581 IMPR_TABLE(TABLE = secmoy[k],
582 FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
583 NOM_PARA = ('INTITULE','SIYY'));
584 if 'SI_CIRC' in list_para:
585 IMPR_TABLE(TABLE = secmoy[k],
586 FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
587 NOM_PARA = ('INTITULE','SIZZ'));
588 if 'TRESCA' in list_para:
589 IMPR_TABLE(TABLE = secinv[k],
590 NOM_PARA = ('INTITULE','NOEUD','TRESCA',),
591 PAGINATION = 'INTITULE');
593 if TYPE_MAILLAGE in ('FISS_COUDE','FISS_AXIS_DEB'):
595 # --- post traitement fissure : calcul de g ----
598 if FOND_FISS != None : self.DeclareOut('fonfis',FOND_FISS)
599 if TYPE_MAILLAGE =='FISS_COUDE' :
600 motscles['FOND_FISS']=_F(GROUP_NO='FONDFISS')
601 motscles['VECT_GRNO_ORIG']= ('PFOR','THOR')
602 motscles['VECT_GRNO_EXTR']= ('PFEX','THEX')
604 motscles['FOND_FERME']=_F(GROUP_MA='FONDFISS',
605 GROUP_NO_ORIG='PFOR',
606 GROUP_MA_ORIG='MAIL_ORI')
607 fonfis=DEFI_FOND_FISS(MAILLAGE=MAILLAGE,
608 LEVRE_SUP=_F(GROUP_MA='FACE1'),
609 LEVRE_INF=_F(GROUP_MA='FACE2'),
613 for thet in THETA_3D:
614 _nothet=CALC_THETA(MODELE=modele,
616 THETA_3D=_F(TOUT = 'OUI',
618 R_INF = thet['R_INF'],
619 R_SUP = thet['R_SUP'],),
622 if COMP_INCR!=None : motscles['COMP_INCR']=_F(RELATION=COMP_INCR['RELATION'])
623 if COMP_ELAS!=None : motscles['COMP_ELAS']=_F(RELATION=COMP_ELAS['RELATION'])
624 _nogthe=CALC_G_THETA_T(
631 IMPR_TABLE(TABLE=_nogthe,);
633 for thet in THETA_3D:
635 if COMP_INCR!=None : motscles['COMP_INCR']=_F(RELATION=COMP_INCR['RELATION'])
636 if COMP_ELAS!=None : motscles['COMP_ELAS']=_F(RELATION=COMP_ELAS['RELATION'])
637 if TYPE_MAILLAGE =='FISS_COUDE' :
638 motscles['LISSAGE_THETA']='LEGENDRE'
639 motscles['LISSAGE_G'] ='LEGENDRE'
640 elif TYPE_MAILLAGE =='FISS_AXIS_DEB' :
641 motscles['LISSAGE_THETA']='LAGRANGE'
642 motscles['LISSAGE_G'] ='LAGRANGE'
643 _nogloc=CALC_G_LOCAL_T(MODELE =modele,
649 R_INF = thet['R_INF'],
650 R_SUP = thet['R_SUP'],
654 IMPR_TABLE(TABLE=_nogloc,);
656 # --- commande IMPR_RESU ---
661 if IMPRESSION['FORMAT']=='IDEAS' :
662 motscles['VERSION' ]= IMPRESSION['VERSION']
663 if IMPRESSION['FORMAT']=='CASTEM' :
664 motscles['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
665 mcfresu.append(_F(MAILLAGE=MAILLAGE,RESULTAT=nomres,))
668 if IMPRESSION['FORMAT']=='IDEAS' :
669 motscles['VERSION' ]= IMPRESSION['VERSION']
670 if IMPRESSION['FORMAT']=='CASTEM' :
671 motscles['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
672 mcfresu.append(_F(RESULTAT=resuth,))
673 IMPR_RESU( MODELE = modele,
675 FORMAT=IMPRESSION['FORMAT'],**motscles)