]> SALOME platform Git repositories - tools/eficas.git/blob - Aster/Cata/cataSTA9/SD/sd_tran_gene.py
Salome HOME
Modif V6_4_°
[tools/eficas.git] / Aster / Cata / cataSTA9 / SD / sd_tran_gene.py
1 #@ MODIF sd_tran_gene SD  DATE 25/11/2008   AUTEUR BOYERE E.BOYERE 
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 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 *
27
28
29 class sd_tran_gene(sd_titre) :
30 #--------------------------------------
31     nomj = SDNom(fin=19)
32
33     # objets commencant en 19 :
34     ACCE = AsVR()  # gros objet
35     VITE = AsVR()  # gros objet
36     DEPL = AsVR()  # gros objet
37
38     INST = AsVR()  # gros objet
39     ORDR = AsVI()  # gros objet
40     DESC = AsVI(lonmax=5, )
41     REFD = AsVK24(lonmax=6, )
42     PTEM = AsVR()
43
44     # si CHOC :
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())
53
54     # si nbexcit > 0 :
55     FACC = Facultatif(AsVK8())
56     FDEP = Facultatif(AsVK8())
57     FVIT = Facultatif(AsVK8())
58     IPSD = Facultatif(AsVR())
59
60     # si RELA_EFFO_DEPL :
61     REDN = Facultatif(AsVK24(lonmax=1, ))
62     REDC = Facultatif(AsVI())
63     REDD = Facultatif(AsVR())
64
65     # si utilisation de PROJ_MESU_MODAL :
66     PROJM = Facultatif(sd_proj_mesu(SDNom(debut=8)))
67
68
69
70
71     def u_dime(self):
72         desc=self.DESC.get()
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
77         if self.FACC.exists :
78             nbexcit=self.FACC.lonmax / 2  ; assert nbexcit >= 0
79         else :
80             nbexcit=0
81         return (nbmode, nbchoc, nbsauv, nbexcit, nbrede)
82
83
84     def check_DESC(self,checker):
85         desc=self.DESC.get()
86         assert desc[0] in (1,2,3) , desc
87
88
89     def check_REFD(self,checker):
90         # AJACOT : j'avais cru comprendre des choses ... mais sdld104a me prouve le contraire !
91         # à revoir ?????
92         return
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()
98         if refd[2] != '' :
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 !
104
105
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 ?
113
114
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
120
121
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
133
134
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 ??
142
143
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
150