]> SALOME platform Git repositories - tools/eficas.git/blob - Aster/Cata/cataSTA10/SD/sd_tran_gene.py
Salome HOME
Modif V6_4_°
[tools/eficas.git] / Aster / Cata / cataSTA10 / SD / sd_tran_gene.py
1 #@ MODIF sd_tran_gene SD  DATE 11/05/2009   AUTEUR NISTOR I.NISTOR 
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     REFD = AsVK24(lonmax=7, )
43     PTEM = AsVR()
44
45     # si CHOC :
46     DLOC = Facultatif(AsVR())
47     ICHO = Facultatif(AsVI())
48     INTI = Facultatif(AsVK8())
49     FCHO = Facultatif(AsVR())
50     NCHO = Facultatif(AsVK8())
51     SST  = Facultatif(AsVK8())
52     VCHO = Facultatif(AsVR())
53     VINT = Facultatif(AsVR())
54
55     # si nbexcit > 0 :
56     FACC = Facultatif(AsVK8())
57     FDEP = Facultatif(AsVK8())
58     FVIT = Facultatif(AsVK8())
59     IPSD = Facultatif(AsVR())
60
61     # si RELA_EFFO_DEPL :
62     REDN = Facultatif(AsVK24(lonmax=1, ))
63     REDC = Facultatif(AsVI())
64     REDD = Facultatif(AsVR())
65
66     # si utilisation de PROJ_MESU_MODAL :
67     PROJM = Facultatif(sd_proj_mesu(SDNom(debut=8)))
68
69
70
71
72     def u_dime(self):
73         desc=self.DESC.get()
74         nbmode=desc[1] ; assert nbmode >  0
75         nbchoc=desc[2] ; assert nbchoc >= 0
76         nbrede=desc[3] ; assert nbmode >= 0
77         nbsauv=self.ORDR.lonmax  ; assert nbsauv > 0
78         if self.FACC.exists :
79             nbexcit=self.FACC.lonmax / 2  ; assert nbexcit >= 0
80         else :
81             nbexcit=0
82         return (nbmode, nbchoc, nbsauv, nbexcit, nbrede)
83
84
85     def check_DESC(self,checker):
86         desc=self.DESC.get()
87         assert desc[0] in (1,2,3) , desc
88
89
90     def check_REFD(self,checker):
91         # AJACOT : j'avais cru comprendre des choses ... mais sdld104a me prouve le contraire !
92         # à revoir ?????
93         return
94         refd=self.REFD.get_stripped()
95         assert refd[0] != '' , refd
96         sd2= sd_matr_asse_gene(refd[0]) ; sd2.check()
97         assert refd[1] != '' , refd
98         sd2= sd_matr_asse_gene(refd[0]) ; sd2.check()
99         if refd[2] != '' :
100             sd2= sd_matr_asse_gene(refd[2]) ; sd2.check()
101         assert refd[3] != '' , refd
102         sd2= sd_nume_ddl_gene(refd[3]) ; sd2.check()
103         assert refd[4] == '' , refd
104         # test de refd[5] trop compliqué : je craque !
105
106
107     def check_ORDR_INST_PTEM(self,checker):
108         nbmode, nbchoc, nbsauv, nbexcit, nbrede = self.u_dime()
109         assert self.ORDR.lonmax == nbsauv
110         assert self.INST.lonmax == nbsauv
111         assert self.PTEM.lonmax in (1, nbsauv)
112         sdu_tous_differents(self.ORDR,checker) # AJACOT_PB : j'aimerais bien "tous_différents"
113         sdu_tous_differents(self.INST,checker) #      mais il y a sdld102a  => fiche à émettre ?
114
115
116     def check_DEPL_VITE_ACCE(self,checker):
117         nbmode, nbchoc, nbsauv, nbexcit, nbrede = self.u_dime()
118         assert self.DEPL.lonmax == nbsauv*nbmode
119         assert self.VITE.lonmax == nbsauv*nbmode
120         assert self.ACCE.lonmax == nbsauv*nbmode
121
122
123     def check_CHOC(self,checker):
124         nbmode, nbchoc, nbsauv, nbexcit, nbrede = self.u_dime()
125         if nbchoc == 0 : return
126         assert self.DLOC.lonmax == 6*nbsauv*nbchoc
127         assert self.VCHO.lonmax == 3*nbsauv*nbchoc
128         assert self.FCHO.lonmax == 3*nbsauv*nbchoc
129         assert self.INTI.lonmax == nbchoc
130         assert self.ICHO.lonmax == nbsauv*nbchoc
131         assert self.NCHO.lonmax == 2*nbchoc
132         assert self.VINT.lonmax == nbsauv*nbchoc
133         assert self.SST.lonmax  == 2*nbchoc
134
135
136     def check_EXCIT(self,checker):
137         nbmode, nbchoc, nbsauv, nbexcit, nbrede = self.u_dime()
138         if nbexcit == 0 : return
139         assert self.FACC.lonmax == 2*nbexcit
140         assert self.FDEP.lonmax == 2*nbexcit
141         assert self.FVIT.lonmax == 2*nbexcit
142         #assert self.IPSD.lonmax == nbexcit*neq # JP : neq != nbmode. Que vaut neq ??
143
144
145     def check_RELA_DEPL(self,checker):
146         nbmode, nbchoc, nbsauv, nbexcit, nbrede = self.u_dime()
147         if nbrede == 0 : return
148         assert self.REDC.lonmax == nbsauv*nbrede
149         assert self.REDD.lonmax == nbsauv*nbrede
150         assert self.REDN.lonmax == nbrede
151