]> SALOME platform Git repositories - tools/eficas.git/blob - Aster/Cata/cataSTA10/Macro/calc_mode_rotation_ops.py
Salome HOME
f5c598e84f90d24a856b385f9aee6769354b7fce
[tools/eficas.git] / Aster / Cata / cataSTA10 / Macro / calc_mode_rotation_ops.py
1 #@ MODIF calc_mode_rotation_ops Macro  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
2
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.                                                  
10 #                                                                       
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.                              
15 #                                                                       
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
21
22 from Accas import _F
23 from types import ListType, TupleType
24
25
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
35 # CALC_FREQ
36 # VERI_MODE
37     from Utilitai.Table import Table
38     ier=0
39      
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')
46
47     # La macro compte pour 1 dans la numerotation des commandes
48     self.set_icmd(1)
49
50     motscit={}
51     if METHODE=='QZ':
52         motscit['CALC_FREQ']=_F(OPTION  ='PLUS_PETITE',
53                              NMAX_FREQ  =CALC_FREQ['NMAX_FREQ'])                         
54         
55     if METHODE=='SORENSEN':        
56         motscit['CALC_FREQ']=_F(OPTION  ='CENTRE',
57                              NMAX_FREQ  =CALC_FREQ['NMAX_FREQ'],
58                              FREQ       =CALC_FREQ['FREQ'])
59     
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'])
64
65     
66     self.DeclareOut('tab_out',self.sd)
67     
68     NBV=len(VITE_ROTA);
69     
70     _mod=[None]*NBV;
71     
72     tab=Table()
73     for ii in range(0,NBV):
74         OM=VITE_ROTA[ii]
75         nom = 'OM_'+str(ii)
76
77         # ----------------------------------
78         # Ajout des effets gyroscopiques w*G
79         # dans la matrice d amortissement C
80         # ----------------------------------
81
82         
83         GYOM=COMB_MATR_ASSE(COMB_R=(_F(MATR_ASSE=MATR_GYRO, COEF_R=OM,),
84                             _F(MATR_ASSE=MATR_AMOR, COEF_R=1.,),))
85
86         _mod[ii]=MODE_ITER_SIMULT(MATR_A=MATR_A,
87                        MATR_B=MATR_B,
88                        MATR_C=GYOM,
89                        METHODE=METHODE,
90                        **motscit)
91         
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})
94
95     motcles=tab.dict_CREA_TABLE()
96     tab_out=CREA_TABLE(TYPE_TABLE = 'TABLE_CONTENEUR', **motcles);
97     return ier