From: Pascale Noyret Date: Fri, 16 Nov 2007 14:21:57 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: V1_13b1~3 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=c166145138c9c1d44ef834bfd7ea2d013228f9d8;p=tools%2Feficas.git *** empty log message *** --- diff --git a/Aster/Cata/cataSTA8/Macro/calc_fonction_ops.py b/Aster/Cata/cataSTA8/Macro/calc_fonction_ops.py index a541180f..ec198736 100644 --- a/Aster/Cata/cataSTA8/Macro/calc_fonction_ops.py +++ b/Aster/Cata/cataSTA8/Macro/calc_fonction_ops.py @@ -1,4 +1,4 @@ -#@ MODIF calc_fonction_ops Macro DATE 02/05/2006 AUTEUR MCOURTOI M.COURTOIS +#@ MODIF calc_fonction_ops Macro DATE 03/10/2007 AUTEUR SALMONA L.SALMONA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -18,316 +18,393 @@ # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== +import copy +import traceback +from math import pi + +# ----------------------------------------------------------------------------- def tocomplex(arg): if arg[0]=='RI' : return complex(arg[1],arg[2]) if arg[0]=='MP' : return complex(arg[1]*cos(arg[2]),arg[1]*sin(arg[2])) + +# ----------------------------------------------------------------------------- def calc_fonction_ops(self,FFT,DERIVE,INTEGRE,LISS_ENVELOP, SPEC_OSCI,ABS,COMB,COMB_C,COMPOSE,EXTRACTION, ENVELOPPE,ASSE,CORR_ACCE,PUISSANCE,INVERSE, NOM_PARA,NOM_RESU,INTERPOL,PROL_DROITE, PROL_GAUCHE,NOM_PARA_FONC,INTERPOL_FONC,PROL_DROITE_FONC, PROL_GAUCHE_FONC,INFO,**args): - """ - Ecriture de la macro CALC_FONCTION - """ - ier=0 - import types - import string - import copy - from math import pi - from Utilitai.t_fonction import t_fonction,t_fonction_c,t_nappe - from Utilitai import liss_enveloppe - from Accas import _F - from Cata.cata import nappe_sdaster,fonction_sdaster,fonction_c - from Utilitai.Utmess import UTMESS - from Numeric import alltrue,less,array,reshape,cos,sin,exp,sqrt - from Numeric import choose,zeros,Float - import aster_fonctions - EnumType = (types.ListType,types.TupleType) - - ### On importe les definitions des commandes a utiliser dans la macro - DEFI_FONCTION = self.get_cmd('DEFI_FONCTION') - IMPR_FONCTION = self.get_cmd('IMPR_FONCTION') - DEFI_NAPPE = self.get_cmd('DEFI_NAPPE') - - ### Comptage commandes + déclaration concept sortant - self.set_icmd(1) - self.DeclareOut('C_out',self.sd) - - ### type de traitement - ### - if (INTEGRE != None): - __ff=INTEGRE['FONCTION'].convert() - if INTEGRE['METHODE']=='TRAPEZE' : __ex=__ff.trapeze(INTEGRE['COEF']) - if INTEGRE['METHODE']=='SIMPSON' : __ex=__ff.simpson(INTEGRE['COEF']) - ### - if (DERIVE != None): - __ff=DERIVE['FONCTION'].convert() - __ex=__ff.derive() - ### - if (INVERSE != None): - __ff=INVERSE['FONCTION'].convert() - __ex=__ff.inverse() - ### - if (ABS != None): - __ff=ABS['FONCTION'].convert() - __ex=__ff.abs() - ### - if (COMPOSE != None): - __ff=COMPOSE['FONC_RESU'].convert() - __fg=COMPOSE['FONC_PARA'].convert() - __ex=__ff[__fg] - ### - if (ASSE != None): - __f0=ASSE['FONCTION'][0].convert() - __f1=ASSE['FONCTION'][1].convert() - __ex=__f0.cat(__f1,ASSE['SURCHARGE']) - ### - if (COMB != None): - list_fonc=[] - if isinstance(self.sd,nappe_sdaster): - for mcfact in COMB : - list_fonc.append(mcfact['FONCTION'].convert()) - list_fonch=[] - for f in list_fonc : - __ex=f - for g in list_fonc : - __ex=__ex.homo_support(g) - list_fonch.append(__ex) - list_fonc=list_fonch - elif isinstance(self.sd,fonction_sdaster): - for mcfact in COMB : - __ex=mcfact['FONCTION'].convert() - list_fonc.append(__ex) - - __ex=list_fonc[0] - __ex=__ex*COMB[0]['COEF'] - i=1 - for item in list_fonc[1:] : - item=item*COMB[i]['COEF'] - __ex=__ex+item - i=i+1 - ### - if (COMB_C != None): - list_fonc=[] - if isinstance(self.sd,nappe_sdaster): - for mcfact in COMB_C : - list_fonc.append(mcfact['FONCTION'].convert()) - list_fonch=[] - for f in list_fonc : - __ex=f - for g in list_fonc : - __ex=__ex.homo_support(g) - list_fonch.appen(__ex) - list_fonc=list_fonch - elif isinstance(self.sd,fonction_sdaster) or isinstance(self.sd,fonction_c): - for mcfact in COMB_C : - __ex=mcfact['FONCTION'].convert(arg='complex') - list_fonc.append(__ex) - - __ex=list_fonc[0] - if COMB_C[0]['COEF_R']!=None: __ex=__ex*complex(COMB_C[0]['COEF_R']) - if COMB_C[0]['COEF_C']!=None: - if type(COMB_C[0]['COEF_C']) in EnumType : __ex=__ex*tocomplex(COMB_C[0]['COEF_C']) - else : __ex=__ex*COMB_C[0]['COEF_C'] - i=1 - for item in list_fonc[1:] : - if COMB_C[i]['COEF_R']!=None: coef=complex(COMB_C[i]['COEF_R']) - if COMB_C[i]['COEF_C']!=None: - if type(COMB_C[i]['COEF_C']) in EnumType : coef=tocomplex(COMB_C[i]['COEF_C']) - else : coef=COMB_C[i]['COEF_C'] - item=item*coef - __ex=__ex+item - i=i+1 - ### mot clé LIST_PARA uniquement présent si COMB ou COMB_C - if (COMB != None) or (COMB_C != None) : - if (args['LIST_PARA'] != None) : - __ex=__ex.evalfonc(args['LIST_PARA'].Valeurs()) - ### - if (PUISSANCE != None): - __ff=PUISSANCE['FONCTION'].convert() - __ex=__ff - for i in range(PUISSANCE['EXPOSANT']-1) : __ex=__ex*__ff - ### - if (EXTRACTION != None): - if EXTRACTION['PARTIE']=='REEL' : __ex=EXTRACTION['FONCTION'].convert(arg='real') - if EXTRACTION['PARTIE']=='IMAG' : __ex=EXTRACTION['FONCTION'].convert(arg='imag') - if EXTRACTION['PARTIE']=='MODULE' : __ex=EXTRACTION['FONCTION'].convert(arg='modul') - if EXTRACTION['PARTIE']=='PHASE' : __ex=EXTRACTION['FONCTION'].convert(arg='phase') - ### - if (ENVELOPPE != None): - list_fonc=[] - l_env=ENVELOPPE['FONCTION'] - if type(l_env) not in EnumType : l_env=(l_env,) - if isinstance(self.sd,nappe_sdaster): - for f in l_env : list_fonc.append(f.convert()) - list_fonch=[] - for f in list_fonc : - __ff=f - for g in list_fonc : - __ff=__ff.homo_support(g) - list_fonch.append(__ff) - list_fonc=list_fonch - vale_para=list_fonc[0].vale_para - para =list_fonc[0].para - l_fonc_f =[] - for i in range(len(vale_para)): - __ff=list_fonc[0].l_fonc[i] - if ENVELOPPE['CRITERE']=='SUP' : - for f in list_fonc[1:] : __ff=__ff.sup(f.l_fonc[i]) - if ENVELOPPE['CRITERE']=='INF' : - for f in list_fonc[1:] : __ff=__ff.inf(f.l_fonc[i]) - l_fonc_f.append(__ff) - __ex=t_nappe(vale_para,l_fonc_f,para) - elif isinstance(self.sd,fonction_sdaster): - for f in l_env : list_fonc.append(f.convert()) - __ex=list_fonc[0] - if ENVELOPPE['CRITERE']=='SUP' : - for f in list_fonc[1:] : __ex=__ex.sup(f) - if ENVELOPPE['CRITERE']=='INF' : - for f in list_fonc[1:] : __ex=__ex.inf(f) - ### - if (CORR_ACCE != None): - __ex=CORR_ACCE['FONCTION'].convert() - para=copy.copy(__ex.para) - # suppression de la tendance de l accelero - __ex=__ex.suppr_tend() - # calcul de la vitesse - __ex=__ex.trapeze(0.) - # calcul de la tendance de la vitesse : y = a1*x +a0 - __ex=__ex.suppr_tend() - if CORR_ACCE['CORR_DEPL']=='OUI': - # suppression de la tendance deplacement - # calcul du deplacement : integration - __ex=__ex.trapeze(0.) - # calcul de la tendance du déplacement : y = a1*x +a0 - __ex=__ex.suppr_tend() - # regeneration de la vitesse : derivation - __ex=__ex.derive() - # regeneration de l accelero : derivation - __ex=__ex.derive() - __ex.para=para - ### - if (FFT != None): - if isinstance(self.sd,fonction_c): - __ff=FFT['FONCTION'].convert() - __ex=__ff.fft(FFT['METHODE']) - if isinstance(self.sd,fonction_sdaster): - __ff=FFT['FONCTION'].convert(arg='complex') - __ex=__ff.fft(FFT['METHODE'],FFT['SYME']) - ### - if (SPEC_OSCI != None): - if SPEC_OSCI['AMOR_REDUIT']==None : - l_amor=[0.02,0.05,0.1] - UTMESS('I','CALC_FONCTION',' : génération par défaut de 3 amortissements :'+str(l_amor)) - else : - if type(SPEC_OSCI['AMOR_REDUIT']) not in EnumType : + """ + Ecriture de la macro CALC_FONCTION + """ + ier=0 + from Utilitai.t_fonction import t_fonction, t_fonction_c, t_nappe, homo_support_nappe, \ + FonctionError, ParametreError, InterpolationError, ProlongementError + from Utilitai import liss_enveloppe + from Accas import _F + from Cata.cata import nappe_sdaster,fonction_sdaster,fonction_c + from Utilitai.Utmess import UTMESS + from Numeric import alltrue,less,array,reshape,cos,sin,exp,sqrt + from Numeric import choose,zeros,Float + import aster_fonctions + EnumTypes = (list, tuple) + + ### On importe les definitions des commandes a utiliser dans la macro + DEFI_FONCTION = self.get_cmd('DEFI_FONCTION') + IMPR_FONCTION = self.get_cmd('IMPR_FONCTION') + DEFI_NAPPE = self.get_cmd('DEFI_NAPPE') + + ### Comptage commandes + déclaration concept sortant + self.set_icmd(1) + self.DeclareOut('C_out',self.sd) + + # éléments de contexte + ctxt = Context() + ### l'ensemble est dans un try/except pour recuperer les erreurs du module t_fonction + try: + ### + if (INTEGRE != None): + __ff=INTEGRE['FONCTION'].convert() + ctxt.f = __ff.nom + if INTEGRE['METHODE']=='TRAPEZE' : + __ex=__ff.trapeze(INTEGRE['COEF']) + elif INTEGRE['METHODE']=='SIMPSON' : + __ex=__ff.simpson(INTEGRE['COEF']) + ### + if (DERIVE != None): + __ff=DERIVE['FONCTION'].convert() + ctxt.f = __ff.nom + __ex=__ff.derive() + ### + if (INVERSE != None): + __ff=INVERSE['FONCTION'].convert() + ctxt.f = __ff.nom + __ex=__ff.inverse() + ### + if (ABS != None): + __ff=ABS['FONCTION'].convert() + ctxt.f = __ff.nom + __ex=__ff.abs() + ### + if (COMPOSE != None): + __ff=COMPOSE['FONC_RESU'].convert() + __fg=COMPOSE['FONC_PARA'].convert() + ctxt.f = [__ff.nom, __fg.nom] + __ex=__ff[__fg] + ### + if (ASSE != None): + __f0=ASSE['FONCTION'][0].convert() + __f1=ASSE['FONCTION'][1].convert() + ctxt.f = [__f0.nom, __f1.nom] + __ex=__f0.cat(__f1,ASSE['SURCHARGE']) + ### + if (COMB != None): + list_fonc=[] + if isinstance(self.sd,nappe_sdaster): + for mcfact in COMB : + list_fonc.append(mcfact['FONCTION'].convert()) + ctxt.f = [f.nom for f in list_fonc] + list_fonc = homo_support_nappe(list_fonc) + elif isinstance(self.sd,fonction_sdaster): + for mcfact in COMB : + __ex=mcfact['FONCTION'].convert() + list_fonc.append(__ex) + + __ex = 0. + for item, comb in zip(list_fonc, COMB): + ctxt.f = item.nom + __ex = item * comb['COEF'] + __ex + # on prend les paramètres de la 1ère fonction + __ex.para = copy.copy(list_fonc[0].para) + ### + if (COMB_C != None): + list_fonc=[] + if isinstance(self.sd,nappe_sdaster): + for mcfact in COMB_C: + list_fonc.append(mcfact['FONCTION'].convert()) + ctxt.f = [f.nom for f in list_fonc] + list_fonc = homo_support_nappe(list_fonc) + elif isinstance(self.sd,fonction_sdaster) or isinstance(self.sd,fonction_c): + for mcfact in COMB_C : + __ex=mcfact['FONCTION'].convert(arg='complex') + list_fonc.append(__ex) + + __ex = 0. + for item, comb in zip(list_fonc, COMB_C): + if comb['COEF_R'] != None: + coef = complex(comb['COEF_R']) + elif comb['COEF_C'] != None: + if type(comb['COEF_C']) in EnumTypes: + coef = tocomplex(comb['COEF_C']) + else: + coef = comb['COEF_C'] + ctxt.f = item.nom + __ex = item * coef + __ex + # on prend les paramètres de la 1ère fonction + __ex.para = copy.copy(list_fonc[0].para) + + ### mot clé LIST_PARA uniquement présent si COMB ou COMB_C + if (COMB != None) or (COMB_C != None) : + if (args['LIST_PARA'] != None) : + __ex=__ex.evalfonc(args['LIST_PARA'].Valeurs()) + ### + if (PUISSANCE != None): + __ff=PUISSANCE['FONCTION'].convert() + ctxt.f = __ff.nom + __ex=__ff + for i in range(PUISSANCE['EXPOSANT']-1): + __ex=__ex*__ff + ### + if (EXTRACTION != None): + if EXTRACTION['PARTIE']=='REEL': + __ex=EXTRACTION['FONCTION'].convert(arg='real') + if EXTRACTION['PARTIE']=='IMAG': + __ex=EXTRACTION['FONCTION'].convert(arg='imag') + if EXTRACTION['PARTIE']=='MODULE': + __ex=EXTRACTION['FONCTION'].convert(arg='modul') + if EXTRACTION['PARTIE']=='PHASE': + __ex=EXTRACTION['FONCTION'].convert(arg='phase') + ### + if (ENVELOPPE != None): + list_fonc=[] + l_env=ENVELOPPE['FONCTION'] + if type(l_env) not in EnumTypes: + l_env=(l_env,) + if isinstance(self.sd,nappe_sdaster): + for f in l_env: + list_fonc.append(f.convert()) + ctxt.f = [f.nom for f in list_fonc] + list_fonc = homo_support_nappe(list_fonc) + vale_para=list_fonc[0].vale_para + para =list_fonc[0].para + l_fonc_f =[] + for i in range(len(vale_para)): + __ff=list_fonc[0].l_fonc[i] + for nap in list_fonc[1:] : + ctxt.f = nap.l_fonc[i].nom + __ff=__ff.enveloppe(nap.l_fonc[i], ENVELOPPE['CRITERE']) + l_fonc_f.append(__ff) + __ex=t_nappe(vale_para,l_fonc_f,para) + elif isinstance(self.sd,fonction_sdaster): + for f in l_env: + list_fonc.append(f.convert()) + __ex=list_fonc[0] + for f in list_fonc[1:]: + ctxt.f = [__ex.nom, f.nom] + __ex = __ex.enveloppe(f, ENVELOPPE['CRITERE']) + ### + if (CORR_ACCE != None): + __ex=CORR_ACCE['FONCTION'].convert() + ctxt.f = __ex.nom + para=copy.copy(__ex.para) + # suppression de la tendance de l accelero + __ex=__ex.suppr_tend() + # calcul de la vitesse + __ex=__ex.trapeze(0.) + # calcul de la tendance de la vitesse : y = a1*x +a0 + __ex=__ex.suppr_tend() + if CORR_ACCE['CORR_DEPL']=='OUI': + # suppression de la tendance deplacement + # calcul du deplacement : integration + __ex=__ex.trapeze(0.) + # calcul de la tendance du déplacement : y = a1*x +a0 + __ex=__ex.suppr_tend() + # regeneration de la vitesse : derivation + __ex=__ex.derive() + # regeneration de l accelero : derivation + __ex=__ex.derive() + __ex.para=para + ### + if (FFT != None): + if isinstance(self.sd,fonction_c): + __ff=FFT['FONCTION'].convert() + ctxt.f = __ff.nom + __ex=__ff.fft(FFT['METHODE']) + if isinstance(self.sd,fonction_sdaster): + __ff=FFT['FONCTION'].convert(arg='complex') + ctxt.f = __ff.nom + __ex=__ff.fft(FFT['METHODE'],FFT['SYME']) + ### + if (SPEC_OSCI != None): + if SPEC_OSCI['AMOR_REDUIT']==None: + l_amor=[0.02, 0.05, 0.1] + UTMESS('I','CALC_FONCTION',' : génération par défaut de 3 amortissements :'+str(l_amor)) + else: + if type(SPEC_OSCI['AMOR_REDUIT']) not in EnumTypes : l_amor=[SPEC_OSCI['AMOR_REDUIT'],] - else : l_amor= SPEC_OSCI['AMOR_REDUIT'] - if SPEC_OSCI['FREQ']==None and SPEC_OSCI['LIST_FREQ']==None: - l_freq=[] - for i in range(56) : l_freq.append( 0.2+0.050*i) - for i in range( 8) : l_freq.append( 3.0+0.075*i) - for i in range(14) : l_freq.append( 3.6+0.100*i) - for i in range(24) : l_freq.append( 5.0+0.125*i) - for i in range(28) : l_freq.append( 8.0+0.250*i) - for i in range( 6) : l_freq.append(15.0+0.500*i) - for i in range( 4) : l_freq.append(18.0+1.000*i) - for i in range(10) : l_freq.append(22.0+1.500*i) - texte=[] - for i in range(len(l_freq)/5) : - texte.append(' %f %f %f %f %f' %tuple(l_freq[i*5:i*5+5])) - UTMESS('I','CALC_FONCTION',' : génération par défaut de 150 fréquences :\n'+'\n'.join(texte)) - elif SPEC_OSCI['LIST_FREQ']!=None: - l_freq=SPEC_OSCI['LIST_FREQ'].Valeurs() - elif SPEC_OSCI['FREQ']!=None: - if type(SPEC_OSCI['FREQ']) not in EnumType: + else: + l_amor= SPEC_OSCI['AMOR_REDUIT'] + if SPEC_OSCI['FREQ']==None and SPEC_OSCI['LIST_FREQ']==None: + l_freq=[] + for i in range(56): + l_freq.append( 0.2+0.050*i) + for i in range( 8): + l_freq.append( 3.0+0.075*i) + for i in range(14): + l_freq.append( 3.6+0.100*i) + for i in range(24): + l_freq.append( 5.0+0.125*i) + for i in range(28): + l_freq.append( 8.0+0.250*i) + for i in range( 6): + l_freq.append(15.0+0.500*i) + for i in range( 4): + l_freq.append(18.0+1.000*i) + for i in range(10): + l_freq.append(22.0+1.500*i) + texte=[] + for i in range(len(l_freq)/5) : + texte.append(' %f %f %f %f %f' %tuple(l_freq[i*5:i*5+5])) + UTMESS('I','CALC_FONCTION',' : génération par défaut de 150 fréquences :\n'+'\n'.join(texte)) + elif SPEC_OSCI['LIST_FREQ']!=None: + l_freq=SPEC_OSCI['LIST_FREQ'].Valeurs() + elif SPEC_OSCI['FREQ']!=None: + if type(SPEC_OSCI['FREQ']) not in EnumTypes: l_freq=[SPEC_OSCI['FREQ'],] - else : l_freq= SPEC_OSCI['FREQ'] - if abs(SPEC_OSCI['NORME'])<1.E-10 : - UTMESS('S','CALC_FONCTION',' : SPEC_OSCI, la norme ne peut etre nulle') - if SPEC_OSCI['NATURE_FONC']!='ACCE' : - UTMESS('S','CALC_FONCTION',' : SPEC_OSCI, le type de la fonction doit etre ACCE') - if SPEC_OSCI['METHODE']!='NIGAM' : - UTMESS('S','CALC_FONCTION',' : SPEC_OSCI, seule la méthode NIGAM est codée') - eps=1.e-6 - for amor in l_amor : - if amor>(1-eps) : - UTMESS('S','CALC_FONCTION',' : SPEC_OSCI, la méthode choisie '\ - 'suppose des amortissements sous-critiques, amor<1.') - - __ff=SPEC_OSCI['FONCTION'].convert() - - # appel à SPEC_OSCI - spectr = aster_fonctions.SPEC_OSCI(__ff.vale_x, __ff.vale_y, l_freq, l_amor) + else: + l_freq= SPEC_OSCI['FREQ'] + if min(l_freq)<1.E-10 : + UTMESS('S','CALC_FONCTION','Les fréquences doivent etre strictement positives.') + if abs(SPEC_OSCI['NORME'])<1.E-10 : + UTMESS('S','CALC_FONCTION',' : SPEC_OSCI, la norme ne peut etre nulle') + if SPEC_OSCI['NATURE_FONC']!='ACCE' : + UTMESS('S','CALC_FONCTION',' : SPEC_OSCI, le type de la fonction doit etre ACCE') + if SPEC_OSCI['METHODE']!='NIGAM' : + UTMESS('S','CALC_FONCTION',' : SPEC_OSCI, seule la méthode NIGAM est codée') + eps=1.e-6 + for amor in l_amor : + if amor>(1-eps) : + UTMESS('S','CALC_FONCTION',' : SPEC_OSCI, la méthode choisie '\ + 'suppose des amortissements sous-critiques, amor<1.') + + __ff=SPEC_OSCI['FONCTION'].convert() + ctxt.f = __ff.nom + + # appel à SPEC_OSCI + spectr = aster_fonctions.SPEC_OSCI(__ff.vale_x, __ff.vale_y, l_freq, l_amor) + + # construction de la nappe + vale_para = l_amor + para = { 'INTERPOL' : ['LIN','LOG'], + 'NOM_PARA_FONC' : 'FREQ', + 'NOM_PARA' : 'AMOR', + 'PROL_DROITE' : 'EXCLU', + 'PROL_GAUCHE' : 'EXCLU', + 'NOM_RESU' : SPEC_OSCI['NATURE'] } + para_fonc = { 'INTERPOL' : ['LOG','LOG'], + 'NOM_PARA' : 'FREQ', + 'PROL_DROITE' : 'CONSTANT', + 'PROL_GAUCHE' : 'EXCLU', + 'NOM_RESU' : SPEC_OSCI['NATURE'] } + if SPEC_OSCI['NATURE']=='DEPL': + ideb = 0 + elif SPEC_OSCI['NATURE']=='VITE': + ideb = 1 + else: + ideb = 2 + l_fonc = [] + for iamor in range(len(l_amor)) : + l_fonc.append(t_fonction(l_freq,spectr[iamor,ideb,:]/SPEC_OSCI['NORME'],para_fonc)) + __ex=t_nappe(vale_para,l_fonc,para) + ### + if (LISS_ENVELOP!= None): + __ff=LISS_ENVELOP['NAPPE'].convert() + sp_nappe=liss_enveloppe.nappe(listFreq=__ff.l_fonc[0].vale_x, listeTable=[f.vale_y for f in __ff.l_fonc], listAmor=__ff.vale_para, entete="") + sp_lisse=liss_enveloppe.lissage(nappe=sp_nappe,fmin=LISS_ENVELOP['FREQ_MIN'],fmax=LISS_ENVELOP['FREQ_MAX'],elarg=LISS_ENVELOP['ELARG'],tole_liss=LISS_ENVELOP['TOLE_LISS']) + para_fonc=__ff.l_fonc[0].para + l_fonc=[] + for val in sp_lisse.listTable: + l_fonc.append(t_fonction(sp_lisse.listFreq,val,para_fonc)) + __ex=t_nappe(vale_para=sp_lisse.listAmor,l_fonc=l_fonc,para=__ff.para) - # construction de la nappe - vale_para = l_amor - para = { 'INTERPOL' : ['LIN','LOG'], - 'NOM_PARA_FONC' : 'FREQ', - 'NOM_PARA' : 'AMOR', - 'PROL_DROITE' : 'EXCLU', - 'PROL_GAUCHE' : 'EXCLU', - 'NOM_RESU' : SPEC_OSCI['NATURE'] } - para_fonc = { 'INTERPOL' : ['LOG','LOG'], - 'NOM_PARA' : 'FREQ', - 'PROL_DROITE' : 'CONSTANT', - 'PROL_GAUCHE' : 'EXCLU', - 'NOM_RESU' : SPEC_OSCI['NATURE'] } - if SPEC_OSCI['NATURE']=='DEPL' : ideb = 0 - elif SPEC_OSCI['NATURE']=='VITE' : ideb = 1 - else : ideb = 2 - l_fonc = [] - for iamor in range(len(l_amor)) : - l_fonc.append(t_fonction(l_freq,spectr[iamor,ideb,:]/SPEC_OSCI['NORME'],para_fonc)) - __ex=t_nappe(vale_para,l_fonc,para) - ### - if (LISS_ENVELOP!= None): - __ff=LISS_ENVELOP['NAPPE'].convert() - sp_nappe=liss_enveloppe.nappe(listFreq=__ff.l_fonc[0].vale_x, listeTable=[f.vale_y for f in __ff.l_fonc], listAmor=__ff.vale_para, entete="") - sp_lisse=liss_enveloppe.lissage(nappe=sp_nappe,fmin=LISS_ENVELOP['FREQ_MIN'],fmax=LISS_ENVELOP['FREQ_MAX'],elarg=LISS_ENVELOP['ELARG'],tole_liss=LISS_ENVELOP['TOLE_LISS']) - para_fonc=__ff.l_fonc[0].para - l_fonc=[] - for val in sp_lisse.listTable : - l_fonc.append(t_fonction(sp_lisse.listFreq,val,para_fonc)) - __ex=t_nappe(vale_para=sp_lisse.listAmor,l_fonc=l_fonc,para=__ff.para) + except InterpolationError, msg: + UTMESS('F', 'CALC_FONCTION', 'Un problème d interpolation a été rencontré'+ctxt.f+'Vérifier les valeurs fournies derrière'+ + 'le mot-clé INTERPOL lors de la création de cette(ces) fonction(s). Debug '+str(msg)) + except ParametreError, msg: + UTMESS('F', 'CALC_FONCTION', 'Un problème concernant le nom des abscisses ou ordonnées a été rencontré'+ctxt.f+ + 'Vérifier la valeur fournie derrière les mots-clés NOM_PARA/NOM_RESU lors de la création de cette(ces) fonction(s).'+ + 'Debug : '+str(msg)) + except ProlongementError, msg: + UTMESS('F', 'CALC_FONCTION','Un problème concernant le prolongement de la (des) fonction(s) a été rencontré.'+ctxt.f+ + 'Vérifier la valeur fournie derrière les mots-clés PROL_GAUCHE/PROL_DROITE lors de la création de cette(ces) fonction(s)'+ + 'Debug'+str(msg)) + except FonctionError, msg: + UTMESS('F', 'CALC_FONCTION', 'Une erreur s est produite lors de l opération'+ctxt.f+'Debug :'+str(msg)+ + 'Remontée d erreur (pour aider a l analyse) :'+traceback.format_exc()) - ### creation de la fonction produite par appel à DEFI_FONCTION - ### on récupère les paramètres issus du calcul de __ex - ### et on les surcharge par ceux imposés par l'utilisateur + ### creation de la fonction produite par appel à DEFI_FONCTION + ### on récupère les paramètres issus du calcul de __ex + ### et on les surcharge par ceux imposés par l'utilisateur + + if isinstance(__ex,t_fonction) or isinstance(__ex,t_fonction_c): + para=__ex.para + if NOM_PARA !=None : para['NOM_PARA'] =NOM_PARA + if NOM_RESU !=None : para['NOM_RESU'] =NOM_RESU + if PROL_DROITE!=None : para['PROL_DROITE']=PROL_DROITE + if PROL_GAUCHE!=None : para['PROL_GAUCHE']=PROL_GAUCHE + if INTERPOL !=None : para['INTERPOL'] =INTERPOL + if isinstance(__ex,t_fonction_c): para['VALE_C'] = __ex.tabul() + elif isinstance(__ex,t_fonction) : para['VALE'] = __ex.tabul() + C_out=DEFI_FONCTION(**para) + elif isinstance(__ex,t_nappe): + def_fonc=[] + for f in __ex.l_fonc : + para=f.para + def_fonc.append(_F(VALE =f.tabul(), + INTERPOL =f.para['INTERPOL'], + PROL_DROITE=f.para['PROL_DROITE'], + PROL_GAUCHE=f.para['PROL_GAUCHE'],)) + para=__ex.para + if NOM_PARA !=None : para['NOM_PARA'] =NOM_PARA + if NOM_RESU !=None : para['NOM_RESU'] =NOM_RESU + if PROL_DROITE !=None : para['PROL_DROITE']=PROL_DROITE + if PROL_GAUCHE !=None : para['PROL_GAUCHE']=PROL_GAUCHE + if NOM_PARA_FONC !=None : para['NOM_PARA_FONC'] =INTERPOL + if INTERPOL_FONC !=None : para['INTERPOL'] =INTERPOL + C_out=DEFI_NAPPE(PARA=__ex.vale_para.tolist(),DEFI_FONCTION=def_fonc,**para) + if INFO > 1: + IMPR_FONCTION(FORMAT='TABLEAU', + UNITE=6, + COURBE=_F(FONCTION=C_out),) + return ier - if isinstance(__ex,t_fonction) or isinstance(__ex,t_fonction_c): - para=__ex.para - if NOM_PARA !=None : para['NOM_PARA'] =NOM_PARA - if NOM_RESU !=None : para['NOM_RESU'] =NOM_RESU - if PROL_DROITE!=None : para['PROL_DROITE']=PROL_DROITE - if PROL_GAUCHE!=None : para['PROL_GAUCHE']=PROL_GAUCHE - if INTERPOL !=None : para['INTERPOL'] =INTERPOL - if isinstance(__ex,t_fonction_c): para['VALE_C'] = __ex.tabul() - elif isinstance(__ex,t_fonction) : para['VALE'] = __ex.tabul() - C_out=DEFI_FONCTION(**para) - elif isinstance(__ex,t_nappe): - def_fonc=[] - for f in __ex.l_fonc : - para=f.para - def_fonc.append(_F(VALE =f.tabul(), - INTERPOL =f.para['INTERPOL'], - PROL_DROITE=f.para['PROL_DROITE'], - PROL_GAUCHE=f.para['PROL_GAUCHE'],) - ) - para=__ex.para - if NOM_PARA !=None : para['NOM_PARA'] =NOM_PARA - if NOM_RESU !=None : para['NOM_RESU'] =NOM_RESU - if PROL_DROITE !=None : para['PROL_DROITE']=PROL_DROITE - if PROL_GAUCHE !=None : para['PROL_GAUCHE']=PROL_GAUCHE - if NOM_PARA_FONC !=None : para['NOM_PARA_FONC'] =INTERPOL - if INTERPOL_FONC !=None : para['INTERPOL'] =INTERPOL - C_out=DEFI_NAPPE(PARA=__ex.vale_para.tolist(),DEFI_FONCTION=def_fonc,**para) - if INFO > 1: - IMPR_FONCTION(FORMAT='TABLEAU', - UNITE=6, - COURBE=_F(FONCTION=C_out),) - return ier +# ----------------------------------------------------------------------------- +class Context(object): + """Permet de stocker des éléments de contexte pour aider au + diagnostic lors de l'émission de message. + usage : + context = Context() + context.f = 'nomfon' + print context.f + """ + def __init__(self): + self.__nomf = None + + def get_val(self): + """Retourne le texte formatté. + """ + nomf = self.__nomf + if type(nomf) not in (list, tuple): + nomf = [nomf,] + pluriel = '' + if len(nomf) > 1: + pluriel = 's' + try: + res = """Fonction%(s)s concernée%(s)s : %(nomf)s""" % { + 's' : pluriel, + 'nomf' : ', '.join(nomf), + } + except: + res = 'erreur de programmation !' + return res + + def set_val(self, value): + self.__nomf = value + + def del_val(self): + del self.__nomf + + f = property(get_val, set_val, del_val, "") diff --git a/Aster/Cata/cataSTA8/Macro/impr_table_ops.py b/Aster/Cata/cataSTA8/Macro/impr_table_ops.py index fec1bdbb..6a7e4314 100644 --- a/Aster/Cata/cataSTA8/Macro/impr_table_ops.py +++ b/Aster/Cata/cataSTA8/Macro/impr_table_ops.py @@ -1,4 +1,4 @@ -#@ MODIF impr_table_ops Macro DATE 06/11/2006 AUTEUR MCOURTOI M.COURTOIS +#@ MODIF impr_table_ops Macro DATE 31/07/2007 AUTEUR SALMONA L.SALMONA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -22,6 +22,7 @@ import os.path import re +from sets import Set from types import ListType, TupleType, StringTypes EnumTypes=(ListType, TupleType) diff --git a/Aster/Cata/cataSTA8/Macro/macr_ascouf_calc_ops.py b/Aster/Cata/cataSTA8/Macro/macr_ascouf_calc_ops.py index ac8e6edf..91874f1f 100644 --- a/Aster/Cata/cataSTA8/Macro/macr_ascouf_calc_ops.py +++ b/Aster/Cata/cataSTA8/Macro/macr_ascouf_calc_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macr_ascouf_calc_ops Macro DATE 31/10/2006 AUTEUR REZETTE C.REZETTE +#@ MODIF macr_ascouf_calc_ops Macro DATE 05/09/2007 AUTEUR SALMONA L.SALMONA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -235,7 +235,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA else : motscles['PRES_REP']=_F( GROUP_MA = 'PEAUINT', PRES = PRES_REP['PRES'] ,) - if PRES_REP['EFFE_FOND_P1']!=None : + if PRES_REP['EFFE_FOND_P1']!='NON' : motscles['EFFE_FOND']=_F( GROUP_MA_INT = 'BORDTU' , GROUP_MA = 'EXTUBE' , PRES = PRES_REP['PRES'] ,) diff --git a/Aster/Cata/cataSTA8/Macro/macr_ascouf_mail_ops.py b/Aster/Cata/cataSTA8/Macro/macr_ascouf_mail_ops.py index ec377417..7a4bedb3 100644 --- a/Aster/Cata/cataSTA8/Macro/macr_ascouf_mail_ops.py +++ b/Aster/Cata/cataSTA8/Macro/macr_ascouf_mail_ops.py @@ -23,10 +23,7 @@ import os.path from math import sqrt,cos,sin,pi,tan,log,fabs,ceil,fmod,floor import aster import string -try : - from Utilitai.Utmess import UTMESS -except : - pass +from Utilitai.Utmess import UTMESS # ------------------------------------------------------------------------------ def ASCFON(RC,RM,EP,ORIEN,AZIM,AXEC,POS,Y): diff --git a/Aster/Cata/cataSTA8/Macro/macr_aspic_calc_ops.py b/Aster/Cata/cataSTA8/Macro/macr_aspic_calc_ops.py index ac1b2f66..9229d58a 100644 --- a/Aster/Cata/cataSTA8/Macro/macr_aspic_calc_ops.py +++ b/Aster/Cata/cataSTA8/Macro/macr_aspic_calc_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macr_aspic_calc_ops Macro DATE 31/10/2006 AUTEUR REZETTE C.REZETTE +#@ MODIF macr_aspic_calc_ops Macro DATE 03/10/2007 AUTEUR SALMONA L.SALMONA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -226,7 +226,7 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C motscles['PRES_REP' ]= _F(GROUP_MA=APPRES, PRES=PRES_REP['PRES']) else : motscles['PRES_REP' ]= _F(GROUP_MA=APPRES[0],PRES=PRES_REP['PRES']) - if PRES_REP['EFFE_FOND' ]!=None : + if PRES_REP['EFFE_FOND' ]=='OUI' : motscles['EFFE_FOND' ]=(_F(GROUP_MA ='EXTUBU ', GROUP_MA_INT='L_INT_TU', PRES =PRES_REP['PRES']), diff --git a/Aster/Cata/cataSTA8/Macro/macr_spectre_ops.py b/Aster/Cata/cataSTA8/Macro/macr_spectre_ops.py index e97053c1..6fb9a32f 100644 --- a/Aster/Cata/cataSTA8/Macro/macr_spectre_ops.py +++ b/Aster/Cata/cataSTA8/Macro/macr_spectre_ops.py @@ -21,10 +21,7 @@ from Accas import _F import aster import string -try : - from Utilitai.Utmess import UTMESS -except : - pass +from Utilitai.Utmess import UTMESS def macr_spectre_ops(self,MAILLAGE,PLANCHER,NOM_CHAM,CALCUL,RESU,IMPRESSION=None, FREQ=None,LIST_FREQ=None,LIST_INST=None,AMOR_SPEC=None,**args): """ diff --git a/Aster/Cata/cataSTA8/Macro/macro_elas_mult_ops.py b/Aster/Cata/cataSTA8/Macro/macro_elas_mult_ops.py index b9dac9fe..d253cd00 100644 --- a/Aster/Cata/cataSTA8/Macro/macro_elas_mult_ops.py +++ b/Aster/Cata/cataSTA8/Macro/macro_elas_mult_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macro_elas_mult_ops Macro DATE 07/11/2006 AUTEUR CIBHHLV L.VIVAN +#@ MODIF macro_elas_mult_ops Macro DATE 08/11/2007 AUTEUR SALMONA L.SALMONA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -234,11 +234,13 @@ def macro_elas_mult_ops(self,MODELE,CHAM_MATER,CARA_ELEM,NUME_DDL, motscles['NUME_MODE']=m['MODE_FOURIER'] motscles['EXCIT']=[] if m['CHAR_MECA'] : - for chargt in m['CHAR_MECA'] : motscles['EXCIT'].append(_F(CHARGE=chargt)) + for chargt in m['CHAR_MECA'] : motscles['EXCIT'].append(_F(CHARGE=chargt)) elif m['CHAR_CINE'] : - for chargt in m['CHAR_CINE'] : motscles['EXCIT'].append(_F(CHARGE=chargt)) - if CHAR_MECA_GLOBAL: motscles['EXCIT'].append(_F(CHARGE=CHAR_MECA_GLOBAL)) - elif CHAR_CINE_GLOBAL: motscles['EXCIT'].append(_F(CHARGE=CHAR_CINE_GLOBAL)) + for chargt in m['CHAR_CINE'] : motscles['EXCIT'].append(_F(CHARGE=chargt)) + if CHAR_MECA_GLOBAL: + for chargt in CHAR_MECA_GLOBAL : motscles['EXCIT'].append(_F(CHARGE=chargt)) + elif CHAR_CINE_GLOBAL: + for chargt in CHAR_CINE_GLOBAL : motscles['EXCIT'].append(_F(CHARGE=chargt)) CALC_ELEM(reuse=nomres, RESULTAT=nomres, MODELE=MODELE, @@ -256,11 +258,13 @@ def macro_elas_mult_ops(self,MODELE,CHAM_MATER,CARA_ELEM,NUME_DDL, motscles['NUME_MODE']=m['MODE_FOURIER'] motscles['EXCIT']=[] if m['CHAR_MECA'] : - for chargt in m['CHAR_MECA'] : motscles['EXCIT'].append(_F(CHARGE=chargt)) + for chargt in m['CHAR_MECA'] : motscles['EXCIT'].append(_F(CHARGE=chargt)) elif m['CHAR_CINE'] : - for chargt in m['CHAR_CINE'] : motscles['EXCIT'].append(_F(CHARGE=chargt)) - if CHAR_MECA_GLOBAL: motscles['EXCIT'].append(_F(CHARGE=CHAR_MECA_GLOBAL)) - elif CHAR_CINE_GLOBAL: motscles['EXCIT'].append(_F(CHARGE=CHAR_CINE_GLOBAL)) + for chargt in m['CHAR_CINE'] : motscles['EXCIT'].append(_F(CHARGE=chargt)) + if CHAR_MECA_GLOBAL: + for chargt in CHAR_MECA_GLOBAL : motscles['EXCIT'].append(_F(CHARGE=chargt)) + elif CHAR_CINE_GLOBAL: + for chargt in CHAR_CINE_GLOBAL : motscles['EXCIT'].append(_F(CHARGE=chargt)) CALC_NO(reuse=nomres, RESULTAT=nomres, MODELE=MODELE, diff --git a/Aster/Cata/cataSTA8/Macro/macro_miss_3d_ops.py b/Aster/Cata/cataSTA8/Macro/macro_miss_3d_ops.py index 97b6bd15..315f4307 100644 --- a/Aster/Cata/cataSTA8/Macro/macro_miss_3d_ops.py +++ b/Aster/Cata/cataSTA8/Macro/macro_miss_3d_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macro_miss_3d_ops Macro DATE 31/10/2006 AUTEUR ACBHHCD G.DEVESA +#@ MODIF macro_miss_3d_ops Macro DATE 06/06/2007 AUTEUR SALMONA L.SALMONA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -58,9 +58,9 @@ def macro_miss_3d_ops(self,UNITE_IMPR_ASTER,UNITE_OPTI_MISS, miss3d=loc_fic+'miss3d' - if VERSION=='V1_2': - if PARAMETRE != None and PARAMETRE['TYPE']=='BINAIRE': - raise AsException("MACRO_MISS_3D/PARAMETRE : type incompatible avec version") + # if VERSION=='V1_2': + # if PARAMETRE != None and PARAMETRE['TYPE']=='BINAIRE': + # raise AsException("MACRO_MISS_3D/PARAMETRE : type incompatible avec version") if OPTION['TOUT']!=None: MODUL2='COMPLET' diff --git a/Aster/Cata/cataSTA8/ops.py b/Aster/Cata/cataSTA8/ops.py index 6a3e9c19..6e08bd2a 100644 --- a/Aster/Cata/cataSTA8/ops.py +++ b/Aster/Cata/cataSTA8/ops.py @@ -1,4 +1,4 @@ -#@ MODIF ops Cata DATE 24/10/2006 AUTEUR DURAND C.DURAND +#@ MODIF ops Cata DATE 31/07/2007 AUTEUR SALMONA L.SALMONA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -261,6 +261,8 @@ def detruire(self,d): """ Cette fonction est la fonction op_init de la PROC DETRUIRE """ + if hasattr(self,"executed") and self.executed == 1: + return if self["CONCEPT"]!=None: sd=[] for mc in self["CONCEPT"]: