1 #@ MODIF calc_mode_rotation_ops Macro DATE 14/06/2010 AUTEUR COURTOIS M.COURTOIS
3 # CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG
6 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
7 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
8 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
9 # (AT YOUR OPTION) ANY LATER VERSION.
11 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
12 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
13 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
14 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
16 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
17 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
18 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
19 # ======================================================================
20 # RESPONSABLE Mohamed TORKHANI
23 from types import ListType, TupleType
26 def calc_mode_rotation_ops(self,MATR_A, MATR_B, MATR_AMOR, MATR_GYRO,
27 VITE_ROTA,METHODE,CALC_FREQ,VERI_MODE,**args):
28 # Macro pour calculer les frequences et modes en fonction des vitesses de rotation
29 # MATR_A, matrice de raideur
30 # MATR_B, matrice de masse
31 # MATR_AMOR, matrice d'amortissement
32 # MATR_GYRO, matrice de gyroscopie
33 # VITE_ROTA, liste de vitesses de rotation
34 # METHODE, methode de calcul, QZ par defaut ou SORENSEN
37 from Utilitai.Table import Table
40 # On importe les definitions des commandes a utiliser dans la macro
41 MODE_ITER_SIMULT =self.get_cmd('MODE_ITER_SIMULT')
42 COMB_MATR_ASSE =self.get_cmd('COMB_MATR_ASSE')
43 IMPR_RESU =self.get_cmd('IMPR_RESU')
44 DETRUIRE =self.get_cmd('DETRUIRE')
45 CREA_TABLE =self.get_cmd('CREA_TABLE')
47 # La macro compte pour 1 dans la numerotation des commandes
52 motscit['CALC_FREQ']=_F(OPTION ='PLUS_PETITE',
53 NMAX_FREQ =CALC_FREQ['NMAX_FREQ'])
55 if METHODE=='SORENSEN':
56 motscit['CALC_FREQ']=_F(OPTION ='CENTRE',
57 NMAX_FREQ =CALC_FREQ['NMAX_FREQ'],
58 FREQ =CALC_FREQ['FREQ'])
60 motscit['VERI_MODE']=_F(STOP_ERREUR=VERI_MODE['STOP_ERREUR'],
61 SEUIL =VERI_MODE['SEUIL'],
62 STURM =VERI_MODE['STURM'],
63 PREC_SHIFT =VERI_MODE['PREC_SHIFT'])
66 self.DeclareOut('tab_out',self.sd)
73 for ii in range(0,NBV):
77 # ----------------------------------
78 # Ajout des effets gyroscopiques w*G
79 # dans la matrice d amortissement C
80 # ----------------------------------
83 GYOM=COMB_MATR_ASSE(COMB_R=(_F(MATR_ASSE=MATR_GYRO, COEF_R=OM,),
84 _F(MATR_ASSE=MATR_AMOR, COEF_R=1.,),))
86 _mod[ii]=MODE_ITER_SIMULT(MATR_A=MATR_A,
92 DETRUIRE(CONCEPT=_F(NOM=GYOM),INFO=1,)
93 tab.append({'NUME_VITE' : ii, 'VITE_ROTA' : OM, 'NOM_OBJET': 'MODE_MECA', 'TYPE_OBJET': 'MODE_MECA', 'NOM_SD' : _mod[ii].nom})
95 motcles=tab.dict_CREA_TABLE()
96 tab_out=CREA_TABLE(TYPE_TABLE = 'TABLE_CONTENEUR', **motcles);