]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
*** empty log message ***
authorPascale Noyret <pascale.noyret@edf.fr>
Fri, 16 Nov 2007 14:21:57 +0000 (14:21 +0000)
committerPascale Noyret <pascale.noyret@edf.fr>
Fri, 16 Nov 2007 14:21:57 +0000 (14:21 +0000)
Aster/Cata/cataSTA8/Macro/calc_fonction_ops.py
Aster/Cata/cataSTA8/Macro/impr_table_ops.py
Aster/Cata/cataSTA8/Macro/macr_ascouf_calc_ops.py
Aster/Cata/cataSTA8/Macro/macr_ascouf_mail_ops.py
Aster/Cata/cataSTA8/Macro/macr_aspic_calc_ops.py
Aster/Cata/cataSTA8/Macro/macr_spectre_ops.py
Aster/Cata/cataSTA8/Macro/macro_elas_mult_ops.py
Aster/Cata/cataSTA8/Macro/macro_miss_3d_ops.py
Aster/Cata/cataSTA8/ops.py

index a541180fca87b1633af2430e053f2e9b7f3d0e05..ec19873669b223bf3cfffa04291829a4fa525726 100644 (file)
@@ -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
 # ======================================================================
 #    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, "")
index fec1bdbbfa163cce1665d3f245abcf121503bfee..6a7e43145905606103a7f36c13239eeb8159d286 100644 (file)
@@ -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)
index ac8e6edf23e938abef2c22081ff5dcf1ce97afba..91874f1f4a1e3728b5149494cbd2ce594da3f425 100644 (file)
@@ -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'] ,)
index ec37741744087b4e56aae379b82cbf25eb7d0d84..7a4bedb3ce94ba9efb9ae65774481bb8b7e50fa5 100644 (file)
@@ -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):
index ac1b2f6605474e5bf8a76b38cccf27f112f2b5ee..9229d58aca7c05c4fbfe9174442cad1360aa81d8 100644 (file)
@@ -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']),
index e97053c118d252910878e3a30be6a9736591046c..6fb9a32fff37f423d10a5d596d5b69a013441187 100644 (file)
 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):
   """
index b9dac9fe1ad745e0c192ab7cbf1e126fa16dc0e9..d253cd0056d21f705690c0c7deb1435cb5ee69e3 100644 (file)
@@ -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,
index 97b6bd15042381cdeaee05db37216b01a24e51f6..315f430770eff8d2b30010e287accf8aa4d759f6 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macro_miss_3d_ops Macro  DATE 31/10/2006   AUTEUR ACBHHCD G.DEVES
+#@ MODIF macro_miss_3d_ops Macro  DATE 06/06/2007   AUTEUR SALMONA L.SALMON
 # -*- 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'
index 6a3e9c198e6434e6cf8ef287ce9a0725fd8d2f42..6e08bd2ab951106801ce6b3e824079f7cf206aa2 100644 (file)
@@ -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"]: