Exemple #1
0
 def _run(self):
     """SPEC_OSCI"""
     import aster_fonctions
     f_in = self._lf[0]
     l_freq, l_amor = self._dat['FREQ'], self._dat['AMOR']
     kw = self.kw
     l_fonc_f = []
     # 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': kw['NATURE']
     }
     para_fonc = {
         'INTERPOL': ['LOG', 'LOG'],
         'NOM_PARA': 'FREQ',
         'PROL_DROITE': 'CONSTANT',
         'PROL_GAUCHE': 'EXCLU',
         'NOM_RESU': kw['NATURE']
     }
     if kw['NATURE'] == 'DEPL':
         ideb = 0
     elif kw['NATURE'] == 'VITE':
         ideb = 1
     else:
         ASSERT(kw['NATURE'] == 'ACCE')
         ideb = 2
     if kw['METHODE'] == 'RICE':
         # appel à DSP2SRO
         ASSERT(kw['NATURE_FONC'] == 'DSP')
         deuxpi = 2. * math.pi
         f_dsp = t_fonction(f_in.vale_x * deuxpi, f_in.vale_y / deuxpi,
                            f_in.para)
         for iamor in l_amor:
             spectr = DSP2SRO(f_dsp, iamor, kw['DUREE'], l_freq, ideb)
             vale_y = spectr.vale_y / kw['NORME']
             l_fonc_f.append(t_fonction(l_freq, vale_y, para_fonc))
     elif kw['METHODE'] == 'NIGAM':
         # appel à SPEC_OSCI
         ASSERT(kw['NATURE_FONC'] == 'ACCE')
         spectr = aster_fonctions.SPEC_OSCI(f_in.vale_x, f_in.vale_y,
                                            l_freq, l_amor)
         for iamor in range(len(l_amor)):
             vale_y = spectr[iamor, ideb, :] / kw['NORME']
             l_fonc_f.append(t_fonction(l_freq, vale_y, para_fonc))
     elif kw['METHODE'] == 'HARMO':
         # appel à ACCE2DSP
         ASSERT(kw['NATURE_FONC'] == 'ACCE')
         for iamor in l_amor:
             spectr = ACCE2SRO(f_in, iamor, l_freq, ideb)
             vale_y = spectr.vale_y / kw['NORME']
             l_fonc_f.append(t_fonction(l_freq, vale_y, para_fonc))
     self.resu = t_nappe(vale_para, l_fonc_f, para)
Exemple #2
0
    def _build_data(self):
        """Read keywords to build the data"""
        # CalcFonctionOper._build_list_fonc(self)
        kw = self.kw
        if self.kw['NAPPE'] != None:
            self._build_list_fonc(mcsimp='NAPPE')
        elif self.kw['FONCTION'] != None:
            self._build_list_fonc(mcsimp='FONCTION')
        elif self.kw['TABLE'] != None:
            lf_in = self._get_mcsimp('TABLE')
            para_fonc = {
                'PROL_DROITE': 'EXCLU',
                'INTERPOL': ['LIN', 'LIN'],
                'PROL_GAUCHE': 'EXCLU',
                'NOM_RESU': 'TOUTRESU',
                'NOM_PARA': 'FREQ'
            }
            para_napp = {
                'PROL_DROITE': 'EXCLU',
                'INTERPOL': ['LIN', 'LIN'],
                'PROL_GAUCHE': 'EXCLU',
                'NOM_RESU': 'TOUTRESU',
                'NOM_PARA': 'AMOR',
                'NOM_PARA_FONC': 'FREQ'
            }

            # conversion des tables en nappes
            l_nappe = []
            for tab in lf_in:
                nom_para = tab.get_nom_para()
                # print nom_para
                if kw['LIST_AMOR'] != None:
                    amor = kw['LIST_AMOR']
                else:
                    amor = range(1, len(nom_para))
                # error
                if 'FREQ' not in nom_para:
                    print 'error'
                nom_para.remove('FREQ')
                # print dir(tab.EXTR_TABLE())
                dico = tab.EXTR_TABLE().values()
                l_fonc_f = []
                for para in nom_para:
                    freq = dico['FREQ']
                    # print freq
                    vale = dico[para]
                    # print vale
                    l_fonc_f.append(t_fonction(freq, vale, para_fonc))
                    # print 'fonction'
                l_nappe.append(t_nappe(amor, l_fonc_f, para_napp))
            # print 'nappe',l_nappe
            self._lf = l_nappe
Exemple #3
0
 def _run(self):
     """MOYENNE"""
     if self.typres is nappe_sdaster:
         nap0 = self._lf[0]
         vale_para = nap0.vale_para
         para = nap0.para
         l_fonc_f = []
         for i in range(len(vale_para)):
             self.ctxt.f = [nap.l_fonc[i].nom for nap in self._lf]
             lfr = moyenne([nap.l_fonc[i] for nap in self._lf])
             l_fonc_f.append(lfr)
         self.resu = t_nappe(vale_para, l_fonc_f, para)
     else:
         self.resu = moyenne(self._lf)
