1 # -*- coding: iso-8859-1 -*-
2 #@ MODIF macro_mode_meca_ops Macro DATE 11/09/2002 AUTEUR VABHHTS J.PELLET
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 # ======================================================================
21 def macro_mode_meca_ops(self,MATR_A,MATR_B,INFO,METHODE,OPTION,CALC_FREQ,
22 VERI_MODE,NORM_MODE,FILTRE_MODE,IMPRESSION,**args):
24 Ecriture de la macro MACRO_MODE_MECA
29 # on protege le contenu du mot cle NORM_MODE pour eviter les confusions
30 # avec la commande du meme nom
34 # On importe les definitions des commandes a utiliser dans la macro
35 MODE_ITER_SIMULT =self.get_cmd('MODE_ITER_SIMULT')
36 NORM_MODE =self.get_cmd('NORM_MODE')
37 IMPR_RESU =self.get_cmd('IMPR_RESU')
38 EXTR_MODE =self.get_cmd('EXTR_MODE')
39 # La macro compte pour 1 dans la numerotation des commandes
45 nnfreq=len(CALC_FREQ['FREQ'])
48 nnfreq= CALC_FREQ['NB_BLOC_FREQ']+1
49 zlborn=(CALC_FREQ['FREQ_MAX']-CALC_FREQ['FREQ_MIN'])/(nnfreq-1)
50 for i in range(0,nnfreq):
51 lborne.append(CALC_FREQ['FREQ_MIN']+i*zlborn)
54 motscles['FILTRE_MODE']=[]
55 for i in range(0,nnfreq-1):
58 if CALC_FREQ['DIM_SOUS_ESPACE']: motscfa['DIM_SOUS_ESPACE']=CALC_FREQ['DIM_SOUS_ESPACE']
59 if CALC_FREQ['COEF_DIM_ESPACE']: motscfa['COEF_DIM_ESPACE']=CALC_FREQ['COEF_DIM_ESPACE']
61 motscfa['FREQ']=(CALC_FREQ['FREQ'][i],CALC_FREQ['FREQ'][i+1])
63 motscfa['FREQ']=(lborne[i],lborne[i+1])
64 motscit['CALC_FREQ']=_F(OPTION ='BANDE',
65 SEUIL_FREQ =CALC_FREQ['SEUIL_FREQ'],
66 NPREC_SOLVEUR =CALC_FREQ['NPREC_SOLVEUR'],
67 NMAX_ITER_SHIFT =CALC_FREQ['NMAX_ITER_SHIFT'],
68 PREC_SHIFT =CALC_FREQ['PREC_SHIFT'],
70 motscit['VERI_MODE']=_F(STOP_ERREUR=VERI_MODE['STOP_ERREUR'],
71 SEUIL =VERI_MODE['SEUIL'],
72 STURM =VERI_MODE['STURM'],
73 PREC_SHIFT =VERI_MODE['PREC_SHIFT'])
74 motscit['STOP_FREQ_VIDE']=CALC_FREQ['STOP_FREQ_VIDE']
76 if METHODE=='TRI_DIAG':
77 if args.has_key('NMAX_ITER_ORTHO'):
78 motscit['NMAX_ITER_ORTHO'] =args['NMAX_ITER_ORTHO']
79 if args.has_key('PREC_ORTHO'):
80 motscit['PREC_ORTHO'] =args['PREC_ORTHO']
81 if args.has_key('PREC_LANCZOS'):
82 motscit['PREC_LANCZOS'] =args['PREC_LANCZOS']
83 if args.has_key('MAX_ITER_QR'):
84 motscit['NMAX_ITER_QR'] =args['NMAX_ITER_QR']
85 elif METHODE=='JACOBI':
86 if args.has_key('NMAX_ITER_BATHE'):
87 motscit['NMAX_ITER_BATHE'] =args['NMAX_ITER_BATHE']
88 if args.has_key('PREC_BATHE'):
89 motscit['PREC_BATHE'] =args['PREC_BATHE']
90 if args.has_key('NMAX_ITER_JACOBI'):
91 motscit['NMAX_ITER_JACOBI']=args['NMAX_ITER_JACOBI']
92 if args.has_key('PREC_JACOBI'):
93 motscit['PREC_JACOBI'] =args['PREC_JACOBI']
94 elif METHODE=='SORENSEN':
95 if args.has_key('NMAX_ITER_SOREN'):
96 motscit['NMAX_ITER_SOREN'] =args['NMAX_ITER_SOREN']
97 if args.has_key('PARA_ORTHO_SOREN'):
98 motscit['PARA_ORTHO_SOREN']=args['PARA_ORTHO_SOREN']
99 if args.has_key('PREC_SOREN'):
100 motscit['PREC_SOREN'] =args['PREC_SOREN']
102 __nomre0=MODE_ITER_SIMULT(MATR_A =MATR_A,
109 __nomre0=NORM_MODE(reuse =__nomre0,
110 MASS_INER =normode['MASS_INER'],
112 NORME =normode['NORME'],
113 INFO =normode['INFO'],)
115 if IMPRESSION['TOUT_PARA']=='OUI':
116 IMPR_RESU(RESU=_F(RESULTAT=__nomre0,
122 motscles['FILTRE_MODE'].append(_F(MODE =__nomre0,
123 CRIT_EXTR =FILTRE_MODE['CRIT_EXTR'],
124 SEUIL =FILTRE_MODE['SEUIL'], ))
126 motscles['FILTRE_MODE'].append(_F(MODE =__nomre0,
129 motscles['IMPRESSION']=_F(CUMUL =IMPRESSION['CUMUL'],
130 CRIT_EXTR=IMPRESSION['CRIT_EXTR'],)
131 self.DeclareOut('nomres',self.sd)
132 nomres=EXTR_MODE(**motscles)