-#@ MODIF creation_donnees_homard Macro DATE 30/10/2006 AUTEUR DURAND C.DURAND
+#@ MODIF creation_donnees_homard Macro DATE 04/04/2007 AUTEUR VIVAN L.VIVAN
# -*- 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 VIVAN L.VIVAN
"""
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 defi_cable_bp_ops Macro DATE 14/11/2006 AUTEUR ASSIRE A.ASSIRE
+#@ MODIF defi_cable_bp_ops Macro DATE 04/04/2007 AUTEUR VIVAN L.VIVAN
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# -------------------------------------
# USAGE :
# Entrée :
-# - MAILLAGE
# - MODELE
# - CABLE
# - CHAM_MATER
-def defi_cable_bp_ops(self,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM,GROUP_MA_BETON,
+def defi_cable_bp_ops(self,MODELE,CHAM_MATER,CARA_ELEM,GROUP_MA_BETON,
DEFI_CABLE,TYPE_ANCRAGE,TENSION_INIT,RECUL_ANCRAGE,
RELAXATION,CONE,TITRE,INFO,**args):
motscles['CONE']=[]
motscles['CONE'].append( dCONE )
-
- # VERIFICATION QUE LE MAILLAGE EST COHERENT AVEC LE MODELE
-
+ # RECUPERATION DU MAILLAGE A PARTIR DU MODELE
__MAIL = aster.getvectjev( string.ljust(MODELE.nom,8) + '.MODELE .NOMA ' )
- if string.ljust(MAILLAGE.nom,8) != __MAIL[0] :
- echo_mess=[]
- echo_mess.append( ' \n' )
- echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
- echo_mess.append( ' # DEFI_CABLE_BP - Erreur : LE CONCEPT MAILLAGE RENSEIGNE NE CORRESPOND \n' )
- echo_mess.append( ' # PAS A CELUI UTILISE DANS LE MODELE ! \n' )
- echo_mess.append( ' # '+MAILLAGE.nom+' - '+__MAIL[0]+'\n' )
- echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
- message=string.join(echo_mess)
- UTMESS('F',message)
-
-
- # DEFINITION DU NOM DES GROUP_NO
+ __MAIL= __MAIL[0].strip()
+ MAILLAGE = self.get_sd_avant_etape(__MAIL,self)
- __NOM = '_AN_'
+ # DEFINITION DU NOM DES GROUP_NO
+ __NOM = 'AN__'
__LGNO = MAILLAGE.LIST_GROUP_NO()
__LGN1 = []
for i in __LGNO :
-#@ 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 VIVAN L.VIVAN
# -*- 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_lign_coupe_ops Macro DATE 27/06/2006 AUTEUR THOMASSO D.THOMASSON
+#@ MODIF macr_lign_coupe_ops Macro DATE 09/05/2007 AUTEUR SALMONA L.SALMONA
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# Expression des contraintes aux noeuds ou des déplacements dans le repere local
__remodr=__recou
+ icham=0
+ ioc2=0
+ mcACTION=[]
if AsType(RESULTAT).__name__ in ('evol_elas','evol_noli') :
- for m in LIGN_COUPE :
+ if NOM_CHAM in ('DEPL','SIEF_ELNO_ELGA','SIGM_NOEU_DEPL','SIGM_NOEU_SIEF','SIGM_NOEU_ELGA','SIGM_NOEU_COQU'):icham=1
+ # Gestion du calcul en repère local - VECT_Y
+ rep_local=0
+ if m['NB_POINTS'] !=None :
if m['VECT_Y'] !=None :
+ if icham: rep_local=1
+ else :
+ 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.')
+
+ for m in LIGN_COUPE :
+ if rep_local:
epsi=0.00000001
# --- determination des angles nautiques
cx1=m['COOR_EXTR'][0]-m['COOR_ORIG'][0]
alpha=alpha*180/math.pi
beta=beta*180/math.pi
gamma=gamma*180/math.pi
-
# --- MODI_REPERE
motscles={}
motscles['MODI_CHAM']=[]
LCMP=['DX','DY','DZ']
TYPE_CHAM='VECT_3D'
motscles['MODI_CHAM'].append(_F(NOM_CHAM=NOM_CHAM,NOM_CMP=LCMP,TYPE_CHAM=TYPE_CHAM),)
- elif NOM_CHAM in ('SIGM_NOEU_DEPL','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'):
if dime == 2:
LCMP=['SIXX','SIYY','SIZZ','SIXY']
TYPE_CHAM='TENS_2D'
LCMP=['SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ']
TYPE_CHAM='TENS_3D'
motscles['MODI_CHAM'].append(_F(NOM_CHAM=NOM_CHAM,NOM_CMP=LCMP,TYPE_CHAM=TYPE_CHAM),)
+
# DEFI_REPERE
ANGL_NAUT=[]
ANGL_NAUT.append(alpha)
motscles['DEFI_REPERE'].append(_F(REPERE='UTILISATEUR',ANGL_NAUT=ANGL_NAUT),)
__remodr=MODI_REPERE(RESULTAT=__recou,**motscles)
+ if m['NB_POINTS'] !=None :
+ 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,
+ RESULTAT = __remodr,
+ GROUP_NO = groupe,
+ NOM_CHAM = NOM_CHAM,
+ TOUT_CMP = 'OUI',
+ OPERATION = 'EXTRACTION', ) )
+
+ else:
# Production d'une table pour toutes les lignes de coupe
-
- ioc2=0
- mcACTION=[]
- for m in LIGN_COUPE :
- if m['NB_POINTS'] !=None :
- 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,
- RESULTAT = __remodr,
- GROUP_NO = groupe,
- NOM_CHAM = NOM_CHAM,
- TOUT_CMP = 'OUI',
- OPERATION = 'EXTRACTION', ) )
-
+ for m in LIGN_COUPE :
+ if m['NB_POINTS'] !=None :
+ 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,
+ RESULTAT = __recou,
+ GROUP_NO = groupe,
+ NOM_CHAM = NOM_CHAM,
+ TOUT_CMP = 'OUI',
+ OPERATION = 'EXTRACTION', ) )
+
+ elif AsType(RESULTAT).__name__ in ('evol_ther',) :
+ for m in LIGN_COUPE :
+ if m['NB_POINTS'] !=None :
+ 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,
+ RESULTAT = __recou,
+ GROUP_NO = groupe,
+ NOM_CHAM = NOM_CHAM,
+ TOUT_CMP = 'OUI',
+ OPERATION = 'EXTRACTION', ) )
+
+
__tabitm=POST_RELEVE_T(ACTION=mcACTION,);
# on repasse par les tables python pour supprimer les paramètres inutiles
self.DeclareOut('nomres',self.sd)
dictab=__tabitm.EXTR_TABLE()
- listpara=dictab.para
- listpara.remove('NOEUD')
- listpara.remove('RESU')
-
- coltab=[]
- for key in listpara :
- val=dictab[key].values()[key]
- if type(val[0])==types.IntType :
- coltab.append(_F(PARA=key,LISTE_I=val))
- elif type(val[0])==types.FloatType :
- coltab.append(_F(PARA=key,LISTE_R=val))
- elif type(val[0])==types.StringType :
- coltab.append(_F(PARA=key,LISTE_K=val,TYPE_K='K16'))
- nomres=CREA_TABLE(LISTE=coltab)
+
+ del dictab['NOEUD']
+ del dictab['RESU']
+ dprod = dictab.dict_CREA_TABLE()
+
+ nomres=CREA_TABLE(**dprod)
return ier