Salome HOME
CCAR: merge de la version 1.14 dans la branche principale
[tools/eficas.git] / Aster / Cata / cataSTA9 / SD / sd_interf_dyna_clas.py
1 #@ MODIF sd_interf_dyna_clas SD  DATE 19/06/2007   AUTEUR PELLET J.PELLET 
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_maillage import sd_maillage
23 from SD.sd_nume_ddl import sd_nume_ddl
24 from SD.sd_util import *
25
26
27 class sd_interf_dyna_clas(AsBase):
28 #---------------------------------------
29     nomj = SDNom(fin=8)
30     IDC_NOMS    = AsObject(genr='N', xous='S', type='K', ltyp=8, )
31     IDC_DDAC    = AsColl(acces='NU', stockage='DISPERSE', modelong='VARIABLE', type='I', )
32     IDC_DY_FREQ = AsVR(lonmax=1, )
33     IDC_LINO    = AsColl(acces='NU', stockage='DISPERSE', modelong='VARIABLE', type='I', )
34     IDC_TYPE    = AsVK8()
35     IDC_DESC    = AsVI(lonmax=5, )
36     IDC_DEFO    = AsVI()
37     IDC_REFE    = AsVK24(lonmax=3, )
38
39
40     def check_coherence_longueurs(self,checker):
41         noms=self.IDC_NOMS.get()
42         type=self.IDC_TYPE.get()
43         lino=self.IDC_LINO.get()
44         ddac=self.IDC_DDAC.get()
45         nb_intf=len(noms)
46         assert nb_intf > 0 , noms
47         assert len(type) == nb_intf, (nb_intf,type)
48         assert len(lino.keys()) == nb_intf, (nb_intf,lino)
49         assert len(ddac.keys()) == nb_intf, (nb_intf,ddac)
50
51
52     def check_REFE(self,checker):
53         refe=self.IDC_REFE.get()
54         sd2=sd_maillage(refe[0]) ; sd2.check(checker)
55         sd2=sd_nume_ddl(refe[1]) ; sd2.check(checker)
56         assert refe[2].strip() == '' , refe
57
58
59     def check_DESC(self,checker):
60         desc=self.IDC_DESC.get()
61         assert desc[0] == 1 , desc
62         assert desc[1] >2 and desc[1] <10 , desc
63         assert desc[2] >60 and desc[2] <300 , desc
64         assert desc[3] >0 and desc[3] <500 , desc
65         assert desc[4] >0  , desc
66         nomgd=sdu_nom_gd(desc[3]).strip()
67         assert nomgd == 'DEPL_R', (nomgd, desc)
68
69
70     def check_NOMS(self,checker):
71         # il n'y a rien à vérifier : un pointeur de noms contient
72         # toujours des noms "non blancs" et "tous différents"
73         pass
74
75
76     def check_TYPE(self,checker):
77         type=self.IDC_TYPE.get()
78         for t1 in type :
79             assert t1.strip() in ('CRAIGB', 'MNEAL', 'CB_HARMO', 'AUCUN'), type
80
81
82     def check_LINO_DDAC(self,checker):
83         lino=self.IDC_LINO.get()
84         ddac=self.IDC_DDAC.get()
85         desc=self.IDC_DESC.get()
86         nbec=desc[1]
87         nb_intf=len(lino.keys())
88
89         for kintf in range(nb_intf) :
90             llino=lino.values()[kintf]
91             lddac=ddac.values()[kintf]
92             nbno=len(llino)
93             assert len(lddac)==nbno*nbec , (lino,ddac)
94             for nuno in llino :
95                 assert nuno > 0 , lino
96
97
98     def check_FREQ(self,checker):
99         freq=self.IDC_DY_FREQ.get()
100         assert freq[0] >=0 , freq
101
102
103     def check_DEFO(self,checker):
104         defo=self.IDC_DEFO.get()
105         desc=self.IDC_DESC.get()
106         nbec=desc[1]
107         nbnot=len(defo)/(nbec+2)
108         assert len(defo)==nbnot*(nbec+2), defo
109         for k in range(nbnot) :
110             assert defo[k] > 0 , defo
111
112         assert sdu_monotone(defo[nbnot:2*nbnot]) in (1,0) , (nbnot,nbec,defo)
113