1 #@ MODIF macro_expans_ops Macro DATE 26/03/2008 AUTEUR BODEL C.BODEL
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_BASE_PHYS = self.get_cmd('REST_BASE_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 NUME_MODE_NUM = MODELE_CALCUL['NUME_MODE']
57 NUME_MODE_EXP = MODELE_MESURE['NUME_MODE']
59 RESU_NUM = MODELE_CALCUL['BASE']
60 RESU_EXP = MODELE_MESURE['MESURE']
62 MOD_CALCUL = MODELE_CALCUL['MODELE']
63 MOD_MESURE = MODELE_MESURE['MODELE']
65 NOM_CHAM = MODELE_MESURE['NOM_CHAM']
67 # Extraction des modes numériques
68 # -------------------------------
69 self.DeclareOut( "RESU_NX", RESU_NX )
73 RESU_NX = EXTR_MODE( FILTRE_MODE=_F( MODE=RESU_NUM,
74 NUME_MODE=NUME_MODE_NUM ) )
77 # Extraction des modes expérimentaux
78 # ----------------------------------
79 self.DeclareOut( "RESU_EX", RESU_EX )
83 RESU_EX = EXTR_MODE( FILTRE_MODE=_F( MODE=RESU_EXP,
84 NUME_MODE=NUME_MODE_EXP ) )
88 # Projection des modes experimentaux - on passe le mot-clef
89 # RESOLUTION directement à PROJ_MESU_MODAL
90 # ---------------------------------------------------------
92 # Mot-clé facteur de résolution
95 if m['METHODE'] == 'SVD':
96 mfact.append({'METHODE':'SVD','EPS':m['EPS']})
97 if m['METHODE'] == 'LU':
98 mfact.append({'METHODE':'LU'})
99 if m['REGUL'] != 'NON':
101 mfact.append({'COEF_PONDER':m['COEF_PONDER']})
102 if m['COEF_PONDER_F']:
103 mfact.append({'COEF_PONDER_F':m['COEF_PONDER_F']})
105 # Paramètres à garder : si on étend des mode_meca, on conserve les
106 # freq propres, amortissements réduits, et masses généralisées. Pour
107 # les dyna_harmo, on conserve les fréquences uniquement
108 if isinstance(RESU_EXP, mode_meca):
109 paras = ('FREQ','AMOR_REDUIT','MASS_GENE',)
110 elif isinstance(RESU_EXP, dyna_harmo):
114 #"LE MODELE MEDURE DOIT ETRE UN CONCEPT DE TYPE DYNA_HARMO OU MODE_MECA")
115 UTMESS('A','MEIDEE0_1')
119 __PROJ = PROJ_MESU_MODAL(MODELE_CALCUL = _F( BASE=RESU_NX,
122 MODELE_MESURE = _F( MESURE=RESU_EX,
129 except Exception, err:
132 # Phase de reconstruction des donnees mesurees sur le maillage
134 # ------------------------------------------------------------
135 self.DeclareOut( "RESU_ET", RESU_ET )
136 RESU_ET = REST_BASE_PHYS( RESU_GENE = __PROJ,
139 NOM_CHAM = NOM_CHAM);
143 # Restriction des modes mesures etendus sur le maillage capteur
144 # -------------------------------------------------------------
145 self.DeclareOut( "RESU_RD", RESU_RD )
146 refd1 = aster.getvectjev(RESU_EXP.nom.ljust(19)+".REFD")
147 refd2 = aster.getvectjev(RESU_EX.nom.ljust(19)+".REFD")
149 if RESU_EX.REFD.get():
150 tmp = RESU_EX.REFD.get()[3]
151 nume = self.jdc.sds_dict[tmp.strip()]
155 UTMESS('A','MEIDEE0_5')
156 RESU_RD = PROJ_CHAMP( METHODE = 'ELEM',
158 MODELE_1 = MOD_CALCUL,
159 MODELE_2 = MOD_MESURE,
163 VIS_A_VIS =_F( TOUT_1='OUI',