1 #@ MODIF sd_macr_elem_stat SD DATE 27/11/2007 AUTEUR ANDRIAM H.ANDRIAMBOLOLONA
2 # -*- coding: iso-8859-1 -*-
3 # CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2007 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 from SD.sd_matr_asse_gd import sd_matr_asse_gd
24 from SD.sd_stoc_lciel import sd_stoc_lciel
25 from SD.sd_proj_mesu import sd_proj_mesu
28 class sd_macr_elem_stat(AsBase):
29 #----------------------------------------------
32 # description géométrique et topolique :
33 DESM = AsVI(lonmax=10)
37 CONX = Facultatif(AsVI()) # l'objet devient obligatoire dès l'étape de condensation de la rigidité
39 # rigidité condensée :
40 rigimeca = Facultatif(sd_matr_asse_gd(SDNom(nomj='.RIGIMECA', fin=19)))
41 MAEL_RAID_VALE = Facultatif(AsVR())
42 PHI_IE = Facultatif(AsColl(acces='NU', stockage='DISPERSE', modelong='CONSTANT', type='R', ltyp=8))
45 massmeca = Facultatif(sd_matr_asse_gd(SDNom(nomj='.MASSMECA', fin=19)))
46 MAEL_MASS_VALE = Facultatif(AsVR())
48 # amortissement condensé :
49 MAEL_AMOR_VALE = Facultatif(AsVR())
51 # chargements condensés :
52 LICA = Facultatif(AsColl(acces='NO', stockage='DISPERSE', modelong='CONSTANT', type='R', ltyp=8))
53 LICH = Facultatif(AsColl(acces='NO', stockage='CONTIG', modelong='CONSTANT', type='K', ltyp=8))
55 # si utilisation de PROJ_MESU_MODAL :
56 PROJM = Facultatif(sd_proj_mesu())
59 def check_longueurs(self, checker):
60 #------------------------------------
61 # vérifs existence, longueurs, ...
65 assert desm[0]==0, desm
66 nbnoe, nbnoi, nddle, nddli, nbchar, nbcas, nlage, nlagl, nlagi =desm[1:10]
67 assert nbnoe > 0 ,desm
68 assert nbchar >= 0 ,desm
70 # si on n'a pas encore condensé la rigidité, certaines valeurs ne sont pas encore calculées :
71 if self.MAEL_RAID_VALE.exists :
72 assert nbnoi > 0 ,desm
73 assert nddle > 1 ,desm
74 assert nddli > 0 ,desm
75 assert nbcas >= 0 ,desm
76 assert nlage >= 0 ,desm
77 assert nlagl >= 0 ,desm
78 assert nlagi >= 0 ,desm
79 assert self.CONX.lonmax == 3*(nbnoe+nlage+nlagl) ,(desm,self.CONX.get())
80 assert refm[5] == 'OUI_RIGI'
82 assert self.REFM.lonmax == 9+nbchar ,(desm,self.REFM.get())
83 assert self.LINO.lonmax == nbnoe ,(desm,self.LINO.get())
85 # rigidité condensée :
86 if self.MAEL_RAID_VALE.exists :
87 assert self.MAEL_RAID_VALE.lonmax == (nddle*(nddle+1))/2
89 assert self.PHI_IE.exists
90 phi_ie=self.PHI_IE.get() # on ne sait pas faire autrement que ramener l'objet entier ...
91 nlblph=len(phi_ie[1])/nddli # nombre de lignes de phi_ie par bloc
92 assert self.PHI_IE.nmaxoc == (nddle-1)/nlblph +1 , (nddle, self.PHI_IE.nmaxoc)
93 for ke in phi_ie.keys() :
94 assert len(phi_ie[ke]) == nddli*nlblph ,(nddli,nlblph,nddle,len(phi_ie[ke]),ke)
97 if self.MAEL_MASS_VALE.exists :
98 assert self.MAEL_MASS_VALE.lonmax == (nddle*(nddle+1))/2
99 assert refm[6] == 'OUI_MASS'
101 # amortissement condensé : (JP : je ne sais pas si ca peut exister ?)
102 if self.MAEL_AMOR_VALE.exists :
103 assert self.MAEL_AMOR_VALE.lonmax == (nddle*(nddle+1))/2
104 assert refm[7] == 'OUI_AMOR'
106 # chargements condensés :
108 assert self.LICA.exists
109 assert self.LICA.nmaxoc >= nbcas
111 for k in lica.keys():
112 assert len(lica[k]) == 2*(nddli + nddle)
114 assert self.LICH.exists
115 assert self.LICH.nmaxoc == self.LICA.nmaxoc
116 assert self.LICH.nutioc == self.LICA.nutioc
118 for k in lich.keys():
119 assert len(lich[k]) >= nbchar + 1