1 #@ MODIF sd_fonction SD DATE 19/02/2008 AUTEUR MACOCCO K.MACOCCO
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_util import *
26 #----------------------------------------------------------------
27 # définition de 3 classes :
28 # sd_formule (objets python + jeveux)
29 # sd_fonction_aster (objets jeveux)
30 # sd_fonction (chapeau des 2 classes précédentes)
31 #----------------------------------------------------------------
35 class sd_formule(AsBase):
36 #--------------------------------------
38 PROL = AsVK24(lonmax=6, )
42 class sd_fonction_aster(sd_titre):
43 #--------------------------------------
46 VALE = AsObject(acces='NU', sd_stockage='CONTIG', modelong='VARIABLE', type='R', xous=Parmi('S', 'X'), genr='V', ltyp=8, )
47 PARA = Facultatif(AsVR())
49 # existence possible de la SD :
51 return self.PROL.exists
54 def check_PROL(self,checker) :
55 #-------------------------------
56 if not self.exists() : return
60 typfon= prol[0].strip()
61 assert typfon in ('CONSTANT', 'FONCTION', 'FONCT_C', 'NAPPE', 'INTERPRE') ,prol
62 #ltabul = True : la fonction est tabulée (et non interpretée)
63 ltabul = typfon != 'INTERPRE'
65 if typfon == 'NAPPE' :
66 assert len(prol) > 7 , (prol,self)
68 # tester que le prol[5] est bien le nom de la fonction
69 assert len(prol) == 6 , (prol,self)
71 if ltabul : # type d'interpolation
72 interp= prol[1].strip()
73 assert interp[:3] in ('NON', 'LIN', 'LOG') , prol
74 assert interp[4:] in ('NON', 'LIN', 'LOG') , prol
76 if ltabul : # nom d'un paramètre
78 assert para != '', prol
80 assert prol[3].strip() != '' , prol # type du résultat
82 if ltabul : # prolongement à droite et à gauche
83 prolgd=prol[4].strip()
84 assert len(prolgd)==2, prol
85 assert prolgd[0] in ('E', 'C', 'L', 'I'), prol
86 assert prolgd[1] in ('E', 'C', 'L', 'I'), prol
88 if typfon == 'NAPPE' :
90 assert len(prol)==7+2*nf, prol
91 # 1er paramètre de la nappe
92 assert prol[6].strip() != '' , prol
95 interp= prol[6+2*kf+1].strip()
96 prolgd= prol[6+2*kf+2].strip()
97 assert interp[:3] in ('NON', 'LIN', 'LOG') , prol
98 assert interp[4:] in ('NON', 'LIN', 'LOG') , prol
99 assert prolgd[0] in ('E', 'C', 'L', 'I'), prol
100 assert prolgd[1] in ('E', 'C', 'L', 'I'), prol
103 def check_VALE(self,checker) :
104 #-------------------------------
105 if not self.exists() : return
109 typfon= prol[0].strip()
111 if typfon=='CONSTANT' :
112 assert len(vale)==2, (vale,self)
114 elif typfon=='FONCTION' :
116 assert len(vale)==2*nbpt, (vale,self)
118 assert sdu_monotone(vale[:nbpt]) in (1,),(nbpt,vale,self)
120 elif typfon=='FONCT_C' :
122 assert len(vale)==3*nbpt, (vale,self)
124 # print "AJACOT fonction=",self
125 assert sdu_monotone(vale[:nbpt]) in (1,),(nbpt,vale,self)
127 elif typfon=='NAPPE' :
128 nbfonc=len(vale.keys())
129 for k in range(nbfonc):
132 assert len(val1)==2*nbpt, (val1,self)
134 assert sdu_monotone(val1[:nbpt]) in (1,),(nbpt,val1,self)
137 def check_NAPPE(self,checker) :
138 #-------------------------------
139 if not self.exists() : return
142 typfon= prol[0].strip()
143 if typfon != 'NAPPE' : return
147 assert sdu_monotone(para) in (1,),(para,self)
149 assert len(para)==len(vale.keys()),self
152 class sd_fonction(sd_titre):
153 #---------------------------
156 NOVA = Facultatif(AsVK8())
157 VALE = Facultatif(AsObject())
158 PARA = Facultatif(AsVR())
160 def check_1(self,checker) :
162 if self.NOVA.exists :
163 sd2=sd_formule(nom) ; sd2.check()
165 sd2=sd_fonction_aster(nom) ; sd2.check()