]> SALOME platform Git repositories - tools/eficas.git/blob - Aster/Cata/cataSTA9/SD/sd_macr_elem_stat.py
Salome HOME
CCAR: merge de la version 1.14 dans la branche principale
[tools/eficas.git] / Aster / Cata / cataSTA9 / SD / sd_macr_elem_stat.py
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.
10 #
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.
15 #
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 # ======================================================================
20
21 from SD import *
22
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
26
27
28 class sd_macr_elem_stat(AsBase):
29 #----------------------------------------------
30     nomj = SDNom(fin=8)
31
32     # description géométrique et topolique :
33     DESM = AsVI(lonmax=10)
34     REFM = AsVK8()
35     LINO = AsVI()
36     VARM = AsVR(lonmax=2)
37     CONX = Facultatif(AsVI()) # l'objet devient obligatoire dès l'étape de condensation de la rigidité
38
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))
43
44     # masse condensée :
45     massmeca = Facultatif(sd_matr_asse_gd(SDNom(nomj='.MASSMECA', fin=19)))
46     MAEL_MASS_VALE = Facultatif(AsVR())
47
48     # amortissement condensé :
49     MAEL_AMOR_VALE = Facultatif(AsVR())
50
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))
54
55     # si utilisation de PROJ_MESU_MODAL :
56     PROJM = Facultatif(sd_proj_mesu())
57
58
59     def check_longueurs(self, checker):
60     #------------------------------------
61         # vérifs existence, longueurs, ...
62
63         desm=self.DESM.get()
64         refm=self.REFM.get()
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
69
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'
81
82         assert self.REFM.lonmax == 9+nbchar    ,(desm,self.REFM.get())
83         assert self.LINO.lonmax == nbnoe       ,(desm,self.LINO.get())
84
85         # rigidité condensée :
86         if self.MAEL_RAID_VALE.exists :
87             assert self.MAEL_RAID_VALE.lonmax ==  (nddle*(nddle+1))/2
88
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)
95
96         # masse condensée :
97         if self.MAEL_MASS_VALE.exists :
98             assert self.MAEL_MASS_VALE.lonmax ==  (nddle*(nddle+1))/2
99             assert refm[6] == 'OUI_MASS'
100
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'
105
106         # chargements condensés :
107         if nbcas > 0 :
108             assert self.LICA.exists
109             assert self.LICA.nmaxoc >= nbcas
110             lica=self.LICA.get()
111             for k in lica.keys():
112                 assert len(lica[k]) == 2*(nddli + nddle)
113
114             assert self.LICH.exists
115             assert self.LICH.nmaxoc == self.LICA.nmaxoc
116             assert self.LICH.nutioc == self.LICA.nutioc
117             lich=self.LICH.get()
118             for k in lich.keys():
119                 assert len(lich[k]) >= nbchar + 1
120