1 #@ MODIF macro_matr_asse_ops Macro DATE 06/02/2008 AUTEUR MACOCCO K.MACOCCO
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_matr_asse_ops(self,MODELE,CHAM_MATER,CARA_ELEM,MATR_ASSE,
24 SOLVEUR,NUME_DDL,CHARGE,CHAR_CINE,INST,INFO,**args):
26 Ecriture de la macro MACRO_MATR_ASSE
29 from Utilitai.Utmess import UTMESS
31 # On met le mot cle NUME_DDL dans une variable locale pour le proteger
34 # On importe les definitions des commandes a utiliser dans la macro
35 # Le nom de la variable doit etre obligatoirement le nom de la commande
36 CALC_MATR_ELEM=self.get_cmd('CALC_MATR_ELEM')
37 NUME_DDL =self.get_cmd('NUME_DDL')
38 ASSE_MATRICE =self.get_cmd('ASSE_MATRICE')
39 # La macro compte pour 1 dans la numerotation des commandes
42 # Les mots cles simples sous SOLVEUR sont par defaut MULT_FRONT/METIS
43 methode=SOLVEUR['METHODE']
44 renum=SOLVEUR['RENUM']
46 if numeddl in self.sdprods:
47 # Si le concept numeddl est dans self.sdprods
48 # il doit etre produit par la macro
49 # il faudra donc appeler la commande NUME_DDL
56 # decalage eventuel en premiere position dans la liste de l occurence de MATR_ASSE contenant
57 # l option de rigidite
61 if option in ('RIGI_MECA','RIGI_MECA_LAGR','RIGI_THER','RIGI_ACOU') :
63 MATR_ASSE.remove(decal)
64 MATR_ASSE.insert(0,decal)
72 if iocc == 1 and lnume == 1 and option not in ('RIGI_MECA','RIGI_MECA_LAGR',
73 'RIGI_THER','RIGI_ACOU') :
74 UTMESS('F', "MACRO_MATR_ASSE", "UNE DES OPTIONS DOIT ETRE RIGI_MECA OU RIGI_THER OU RIGI_ACOU OU RIGI_MECA_LAGR")
77 motscles={'OPTION':option}
78 if option == 'RIGI_MECA_HYST':
80 UTMESS('F', "MACRO_MATR_ASSE", "POUR CALCULER RIGI_MECA_HYST, IL FAUT AVOIR CALCULE RIGI_MECA AUPARAVANT (DANS LE MEME APPEL)")
81 motscles['RIGI_MECA'] =rigel
82 if option == 'AMOR_MECA':
83 if (not lrigel or not lmasel):
84 UTMESS('F', "MACRO_MATR_ASSE", "POUR CALCULER AMOR_MECA, IL FAUT AVOIR CALCULE RIGI_MECA ET MASS_MECA AUPARAVANT (DANS LE MEME APPEL)")
85 if CHAM_MATER != None:
86 motscles['RIGI_MECA'] =rigel
87 motscles['MASS_MECA'] =masel
89 if option[0:9] not in ('MASS_THER','RIGI_GEOM','MASS_ID_M'):
90 motscles['CHARGE'] =CHARGE
91 if CHAM_MATER != None: motscles['CHAM_MATER'] =CHAM_MATER
92 if CARA_ELEM != None: motscles['CARA_ELEM'] =CARA_ELEM
93 if INST != None: motscles['INST'] =INST
95 try : motscles['SIEF_ELGA'] =m['SIEF_ELGA']
96 except IndexError : pass
98 try : motscles['MODE_FOURIER'] =m['MODE_FOURIER']
99 except IndexError : pass
101 try : motscles['THETA'] =m['THETA']
102 except IndexError : pass
104 try : motscles['PROPAGATION'] =m['PROPAGATION']
105 except IndexError : pass
106 _a=CALC_MATR_ELEM(MODELE=MODELE,**motscles)
108 if option == 'RIGI_MECA':
111 if option == 'MASS_MECA':
115 if lnume and option in ('RIGI_MECA','RIGI_THER','RIGI_ACOU','RIGI_MECA_LAGR'):
116 self.DeclareOut('num',numeddl)
117 # On peut passer des mots cles egaux a None. Ils sont ignores
118 num=NUME_DDL(MATR_RIGI=_a,METHODE=methode,RENUM=renum,INFO=info)
122 self.DeclareOut('mm',m['MATRICE'])
123 motscles={'OPTION':option}
124 if CHAR_CINE != None:
125 mm=ASSE_MATRICE(MATR_ELEM=_a,NUME_DDL=num,CHAR_CINE=CHAR_CINE)
127 mm=ASSE_MATRICE(MATR_ELEM=_a,NUME_DDL=num)