1 #@ MODIF sd_tran_gene 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 # ======================================================================
22 from SD.sd_titre import sd_titre
23 from SD.sd_nume_ddl_gene import sd_nume_ddl_gene
24 from SD.sd_matr_asse_gene import sd_matr_asse_gene
25 from SD.sd_proj_mesu import sd_proj_mesu
26 from SD.sd_util import *
29 class sd_tran_gene(sd_titre) :
30 #--------------------------------------
33 # objets commencant en 19 :
34 ACCE = AsVR() # gros objet
35 VITE = AsVR() # gros objet
36 DEPL = AsVR() # gros objet
38 INST = AsVR() # gros objet
39 ORDR = AsVI() # gros objet
40 DESC = AsVI(lonmax=5, )
41 REFD = AsVK24(lonmax=6, )
45 DLOC = Facultatif(AsVR())
46 ICHO = Facultatif(AsVI())
47 INTI = Facultatif(AsVK8())
48 FCHO = Facultatif(AsVR())
49 NCHO = Facultatif(AsVK8())
50 SST = Facultatif(AsVK8())
51 VCHO = Facultatif(AsVR())
52 VINT = Facultatif(AsVR())
55 FACC = Facultatif(AsVK8())
56 FDEP = Facultatif(AsVK8())
57 FVIT = Facultatif(AsVK8())
58 IPSD = Facultatif(AsVR())
61 REDN = Facultatif(AsVK24(lonmax=1, ))
62 REDC = Facultatif(AsVI())
63 REDD = Facultatif(AsVR())
65 # si utilisation de PROJ_MESU_MODAL :
66 PROJM = Facultatif(sd_proj_mesu(SDNom(debut=8)))
73 nbmode=desc[1] ; assert nbmode > 0
74 nbchoc=desc[2] ; assert nbchoc >= 0
75 nbrede=desc[3] ; assert nbmode >= 0
76 nbsauv=self.ORDR.lonmax ; assert nbsauv > 0
78 nbexcit=self.FACC.lonmax / 2 ; assert nbexcit >= 0
81 return (nbmode, nbchoc, nbsauv, nbexcit, nbrede)
84 def check_DESC(self,checker):
86 assert desc[0] in (1,2,3) , desc
89 def check_REFD(self,checker):
90 # AJACOT : j'avais cru comprendre des choses ... mais sdld104a me prouve le contraire !
93 refd=self.REFD.get_stripped()
94 assert refd[0] != '' , refd
95 sd2= sd_matr_asse_gene(refd[0]) ; sd2.check()
96 assert refd[1] != '' , refd
97 sd2= sd_matr_asse_gene(refd[0]) ; sd2.check()
99 sd2= sd_matr_asse_gene(refd[2]) ; sd2.check()
100 assert refd[3] != '' , refd
101 sd2= sd_nume_ddl_gene(refd[3]) ; sd2.check()
102 assert refd[4] == '' , refd
103 # test de refd[5] trop compliqué : je craque !
106 def check_ORDR_INST_PTEM(self,checker):
107 nbmode, nbchoc, nbsauv, nbexcit, nbrede = self.u_dime()
108 assert self.ORDR.lonmax == nbsauv
109 assert self.INST.lonmax == nbsauv
110 assert self.PTEM.lonmax in (1, nbsauv)
111 # sdu_tous_differents(self.ORDR,checker) # AJACOT_PB : j'aimerais bien "tous_différents"
112 # sdu_tous_differents(self.INST,checker) # mais il y a sdld102a => fiche à émettre ?
115 def check_DEPL_VITE_ACCE(self,checker):
116 nbmode, nbchoc, nbsauv, nbexcit, nbrede = self.u_dime()
117 assert self.DEPL.lonmax == nbsauv*nbmode
118 assert self.VITE.lonmax == nbsauv*nbmode
119 assert self.ACCE.lonmax == nbsauv*nbmode
122 def check_CHOC(self,checker):
123 nbmode, nbchoc, nbsauv, nbexcit, nbrede = self.u_dime()
124 if nbchoc == 0 : return
125 assert self.DLOC.lonmax == 6*nbsauv*nbchoc
126 assert self.VCHO.lonmax == 3*nbsauv*nbchoc
127 assert self.FCHO.lonmax == 3*nbsauv*nbchoc
128 assert self.INTI.lonmax == nbchoc
129 assert self.ICHO.lonmax == nbsauv*nbchoc
130 assert self.NCHO.lonmax == 2*nbchoc
131 assert self.VINT.lonmax == nbsauv*nbchoc
132 assert self.SST.lonmax == 2*nbchoc
135 def check_EXCIT(self,checker):
136 nbmode, nbchoc, nbsauv, nbexcit, nbrede = self.u_dime()
137 if nbexcit == 0 : return
138 assert self.FACC.lonmax == 2*nbexcit
139 assert self.FDEP.lonmax == 2*nbexcit
140 assert self.FVIT.lonmax == 2*nbexcit
141 #assert self.IPSD.lonmax == nbexcit*neq # JP : neq != nbmode. Que vaut neq ??
144 def check_RELA_DEPL(self,checker):
145 nbmode, nbchoc, nbsauv, nbexcit, nbrede = self.u_dime()
146 if nbrede == 0 : return
147 assert self.REDC.lonmax == nbsauv*nbrede
148 assert self.REDD.lonmax == nbsauv*nbrede
149 assert self.REDN.lonmax == nbrede