-#@ MODIF calc_table_ops Macro DATE 10/10/2006 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF calc_table_ops Macro DATE 16/05/2007 AUTEUR COURTOIS M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
from Utilitai.Utmess import UTMESS
from Utilitai import transpose
from Utilitai.Table import Table, merge
- from Utilitai.Sensibilite import NomCompose
ier = 0
# La macro compte pour 1 dans la numerotation des commandes
# 0. faut-il utiliser une table dérivée
form_sens='\n... SENSIBILITE AU PARAMETRE %s (SD COMP %s)'
if args['SENSIBILITE']:
- ncomp = NomCompose(TABLE, args['SENSIBILITE'], msg='F')
+ ncomp = self.jdc.memo_sensi.get_nocomp(TABLE.nom, args['SENSIBILITE'].nom)
sdtab = table_jeveux(ncomp)
tab = sdtab.EXTR_TABLE()
else:
-#@ MODIF creation_donnees_homard Macro DATE 30/10/2006 AUTEUR DURAND C.DURAND
+#@ MODIF creation_donnees_homard Macro DATE 04/04/2007 AUTEUR ABBAS M.ABBAS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-# RESPONSABLE MCOURTOI M.COURTOIS
+# RESPONSABLE ABBAS M.ABBAS
"""
Cette classe crée le fichier de configuration permettant de lancer HOMARD depuis Code_Aster.
"""
-__revision__ = "V1.1"
+__revision__ = "V1.2"
__all__ = [ ]
import os
import os.path
+from types import ListType, TupleType
+EnumTypes = (ListType, TupleType)
try:
from Utilitai.Utmess import UTMESS
self.fic_homard_niterp1 = "M_" + self.str_niterp1 + ".hom"
else :
self.fic_homard_niter = None
+ self.fic_homard_niterp1 = None
#
# 6.1. Le pilotage de l'adaptation
#
if message_erreur is not None :
UTMESS("F", self.nom_macro, message_erreur)
#
- return self.fic_homard_niter
+ return self.fic_homard_niter, self.fic_homard_niterp1
# ------------------------------------------------------------------------------
def ouvre_fichier (self, nomfic_local) :
"""Ouvre en écriture un fichier après l'avoir éventuellement détruit
self.ecrire_ligne_configuration_2("CCNoMFro", self.dico_configuration["NOM_MED_MAILLAGE_FRONTIERE"])
if self.mots_cles.has_key("GROUP_MA") :
if self.mots_cles["GROUP_MA"] is not None :
- for group_ma in self.mots_cles["GROUP_MA"] :
- self.ecrire_ligne_configuration_2("CCGroFro", group_ma)
+ if not type(self.mots_cles["GROUP_MA"]) in EnumTypes :
+ self.ecrire_ligne_configuration_2("CCGroFro", self.mots_cles["GROUP_MA"])
+ else :
+ for group_ma in self.mots_cles["GROUP_MA"] :
+ self.ecrire_ligne_configuration_2("CCGroFro", group_ma)
#
# 8. L'éventuel maillage annexe
#
-#@ MODIF impr_table_ops Macro DATE 06/11/2006 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF impr_table_ops Macro DATE 16/05/2007 AUTEUR COURTOIS M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
from Cata.cata import table_jeveux
from Utilitai.Utmess import UTMESS
from Utilitai.UniteAster import UniteAster
- from Utilitai.Sensibilite import NomCompose
ier=0
# La macro compte pour 1 dans la numerotation des commandes
self.set_icmd(1)
if not type(lps) in EnumTypes:
lps=[lps,]
for ps in lps:
- ncomp = NomCompose(TABLE, ps)
+ ncomp = self.jdc.memo_sensi.get_nocomp(TABLE.nom, ps.nom)
if ncomp != None:
sdtab = table_jeveux(ncomp)
tabs = sdtab.EXTR_TABLE()
-#@ MODIF macr_adap_mail_ops Macro DATE 30/10/2006 AUTEUR DURAND C.DURAND
+#@ MODIF macr_adap_mail_ops Macro DATE 04/04/2007 AUTEUR ABBAS M.ABBAS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
donnees_homard = creation_donnees_homard.creation_donnees_homard ( self.nom, args, dico_configuration )
if ( INFO > 1 ) :
donnees_homard.quel_mode ( )
- fic_homard_niter = donnees_homard.creation_configuration ( )
+ fic_homard_niter, fic_homard_niterp1 = donnees_homard.creation_configuration ( )
donnees_homard.ecrire_fichier_configuration ( )
if ( mode_homard == "INFO" ) :
Nom_Fichier_Donnees = donnees_homard.ecrire_fichier_donnees ( )
INFO = INFO, **motscsi )
#
#====================================================================
-# 8. Menage des fichiers MED et HOMARD devenus inutiles
+# 8. Menage des fichiers devenus inutiles
+# On doit imperativement garder le dernier fichier homard produit
+# En mode d'information, on garde également les fichiers textes
#====================================================================
#
- liste_aux = [ fichier_aster_vers_homard ]
+ liste_aux = [fichier_aster_vers_homard]
+ liste_aux_bis = os.listdir(Rep_Calc_HOMARD_global)
+ for fic in liste_aux_bis :
+ fic_total = os.path.join(Rep_Calc_HOMARD_global, fic)
+ liste_aux.append(fic_total)
+ liste_aux_bis = []
if ( mode_homard == "ADAP" ) :
liste_aux.append(fichier_homard_vers_aster)
- fic = os.path.join(Rep_Calc_HOMARD_global, fic_homard_niter)
- liste_aux.append(fic)
-#gn print "liste_aux = ",liste_aux
+ fic = os.path.join(Rep_Calc_HOMARD_global, fic_homard_niterp1)
+ liste_aux_bis.append(fic)
#
for fic in liste_aux :
- if ( INFO > 1 ) :
- print "Destruction du fichier ", fic
- if os.path.isfile(fic) :
- try :
- os.remove(fic)
- except os.error,codret_partiel :
- self.cr.warn("Code d'erreur de remove : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- UTMESS("F", self.nom, "Impossible de détruire le fichier : "+fic)
+ if fic not in liste_aux_bis :
+ if ( INFO > 1 ) :
+ print "Destruction du fichier ", fic
+ if os.path.isfile(fic) :
+ try :
+ os.remove(fic)
+ except os.error,codret_partiel :
+ self.cr.warn("Code d'erreur de remove : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
+ UTMESS("F", self.nom, "Impossible de détruire le fichier : "+fic)
#gn print "Répertoire ",Rep_Calc_HOMARD_global
#gn os.system("ls -la "+Rep_Calc_HOMARD_global)
#gn print "Répertoire ",Rep_Calc_ASTER
#gn os.system("ls -la "+Rep_Calc_ASTER)
+#gn print os.listdir(Rep_Calc_HOMARD_global)
+#gn print "glop :", Rep_Calc_HOMARD_global
#
#====================================================================
# C'est fini !
-#@ MODIF macr_ascouf_calc_ops Macro DATE 31/10/2006 AUTEUR REZETTE C.REZETTE
+#@ MODIF macr_ascouf_calc_ops Macro DATE 23/05/2007 AUTEUR PELLET J.PELLET
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
FOND_FISS,CHARGE,RESU_THER,AFFE_MATERIAU,
PRES_REP,ECHANGE,TORS_P1,COMP_INCR,COMP_ELAS,
SOLVEUR,CONVERGENCE,NEWTON,RECH_LINEAIRE,
- INCREMENT,THETA_3D,IMPR_TABLE,IMPRESSION,INFO,TITRE ,**args):
+ INCREMENT,THETA_3D,IMPR_TABLE,IMPRESSION,INFO,TITRE ,**args):
"""
Ecriture de la macro MACR_ASCOUF_CALC
"""
# DATA
GRMAIL = ('COUDE','PEAUINT','PEAUEXT','EXTUBE','CLGV','FACE1','FACE2')
#------------------------------------------------------------------
-#
+#
if CL_BOL_P2_GV!=None :
if TYPE_MAILLAGE=='SOUS_EPAIS_COUDE' :
message= ' la condition aux limites sur bol a section conique \n'
return ier
if (mc_IMPR_TABLE['NOM_PARA']!=None) :
impr_table_nom_para= mc_IMPR_TABLE['NOM_PARA']
- for impt in impr_table_nom_para :
+ for impt in impr_table_nom_para :
if impt in ('SI_LONG','SI_CIRC','SI_RADI') :
FLAG = 1
if (((impt['ANGLE']==None) and (impt['POSI_ANGUL']==None) and (impt['R_CINTR' ]==None)) or
AFFE = _F(TOUT ='OUI',
PHENOMENE ='THERMIQUE',
MODELISATION='3D' ) )
+
#------------------------------------------------------------------
#
-# --- commande AFFE_MATERIAU ---
+# --- commande AFFE_MATERIAU (thermique)---
#
- if CHAM_MATER!=None : self.DeclareOut('affmat',CHAM_MATER)
mcfact=[]
for mater in mc_AFFE_MATERIAU :
if mater['TOUT']!=None :
mcfact.append(_F(TOUT =mater['TOUT' ],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
rccmat = mater['MATER']
else :
- mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
+ mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER']))
if mater['GROUP_MA'][:5]=='COUDE' :
if TORS_P1!=None :
- mcfact.append(_F(GROUP_MA='P1',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
- mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
+ mcfact.append(_F(GROUP_MA='P1',MATER=mater['MATER']))
+ mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER']))
elif (len(mc_AFFE_MATERIAU)==1) and (CL_BOL_P2_GV==None) :
- mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
+ mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER']))
elif (mater['BOL' ][:3]=='BOL' ) and (CL_BOL_P2_GV==None) :
- mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
- affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
+ mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER']))
+
+ __affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
MODELE = modele ,
AFFE = mcfact )
+
#------------------------------------------------------------------
#
# --- commande AFFE_CARA_ELEM ---
if INCREMENT['NUME_INST_FIN' ]!=None : mcsimp['NUME_FIN' ]=INCREMENT['NUME_INST_FIN' ]
mcfact=_F(LIST_INST=INCREMENT['LIST_INST'],**mcsimp)
resuth = THER_LINEAIRE( MODELE = __modthe ,
- CHAM_MATER = affmat ,
+ CHAM_MATER = __affmat ,
TEMP_INIT = _F(STATIONNAIRE='OUI',),
EXCIT = _F(CHARGE=__chther,),
INCREMENT = mcfact, )
#
- if CHARGE!=None : self.DeclareOut('chmeth',CHARGE)
- chmeth = AFFE_CHAR_MECA( MODELE = modele ,
- TEMP_CALCULEE = resuth )
+#------------------------------------------------------------------
+#
+# --- commande AFFE_MATERIAU (mécanique)---
+#
+ if CHAM_MATER!=None : self.DeclareOut('affmth',CHAM_MATER)
+ indther= ECHANGE
+ mcfact=[]
+ mcfac2=[]
+ for mater in mc_AFFE_MATERIAU :
+ if mater['TOUT']!=None :
+ mcfact.append(_F(TOUT =mater['TOUT' ],MATER=mater['MATER'],))
+ if indther:
+ mcfac2.append(_F(NOM_VARC='TEMP',TOUT='OUI',
+ EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF'],),)
+ rccmat = mater['MATER']
+ else :
+ mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],))
+ if indther:
+ mcfac2.append(_F(NOM_VARC='TEMP',GROUP_MA=mater['GROUP_MA'],
+ EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF'],),)
+ if mater['GROUP_MA'][:5]=='COUDE' :
+ if TORS_P1!=None :
+ mcfact.append(_F(GROUP_MA='P1',MATER=mater['MATER'],))
+ mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],))
+ if indther:
+ mcfac2.append(_F(NOM_VARC='TEMP',GROUP_MA='P1',
+ EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF'],),)
+ mcfac2.append(_F(NOM_VARC='TEMP',GROUP_MA='P2',
+ EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF'],),)
+ elif (len(mc_AFFE_MATERIAU)==1) and (CL_BOL_P2_GV==None) :
+ mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],))
+ if indther:
+ mcfac2.append(_F(NOM_VARC='TEMP',GROUP_MA='P2',
+ EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF'],),)
+ elif (mater['BOL' ][:3]=='BOL' ) and (CL_BOL_P2_GV==None) :
+ mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],))
+ if indther:
+ mcfac2.append(_F(NOM_VARC='TEMP',GROUP_MA='P2',
+ EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF'],),)
+
+
+ affmth = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
+ MODELE = modele ,
+ AFFE = mcfact,
+ AFFE_VARC= mcfac2,)
+
+
+
+
#------------------------------------------------------------------
#
# --- commande AFFE_CHAR_MECA ---
_conlim = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
#
# --- commande AFFE_CHAR_MECA ---
-# chargement mecanique : pres_rep, effet de fond
+# chargement mecanique : pres_rep, effet de fond
#
if PRES_REP!=None :
motscles={}
_chpres = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
#
# --- commande AFFE_CHAR_MECA ---
-# chargement mecanique : torseur d efforts
+# chargement mecanique : torseur d efforts
#
if TORS_P1!=None :
_chtor = [None]*6
#
mcfex=[] # mot clé facteur EXCIT
mcfex.append(_F(CHARGE=_conlim,))
- if ECHANGE!=None :
- mcfex.append(_F(CHARGE=chmeth,))
if PRES_REP!=None:
if PRES_REP['FONC_MULT']!=None :
mcfex.append(_F(CHARGE=_chpres,FONC_MULT=PRES_REP['FONC_MULT']))
motscles ['INCREMENT' ] =dIncrem
self.DeclareOut('nomres',self.sd)
nomres = STAT_NON_LINE( MODELE = modele ,
- CHAM_MATER = affmat ,
+ CHAM_MATER = affmth ,
CARA_ELEM = carael ,
INFO = INFO , **motscles)
#
#
# --- post traitement sous-epaisseurs: ligaments ---
#
- if mc_IMPR_TABLE!=None:
+ if mc_IMPR_TABLE!=None:
#
SECT=('MI','TU','GV')
LIG=('FDRO','EXDR','EXTR','EXGA','FGAU','INGA','INTR','INDR')
# de la sous-epaisseur
#
lgrno=[]
- for tgrno in l_grno :
+ for tgrno in l_grno :
if tgrno[0][:3] in ('CIR','LON') : lgrno.append(tgrno[0])
elif tgrno[0][:5]=='PCENT' : lgrno.append(tgrno[0])
elif (tgrno[0][:4] in LIG) and (tgrno[0][4:6] not in ('GV','TU','MI')): lgrno.append(tgrno[0])
#
motscles={}
motscles['ACTION']=[]
- for grno in lgrno :
+ for grno in lgrno :
motscles['ACTION'].append(_F(RESULTAT=nomres,
NOM_CHAM='SIEF_ELNO_ELGA',
TOUT_CMP='OUI',
#
motscles={}
motscles['ACTION']=[]
- for tgrno in lgrno :
+ for tgrno in lgrno :
motscles['ACTION'].append(_F(RESULTAT=nomres,
NOM_CHAM='SIEF_ELNO_ELGA',
INTITULE=tgrno,
INVARIANT='OUI',
OPERATION='EXTRACTION',))
motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
-
+
tablig[2]=POST_RELEVE_T(**motscles)
#
motscles={}
collgrno=aster.getcolljev(nommail.ljust(8)+'.GROUPENO')
motscles['ACTION']=[]
- for tgrno in lgrno :
+ for tgrno in lgrno :
if tgrno[:3]!='LON' :
if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
else : vecty=(sin(ASEP*pi/180.),0.,cos(ASEP*pi/180.))
-#@ MODIF macr_aspic_calc_ops Macro DATE 31/10/2006 AUTEUR REZETTE C.REZETTE
+#@ MODIF macr_aspic_calc_ops Macro DATE 09/05/2007 AUTEUR REZETTE C.REZETTE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
PHENOMENE ='THERMIQUE',
MODELISATION='3D' ) )
#
-# --- commande AFFE_MATERIAU ---
+# --- commande AFFE_MATERIAU (thermique)---
#
- if CHAM_MATER!=None : self.DeclareOut('affmat',CHAM_MATER)
mcfact=[]
for mater in mc_AFFE_MATERIAU :
if mater['TOUT']!=None : mcfact.append(_F(TOUT =mater['TOUT' ],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
else : mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
- affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
+ __affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
MODELE = modele ,
AFFE = mcfact )
#
if INCREMENT['NUME_INST_FIN' ]!=None : mcsimp['NUME_FIN' ]=INCREMENT['NUME_INST_FIN' ]
mcfact=_F(LIST_INST=INCREMENT['LIST_INST'],**mcsimp)
resuth = THER_LINEAIRE( MODELE = __modthe ,
- CHAM_MATER = affmat ,
+ CHAM_MATER = __affmat ,
TEMP_INIT = _F(STATIONNAIRE='OUI',),
EXCIT = _F(CHARGE=__chther,),
INCREMENT = mcfact, )
#
- if CHARGE!=None : self.DeclareOut('chmeth',CHARGE)
- chmeth = AFFE_CHAR_MECA( MODELE = modele ,
- TEMP_CALCULEE = resuth )
+# --- commande AFFE_MATERIAU (mécanique)---
+#
+ if CHAM_MATER!=None : self.DeclareOut('affmth',CHAM_MATER)
+ indther=0
+ if ECHANGE!=None and RESU_THER!=None : indther=1
+ mcfact=[]
+ mcfac2=[]
+ for mater in mc_AFFE_MATERIAU :
+ if mater['TOUT']!=None :
+ mcfact.append(_F(TOUT =mater['TOUT' ],MATER=mater['MATER'],))
+ if indther==1:
+ mcfac2.append(_F(NOM_VARC='TEMP',TOUT='OUI',
+ EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF']),)
+ else:
+ mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],))
+ if indther==1:
+ mcfac2.append(_F(NOM_VARC='TEMP',GROUP_MA=mater['GROUP_MA'],
+ EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF']),)
+ affmth = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
+ MODELE = modele ,
+ AFFE = mcfact,
+ AFFE_VARC= mcfac2,)
#
# --- commande AFFE_CHAR_MECA ---
# condition aux limites
#
mcfex=[] # mot clé facteur EXCIT
mcfex.append(_F(CHARGE=_conlim,))
- if ECHANGE!=None :
- mcfex.append(_F(CHARGE=chmeth,))
if PRES_REP['FONC_MULT']!=None :
mcfex.append(_F(CHARGE=_chpres,FONC_MULT=PRES_REP['FONC_MULT']))
else :
motscles ['INCREMENT' ] =dIncrem
self.DeclareOut('nomres',self.sd)
nomres = STAT_NON_LINE( MODELE = modele ,
- CHAM_MATER = affmat ,
+ CHAM_MATER = affmth ,
CARA_ELEM = carael ,
INFO = INFO , **motscles)
#
-#@ MODIF macr_cabri_calc_ops Macro DATE 10/07/2006 AUTEUR LEBOUVIE F.LEBOUVIER
+#@ MODIF macr_cabri_calc_ops Macro DATE 09/05/2007 AUTEUR REZETTE C.REZETTE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
- # Affectation des materiaux
- if CHAM_MATER != None:
- self.DeclareOut('_cham',CHAM_MATER)
+ # Affectation des materiaux (thermique)
motscles={}
motscles['AFFE']=[]
for mat in affemateriau:
MATER = mat['MATER'],
TEMP_REF = mat['TEMP_REF'],) )
- _cham = AFFE_MATERIAU(MAILLAGE=mail,
+ __cham = AFFE_MATERIAU(MAILLAGE=mail,
MODELE=modther,
AFFE=motscles['AFFE'],
)
self.DeclareOut('resuther',RESU_THER)
resuther=THER_LINEAIRE(MODELE=modther,
- CHAM_MATER=_cham,
+ CHAM_MATER=__cham,
EXCIT=(_F(CHARGE=cl_th1,),
_F(CHARGE=cl_th2,),
_F(CHARGE=cl_th3,),
INCREMENT=_F(LIST_INST=transi1,),
TEMP_INIT=_F(VALE=temp_ini,),
TITRE='CABRI THERMIQUE &DATE &HEURE',);
-
+
+ # Affectation des materiaux (mécanique)
+ if CHAM_MATER != None:
+ self.DeclareOut('_chamt',CHAM_MATER)
+ motscles={}
+ motscles['AFFE']=[]
+ motscles['AFFE_VARC']=[]
+ for mat in affemateriau:
+ if mat['TOUT'] == None:
+ # Creation de mots-cles pour les AFFE_CHAR_MECA
+ motscles['AFFE'].append(_F(GROUP_MA=mat['GROUP_MA'],
+ MATER = mat['MATER'],) )
+ motscles['AFFE_VARC'].append(_F(NOM_VARC='TEMP',GROUP_MA=mat['GROUP_MA'],
+ EVOL=resuther,NOM_CHAM='TEMP',
+ VALE_REF = mat['TEMP_REF'],))
+ else:
+ # Creation de mots-cles pour les AFFE_CHAR_MECA
+ motscles['AFFE'].append(_F(TOUT='OUI',
+ MATER = mat['MATER'],
+ TEMP_REF = mat['TEMP_REF'],) )
+ motscles['AFFE_VARC'].append(_F(NOM_VARC='TEMP',TOUT='OUI',
+ EVOL=resuther,NOM_CHAM='TEMP',
+ VALE_REF = mat['TEMP_REF'],))
+
+ _chamt = AFFE_MATERIAU(MAILLAGE=mail,
+ MODELE=modther,
+ AFFE=motscles['AFFE'],
+ AFFE_VARC=motscles['AFFE_VARC'],
+ )
+
#################################################################
########## CONDITIONS AUX LIMITES MECANIQUES
#################################################################
self.DeclareOut('cl_me7',m['CHARGE'])
if m['TYPE']=="CONT_JOINT":
self.DeclareOut('cl_me8',m['CHARGE'])
- if m['TYPE']=="DEFO_THER":
- self.DeclareOut('cl_me9',m['CHARGE'])
if m['TYPE']=="SERR_ECROU_1":
self.DeclareOut('cl_me10',m['CHARGE'])
if m['TYPE']=="SERR_ECROU_2":
CONTACT=_F(GROUP_MA_MAIT='SCBJ',
GROUP_MA_ESCL='SCJB',),
INFO=2,);
- # Deformation thermique
- cl_me9=AFFE_CHAR_MECA( MODELE=modmeca,
- TEMP_CALCULEE=resuther,
- INFO=2,);
# Serrage ecrou/goujon (pre-tensionnement)
cl_me10=AFFE_CHAR_MECA_F(MODELE=modmeca,
# Parametres du calcul
if comp_incr == 1:
resumeca=STAT_NON_LINE(MODELE=modmeca,
- CHAM_MATER=_cham,
+ CHAM_MATER=_chamt,
EXCIT=(_F(CHARGE=cl_me1,),
_F(CHARGE=cl_me2,),
_F(CHARGE=cl_me3,),
_F(CHARGE=cl_me6,),
_F(CHARGE=cl_me7,),
_F(CHARGE=cl_me8,),
- _F(CHARGE=cl_me9,),
_F(CHARGE=cl_me10,),
_F(CHARGE=cl_me11,),
),
TITRE='CABRI THERMOM\xe9CANIQUE &DATE &HEURE',);
else:
resumeca=STAT_NON_LINE(MODELE=modmeca,
- CHAM_MATER=_cham,
+ CHAM_MATER=_chamt,
EXCIT=(_F(CHARGE=cl_me1,),
_F(CHARGE=cl_me2,),
_F(CHARGE=cl_me3,),
_F(CHARGE=cl_me6,),
_F(CHARGE=cl_me7,),
_F(CHARGE=cl_me8,),
- _F(CHARGE=cl_me9,),
_F(CHARGE=cl_me10,),
_F(CHARGE=cl_me11,),
),
-#@ MODIF macr_lign_coupe_ops Macro DATE 05/03/2007 AUTEUR GALENNE E.GALENNE
+#@ MODIF macr_lign_coupe_ops Macro DATE 22/05/2007 AUTEUR GALENNE E.GALENNE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
elif dime ==3 :
LCMP=['DX','DY','DZ']
TYPE_CHAM='VECT_3D'
- elif NOM_CHAM in ('SIGM_NOEU_DEPL','SIEF_ELNO_ELGA','SIGM_NOEU_SIEF','SIGM_NOEU_ELGA','SIGM_NOEU_COQU'):
+ elif NOM_CHAM in ('SIGM_NOEU_DEPL','SIEF_ELNO_ELGA','SIGM_NOEU_SIEF','SIGM_NOEU_ELGA','SIGM_NOEU_COQU','SIGM_ELNO_DEPL'):
if dime == 2:
LCMP=['SIXX','SIYY','SIZZ','SIXY']
TYPE_CHAM='TENS_2D'
TYPE_CHAM='TENS_3D'
- if m['TYPE']=='SEGMENT':
- # --- determination des angles nautiques
- cx1=m['COOR_EXTR'][0]-m['COOR_ORIG'][0]
- cx2=m['COOR_EXTR'][1]-m['COOR_ORIG'][1]
- cx3=0.
- if dime == 3:
- cx3=m['COOR_EXTR'][2]-m['COOR_ORIG'][2]
- nvx=sqrt(cx1**2+cx2**2+cx3**2)
- if abs(nvx) < epsi:
- UTMESS('F', "MACR_LIGN_COUPE", "definition incorrecte de la ligne de coupe")
- cx1=cx1/nvx
- cx2=cx2/nvx
- cx3=cx3/nvx
- cy1=m['VECT_Y'][0]
- cy2=m['VECT_Y'][1]
- cy3=0.
- if dime == 3:
- cy3=m['VECT_Y'][2]
- nvy=sqrt(cy1**2+cy2**2+cy3**2)
- if abs(nvy) < epsi:
- UTMESS('F', "MACR_LIGN_COUPE", "valeurs incorrectes pour VECT_Y")
- cy1=cy1/nvy
- cy2=cy2/nvy
- cy3=cy3/nvy
- if ((abs(cx1-cy1)<epsi and abs(cx2-cy2)<epsi and abs(cx3-cy3)<epsi) or \
- (abs(cx1+cy1)<epsi and abs(cx2+cy2)<epsi and abs(cx3+cy3)<epsi)):
- UTMESS('F', "MACR_LIGN_COUPE", "valeurs incorrectes pour VECT_Y: x colineaire a y")
- if abs(cx1*cy1+cx2*cy2+cx3*cy3) > epsi :
- cz1=cx2*cy3-cx3*cy2
- cz2=cx3*cy1-cx1*cy3
- cz3=cx1*cy2-cx2*cy1
- nvz=sqrt(cz1**2+cz2**2+cz3**2)
- cz1=cz1/nvz
- cz2=cz2/nvz
- cz3=cz3/nvz
- cy1=cz2*cx3-cz3*cx2
- cy2=cz3*cx1-cz1*cx3
- cy3=cz1*cx2-cz2*cx1
+ if m['TYPE']=='SEGMENT' and m['REPERE'] != 'CYLINDRIQUE' :
+
+ if m['REPERE'] == 'LOCAL':
+ # --- determination des angles nautiques
+ cx1=m['COOR_EXTR'][0]-m['COOR_ORIG'][0]
+ cx2=m['COOR_EXTR'][1]-m['COOR_ORIG'][1]
+ cx3=0.
+ if dime == 3:
+ cx3=m['COOR_EXTR'][2]-m['COOR_ORIG'][2]
+ nvx=sqrt(cx1**2+cx2**2+cx3**2)
+ if abs(nvx) < epsi:
+ UTMESS('F', "MACR_LIGN_COUPE", "definition incorrecte de la ligne de coupe")
+ cx1=cx1/nvx
+ cx2=cx2/nvx
+ cx3=cx3/nvx
+ cy1=m['VECT_Y'][0]
+ cy2=m['VECT_Y'][1]
+ cy3=0.
+ if dime == 3:
+ cy3=m['VECT_Y'][2]
nvy=sqrt(cy1**2+cy2**2+cy3**2)
+ if abs(nvy) < epsi:
+ UTMESS('F', "MACR_LIGN_COUPE", "valeurs incorrectes pour VECT_Y")
cy1=cy1/nvy
cy2=cy2/nvy
cy3=cy3/nvy
- UTMESS('A','MACR_LIGN_COUPE','LE VECTEUR Y N EST PAS ORTHOGONAL A LA LIGNE DE COUPE'
+ if ((abs(cx1-cy1)<epsi and abs(cx2-cy2)<epsi and abs(cx3-cy3)<epsi) or \
+ (abs(cx1+cy1)<epsi and abs(cx2+cy2)<epsi and abs(cx3+cy3)<epsi)):
+ UTMESS('F', "MACR_LIGN_COUPE", "valeurs incorrectes pour VECT_Y: x colineaire a y")
+ if abs(cx1*cy1+cx2*cy2+cx3*cy3) > epsi :
+ cz1=cx2*cy3-cx3*cy2
+ cz2=cx3*cy1-cx1*cy3
+ cz3=cx1*cy2-cx2*cy1
+ nvz=sqrt(cz1**2+cz2**2+cz3**2)
+ cz1=cz1/nvz
+ cz2=cz2/nvz
+ cz3=cz3/nvz
+ cy1=cz2*cx3-cz3*cx2
+ cy2=cz3*cx1-cz1*cx3
+ cy3=cz1*cx2-cz2*cx1
+ nvy=sqrt(cy1**2+cy2**2+cy3**2)
+ cy1=cy1/nvy
+ cy2=cy2/nvy
+ cy3=cy3/nvy
+ UTMESS('A','MACR_LIGN_COUPE','LE VECTEUR Y N EST PAS ORTHOGONAL A LA LIGNE DE COUPE'
+'LE VECTEUR Y A ETE ORTHONORMALISE POUR VOUS')
- UTMESS('A','MACR_LIGN_COUPE','VECT_Y=('+str(cy1)+','+str(cy2)+','+str(cy3)+')')
- else:
- cz1=cx2*cy3-cx3*cy2
- cz2=cx3*cy1-cx1*cy3
- cz3=cx1*cy2-cx2*cy1
- beta=0.
- gamma=0.
- if dime ==2:
- alpha = atan2(cx2,cx1)
- else:
- if cx1**2 + cx2**2 > epsi :
- alpha=atan2(cx2,cx1)
- beta=asin(cx3)
- gamma=atan2(cy3,cz3)
+ UTMESS('A','MACR_LIGN_COUPE','VECT_Y=('+str(cy1)+','+str(cy2)+','+str(cy3)+')')
+ else:
+ cz1=cx2*cy3-cx3*cy2
+ cz2=cx3*cy1-cx1*cy3
+ cz3=cx1*cy2-cx2*cy1
+ beta=0.
+ gamma=0.
+ if dime ==2:
+ alpha = atan2(cx2,cx1)
else:
-# alpha=atan2(cy1,cz1)
- alpha=atan2(-cy1,cy2)
- beta=asin(cx3)
- gamma=0.
- alpha=alpha*180/pi
- beta=beta*180/pi
- gamma=gamma*180/pi
+ if cx1**2 + cx2**2 > epsi :
+ alpha=atan2(cx2,cx1)
+ beta=-asin(cx3)
+ gamma=atan2(cy3,cz3)
+ else:
+ alpha=atan2(-cy1,cy2)
+ beta=-asin(cx3)
+ gamma=0.
+ alpha=alpha*180/pi
+ beta=beta*180/pi
+ gamma=gamma*180/pi
+
+ elif m['REPERE'] == 'UTILISATEUR':
+ alpha=m['ANGL_NAUT'][0]
+ beta =m['ANGL_NAUT'][1]
+ gamma=m['ANGL_NAUT'][2]
motscles={}
motscles['MODI_CHAM']=[]
if m['TYPE']=='ARC':
+ if m['REPERE'] == 'CYLINDRIQUE' :
+ motscles={}
+ motscles['MODI_CHAM']=[]
+ motscles['DEFI_REPERE']=[]
+ motscles['MODI_CHAM'].append(_F(NOM_CHAM=NOM_CHAM,NOM_CMP=LCMP,TYPE_CHAM=TYPE_CHAM),)
+ ORIGINE=[]
+ ORIGINE.append(m['CENTRE'][0])
+ ORIGINE.append(m['CENTRE'][1])
+ if dime ==3:
+ ORIGINE.append(m['CENTRE'][2])
+ AXE_Z=[]
+ AXE_Z.append(m['DNOR'][0])
+ AXE_Z.append(m['DNOR'][1])
+ AXE_Z.append(m['DNOR'][2])
+ motscles['DEFI_REPERE'].append(_F(REPERE='CYLINDRIQUE',ORIGINE=ORIGINE,AXE_Z=AXE_Z),)
+ elif dime ==2:
+ motscles['DEFI_REPERE'].append(_F(REPERE='CYLINDRIQUE',ORIGINE=ORIGINE,),)
+ __remodr=MODI_REPERE(RESULTAT=resin,**motscles)
+ else :
+ UTMESS("F","MACR_LIGN_COUPE","LE TYPE "+m['TYPE']+" N'EST PAS COHERENT AVEC LE CHOIX DU REPERE ( REPERE "+m['REPERE']+" ).")
+
+
+
+ if m['TYPE'][:5]=='GROUP' or m['TYPE']=='SEGMENT':
+
+ if m['TYPE'][:5]=='GROUP' and m['REPERE'] == 'LOCAL':
+ # determination du repère local (v1,v2,v3)
+ # ---------------------------------------
+ noma=mail.nom
+ collgrma=aster.getcolljev(noma.ljust(8)+'.GROUPEMA')
+ collcnx =aster.getcolljev(noma.ljust(8)+'.CONNEX')
+ coord =aster.getvectjev(noma.ljust(8)+'.COORDO .VALE')
+ cnom =aster.getvectjev(noma.ljust(8)+'.NOMNOE')
+
+ numa=collgrma[nomgrma.ljust(8)]
+ dictu={}
+# initialisations
+ for ima in numa:
+ n1=collcnx[ima][0]
+ n2=collcnx[ima][1]
+ dictu[n1]=[]
+ dictu[n2]=[]
+# determination du vecteur tangent (v1) + normalisation
+ for ima in numa:
+ vectu1=[]
+ vectu2=[]
+ n1=collcnx[ima][0]
+ n2=collcnx[ima][1]
+ ux=coord[3*(n2-1)]-coord[3*(n1-1)]
+ uy=coord[3*(n2-1)+1]-coord[3*(n1-1)+1]
+ vectu1.append(ux)
+ vectu1.append(uy)
+ vectu2.append(ux)
+ vectu2.append(uy)
+ if dime ==3 :
+ uz=coord[3*(n2-1)+2]-coord[3*(n1-1)+2]
+ vectu1.append(uz)
+ vectu2.append(uz)
+ dictu[n1].append(vectu1)
+ dictu[n2].append(vectu2)
+ for i in dictu:
+ if len(dictu[i])==2:
+ dictu[i][0][0]=dictu[i][0][0]+dictu[i][1][0]
+ dictu[i][0][1]=dictu[i][0][1]+dictu[i][1][1]
+ if dime==3:dictu[i][0][2]=dictu[i][0][2]+dictu[i][1][2]
+ del dictu[i][1]
+ for i in dictu:
+ if dime==2:
+ norm=sqrt(dictu[i][0][0]**2+dictu[i][0][1]**2)
+ dictu[i][0][0]=dictu[i][0][0]/norm
+ dictu[i][0][1]=dictu[i][0][1]/norm
+ elif dime==3:
+ norm=sqrt(dictu[i][0][0]**2+dictu[i][0][1]**2+dictu[i][0][2]**2)
+ dictu[i][0][0]=dictu[i][0][0]/norm
+ dictu[i][0][1]=dictu[i][0][1]/norm
+ dictu[i][0][2]=dictu[i][0][2]/norm
+# determination du vecteur normal (v2):
+# on projete VECT_Y sur le plan orthogonal au vecteur v1.
+# (ce vecteur normal est obtenu par 2 produits vectoriels successifs en 3D)
+ if dime==3:
+ norm=sqrt(m['VECT_Y'][0]**2+m['VECT_Y'][1]**2+m['VECT_Y'][2]**2)
+ tmpy=[m['VECT_Y'][0]/norm,m['VECT_Y'][1]/norm,m['VECT_Y'][2]/norm]
+ j=0
+ __resu=[None]*(len(dictu)+1)
+ __resu[0]=resin
+ for i in dictu:
+ j=j+1
+ vecty=[]
+ if dime==2:
+ vecty.append(-dictu[i][0][1])
+ vecty.append(dictu[i][0][0])
+ dictu[i].append(vecty)
+ elif dime==3:
+ # v3= v1 vectoriel vect_y
+ vectz=[]
+ vectz.append(dictu[i][0][1]*tmpy[2]-dictu[i][0][2]*tmpy[1])
+ vectz.append(dictu[i][0][2]*tmpy[0]-dictu[i][0][0]*tmpy[2])
+ vectz.append(dictu[i][0][0]*tmpy[1]-dictu[i][0][1]*tmpy[0])
+ normz=sqrt(vectz[0]**2+vectz[1]**2+vectz[2]**2)
+ vectz[0]=vectz[0]/normz
+ vectz[1]=vectz[1]/normz
+ vectz[2]=vectz[2]/normz
+ vecty.append(vectz[1]*dictu[i][0][2]-vectz[2]*dictu[i][0][1])
+ vecty.append(vectz[2]*dictu[i][0][0]-vectz[0]*dictu[i][0][2])
+ vecty.append(vectz[0]*dictu[i][0][1]-vectz[1]*dictu[i][0][0])
+ normy=sqrt(vecty[0]**2+vecty[1]**2+vecty[2]**2)
+ vecty[0]=vecty[0]/normy
+ vecty[1]=vecty[1]/normy
+ vecty[2]=vecty[2]/normy
+ dictu[i].append(vecty)
+ dictu[i].append(vectz)
+ cx1=dictu[i][0][0]
+ cx2=dictu[i][0][1]
+ cy1=dictu[i][1][0]
+ cy2=dictu[i][1][1]
+ if dime==3:
+ cx3=dictu[i][0][2]
+ cy3=dictu[i][1][2]
+ cz1=dictu[i][2][0]
+ cz2=dictu[i][2][1]
+ cz3=dictu[i][2][2]
+
+ # determination des angles nautiques (alpha,beta,gamma)
+ # ----------------------------------------------------
+ beta=0.
+ gamma=0.
+ if dime ==2:
+ alpha = atan2(cx2,cx1)
+ else:
+ if cx1**2 + cx2**2 > epsi :
+ alpha=atan2(cx2,cx1)
+ beta=-asin(cx3)
+ gamma=atan2(cy3,cz3)
+ else:
+ alpha=atan2(-cy1,cy2)
+ beta=-asin(cx3)
+ gamma=0.
+ alpha=alpha*180/pi
+ beta=beta*180/pi
+ gamma=gamma*180/pi
+ motscles={}
+ motscles['MODI_CHAM']=[]
+ motscles['DEFI_REPERE']=[]
+ noeu=dictu.keys()
+ motscles['MODI_CHAM'].append(_F(NOM_CHAM=NOM_CHAM,NOM_CMP=LCMP,TYPE_CHAM=TYPE_CHAM,NOEUD=cnom[noeu[j-1]-1]),)
+ ANGL_NAUT=[]
+ ANGL_NAUT.append(alpha)
+ if dime ==3:
+ ANGL_NAUT.append(beta)
+ ANGL_NAUT.append(gamma)
+ motscles['DEFI_REPERE'].append(_F(REPERE='UTILISATEUR',ANGL_NAUT=ANGL_NAUT),)
+ __resu[j]=MODI_REPERE(RESULTAT=__resu[j-1],**motscles)
+ __remodr=__resu[j]
+
+
motscles={}
motscles['MODI_CHAM']=[]
motscles['DEFI_REPERE']=[]
motscles['MODI_CHAM'].append(_F(NOM_CHAM=NOM_CHAM,NOM_CMP=LCMP,TYPE_CHAM=TYPE_CHAM),)
- ORIGINE=[]
- ORIGINE.append(m['CENTRE'][0])
- ORIGINE.append(m['CENTRE'][1])
- if dime ==3:
- vy = m['VECT_Y']
- dn = m['DNOR']
- if vy != dn :
- message = 'AVEC TYPE=ARC, IL FAUT OBLIGATOIREMENT QUE VECT_Y SOIT EGAL A DNOR \n POUR EXPRIMER LE RESULTAT DANS LE REPERE LOCAL. \n'
- message = message +' ON POURSUIT LE CALCUL EN PRENANT VECT_Y = DNOR.'
- UTMESS('A','MACR_LIGN_COUPE',message)
- ORIGINE.append(m['CENTRE'][2])
- AXE_Z=[]
- AXE_Z.append(m['DNOR'][0])
- AXE_Z.append(m['DNOR'][1])
- AXE_Z.append(m['DNOR'][2])
- motscles['DEFI_REPERE'].append(_F(REPERE='CYLINDRIQUE',ORIGINE=ORIGINE,AXE_Z=AXE_Z),)
- elif dime ==2:
- motscles['DEFI_REPERE'].append(_F(REPERE='CYLINDRIQUE',ORIGINE=ORIGINE,),)
- __remodr=MODI_REPERE(RESULTAT=resin,**motscles)
+ if m['REPERE'] == 'CYLINDRIQUE' :
+ if dime ==3:
+ motscles['DEFI_REPERE'].append(_F(REPERE='CYLINDRIQUE',ORIGINE=m['ORIGINE'],AXE_Z=m['AXE_Z']),)
+ elif dime ==2:
+ motscles['DEFI_REPERE'].append(_F(REPERE='CYLINDRIQUE',ORIGINE=m['ORIGINE'],),)
+ __remodr=MODI_REPERE(RESULTAT=resin,**motscles)
+ elif m['REPERE'] == 'UTILISATEUR':
+ alpha=m['ANGL_NAUT'][0]
+ beta =m['ANGL_NAUT'][1]
+ gamma=m['ANGL_NAUT'][2]
+ ANGL_NAUT=[]
+ ANGL_NAUT.append(alpha)
+ if dime ==3:
+ ANGL_NAUT.append(beta)
+ ANGL_NAUT.append(gamma)
+ motscles['DEFI_REPERE'].append(_F(REPERE='UTILISATEUR',ANGL_NAUT=ANGL_NAUT),)
+ __remodr=MODI_REPERE(RESULTAT=resin,**motscles)
+
return __remodr
y=pt2[1]+b*cos(anglr)+sin(anglr)*(a*d3-c*d1)/d
z=pt2[2]+c*cos(anglr)+sin(anglr)*(b*d1-a*d2)/d
return x,y,z
+########################################################################
+# determination de la distance min entre 2 points consécutifs de la ligne de coupe
+def dist_min_deux_points(mail):
+ from math import sqrt
+ import aster
+ nno=aster.getvectjev(mail.nom.ljust(8)+'.DIME')[0]
+ l_coor1=[]
+ l_coor2=[]
+ for i in range(nno-1):
+ l_coor1=aster.getvectjev(mail.nom.ljust(8)+'.COORDO .VALE',3*(i),3)
+ l_coor2=aster.getvectjev(mail.nom.ljust(8)+'.COORDO .VALE',3*(i+1),3)
+ d=sqrt( (l_coor1[0]-l_coor2[0])**2+(l_coor1[1]-l_coor2[1])**2+(l_coor1[2]-l_coor2[2])**2)
+ if i == 0 : dist=d
+ else : dist=min(d,dist)
+ return dist
########################################################################
# script PYTHON de creation d un maillage de ligne de coupe
########################################################################
-def macr_lign_coupe_ops(self,RESULTAT,UNITE_MAILLAGE,LIGN_COUPE,NOM_CHAM,
- MODELE,GROUP_MA,MAILLE,**args):
+def macr_lign_coupe_ops(self,RESULTAT,CHAM_GD,UNITE_MAILLAGE,LIGN_COUPE,
+ NOM_CHAM,MODELE,**args):
+
"""
Ecriture de la macro MACR_LIGN_COUPE
"""
POST_RELEVE_T =self.get_cmd('POST_RELEVE_T')
CREA_TABLE =self.get_cmd('CREA_TABLE')
MODI_REPERE =self.get_cmd('MODI_REPERE')
+ CREA_RESU =self.get_cmd('CREA_RESU')
+ CREA_MAILLAGE =self.get_cmd('CREA_MAILLAGE')
# La macro compte pour 1 dans la numerotation des commandes
self.set_icmd(1)
-
- nomresu=RESULTAT.nom
- l_modele=aster.getvectjev(nomresu.ljust(19)+'.MODL')
- n_modele=string.strip(l_modele[0])
- if n_modele=='' :
- if MODELE==None:
- UTMESS('F', "MACR_LIGN_COUPE", "nom du modele absent dans le concept resultat "+nomresu)
- else : n_modele=MODELE.nom
+
+ mcORDR={}
+
+ if RESULTAT != None:
+ if args['NUME_ORDRE'] != None :
+ mcORDR['NUME_ORDRE']=args['NUME_ORDRE']
+ elif args['LIST_ORDRE'] != None:
+ mcORDR['LIST_ORDRE']=args['LIST_ORDRE']
+ elif args['INST'] != None:
+ mcORDR['INST']=args['INST']
+ elif args['INST'] != None:
+ mcORDR['INST']=args['INST']
+ elif args['LIST_INST'] != None:
+ mcORDR['LIST_INST']=args['LIST_INST']
+ else :
+ mcORDR['TOUT_ORDRE']='OUI'
+
+ nomresu=RESULTAT.nom
+ l_modele=aster.getvectjev(nomresu.ljust(19)+'.MODL')
+ n_modele=string.strip(l_modele[0])
+ if n_modele=='' :
+ if MODELE==None:
+ UTMESS('F', "MACR_LIGN_COUPE", "nom du modele absent dans le concept resultat "+nomresu)
+ else : n_modele=MODELE.nom
+
+ elif CHAM_GD != None:
+ mcORDR['TOUT_ORDRE']='OUI'
+ if MODELE==None:
+ UTMESS('F', "MACR_LIGN_COUPE", "veuillez renseigner le MODELE si vous utilisez un CHAM_GD ")
+ else : n_modele=MODELE.nom
+ # récupération de la grandeur du champ
+ n_cham=CHAM_GD.nom
+ catagd=aster.getvectjev("&CATA.GD.NOMGD")
+ desc=aster.getvectjev(string.ljust(n_cham,19)+'.DESC')
+ if desc!= None:
+ nomgd=catagd[desc[0]-1]
+ else:
+ celd=aster.getvectjev(string.ljust(n_cham,19)+'.CELD')
+ nomgd=catagd[celd[0]-1]
+ # détermination du type de résultat à créer
+ if nomgd[:6] == 'TEMP_R' : TYPE_RESU='EVOL_THER'
+ elif nomgd[:6] == 'DEPL_R' : TYPE_RESU='EVOL_ELAS'
+ elif nomgd[:6] == 'SIEF_R' :
+ if NOM_CHAM[:4]=='SIGM':TYPE_RESU='EVOL_ELAS'
+ elif NOM_CHAM[:4]=='SIEF':TYPE_RESU='EVOL_NOLI'
+ # création d'un concept résultat à partir du champ CHAM_GD
+ __resuch=CREA_RESU(OPERATION='AFFE',
+ NOM_CHAM=NOM_CHAM, TYPE_RESU=TYPE_RESU,
+ AFFE=_F(CHAM_GD=CHAM_GD,INST=0.),)
+ RESULTAT=__resuch
l_mailla=aster.getvectjev(n_modele.ljust(8)+'.MODELE .NOMA')
n_mailla=string.strip(l_mailla[0])
dime=aster.getvectjev(n_mailla.ljust(8)+'.DIME')[5]
- collgrno=aster.getcolljev(n_mailla.ljust(8)+'.GROUPENO')
+ collgrma=aster.getcolljev(n_mailla.ljust(8)+'.GROUPEMA')
+ typma=aster.getvectjev(n_mailla.ljust(8)+'.TYPMAIL')
+ connex=aster.getcolljev(n_mailla.ljust(8)+'.CONNEX')
+ ltyma =aster.getvectjev("&CATA.TM.NOMTM")
lignes=[]
groups=[]
arcs.append((m['COOR_ORIG'],m['CENTRE'],m['NB_POINTS'],m['ANGLE'],m['DNOR']))
elif m['TYPE']=='GROUP_NO':
ngrno=m['GROUP_NO'].ljust(8).upper()
+ collgrno=aster.getcolljev(n_mailla.ljust(8)+'.GROUPENO')
if ngrno not in collgrno.keys() :
UTMESS('F', "MACR_LIGN_COUPE", "le group_no "+ngrno+" n est pas dans le maillage "+n_mailla)
grpn=collgrno[ngrno]
for node in grpn:
l_coor_group.append(aster.getvectjev(n_mailla.ljust(8)+'.COORDO .VALE',3*(node-1),3))
groups.append(l_coor_group)
+ elif m['TYPE']=='GROUP_MA':
+ ngrma=m['GROUP_MA'].ljust(8).upper()
+ if ngrma not in collgrma.keys() :
+ UTMESS('F', "MACR_LIGN_COUPE", "le group_ma "+ngrma+" n est pas dans le maillage "+n_mailla)
+ grpm=collgrma[ngrma]
+ for ma in grpm:
+ if ltyma[typma[ma-1]-1][:3] != 'SEG' :
+ nomma=aster.getvectjev(n_mailla.ljust(8)+'.NOMMAI')
+ UTMESS('F', "MACR_LIGN_COUPE", "le group_ma "+ngrma+" contient la maille "+
+ nomma[ma-1]+"qui n'est pas de type SEG.")
+ __mailla=CREA_MAILLAGE(MAILLAGE= m['MAILLAGE'],)
+ __mailla=DEFI_GROUP( reuse=__mailla,MAILLAGE= __mailla,
+ CREA_GROUP_NO=_F(OPTION='NOEUD_ORDO',NOM=str(m['GROUP_MA']),GROUP_MA=m['GROUP_MA']),)
+ collgrno=aster.getcolljev(__mailla.nom.ljust(8)+'.GROUPENO')
+ grpn=collgrno[str(m['GROUP_MA']).ljust(8)]
+ l_coor_group=[ngrma,]
+ for node in grpn:
+ l_coor_group.append(aster.getvectjev(n_mailla.ljust(8)+'.COORDO .VALE',3*(node-1),3))
+ groups.append(l_coor_group)
+
if arcs!=[] and (lignes!=[] or groups!=[]) :
message = 'On ne peut pas combiner des lignes de coupes de type ARC avec des lignes de coupes SEGMENT ou GROUP_NO. \n'
UL.EtatInit(UNITE_MAILLAGE)
# Lecture du maillage de seg2 contenant toutes les lignes de coupe
-
__macou=LIRE_MAILLAGE(UNITE=UNITE_MAILLAGE,);
-
+
+ # distance min entre 2 points de la ligne de coupe (utile pour PROJ_CHAMP)
+ dmin=dist_min_deux_points(__macou)
+
motscles={}
iocc=1
motscles['CREA_GROUP_NO']=[]
for m in LIGN_COUPE :
- if m['TYPE'] != 'GROUP_NO' :
+ if m['TYPE'] in ('GROUP_NO','GROUP_MA') :
+ motscles['CREA_GROUP_NO'].append(_F(GROUP_MA=m[m['TYPE']].ljust(8).upper(),) )
+ else :
motscles['CREA_GROUP_NO'].append(_F(GROUP_MA='LICOU'+str(iocc),) )
iocc=iocc+1
- elif m['GROUP_NO']!=None :
- motscles['CREA_GROUP_NO'].append(_F(GROUP_MA=m['GROUP_NO'].ljust(8).upper(),) )
+
__macou=DEFI_GROUP( reuse =__macou , MAILLAGE=__macou , **motscles );
if AsType(RESULTAT).__name__ in ('evol_elas','evol_noli') :
motscles={}
motscles['VIS_A_VIS']=[]
- if GROUP_MA != None :
- motscles['VIS_A_VIS'].append(_F(GROUP_MA_1 = GROUP_MA,TOUT_2='OUI'),)
- if MAILLE != None :
- motscles['VIS_A_VIS'].append(_F(MAILLE_1 = MAILLE,TOUT_2='OUI'),)
-
+ motscles[mcORDR.keys()[0]]=mcORDR.values()[0]
+ if args['VIS_A_VIS']!=None:
+ for v in args['VIS_A_VIS']:
+ if v['GROUP_MA_1']!=None:
+ motscles['VIS_A_VIS'].append(_F(GROUP_MA_1 = v['GROUP_MA_1'],TOUT_2='OUI'),)
+ elif v['MAILLE_1']!=None:
+ motscles['VIS_A_VIS'].append(_F(MAILLE_1 = v['MAILLE_1'],TOUT_2='OUI'),)
+
if n_modele in self.get_global_contexte().keys() : MODELE_1=self.get_global_contexte()[n_modele]
else : MODELE_1=self.jdc.current_context[n_modele]
__recou=PROJ_CHAMP(METHODE='ELEM',
RESULTAT=RESULTAT,
MODELE_1=MODELE_1,
+ DISTANCE_MAX=dmin*0.001,
MODELE_2=__mocou,
TYPE_CHAM='NOEU',
- NOM_CHAM=NOM_CHAM, **motscles);
+ NOM_CHAM=NOM_CHAM, **motscles);
-
-
- # Expression des contraintes aux noeuds ou des déplacements dans le repere local
__remodr=__recou
icham=0
ioc2=0
- jarc=0
mcACTION=[]
angtab=[]
+
if AsType(RESULTAT).__name__ in ('evol_elas','evol_noli') :
- if NOM_CHAM in ('DEPL','SIEF_ELNO_ELGA','SIGM_NOEU_DEPL','SIGM_NOEU_SIEF','SIGM_NOEU_ELGA','SIGM_NOEU_COQU'):icham=1
+
+ if NOM_CHAM in ('DEPL','SIEF_ELNO_ELGA','SIGM_NOEU_DEPL','SIGM_NOEU_SIEF','SIGM_NOEU_ELGA','SIGM_NOEU_COQU','SIGM_ELNO_DEPL'):icham=1
+
for m in LIGN_COUPE :
- if m['TYPE'] =='ARC' : jarc=jarc+1
- if m['VECT_Y'] !=None and icham==1:
- if m['TYPE'] =='ARC' : nomgrma=arcgma[jarc-1]
- else : nomgrma=' '
- __remodr=crea_resu_local(dime,MODI_REPERE,NOM_CHAM,m,__recou,__macou,nomgrma)
- if m['TYPE'] != 'GROUP_NO' :
- ioc2=ioc2+1
- groupe='LICOU'+str(ioc2)
- if m['INTITULE'] !=None : intitl=m['INTITULE']
- else : intitl='l.coupe'+str(ioc2)
- elif m['GROUP_NO']!=None :
- groupe=m['GROUP_NO'].ljust(8).upper()
- if m['INTITULE'] !=None : intitl=m['INTITULE']
- else : intitl=groupe
- mcACTION.append( _F(INTITULE = intitl,
+ motscles={}
+ motscles['OPERATION']=m['OPERATION']
+ if m['NOM_CMP']!=None:
+ motscles['NOM_CMP']=m['NOM_CMP']
+ if m['TRAC_NOR']!=None:
+ motscles['TRAC_NOR']=m['TRAC_NOR']
+ elif m['TRAC_DIR']!=None:
+ motscles['TRAC_DIR']=m['TRAC_DIR']
+ motscles['DIRECTION']=m['DIRECTION']
+ elif m['INVARIANT']!=None:
+ motscles['INVARIANT']=m['INVARIANT']
+ elif m['RESULTANTE']!=None:
+ motscles['RESULTANTE']=m['RESULTANTE']
+ elif m['ELEM_PRINCIPAUX']!=None:
+ motscles['ELEM_PRINCIPAUX']=m['ELEM_PRINCIPAUX']
+ else:
+ motscles['TOUT_CMP']='OUI'
+
+ # on définit le groupe de noeud pour post_releve_t
+ if m['TYPE'] in ('GROUP_NO','GROUP_MA'):
+ groupe=m[m['TYPE']].ljust(8).upper()
+ nomgrma=groupe
+ else:
+ ioc2=ioc2+1
+ groupe='LICOU'+str(ioc2)
+ nomgrma=' '
+
+ # on definit l'intitulé
+ if m['INTITULE'] !=None : intitl=m['INTITULE']
+ elif m['TYPE'] in ('GROUP_NO','GROUP_MA') : intitl=groupe
+ else : intitl='l.coupe'+str(ioc2)
+
+
+ # Expression des contraintes aux noeuds ou des déplacements dans le repere local
+ if m['REPERE'] != 'GLOBAL':
+
+ if icham==1:
+
+ if m['REPERE']=='POLAIRE':
+ mcACTION.append( _F(INTITULE = intitl,
RESULTAT = __remodr,
+ REPERE = m['REPERE'],
GROUP_NO = groupe,
- NOM_CHAM = NOM_CHAM,
- TOUT_CMP = 'OUI',
- OPERATION = 'EXTRACTION', ) )
+ NOM_CHAM = NOM_CHAM,**motscles ),)
+ else:
+ __remodr=crea_resu_local(dime,MODI_REPERE,NOM_CHAM,m,__recou,__macou,nomgrma)
+ mcACTION.append( _F(INTITULE = intitl,
+ RESULTAT = __remodr,
+ GROUP_NO = groupe,
+ NOM_CHAM = NOM_CHAM,**motscles ),)
- else:
+ else:
+ UTMESS('A','MACR_LIGN_COUPE','LE CHAMP '+NOM_CHAM+' N EST PAS TRAITE PAR MACR_LIGNE_COUPE EN REPERE '+m['REPERE']+'.'
+ +'LE CALCUL EST EFFECTUE EN REPERE GLOBAL.')
+ mcACTION.append( _F(INTITULE = intitl,
+ RESULTAT = __recou,
+ GROUP_NO = groupe,
+ NOM_CHAM = NOM_CHAM,**motscles ),)
- # Production d'une table pour toutes les lignes de coupe
- if m['VECT_Y'] !=None:
- UTMESS('A','MACR_LIGN_COUPE','LE CHAMP '+NOM_CHAM+' N EST PAS TRAITE PAR MACR_LIGNE_COUPE EN REPERE LOCAL.'
- +'LE CALCUL EST EFFECTUE EN REPERE GLOBAL.')
-
- if m['TYPE'] != 'GROUP_NO' :
- ioc2=ioc2+1
- groupe='LICOU'+str(ioc2)
- if m['INTITULE'] !=None : intitl=m['INTITULE']
- else : intitl='l.coupe'+str(ioc2)
- elif m['GROUP_NO']!=None :
- groupe=m['GROUP_NO'].ljust(8).upper()
- if m['INTITULE'] !=None : intitl=m['INTITULE']
- else : intitl=groupe
- mcACTION.append( _F(INTITULE = intitl,
+ # Expression des contraintes aux noeuds ou des déplacements dans le repere global
+ else:
+
+ mcACTION.append( _F(INTITULE = intitl,
RESULTAT = __recou,
GROUP_NO = groupe,
- NOM_CHAM = NOM_CHAM,
- TOUT_CMP = 'OUI',
- OPERATION = 'EXTRACTION', ) )
-
+ NOM_CHAM = NOM_CHAM,**motscles ),)
+
+
elif AsType(RESULTAT).__name__ in ('evol_ther',) :
for m in LIGN_COUPE :
- if m['TYPE'] != 'GROUP_NO' :
+
+ motscles={}
+ motscles['OPERATION']=m['OPERATION']
+ if m['NOM_CMP']!=None:
+ motscles['NOM_CMP']=m['NOM_CMP']
+ if m['TRAC_NOR']!=None:
+ motscles['TRAC_NOR']=m['TRAC_NOR']
+ elif m['TRAC_DIR']!=None:
+ motscles['TRAC_DIR']=m['TRAC_DIR']
+ motscles['DIRECTION']=m['DIRECTION']
+ elif m['INVARIANT']!=None:
+ motscles['INVARIANT']=m['INVARIANT']
+ elif m['RESULTANTE']!=None:
+ motscles['RESULTANTE']=m['RESULTANTE']
+ elif m['ELEM_PRINCIPAUX']!=None:
+ motscles['ELEM_PRINCIPAUX']=m['ELEM_PRINCIPAUX']
+ else:
+ motscles['TOUT_CMP']='OUI'
+
+ if m['TYPE'] not in ('GROUP_NO','GROUP_MA') :
ioc2=ioc2+1
groupe='LICOU'+str(ioc2)
if m['INTITULE'] !=None : intitl=m['INTITULE']
else : intitl='l.coupe'+str(ioc2)
- elif m['GROUP_NO']!=None :
- groupe=m['GROUP_NO'].ljust(8).upper()
+ else:
+ groupe=m[m['TYPE']].ljust(8).upper()
if m['INTITULE'] !=None : intitl=m['INTITULE']
else : intitl=groupe
mcACTION.append( _F(INTITULE = intitl,
RESULTAT = __recou,
GROUP_NO = groupe,
- NOM_CHAM = NOM_CHAM,
- TOUT_CMP = 'OUI',
- OPERATION = 'EXTRACTION', ) )
-
+ NOM_CHAM = NOM_CHAM, **motscles ),)
__tabitm=POST_RELEVE_T(ACTION=mcACTION,);
dictab['ANGLE']=tmp
###
- del dictab['NOEUD']
- del dictab['RESU']
+
+ if 'RESU' in dictab.para:
+ del dictab['RESU']
+ if 'NOEUD' in dictab.para:
+ del dictab['NOEUD']
dprod = dictab.dict_CREA_TABLE()
nomres=CREA_TABLE(**dprod)
-#@ MODIF macr_recal_ops Macro DATE 26/03/2007 AUTEUR ASSIRE A.ASSIRE
+#@ MODIF macr_recal_ops Macro DATE 16/05/2007 AUTEUR ASSIRE A.ASSIRE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
mode_python = False
type_fonctionnelle = 'float'
-# --------------------------------------------------------------------------------------------------
-def UTMESS(code,sprg,texte):
- fmt='\n <%s> <%s> %s\n\n'
- if INFO>0 or code=='F': print fmt % (code,sprg,texte)
- if code=='F':
- sys.exit()
+
+try:
+ import Utilitai.Utmess
+ from Utilitai.Utmess import UTMESS
+except ImportError:
+ def UTMESS(code,sprg,texte):
+ fmt='\n <%s> <%s> %s\n\n'
+ print fmt % (code,sprg,texte)
+ if code=='F': sys.exit()
# --------------------------------------------------------------------------------------------------
# Mot-cle GRAPHIQUE
if GRAPHIQUE:
- GRAPHIQUE0 = {'INTERACTIF': 'NON', 'AFFICHAGE': 'TOUTE_ITERATION', 'UNITE': 90, 'FORMAT': 'XMGRACE'}
+ GRAPHIQUE0 = {'PILOTE': '', 'AFFICHAGE': 'TOUTE_ITERATION', 'UNITE': 90, 'FORMAT': 'XMGRACE'}
for k in GRAPHIQUE0.keys():
if not GRAPHIQUE.has_key(k): GRAPHIQUE[k] = GRAPHIQUE0[k]
L_J_init, erreur = Simul.multi_interpole(L_init, RESU_CALC)
J_init = Simul.norme_J(copy.copy(L_J_init),copy.copy(L_J_init),UNITE_RESU)
J = J_init
-
+
A = Simul.sensibilite(CALCUL_ASTER, L_init, L_deriv_sensible, val, PARA_DIFF_FINI)
A = Dim.adim_sensi(A)
-
+
l = reca_algo.lambda_init(Numeric.matrixmultiply(Numeric.transpose(A),A))
+
gradient_init =reca_algo.calcul_gradient(A,erreur) #utile pour le test de convergence, on prend les valeurs dimensionnées
residu = reca_algo.test_convergence(gradient_init,erreur,A,Numeric.zeros(len(gradient_init),Numeric.Float))
if (GRAPHIQUE):
if GRAPHIQUE['AFFICHAGE']=='TOUTE_ITERATION':
GRAPHE_UL_OUT=GRAPHIQUE['UNITE']
- interactif=(GRAPHIQUE['INTERACTIF']=='OUI')
- reca_utilitaires.graphique(GRAPHIQUE['FORMAT'],L_F,RESU_EXP,RESU_CALC,iter,GRAPHE_UL_OUT,interactif)
+ pilote=GRAPHIQUE['PILOTE']
+ reca_utilitaires.graphique(GRAPHIQUE['FORMAT'],L_F,RESU_EXP,RESU_CALC,iter,GRAPHE_UL_OUT,pilote)
# On teste un manque de temps CPU
restant,temps_iter,err=reca_utilitaires.temps_CPU(restant,temps_iter)
trace = True
if (METHODE=='EXTERNE' and GRAPHIQUE['AFFICHAGE']=='TOUTE_ITERATION'):
trace = True
- fichier = args['prefix_graph']
+ if not args.has_key('prefix_graph'): fichier='graph'
+ else: fichier = args['prefix_graph']
if trace:
if INFO>=1: UTMESS('I','MACR_RECAL',"Trace des graphiques")
GRAPHE_UL_OUT=GRAPHIQUE['UNITE']
- interactif=(GRAPHIQUE['INTERACTIF']=='OUI')
- reca_utilitaires.graphique(GRAPHIQUE['FORMAT'],L_F,RESU_EXP,RESU_CALC,iter,GRAPHE_UL_OUT,interactif,fichier)
+ pilote=GRAPHIQUE['PILOTE']
+ reca_utilitaires.graphique(GRAPHIQUE['FORMAT'],L_F,RESU_EXP,RESU_CALC,iter,GRAPHE_UL_OUT,pilote,fichier)
if( METHODE == 'EXTERNE'):
- if mode_python: return fonctionnelle, gradient
-
-# print residu, RESI_GLOB_RELA
+# if mode_python: return fonctionnelle, gradient
+ return fonctionnelle, gradient
# Si pas de convergence alors diagnostic NOOK_TEST_RESU
if residu > RESI_GLOB_RELA:
p.add_option('-i', '--input', action='store', dest='input', type='string', default='input.txt', help='fichier contenant les parametres')
p.add_option('-o', '--output', action='store', dest='output', type='string', default='output.txt', help='fichier contenant la fonctionnelle')
p.add_option('-g', '--output_grad', action='store', dest='output_grad', type='string', default='grad.txt', help='fichier contenant le gradient')
- p.add_option('-p', '--prefix_graph', action='store', dest='prefix_graph', type='string', help='prefixe des fichiers contenant les courbes')
+ p.add_option('-p', '--prefix_graph', action='store', dest='prefix_graph', type='string', default='graph', help='prefixe des fichiers contenant les courbes')
p.add_option('-v', '--info', action='store', dest='INFO', type='int', help='niveau de message (-1, 0, 1, 2)')
p.add_option('-f', '--follow', action='store', dest='follow_output', type='string', help="affiche ou non l'output du fichier Aster (True/False)")
p.add_option('-F', '--objective', action='store', dest='objective', type='string', help="type de la fonctionnelle (float/vector)")
prof.WriteExportTo(new_fichier_export)
except:
UTMESS('F',NOMPRO,"Probleme : Impossible d'ecrire le fichier export : " + new_fichier_export)
- prof.WriteExportTo('/tmp/exp')
+ if debug: prof.WriteExportTo('/tmp/exp')
# chemin vers as_run
-#@ MODIF post_k1_k2_k3_ops Macro DATE 05/03/2007 AUTEUR GALENNE E.GALENNE
+#@ MODIF post_k1_k2_k3_ops Macro DATE 09/05/2007 AUTEUR REZETTE C.REZETTE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
elif Lnf1[i]==LNOFO[Nbfond-1] and DTANEX : Pextr = Porig - ABSC_CURV_MAXI*dicVN[Lnf1[i]]
else : Pextr = Porig - ABSC_CURV_MAXI*dicVN[Lnf1[i]]*sens
TlibS[i] = MACR_LIGN_COUPE(RESULTAT=RESULTAT,
- NOM_CHAM='DEPL',MODELE=MODEL, MAILLE = ListmaS,
+ NOM_CHAM='DEPL',MODELE=MODEL, VIS_A_VIS=_F(MAILLE_1 = ListmaS),
LIGN_COUPE=_F(NB_POINTS=NB_NOEUD_COUPE,COOR_ORIG=(Porig[0],Porig[1],Porig[2],),
TYPE='SEGMENT', COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]),),);
if SYME_CHAR=='SANS':
TlibI[i] = MACR_LIGN_COUPE(RESULTAT=RESULTAT,
- NOM_CHAM='DEPL',MODELE=MODEL, MAILLE = ListmaI,
+ NOM_CHAM='DEPL',MODELE=MODEL, VIS_A_VIS=_F(MAILLE_1 = ListmaI),
LIGN_COUPE=_F(NB_POINTS=NB_NOEUD_COUPE,COOR_ORIG=(Porig[0],Porig[1],Porig[2],),
TYPE='SEGMENT',COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]),),);
-#@ MODIF reca_algo Macro DATE 14/11/2006 AUTEUR ASSIRE A.ASSIRE
+#@ MODIF reca_algo Macro DATE 16/05/2007 AUTEUR ASSIRE A.ASSIRE
# -*- coding: iso-8859-1 -*-
# RESPONSABLE ASSIRE A.ASSIRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
except: pass
try:
+ import Utilitai.Utmess
from Utilitai.Utmess import UTMESS
except ImportError:
def UTMESS(code,sprg,texte):
-#@ MODIF reca_calcul_aster Macro DATE 26/03/2007 AUTEUR ASSIRE A.ASSIRE
+#@ MODIF reca_calcul_aster Macro DATE 16/05/2007 AUTEUR ASSIRE A.ASSIRE
# -*- coding: iso-8859-1 -*-
# RESPONSABLE ASSIRE A.ASSIRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# mode_include = False
# __follow_output = False
# table_sensibilite = False
-debug = False
-
__commandes_aster__ = False
+debug = False
import copy, Numeric, types, os, sys, pprint, math
from glob import glob
try:
- import aster
-except: pass
-
-try:
+ import Utilitai.Utmess
from Utilitai.Utmess import UTMESS
except ImportError:
def UTMESS(code,sprg,texte):
# fichiernew.append(ligne)
# fichier = '\n'.join(fichiernew)
+
+
+ # On supprime tous les commentaires du fichier esclave
+ fichiernew=[]
+ for ligne in fichier.split('\n'):
+ if ligne.strip() != '':
+ if ligne.replace(' ', '')[0] == '#': ligne = ''
+ fichiernew.append(ligne)
+ fichier = '\n'.join(fichiernew)
+
+
#Fichier_Resu est une liste ou l'on va stocker le fichier modifié
#idée générale :on délimite des 'blocs' dans fichier
#on modifie ou non ces blocs suivant les besoins
elif lab == 'data':
if dico['type'] not in ('exec', 'ele'):
if dico['ul'] != '0': # Traite le cas des sources python sourchargees
- dico['path'] = os.path.join(os.getcwd(), 'fort.%s' % dico['ul'])
+ if self.METHODE !='EXTERNE':
+ dico['path'] = os.path.join(os.getcwd(), 'fort.%s' % dico['ul'])
# sinon on garde la ligne telle quelle
setattr(prof, lab, l_fr)
# Ecriture du nouveau fichier export
prof.WriteExportTo(self.new_export)
- os.system('cp ' + self.new_export + ' /tmp')
+ if debug: os.system('cp ' + self.new_export + ' /tmp')
# --FIN CLASSE ----------------------------------------------------------------------------
-#@ MODIF reca_controles Macro DATE 26/03/2007 AUTEUR ASSIRE A.ASSIRE
+#@ MODIF reca_controles Macro DATE 16/05/2007 AUTEUR ASSIRE A.ASSIRE
# -*- coding: iso-8859-1 -*-
# RESPONSABLE ASSIRE A.ASSIRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
import string, copy, Numeric, types, os, sys, pprint
try:
+ import Utilitai.Utmess
from Utilitai.Utmess import UTMESS
except ImportError:
def UTMESS(code,sprg,texte):
-#@ MODIF reca_graphique Macro DATE 08/11/2005 AUTEUR ASSIRE A.ASSIRE
+#@ MODIF reca_graphique Macro DATE 16/05/2007 AUTEUR ASSIRE A.ASSIRE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
-#@ MODIF reca_interp Macro DATE 31/10/2006 AUTEUR ASSIRE A.ASSIRE
+#@ MODIF reca_interp Macro DATE 16/05/2007 AUTEUR ASSIRE A.ASSIRE
# -*- coding: iso-8859-1 -*-
# RESPONSABLE ASSIRE A.ASSIRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
except: pass
try:
+ import Utilitai.Utmess
from Utilitai.Utmess import UTMESS
except ImportError:
def UTMESS(code,sprg,texte):
-#@ MODIF reca_message Macro DATE 31/10/2006 AUTEUR ASSIRE A.ASSIRE
+#@ MODIF reca_message Macro DATE 16/05/2007 AUTEUR ASSIRE A.ASSIRE
# -*- coding: iso-8859-1 -*-
# RESPONSABLE ASSIRE A.ASSIRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
import os, Numeric
try:
+ import Utilitai.Utmess
from Utilitai.Utmess import UTMESS
except:
def UTMESS(code,sprg,texte):
-#@ MODIF reca_utilitaires Macro DATE 31/10/2006 AUTEUR ASSIRE A.ASSIRE
+#@ MODIF reca_utilitaires Macro DATE 16/05/2007 AUTEUR ASSIRE A.ASSIRE
# -*- coding: iso-8859-1 -*-
# RESPONSABLE ASSIRE A.ASSIRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
import Numeric, LinearAlgebra, copy, os, string, types, sys, glob
from Numeric import take
-try:
- from Cata.cata import INFO_EXEC_ASTER, DEFI_FICHIER, IMPR_FONCTION, DETRUIRE
- from Accas import _F
-except: pass
try: import Gnuplot
except: pass
try:
+ from Cata.cata import INFO_EXEC_ASTER, DEFI_FICHIER, IMPR_FONCTION, DETRUIRE
+ from Accas import _F
+ import Utilitai.Utmess
from Utilitai.Utmess import UTMESS
except ImportError:
def UTMESS(code,sprg,texte):
#_____________________________________________
-def graphique(FORMAT, L_F, res_exp, reponses, iter, UL_out, interactif, fichier=None, INFO=0):
+def graphique(FORMAT, L_F, res_exp, reponses, iter, UL_out, pilote, fichier=None, INFO=0):
if iter: txt_iter = 'Iteration : ' + str(iter)
else: txt_iter = ''
for i in range(len(L_F)):
_tmp = []
courbe1 = res_exp[i]
- _tmp.append( { 'ABSCISSE': courbe1[:,0].tolist(), 'ORDONNEE': courbe1[:,1].tolist(), 'COULEUR': 1 } )
+ _tmp.append( { 'ABSCISSE': courbe1[:,0].tolist(), 'ORDONNEE': courbe1[:,1].tolist(), 'COULEUR': 1, 'LEGENDE' : 'Expérience'} )
courbe2 = L_F[i]
- _tmp.append( { 'ABSCISSE': courbe2[:,0].tolist(), 'ORDONNEE': courbe2[:,1].tolist(), 'COULEUR': 2 } )
+ _tmp.append( { 'ABSCISSE': courbe2[:,0].tolist(), 'ORDONNEE': courbe2[:,1].tolist(), 'COULEUR': 2, 'LEGENDE' : 'Calcul'} )
motscle2= {'COURBE': _tmp }
- if interactif: motscle2['PILOTE']= 'INTERACTIF'
- else: motscle2['PILOTE']= 'POSTSCRIPT'
+ motscle2['PILOTE']= pilote
IMPR_FONCTION(FORMAT='XMGRACE',
UNITE=int(UL_out),
- TITRE='Courbe de : ' + reponses[i][0],
+ TITRE='Courbe : ' + reponses[i][0],
SOUS_TITRE=txt_iter,
LEGENDE_X=reponses[i][1],
LEGENDE_Y=reponses[i][2],
**motscle2
);
+ dic = {'' : '',
+ 'POSTSCRIPT' : '.ps',
+ 'EPS' : '.eps',
+ 'MIF' : '.mif',
+ 'SVG' : '.svg',
+ 'PNM' : '.pnm',
+ 'PNG' : '.png',
+ 'JPEG' : '.jpg',
+ 'PDF' : '.pdf',
+ 'INTERACTIF' : '.agr'
+ }
+ ext = dic[pilote]
+ if ext!='':
+ os.system('mv ./fort.%s ./REPE_OUT/courbes_%s_iter_%s%s' % (str(UL_out), reponses[i][0], str(iter), ext ) )
elif FORMAT=='GNUPLOT':
- if INFO>=2: UTMESS('I','MACR_RECAL',"Trace des courbes dans le fichier " + fichier )
if fichier:
+ if INFO>=2: UTMESS('I','MACR_RECAL',"Trace des courbes dans le fichier " + fichier )
# On efface les anciens graphes
liste = glob.glob(fichier + '*.ps')
for fic in liste:
Gnuplot.GnuplotOpts.prefer_inline_data=1
impr('set data style linespoints')
impr('set grid')
- impr('set pointsize 2.')
+ impr('set pointsize 1.')
impr('set terminal postscript color')
impr('set output "fort.'+str(UL_out)+'"')
graphe.append(Gnuplot.Gnuplot(persist=0))
graphe[i]('set data style linespoints')
graphe[i]('set grid')
- graphe[i]('set pointsize 2.')
+ graphe[i]('set pointsize 1.')
graphe[i].xlabel(reponses[i][1])
graphe[i].ylabel(reponses[i][2])
graphe[i].title(reponses[i][0]+' ' + txt_iter)
graphe[i].plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental'))
- if interactif:
+ if pilote=='INTERACTIF':
graphe[i]('pause 5')
else:
if fichier:
-#@ MODIF simu_point_mat_ops Macro DATE 09/01/2007 AUTEUR PROIX J-M.PROIX
+#@ MODIF simu_point_mat_ops Macro DATE 23/04/2007 AUTEUR PROIX J-M.PROIX
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-def simu_point_mat_ops(self, COMP_INCR, MATER, INCREMENT, NEWTON,CONVERGENCE,
- SUIVI_DDL,ARCHIVAGE,SIGM_IMPOSE,EPSI_IMPOSE,MODELISATION, INFO, **args) :
+def simu_point_mat_ops(self, COMP_INCR, MATER, INCREMENT, NEWTON,CONVERGENCE,RECH_LINEAIRE,SIGM_INIT,EPSI_INIT,VARI_INIT,
+ COMP_ELAS,SUIVI_DDL,ARCHIVAGE,SIGM_IMPOSE,EPSI_IMPOSE,MODELISATION, INFO, **args) :
"""Simulation de la reponse d'un point materiel"""
POST_RELEVE_T = self.get_cmd('POST_RELEVE_T')
CALC_TABLE = self.get_cmd('CALC_TABLE')
CALC_ELEM = self.get_cmd('CALC_ELEM')
+ CREA_CHAMP = self.get_cmd('CREA_CHAMP')
+# IMPR_RESU = self.get_cmd('IMPR_RESU')
from Accas import _F
from Utilitai.UniteAster import UniteAster
for i in xrange(nbsig) :
iks=CMP_SIG[i]
l_char.append( _F(CHARGE=__S[i],FONC_MULT=SIG[iks]) )
+
+
+
+# Etat initial
+ SIGINI={}
+ VARINI={}
+ LCSIG=[]
+ LVSIG=[]
+ init_dico={}
+ etatinit=0
+
+# --contraintes initiales
+ if SIGM_INIT:
+ etatinit=1
+ SIGINI=SIGM_INIT[0].cree_dict_valeurs(SIGM_INIT[0].mc_liste)
+ for i in SIGINI.keys():
+ if SIGINI[i]!=None :
+ LCSIG.append(i)
+ LVSIG.append(SIGINI[i])
+
+ __SIG_INIT=CREA_CHAMP(MAILLAGE=__MA,
+ OPERATION='AFFE',
+ TYPE_CHAM='CART_SIEF_R',
+ AFFE=_F(TOUT='OUI',
+ NOM_CMP=LCSIG,
+ VALE=LVSIG,))
+ init_dico['SIGM']=__SIG_INIT
+
+# --variables internes initiales
+ if VARI_INIT:
+ etatinit=1
+ lnomneu=[]
+ lnomvar=[]
+ VARINI=VARI_INIT[0].cree_dict_valeurs(VARI_INIT[0].mc_liste)
+ nbvari=len(VARINI['VALE'])
+ for i in range(nbvari):
+ lnomneu.append('X'+str(i+1))
+ lnomvar.append('V'+str(i+1))
+
+ __NEUT=CREA_CHAMP(OPERATION='AFFE', TYPE_CHAM='CART_NEUT_R', MAILLAGE=__MA,
+ AFFE=_F( MAILLE ='VOLUME', NOM_CMP = lnomneu, VALE = VARINI['VALE']))
+
+ __VAR_INIT=CREA_CHAMP(MODELE=__MO,
+ OPERATION='ASSE',
+ TYPE_CHAM='ELGA_VARI_R',
+ ASSE=_F(TOUT='OUI',CHAM_GD=__NEUT,
+ NOM_CMP=lnomneu,NOM_CMP_RESU=lnomvar))
+ init_dico['VARI']=__VAR_INIT
+# IMPR_RESU(MODELE=__MO,RESU=_F(CHAM_GD=__VAR_INIT))
+
+ # --deformations initiales
+ if EPSI_INIT:
+ etatinit=1
+ EPSINI={}
+ LCDEPL=[]
+ LNDEPL=[]
+ LVDEPL=[]
+ LIST_AFFE=[]
+ mon_dico={}
+ mon_dico["NOEUD"]='P0'
+ mon_dico["NOM_CMP"]=("DX","DY","DZ")
+ mon_dico["VALE"]=(0.,0.,0.)
+ LIST_AFFE.append(mon_dico)
+
+ EPSINI=EPSI_INIT[0].cree_dict_valeurs(EPSI_INIT[0].mc_liste)
+ mon_dico={}
+ mon_dico["NOEUD"]='P1'
+ mon_dico["NOM_CMP"]='DX'
+ mon_dico["VALE"]=EPSINI['EPXX']
+ LIST_AFFE.append(mon_dico)
+ mon_dico={}
+ mon_dico["NOEUD"]='P2'
+ mon_dico["NOM_CMP"]='DY'
+ mon_dico["VALE"]=EPSINI['EPYY']
+ LIST_AFFE.append(mon_dico)
+ if MODELISATION=="3D":
+ mon_dico={}
+ mon_dico["NOEUD"]='P3'
+ mon_dico["NOM_CMP"]='DZ'
+ mon_dico["VALE"]=EPSINI['EPZZ']
+ LIST_AFFE.append(mon_dico)
+ mon_dico={}
+ mon_dico["NOEUD"]='P1'
+ mon_dico["NOM_CMP"]='DY'
+ mon_dico["VALE"]=EPSINI['EPXY']
+ LIST_AFFE.append(mon_dico)
+ mon_dico={}
+ mon_dico["NOEUD"]='P2'
+ mon_dico["NOM_CMP"]='DX'
+ mon_dico["VALE"]=EPSINI['EPXY']
+ LIST_AFFE.append(mon_dico)
+ mon_dico={}
+ mon_dico["NOEUD"]='P1'
+ mon_dico["NOM_CMP"]='DZ'
+ mon_dico["VALE"]=EPSINI['EPXZ']
+ LIST_AFFE.append(mon_dico)
+ mon_dico={}
+ mon_dico["NOEUD"]='P3'
+ mon_dico["NOM_CMP"]='DX'
+ mon_dico["VALE"]=EPSINI['EPXZ']
+ LIST_AFFE.append(mon_dico)
+ mon_dico={}
+ mon_dico["NOEUD"]='P2'
+ mon_dico["NOM_CMP"]='DZ'
+ mon_dico["VALE"]=EPSINI['EPYZ']
+ LIST_AFFE.append(mon_dico)
+ mon_dico={}
+ mon_dico["NOEUD"]='P3'
+ mon_dico["NOM_CMP"]='DY'
+ mon_dico["VALE"]=EPSINI['EPYZ']
+ LIST_AFFE.append(mon_dico)
+ else:
+ mon_dico={}
+ mon_dico["NOEUD"]='P1',
+ mon_dico["NOM_CMP"]='DY'
+ mon_dico["VALE"]=EPSINI['EPXY']
+ LIST_AFFE.append(mon_dico)
+ mon_dico={}
+ mon_dico["NOEUD"]='P2'
+ mon_dico["NOM_CMP"]='DX'
+ mon_dico["VALE"]=EPSINI['EPXY']
+ LIST_AFFE.append(mon_dico)
+ __DEP_INI=CREA_CHAMP(MAILLAGE=__MA,
+ OPERATION='AFFE',
+ TYPE_CHAM='NOEU_DEPL_R',
+ AFFE=LIST_AFFE)
+ init_dico['DEPL']=__DEP_INI
+# IMPR_RESU(RESU=_F(CHAM_GD=__DEP_INI))
+
+
+
# -- Deroulement du calcul
motscles={}
- motscles['COMP_INCR'] = COMP_INCR.List_F()
+ if COMP_INCR :
+ motscles['COMP_INCR'] = COMP_INCR.List_F()
+ if COMP_ELAS :
+ motscles['COMP_ELAS'] = COMP_ELAS.List_F()
motscles['CONVERGENCE'] = CONVERGENCE.List_F()
motscles['NEWTON'] = NEWTON.List_F()
+ if RECH_LINEAIRE :
+ motscles['RECH_LINEAIRE'] = RECH_LINEAIRE.List_F()
motscles['INCREMENT'] = INCREMENT.List_F()
if SUIVI_DDL :
if ARCHIVAGE :
motscles['ARCHIVAGE'] = ARCHIVAGE.List_F()
-
- __EVOL = STAT_NON_LINE(
- MODELE = __MO,
- CHAM_MATER = __CHMAT,
- EXCIT = l_char,**motscles)
+ if etatinit == 1 :
+
+ __EVOL = STAT_NON_LINE(
+ MODELE = __MO,
+ CHAM_MATER = __CHMAT,
+ ETAT_INIT=init_dico,
+ EXCIT = l_char,**motscles)
+
+
+ else:
+
+ __EVOL = STAT_NON_LINE(
+ MODELE = __MO,
+ CHAM_MATER = __CHMAT,
+ EXCIT = l_char,**motscles)
__EVOL = CALC_ELEM(reuse = __EVOL,
RESULTAT = __EVOL,
OPTION = ('SIEF_ELNO_ELGA','EPSI_ELNO_DEPL','VARI_ELNO_ELGA')
)
-
+
+# IMPR_RESU(RESU=_F(RESULTAT=__EVOL))
# -- Recuperation des courbes
self.DeclareOut('REPONSE',self.sd)
- REPONSE=CALC_TABLE( TABLE=__REP_EPSI,
+ REPONSE=CALC_TABLE( TABLE=__REP_EPSI,TITRE='TABLE ',
ACTION=(
_F(OPERATION='COMB',TABLE=__REP_SIGM,NOM_PARA=('INST'), ),
_F(OPERATION='COMB',TABLE=__REP_INV ,NOM_PARA=('INST'), ),