1 #@ MODIF macro_mode_meca_ops Macro DATE 30/10/2007 AUTEUR BOYERE E.BOYERE
2 # -*- coding: iso-8859-1 -*-
3 # CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2002 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 # ======================================================================
23 def macro_mode_meca_ops(self,MATR_A,MATR_B,INFO,METHODE,OPTION,CALC_FREQ,
24 VERI_MODE,NORM_MODE,FILTRE_MODE,IMPRESSION,**args):
26 Ecriture de la macro MACRO_MODE_MECA
31 # on protege le contenu du mot cle NORM_MODE pour eviter les confusions
32 # avec la commande du meme nom
36 # On importe les definitions des commandes a utiliser dans la macro
37 MODE_ITER_SIMULT =self.get_cmd('MODE_ITER_SIMULT')
38 NORM_MODE =self.get_cmd('NORM_MODE')
39 IMPR_RESU =self.get_cmd('IMPR_RESU')
40 EXTR_MODE =self.get_cmd('EXTR_MODE')
41 DETRUIRE =self.get_cmd('DETRUIRE')
42 # La macro compte pour 1 dans la numerotation des commandes
48 nnfreq=len(CALC_FREQ['FREQ'])
51 nnfreq= CALC_FREQ['NB_BLOC_FREQ']+1
52 zlborn=(CALC_FREQ['FREQ_MAX']-CALC_FREQ['FREQ_MIN'])/(nnfreq-1)
53 for i in range(0,nnfreq):
54 lborne.append(CALC_FREQ['FREQ_MIN']+i*zlborn)
57 motscles['FILTRE_MODE']=[]
58 for i in range(0,nnfreq-1):
61 if CALC_FREQ['DIM_SOUS_ESPACE']: motscfa['DIM_SOUS_ESPACE']=CALC_FREQ['DIM_SOUS_ESPACE']
62 if CALC_FREQ['COEF_DIM_ESPACE']: motscfa['COEF_DIM_ESPACE']=CALC_FREQ['COEF_DIM_ESPACE']
64 motscfa['FREQ']=(CALC_FREQ['FREQ'][i],CALC_FREQ['FREQ'][i+1])
66 motscfa['FREQ']=(lborne[i],lborne[i+1])
67 motscit['CALC_FREQ']=_F(OPTION ='BANDE',
68 SEUIL_FREQ =CALC_FREQ['SEUIL_FREQ'],
69 NPREC_SOLVEUR =CALC_FREQ['NPREC_SOLVEUR'],
70 NMAX_ITER_SHIFT =CALC_FREQ['NMAX_ITER_SHIFT'],
71 PREC_SHIFT =CALC_FREQ['PREC_SHIFT'],
73 motscit['VERI_MODE']=_F(STOP_ERREUR=VERI_MODE['STOP_ERREUR'],
74 SEUIL =VERI_MODE['SEUIL'],
75 STURM =VERI_MODE['STURM'],
76 PREC_SHIFT =VERI_MODE['PREC_SHIFT'])
77 motscit['STOP_FREQ_VIDE']=CALC_FREQ['STOP_FREQ_VIDE']
79 if METHODE=='TRI_DIAG':
80 if args.has_key('NMAX_ITER_ORTHO'):
81 motscit['NMAX_ITER_ORTHO'] =args['NMAX_ITER_ORTHO']
82 if args.has_key('PREC_ORTHO'):
83 motscit['PREC_ORTHO'] =args['PREC_ORTHO']
84 if args.has_key('PREC_LANCZOS'):
85 motscit['PREC_LANCZOS'] =args['PREC_LANCZOS']
86 if args.has_key('MAX_ITER_QR'):
87 motscit['NMAX_ITER_QR'] =args['NMAX_ITER_QR']
88 elif METHODE=='JACOBI':
89 if args.has_key('NMAX_ITER_BATHE'):
90 motscit['NMAX_ITER_BATHE'] =args['NMAX_ITER_BATHE']
91 if args.has_key('PREC_BATHE'):
92 motscit['PREC_BATHE'] =args['PREC_BATHE']
93 if args.has_key('NMAX_ITER_JACOBI'):
94 motscit['NMAX_ITER_JACOBI']=args['NMAX_ITER_JACOBI']
95 if args.has_key('PREC_JACOBI'):
96 motscit['PREC_JACOBI'] =args['PREC_JACOBI']
97 elif METHODE=='SORENSEN':
98 if args.has_key('NMAX_ITER_SOREN'):
99 motscit['NMAX_ITER_SOREN'] =args['NMAX_ITER_SOREN']
100 if args.has_key('PARA_ORTHO_SOREN'):
101 motscit['PARA_ORTHO_SOREN']=args['PARA_ORTHO_SOREN']
102 if args.has_key('PREC_SOREN'):
103 motscit['PREC_SOREN'] =args['PREC_SOREN']
105 __nomre0=MODE_ITER_SIMULT(MATR_A =MATR_A,
112 __nomre0=NORM_MODE(reuse =__nomre0,
114 NORME =normode['NORME'],
115 INFO =normode['INFO'],)
117 if IMPRESSION['TOUT_PARA']=='OUI':
118 IMPR_RESU(RESU=_F(RESULTAT=__nomre0,
124 motscles['FILTRE_MODE'].append(_F(MODE =__nomre0,
125 CRIT_EXTR =FILTRE_MODE['CRIT_EXTR'],
126 SEUIL =FILTRE_MODE['SEUIL'], ))
128 motscles['FILTRE_MODE'].append(_F(MODE =__nomre0,
132 motscles['IMPRESSION']=_F(CUMUL =IMPRESSION['CUMUL'],
133 CRIT_EXTR=IMPRESSION['CRIT_EXTR'],)
134 self.DeclareOut('nomres',self.sd)
135 nomres=EXTR_MODE(**motscles)
136 DETRUIRE(CONCEPT=_F(NOM='__nomre0',),ALARME='NON')