Exemple #4
0
    def _run(self):
        """FRACTILE"""
        fract = self.kw['FRACT']
        if self.typres is nappe_sdaster:
            nap0 = self._lf[0]
            vale_para = nap0.vale_para
            para = nap0.para
            l_fonc_f = []
            for i in range(len(vale_para)):
                self.ctxt.f = [nap.l_fonc[i].nom for nap in self._lf]
                lfr = fractile([nap.l_fonc[i] for nap in self._lf], fract)
                l_fonc_f.append(lfr)
            self.resu = t_nappe(vale_para, l_fonc_f, para)

        else:
            self.resu = fractile(self._lf, fract)
Exemple #5
0
 def _run(self):
     """ENVELOPPE"""
     crit = self.kw['CRITERE']
     if self.typres is nappe_sdaster:
         nap0 = self._lf[0]
         vale_para = nap0.vale_para
         para = nap0.para
         l_fonc_f = []
         for i in range(len(vale_para)):
             env = nap0.l_fonc[i]
             for nap in self._lf[1:]:
                 self.ctxt.f = nap.l_fonc[i].nom
                 env = enveloppe([env, nap.l_fonc[i]], crit)
             l_fonc_f.append(env)
         self.resu = t_nappe(vale_para, l_fonc_f, para)
     else:
         self.resu = enveloppe(self._lf, crit)
 def convert(self):
     """
     Retourne un objet de la classe t_nappe, représentation python de la nappe
     """
     from Cata_Utils.t_fonction import t_fonction, t_nappe
     para = self.Parametres()
     vale = self.Valeurs()
     l_fonc = []
     i = 0
     for pf in para[1]:
         para_f = {'INTERPOL': pf['INTERPOL_FONC'],
                   'PROL_DROITE': pf['PROL_DROITE_FONC'],
                   'PROL_GAUCHE': pf['PROL_GAUCHE_FONC'],
                   'NOM_PARA': para[0]['NOM_PARA_FONC'],
                   'NOM_RESU': para[0]['NOM_RESU'],
                   }
         l_fonc.append(t_fonction(vale[1][i][0], vale[1][i][1], para_f))
         i += 1
     return t_nappe(vale[0], l_fonc, para[0], nom=self.nom)
Exemple #7
0
    def _run(self):
        """LISS_ENVELOP"""
        kw = self.kw
        l_sp_nappe = []
        # formatage selon les donnes d'entrees
        if kw['FONCTION'] != None:
            f_in = self._lf[0]
            if kw['LIST_AMOR'] != None:
                amor = kw['LIST_AMOR'][0]
            else:
                amor = 0.
            sp_nappe = LISS.nappe(listFreq=f_in.vale_x,
                                  listeTable=[f_in.vale_y],
                                  listAmor=[amor],
                                  entete="")
            para_fonc = f_in.para
            para = f_in.para.copy()
            # print 'para',para
            para['NOM_PARA'] = 'AMOR'
            para['NOM_PARA_FONC'] = para_fonc['NOM_PARA']
            l_sp_nappe = [sp_nappe]
        elif kw['NAPPE'] != None or kw['TABLE'] != None:
            for i_nappe in range(len(self._lf)):
                f_in = self._lf[i_nappe]
                sp_nappe = LISS.nappe(
                    listFreq=f_in.l_fonc[0].vale_x,
                    listeTable=[f.vale_y for f in f_in.l_fonc],
                    listAmor=f_in.vale_para,
                    entete="")
                # verification que les nappes ont les memes amortissements
                if i_nappe == 0:
                    l_amor = f_in.vale_para
                    l_amor.sort()
                    erreur_amor = 0
                else:
                    if len(l_amor) == len(f_in.vale_para):
                        l_amor2 = f_in.vale_para.copy()
                        l_amor2.sort()
                        d_amor = l_amor - l_amor2
                        if max(abs(d_amor)) > 1e-6: erreur_amor = 1
                    else:
                        erreur_amor = 1
                if erreur_amor:
                    UTMESS('F', 'FONCT0_74')
                l_sp_nappe.append(sp_nappe)
            para_fonc = f_in.l_fonc[0].para
            para = f_in.para

        if kw['OPTION'] == 'CONCEPTION':
            sp_lisse = LISS.liss_enveloppe(l_sp_nappe,
                                           option=kw['OPTION'],
                                           fmin=kw['FREQ_MIN'],
                                           fmax=kw['FREQ_MAX'],
                                           l_freq=list(kw['LIST_FREQ']),
                                           nb_pts=kw['NB_FREQ_LISS'],
                                           zpa=kw['ZPA'],
                                           precision=1e-3,
                                           critere='RELATIF')
        else:
            sp_lisse = LISS.liss_enveloppe(l_sp_nappe,
                                           option=kw['OPTION'],
                                           coef_elarg=kw['ELARG'],
                                           fmin=kw['FREQ_MIN'],
                                           fmax=kw['FREQ_MAX'],
                                           l_freq=list(kw['LIST_FREQ']),
                                           nb_pts=kw['NB_FREQ_LISS'],
                                           zpa=kw['ZPA'],
                                           precision=1e-3,
                                           critere='RELATIF')

        l_fonc_f = []
        for spec in sp_lisse.listSpec:
            l_fonc_f.append(
                t_fonction(sp_lisse.listFreq, spec.dataVal, para_fonc))
        self.resu = t_nappe(sp_lisse.listAmor, l_fonc_f, para)