1 #@ MODIF macro_expans_ops Macro DATE 03/11/2008 AUTEUR PELLET J.PELLET
2 # -*- coding: iso-8859-1 -*-
3 # CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2006 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 # ======================================================================
22 # MODIF : 24/07/2007. BODEL : suppression du mc NUME_DDL. Le nume_ddl par
23 # defaut pour PROJ_CHAMP est celui du modèle expérimental.
25 def macro_expans_ops( self,
38 """!macro MACRO_EXPANS """
40 from Cata.cata import CO, mode_meca, dyna_harmo
41 from Utilitai.Utmess import UTMESS
42 from types import ListType, TupleType
46 EXTR_MODE = self.get_cmd('EXTR_MODE')
47 PROJ_MESU_MODAL = self.get_cmd('PROJ_MESU_MODAL')
48 REST_GENE_PHYS = self.get_cmd('REST_GENE_PHYS')
49 PROJ_CHAMP = self.get_cmd('PROJ_CHAMP')
50 NORM_MODE = self.get_cmd('NORM_MODE')
53 # La macro compte pour 1 dans la numerotation des commandes
56 is_nume_num = is_nume_exp = 0
57 if MODELE_CALCUL['NUME_MODE'] or MODELE_CALCUL['NUME_ORDRE']:
58 # on cree un resultat RESU_NX par extraction de NUME_ORDREs
61 if RESU_NX: UTMESS('A','MEIDEE0_6',valk=['MODELE_MESURE','RESU_EX'])
62 if MODELE_MESURE['NUME_MODE'] or MODELE_MESURE['NUME_ORDRE']:
63 # On cree un RESU_EX par extraction de NUME_ORDREs
66 if RESU_EX: UTMESS('A','MEIDEE0_6',valk=['MODELE_CALCUL','RESU_NX'])
68 RESU_NUM = MODELE_CALCUL['BASE']
69 RESU_EXP = MODELE_MESURE['MESURE']
71 MOD_CALCUL = MODELE_CALCUL['MODELE']
72 MOD_MESURE = MODELE_MESURE['MODELE']
74 NOM_CHAM = MODELE_MESURE['NOM_CHAM']
76 # Extraction des modes numériques
77 # -------------------------------
81 self.DeclareOut( "RESU_NX", RESU_NX )
82 mfact = {'MODE':RESU_NUM}
83 if MODELE_CALCUL['NUME_MODE']:
84 mfact.update({'NUME_MODE':MODELE_CALCUL['NUME_MODE']})
85 elif MODELE_CALCUL['NUME_ORDRE']:
86 mfact.update({'NUME_ORDRE':MODELE_CALCUL['NUME_ORDRE']})
88 RESU_NX = EXTR_MODE( FILTRE_MODE = mfact )
91 # Extraction des modes expérimentaux
92 # ----------------------------------
96 self.DeclareOut( "RESU_EX", RESU_EX )
97 mfact = {'MODE':RESU_EXP}
98 if MODELE_MESURE['NUME_MODE']:
99 mfact.update({'NUME_MODE':MODELE_MESURE['NUME_MODE']})
100 elif MODELE_MESURE['NUME_ORDRE']:
101 mfact.update({'NUME_ORDRE':MODELE_MESURE['NUME_ORDRE']})
103 RESU_EX = EXTR_MODE( FILTRE_MODE = mfact )
107 # Projection des modes experimentaux - on passe le mot-clef
108 # RESOLUTION directement à PROJ_MESU_MODAL
109 # ---------------------------------------------------------
111 # Mot-clé facteur de résolution
114 if m['METHODE'] == 'SVD':
115 mfact.append({'METHODE':'SVD','EPS':m['EPS']})
116 if m['METHODE'] == 'LU':
117 mfact.append({'METHODE':'LU'})
118 if m['REGUL'] != 'NON':
120 mfact.append({'COEF_PONDER':m['COEF_PONDER']})
121 if m['COEF_PONDER_F']:
122 mfact.append({'COEF_PONDER_F':m['COEF_PONDER_F']})
124 # Paramètres à garder : si on étend des mode_meca, on conserve les
125 # freq propres, amortissements réduits, et masses généralisées. Pour
126 # les dyna_harmo, on conserve les fréquences uniquement
127 if isinstance(RESU_EXP, mode_meca):
128 paras = ('FREQ','AMOR_REDUIT','MASS_GENE',)
129 elif isinstance(RESU_EXP, dyna_harmo):
133 #"LE MODELE MEDURE DOIT ETRE UN CONCEPT DE TYPE DYNA_HARMO OU MODE_MECA")
134 UTMESS('A','MEIDEE0_1')
138 __PROJ = PROJ_MESU_MODAL(MODELE_CALCUL = _F( BASE=RESU_NX,
141 MODELE_MESURE = _F( MESURE=RESU_EX,
148 except Exception, err:
151 # Phase de reconstruction des donnees mesurees sur le maillage
153 # ------------------------------------------------------------
154 self.DeclareOut( "RESU_ET", RESU_ET )
155 RESU_ET = REST_GENE_PHYS( RESU_GENE = __PROJ,
158 NOM_CHAM = NOM_CHAM);
162 # Restriction des modes mesures etendus sur le maillage capteur
163 # -------------------------------------------------------------
164 self.DeclareOut( "RESU_RD", RESU_RD )
165 refd1 = aster.getvectjev(RESU_EXP.nom.ljust(19)+".REFD")
166 refd2 = aster.getvectjev(RESU_EX.nom.ljust(19)+".REFD")
169 if RESU_EX.REFD.get():
170 tmp = RESU_EX.REFD.get()[3]
172 nume = self.jdc.sds_dict[tmp.strip()]
176 UTMESS('A','MEIDEE0_5')
177 RESU_RD = PROJ_CHAMP( METHODE = 'ELEM',
179 MODELE_1 = MOD_CALCUL,
180 MODELE_2 = MOD_MESURE,
184 VIS_A_VIS =_F( TOUT_1='OUI',