1 #@ MODIF macr_ascouf_calc_ops Macro DATE 05/09/2007 AUTEUR SALMONA L.SALMONA
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
35 from Utilitai.Utmess import UTMESS
37 # On recopie les mots cles affe_materiau et impr_table pour les proteger
38 mc_AFFE_MATERIAU=AFFE_MATERIAU
39 mc_IMPR_TABLE =IMPR_TABLE
40 # On importe les definitions des commandes a utiliser dans la macro
41 AFFE_MODELE =self.get_cmd('AFFE_MODELE' )
42 AFFE_MATERIAU =self.get_cmd('AFFE_MATERIAU' )
43 AFFE_CARA_ELEM =self.get_cmd('AFFE_CARA_ELEM' )
44 AFFE_CHAR_THER_F =self.get_cmd('AFFE_CHAR_THER_F')
45 THER_LINEAIRE =self.get_cmd('THER_LINEAIRE' )
46 AFFE_CHAR_MECA =self.get_cmd('AFFE_CHAR_MECA' )
47 STAT_NON_LINE =self.get_cmd('STAT_NON_LINE' )
48 CALC_ELEM =self.get_cmd('CALC_ELEM' )
49 IMPR_RESU =self.get_cmd('IMPR_RESU' )
50 IMPR_TABLE =self.get_cmd('IMPR_TABLE' )
51 DEFI_FOND_FISS =self.get_cmd('DEFI_FOND_FISS' )
52 CALC_THETA =self.get_cmd('CALC_THETA' )
53 CALC_G =self.get_cmd('CALC_G' )
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 message= ' la condition aux limites sur bol a section conique \n'
67 message=message+' est ignoree pour un coude avec sous-epaisseurs \n'
68 UTMESS('A', "MACR_ASCOUF_CALC", message)
69 elif (TYPE_MAILLAGE[:4]!='FISS') and (CL_BOL_P2_GV['AZIMUT']!=None) :
70 UTMESS('E', "MACR_ASCOUF_CALC", "mot-cle AZIMUT non autorise dans le cas d un coude sain")
72 if mc_IMPR_TABLE!=None :
74 if (mc_IMPR_TABLE['NOM_PARA']==None) and (mc_IMPR_TABLE['POSI_ANGUL']==None) and (mc_IMPR_TABLE['POSI_CURV_LONGI']==None) :
75 UTMESS('E', "MACR_ASCOUF_CALC", "POSI_ANGUL POSI_CURV_LONGI est obligatoire")
77 if (mc_IMPR_TABLE['NOM_PARA']!=None) :
78 impr_table_nom_para= mc_IMPR_TABLE['NOM_PARA']
79 for impt in impr_table_nom_para :
80 if impt in ('SI_LONG','SI_CIRC','SI_RADI') :
82 if (((impt['ANGLE']==None) and (impt['POSI_ANGUL']==None) and (impt['R_CINTR' ]==None)) or
83 ((impt['ANGLE']==None) and (impt['R_CINTR' ]==None) and (impt['POSI_CURV_LONGI']==None)) ) :
84 UTMESS('E', "MACR_ASCOUF_CALC", "il faut renseigner : ANGLE, R_CINTR et POSI_ANGUL ou ANGLE, R_CINTR et POSI_CURV_LONGI")
85 if (mc_IMPR_TABLE['NOM_PARA']==None) : FLAG = 1
86 if not FLAG : UTMESS('A', "MACR_ASCOUF_CALC","ANGL_COUDE et ANGL_SOUS_EPAI sont inutiles dans ce cas")
88 #------------------------------------------------------------------
90 # --- commande AFFE_MODELE ---
92 self.DeclareOut('modele',MODELE)
94 if (PRES_REP!=None) and (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[:4]=='FISS') :
95 mcfact.append(_F(GROUP_MA=GRMAIL ,PHENOMENE='MECANIQUE',MODELISATION='3D' ))
97 mcfact.append(_F(GROUP_MA=GRMAIL[:5] ,PHENOMENE='MECANIQUE',MODELISATION='3D' ))
99 mcfact.append(_F(GROUP_MA='P1' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
100 if CL_BOL_P2_GV==None :
101 mcfact.append(_F(GROUP_MA='P2' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
102 modele = AFFE_MODELE( MAILLAGE = MAILLAGE ,
104 if ECHANGE!=None : # modele thermique
105 __modthe = AFFE_MODELE( MAILLAGE = MAILLAGE ,
106 AFFE = _F(TOUT ='OUI',
107 PHENOMENE ='THERMIQUE',
108 MODELISATION='3D' ) )
109 #------------------------------------------------------------------
111 # --- commande AFFE_MATERIAU ---
113 if CHAM_MATER!=None : self.DeclareOut('affmat',CHAM_MATER)
115 for mater in mc_AFFE_MATERIAU :
116 if mater['TOUT']!=None :
117 mcfact.append(_F(TOUT =mater['TOUT' ],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
118 rccmat = mater['MATER']
120 mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
121 if mater['GROUP_MA'][:5]=='COUDE' :
123 mcfact.append(_F(GROUP_MA='P1',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
124 mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
125 elif (len(mc_AFFE_MATERIAU)==1) and (CL_BOL_P2_GV==None) :
126 mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
127 elif (mater['BOL' ][:3]=='BOL' ) and (CL_BOL_P2_GV==None) :
128 mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
129 affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
132 #------------------------------------------------------------------
134 # --- commande AFFE_CARA_ELEM ---
136 if (TORS_P1!=None) or (CL_BOL_P2_GV==None) :
137 if CARA_ELEM!=None : self.DeclareOut('carael',CARA_ELEM)
139 motscles['DISCRET']=[]
140 if (TORS_P1!=None) : motscles['DISCRET'].append(_F( GROUP_MA='P1' ,
142 VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),)
143 if (CL_BOL_P2_GV==None) : motscles['DISCRET'].append(_F( GROUP_MA='P2' ,
145 VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),)
147 carael = AFFE_CARA_ELEM( MODELE = modele ,**motscles)
150 #------------------------------------------------------------------
152 # --- commande AFFE_CHAR_THER_F ---
153 # condition aux limites
155 __chther = AFFE_CHAR_THER_F( MODELE = __modthe ,
156 ECHANGE= _F(GROUP_MA='PEAUINT',
157 COEF_H =ECHANGE['COEF_H'],
158 TEMP_EXT=ECHANGE['TEMP_EXT'],), )
159 #------------------------------------------------------------------
161 # --- calcul thermique ---
163 if RESU_THER!=None : self.DeclareOut('resuth',RESU_THER)
165 if INCREMENT['NUME_INST_INIT']!=None : mcsimp['NUME_INIT']=INCREMENT['NUME_INST_INIT']
166 if INCREMENT['NUME_INST_FIN' ]!=None : mcsimp['NUME_FIN' ]=INCREMENT['NUME_INST_FIN' ]
167 mcfact=_F(LIST_INST=INCREMENT['LIST_INST'],**mcsimp)
168 resuth = THER_LINEAIRE( MODELE = __modthe ,
169 CHAM_MATER = affmat ,
170 TEMP_INIT = _F(STATIONNAIRE='OUI',),
171 EXCIT = _F(CHARGE=__chther,),
172 INCREMENT = mcfact, )
174 if CHARGE!=None : self.DeclareOut('chmeth',CHARGE)
175 chmeth = AFFE_CHAR_MECA( MODELE = modele ,
176 TEMP_CALCULEE = resuth )
177 #------------------------------------------------------------------
179 # --- commande AFFE_CHAR_MECA ---
180 # condition aux limites de type raccord 3d-poutre
181 # ou bien blocage de mouvements rigides en cas d embout
182 # a section conique, bol de type gv
185 motscles['LIAISON_ELEM']=[]
187 motscles['LIAISON_ELEM'].append(_F( OPTION ='3D_POU' ,
190 if CL_BOL_P2_GV==None :
191 motscles['LIAISON_ELEM'].append(_F( OPTION ='3D_POU' ,
194 motscles['DDL_IMPO' ]=_F( GROUP_NO ='P2' ,
202 motscles['FACE_IMPO' ]=_F( GROUP_MA ='CLGV' ,
204 ALPHA = CL_BOL_P2_GV['ANGLE' ]
205 AZIM = CL_BOL_P2_GV['AZIMUT']
206 ALPHAR = ALPHA*pi/180.0
207 AZIMR = AZIM *pi/180.0
210 if (AZIM!=0.0) and (AZIM!=180.0) and (ALPHA!=90.0) :
212 COEFB1.append(SIN(AZIMR)*COS(ALPHAR))
215 COEFB1.append(COS(AZIMR))
216 if (AZIM!=0.) and (AZIM!=180.) and (ALPHA!=0.):
218 COEFB1.append(-SIN(AZIMR)*SIN(ALPHAR))
219 POINT=['BOUT1',]*len(DDLB1)
220 motscles['LIAISON_DDL']=_F( GROUP_NO = POINT ,
225 _conlim = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
227 # --- commande AFFE_CHAR_MECA ---
228 # chargement mecanique : pres_rep, effet de fond
232 if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[:4]=='FISS') :
233 motscles['PRES_REP']=_F( GROUP_MA = ('PEAUINT','FACE1','FACE2') ,
234 PRES = PRES_REP['PRES'] ,)
236 motscles['PRES_REP']=_F( GROUP_MA = 'PEAUINT',
237 PRES = PRES_REP['PRES'] ,)
238 if PRES_REP['EFFE_FOND_P1']!='NON' :
239 motscles['EFFE_FOND']=_F( GROUP_MA_INT = 'BORDTU' ,
240 GROUP_MA = 'EXTUBE' ,
241 PRES = PRES_REP['PRES'] ,)
243 _chpres = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
245 # --- commande AFFE_CHAR_MECA ---
246 # chargement mecanique : torseur d efforts
253 if tors['FX']!=None : mcsimp['FX']=tors['FX']
254 if tors['FY']!=None : mcsimp['FY']=tors['FY']
255 if tors['FZ']!=None : mcsimp['FZ']=tors['FZ']
256 if tors['MX']!=None : mcsimp['MX']=tors['MX']
257 if tors['MY']!=None : mcsimp['MY']=tors['MY']
258 if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
259 mcfact=_F(GROUP_NO='P1',**mcsimp)
260 _chtor[i] = AFFE_CHAR_MECA( MODELE = modele ,
261 FORCE_NODALE = mcfact , )
264 # --- commande STAT_NON_LINE ---
268 mcfex=[] # mot clé facteur EXCIT
269 mcfex.append(_F(CHARGE=_conlim,))
271 mcfex.append(_F(CHARGE=chmeth,))
273 if PRES_REP['FONC_MULT']!=None :
274 mcfex.append(_F(CHARGE=_chpres,FONC_MULT=PRES_REP['FONC_MULT']))
276 mcfex.append(_F(CHARGE=_chpres,))
279 for tors in TORS_P1 :
280 if tors['FONC_MULT']!=None :
281 mcfex.append(_F(CHARGE=_chtor[i],FONC_MULT=tors['FONC_MULT']))
283 mcfex.append(_F(CHARGE=_chtor[i],))
285 motscles['EXCIT'] =mcfex
287 mcfci=[] # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets
289 mcfci.append(_F(TOUT='OUI' ,RELATION=COMP_INCR['RELATION']))
290 elif COMP_ELAS!=None :
291 motscles['COMP_ELAS'] =_F(GROUP_MA='COUDE',RELATION=COMP_ELAS['RELATION'])
292 if TORS_P1!=None : mcfci.append( _F(GROUP_MA='P1',RELATION='ELAS'))
293 if CL_BOL_P2_GV==None: mcfci.append( _F(GROUP_MA='P2',RELATION='ELAS'))
294 motscles['COMP_INCR'] =mcfci
296 dSolveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
297 for i in dSolveur.keys():
298 if dSolveur[i]==None : del dSolveur[i]
300 dConverg=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
301 for i in dConverg.keys():
302 if dConverg[i]==None : del dConverg[i]
304 dNewton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
305 for i in dNewton.keys():
306 if dNewton[i]==None : del dNewton[i]
308 dRechlin=RECH_LINEAIRE[0].cree_dict_valeurs(RECH_LINEAIRE[0].mc_liste)
309 for i in dRechlin.keys():
310 if dRechlin[i]==None : del dRechlin[i]
312 dIncrem=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
313 for i in dIncrem.keys():
314 if dIncrem[i]==None : del dIncrem[i]
317 motscles['TITRE' ] =TITRE
318 motscles ['SOLVEUR' ] =dSolveur
319 motscles ['CONVERGENCE' ] =dConverg
320 motscles ['NEWTON' ] =dNewton
321 motscles ['RECH_LINEAIRE'] =dRechlin
322 motscles ['INCREMENT' ] =dIncrem
323 self.DeclareOut('nomres',self.sd)
324 nomres = STAT_NON_LINE( MODELE = modele ,
325 CHAM_MATER = affmat ,
327 INFO = INFO , **motscles)
329 # --- commande CALC_ELEM ---
331 nomres = CALC_ELEM( reuse = nomres,
335 OPTION = ('SIEF_ELNO_ELGA','EQUI_ELNO_SIGM') ,
338 # --- post-traitements ---
340 if TYPE_MAILLAGE=='SOUS_EPAIS_COUDE':
342 # --- post traitement sous-epaisseurs: ligaments ---
344 if mc_IMPR_TABLE!=None:
346 SECT=('MI','TU','GV')
347 LIG=('FDRO','EXDR','EXTR','EXGA','FGAU','INGA','INTR','INDR')
348 if mc_IMPR_TABLE['POSI_ANGUL']==None:
349 ASEP=(mc_IMPR_TABLE['POSI_CURV_LONGI']/mc_IMPR_TABLE['R_CINTR'])*(180./pi)
351 ASEP=mc_IMPR_TABLE['POSI_ANGUL']
353 # moyenne_rccm, invariant et moyenne sur les ligaments dans
356 l_grno=MAILLAGE.LIST_GROUP_NO()
360 # prelevements des ligaments circonferentiels et longitudinaux
361 # de la sous-epaisseur
364 for tgrno in l_grno :
365 if tgrno[0][:3] in ('CIR','LON') : lgrno.append(tgrno[0])
366 elif tgrno[0][:5]=='PCENT' : lgrno.append(tgrno[0])
367 elif (tgrno[0][:4] in LIG) and (tgrno[0][4:6] not in ('GV','TU','MI')): lgrno.append(tgrno[0])
370 motscles['ACTION']=[]
372 motscles['ACTION'].append(_F(RESULTAT=nomres,
373 NOM_CHAM='SIEF_ELNO_ELGA',
377 OPERATION='EXTRACTION',))
378 motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
379 tabprl[1]=POST_RELEVE_T(**motscles)
380 tablig[1]=POST_RCCM(MATER = rccmat,
381 TYPE_RESU_MECA = 'EVOLUTION',
383 TRANSITOIRE=_F(TABL_RESU_MECA = tabprl[1],),)
386 motscles['ACTION']=[]
388 motscles['ACTION'].append(_F(RESULTAT=nomres,
389 NOM_CHAM='SIEF_ELNO_ELGA',
393 OPERATION='EXTRACTION',))
394 motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
396 tablig[2]=POST_RELEVE_T(**motscles)
400 coord =aster.getvectjev(nommail.ljust(8)+'.COORDO .VALE')
401 linomno =aster.getvectjev(nommail.ljust(8)+'.NOMNOE')
402 collgrno=aster.getcolljev(nommail.ljust(8)+'.GROUPENO')
404 motscles['ACTION']=[]
406 if tgrno[:3]!='LON' :
407 if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
408 else : vecty=(sin(ASEP*pi/180.),0.,cos(ASEP*pi/180.))
410 if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
412 grpn=collgrno['FGAUTU ']
413 LT1=coord[3*(grpn[0]-1)+2]
415 X = coord[3*(node-1)]
416 Y = coord[3*(node-1)+1]
417 Z = coord[3*(node-1)+2]
418 RCIN = mc_IMPR_TABLE['R_CINTR']
420 elif X<(-1*RCIN) : ANGSEC=mc_IMPR_TABLE['ANGLE']*pi/180.
422 VCOS = cos((-LT1-Z)/(sqrt((X+RCIN)**2+Y**2 )))
423 VSIN = sin((-LT1-Z)/(sqrt((X+RCIN)**2+Y**2 )))
424 ANGSEC = atan2(VSIN,VCOS)
425 vecty=(sin(ANGSEC),0.,cos(ANGSEC))
426 motscles['ACTION'].append(_F(RESULTAT=nomres,
427 NOM_CHAM='SIEF_ELNO_ELGA',
430 NOM_CMP=('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ',),
433 OPERATION='MOYENNE',))
434 motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
435 tablig[3]=POST_RELEVE_T(**motscles)
437 # prelevements des ligaments sur les sections MI,TU et GV
438 # les 8 ligaments sont tous les 45 degres
440 ACOUR = mc_IMPR_TABLE['ANGLE']*pi/180.0
446 if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
448 if i==0 : vecty=(sin(ACOUR/2.),0.,cos(ACOUR/2.))
449 if i==1 : vecty=(0.,0.,1.)
450 if i==2 : vecty=(sin(ACOUR),0.,cos(ACOUR))
452 motscles['TITRE']='TABLE DE POST-TRAITEMENT MOYENNE RCCM SECTION '+SECT[i]
454 # moyenne RCCM sur les sections MI,TU et GV
457 motscles['ACTION']=[]
459 motscles['ACTION'].append(_F(RESULTAT=nomres,
460 NOM_CHAM='SIEF_ELNO_ELGA',
462 INTITULE=LIG[j]+SECT[i],
463 GROUP_NO=LIG[j]+SECT[i],
464 OPERATION='EXTRACTION',))
465 motscles['TITRE']='TABLE DE POST-TRAITEMENT MOYENNE RCCM SECTION '+SECT[i]
466 secprl[i]=POST_RELEVE_T(**motscles)
467 secrcm[i]=POST_RCCM(MATER = rccmat,
468 TYPE_RESU_MECA = 'EVOLUTION',
470 TRANSITOIRE=_F(TABL_RESU_MECA = secprl[i],),)
472 # invariants sur les sections MI,TU et GV
475 motscles['TITRE']='TABLE DE POST-TRAITEMENT INVARIANTS SECTION '+SECT[i]
476 motscles['ACTION']=[]
477 for j in range(8) : motscles['ACTION'].append(_F(INTITULE =LIG[j]+SECT[i],
478 GROUP_NO =LIG[j]+SECT[i],
480 NOM_CHAM ='SIEF_ELNO_ELGA',
482 OPERATION='EXTRACTION'))
483 secinv[i] = POST_RELEVE_T(**motscles)
485 # moyennes contraintes sur les sections MI,TU et GV
488 motscles['TITRE']='TABLE DE POST-TRAITEMENT MOYENNE SECTION '+SECT[i]
489 motscles['ACTION']=[]
490 for j in range(8) : motscles['ACTION'].append(_F(INTITULE =LIG[j]+SECT[i],
493 GROUP_NO =LIG[j]+SECT[i],
495 NOM_CHAM ='SIEF_ELNO_ELGA',
496 NOM_CMP =('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ'),
497 OPERATION='MOYENNE'))
498 secmoy[i] = POST_RELEVE_T(**motscles)
501 # impression des valeurs maximales pour chaque sous-epaisseur
503 if mc_IMPR_TABLE['TOUT_PARA']=='OUI' :
504 list_para=['TRESCA_MEMBRANE','TRESCA_MFLE','TRESCA','SI_LONG','SI_RADI','SI_CIRC']
505 else : list_para=mc_IMPR_TABLE['NOM_PARA']
506 if 'TRESCA_MEMBRANE' in list_para:
507 IMPR_TABLE(TABLE = tablig[1],
508 FILTRE = _F( NOM_PARA ='PM', CRIT_COMP ='MAXI'),
509 NOM_PARA = ('INTITULE','PM'));
510 if 'TRESCA_MFLE' in list_para:
511 IMPR_TABLE(TABLE = tablig[1],
512 FILTRE =(_F( NOM_PARA ='LIEU',VALE_K ='ORIG'),
513 _F( NOM_PARA ='PMB', CRIT_COMP='MAXI'),),
514 NOM_PARA = ('INTITULE','PMB'));
515 IMPR_TABLE(TABLE = tablig[1],
516 FILTRE =(_F( NOM_PARA='LIEU', VALE_K ='EXTR'),
517 _F( NOM_PARA ='PMB', CRIT_COMP='MAXI'),),
518 NOM_PARA = ('INTITULE','PMB'));
519 if 'SI_RADI' in list_para:
520 IMPR_TABLE(TABLE = tablig[3],
521 FILTRE =(_F( NOM_PARA='QUANTITE',VALE_K ='MOMENT_0'),
522 _F( NOM_PARA ='SIXX', CRIT_COMP='MAXI'),),
523 NOM_PARA = ('INTITULE','SIXX'));
524 if 'SI_LONG' in list_para:
525 IMPR_TABLE(TABLE = tablig[3],
526 FILTRE =(_F( NOM_PARA='QUANTITE',VALE_K ='MOMENT_0'),
527 _F( NOM_PARA ='SIYY', CRIT_COMP='MAXI'),),
528 NOM_PARA = ('INTITULE','SIYY'));
529 if 'SI_CIRC' in list_para:
530 IMPR_TABLE(TABLE = tablig[3],
531 FILTRE =(_F( NOM_PARA='QUANTITE',VALE_K ='MOMENT_0'),
532 _F( NOM_PARA ='SIZZ', CRIT_COMP='MAXI'),),
533 NOM_PARA = ('INTITULE','SIZZ'));
534 if 'TRESCA' in list_para:
535 IMPR_TABLE(TABLE = tablig[2],
536 NOM_PARA = ('INTITULE','NOEUD','TRESCA',),
537 PAGINATION = 'INTITULE',
538 FILTRE = _F( NOM_PARA = 'TRESCA',
539 CRIT_COMP = 'MAXI' ) ) ;
541 # impression des resultats pour chaque sous-epaisseur
543 if 'TRESCA_MEMBRANE' in list_para:
544 IMPR_TABLE(TABLE = tablig[1],
545 FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
546 NOM_PARA = ('INTITULE','PM'));
547 if 'TRESCA_MFLE' in list_para:
548 IMPR_TABLE(TABLE = tablig[1],
549 FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
550 NOM_PARA = ('INTITULE','PMB'));
551 IMPR_TABLE(TABLE = tablig[1],
552 FILTRE = _F( NOM_PARA='LIEU', VALE_K ='EXTR'),
553 NOM_PARA = ('INTITULE','PMB'));
554 if 'SI_RADI' in list_para:
555 IMPR_TABLE(TABLE = tablig[3],
556 FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
557 NOM_PARA = ('INTITULE','SIXX'));
558 if 'SI_LONG' in list_para:
559 IMPR_TABLE(TABLE = tablig[3],
560 FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
561 NOM_PARA = ('INTITULE','SIYY'));
562 if 'SI_CIRC' in list_para:
563 IMPR_TABLE(TABLE = tablig[3],
564 FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
565 NOM_PARA = ('INTITULE','SIZZ'));
566 if 'TRESCA' in list_para:
567 IMPR_TABLE(TABLE = tablig[2],
568 NOM_PARA = ('INTITULE','NOEUD','TRESCA',),
569 PAGINATION = 'INTITULE');
571 # impression des resultats pour les sections MI, TU et GV
574 if 'TRESCA_MEMBRANE' in list_para:
575 IMPR_TABLE(TABLE = secrcm[k],
576 FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
577 NOM_PARA = ('INTITULE','PM'));
578 if 'TRESCA_MFLE' in list_para:
579 IMPR_TABLE(TABLE = secrcm[k],
580 FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
581 NOM_PARA = ('INTITULE','PMB'));
582 IMPR_TABLE(TABLE = secrcm[k],
583 FILTRE = _F( NOM_PARA='LIEU', VALE_K ='EXTR'),
584 NOM_PARA = ('INTITULE','PMB'));
585 if 'SI_RADI' in list_para:
586 IMPR_TABLE(TABLE = secmoy[k],
587 FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
588 NOM_PARA = ('INTITULE','SIXX'));
589 if 'SI_LONG' in list_para:
590 IMPR_TABLE(TABLE = secmoy[k],
591 FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
592 NOM_PARA = ('INTITULE','SIYY'));
593 if 'SI_CIRC' in list_para:
594 IMPR_TABLE(TABLE = secmoy[k],
595 FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
596 NOM_PARA = ('INTITULE','SIZZ'));
597 if 'TRESCA' in list_para:
598 IMPR_TABLE(TABLE = secinv[k],
599 NOM_PARA = ('INTITULE','NOEUD','TRESCA',),
600 PAGINATION = 'INTITULE');
602 if TYPE_MAILLAGE in ('FISS_COUDE','FISS_AXIS_DEB'):
604 # --- post traitement fissure : calcul de g ----
607 if FOND_FISS != None : self.DeclareOut('fonfis',FOND_FISS)
608 if TYPE_MAILLAGE =='FISS_COUDE' :
609 motscles['FOND_FISS']=_F(GROUP_NO='FONDFISS')
610 motscles['VECT_GRNO_ORIG']= ('PFOR','THOR')
611 motscles['VECT_GRNO_EXTR']= ('PFEX','THEX')
613 motscles['FOND_FERME']=_F(GROUP_MA='FONDFISS',
614 GROUP_NO_ORIG='PFOR',
615 GROUP_MA_ORIG='MAIL_ORI')
616 fonfis=DEFI_FOND_FISS(MAILLAGE=MAILLAGE,
617 LEVRE_SUP=_F(GROUP_MA='FACE1'),
618 LEVRE_INF=_F(GROUP_MA='FACE2'),
622 for thet in THETA_3D:
623 _nothet=CALC_THETA(MODELE=modele,
625 THETA_3D=_F(TOUT = 'OUI',
627 R_INF = thet['R_INF'],
628 R_SUP = thet['R_SUP'],),
631 if COMP_INCR!=None : motscles['COMP_INCR']=_F(RELATION=COMP_INCR['RELATION'])
632 if COMP_ELAS!=None : motscles['COMP_ELAS']=_F(RELATION=COMP_ELAS['RELATION'])
633 _nogthe=CALC_G( RESULTAT =nomres,
634 OPTION='CALC_G_GLOB',
636 THETA =_F(THETA=_nothet),**motscles);
638 IMPR_TABLE(TABLE=_nogthe,);
640 for thet in THETA_3D:
642 if COMP_INCR!=None : motscles['COMP_INCR']=_F(RELATION=COMP_INCR['RELATION'])
643 if COMP_ELAS!=None : motscles['COMP_ELAS']=_F(RELATION=COMP_ELAS['RELATION'])
644 if TYPE_MAILLAGE =='FISS_COUDE' :
645 motscles['LISSAGE']=_F(LISSAGE_THETA='LEGENDRE',
646 LISSAGE_G='LEGENDRE',
648 elif TYPE_MAILLAGE =='FISS_AXIS_DEB' :
649 motscles['LISSAGE']=_F(LISSAGE_THETA='LAGRANGE',
650 LISSAGE_G='LAGRANGE',
652 _nogloc=CALC_G (RESULTAT =nomres,
654 THETA=_F( FOND_FISS =fonfis,
655 R_INF = thet['R_INF'],
656 R_SUP = thet['R_SUP'],),**motscles);
658 IMPR_TABLE(TABLE=_nogloc,);
660 # --- commande IMPR_RESU ---
665 if IMPRESSION['FORMAT']=='IDEAS' :
666 motscles['VERSION' ]= IMPRESSION['VERSION']
667 if IMPRESSION['FORMAT']=='CASTEM' :
668 motscles['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
669 mcfresu.append(_F(MAILLAGE=MAILLAGE,RESULTAT=nomres,))
672 if IMPRESSION['FORMAT']=='IDEAS' :
673 motscles['VERSION' ]= IMPRESSION['VERSION']
674 if IMPRESSION['FORMAT']=='CASTEM' :
675 motscles['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
676 mcfresu.append(_F(RESULTAT=resuth,))
677 IMPR_RESU( MODELE = modele,
679 FORMAT=IMPRESSION['FORMAT'],**motscles)