]> SALOME platform Git repositories - tools/eficas.git/blob - Aster/Cata/cataSTA10/SD/sd_char_cine.py
Salome HOME
Modif V6_4_°
[tools/eficas.git] / Aster / Cata / cataSTA10 / SD / sd_char_cine.py
1 #@ MODIF sd_char_cine SD  DATE 04/05/2009   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_modele import sd_modele
23 from SD.sd_fonction import sd_fonction
24
25
26 class sd_char_cine(AsBase):
27 #===========================
28     nomj = SDNom(fin=19)
29
30     AFCK = AsVK8(lonmax=3)
31     AFCI = AsVI()
32     AFCV = Facultatif(OJBVect(type=Parmi('C','R','K')))
33
34
35
36     def exists(self):
37         # retourne "vrai" si la SD semble exister (et donc qu'elle peut etre vérifiée)
38         return self.AFCK.exists
39
40
41     def u_veri1(self):   # retourne (CIME/CITH/CIAC, RE/CX/FT)
42     #---------------------------------------------------------------
43         if not self.exists() : return
44         afck=self.AFCK.get()
45         l1=afck[0].strip().split('_') ; assert len(l1)==2 , afck
46         phen, tsca= l1[0], l1[1]
47         assert phen in ('CIME', 'CITH', 'CIAC'), afck
48         assert tsca in ('RE', 'CX', 'FT'), tsca
49         return phen, tsca
50
51
52     def check_AFCK(self,checker):
53     #---------------------------------------------
54         if not self.exists() : return
55         phen, tsca = self.u_veri1()
56         afck=self.AFCK.get()
57         nomo=afck[1].strip()
58         sd2=sd_modele(nomo); sd2.check(checker)
59         if afck[2].strip() != '' : assert (phen=='CIME' or phen=='CITH') and tsca=='FT', afck
60
61
62     def check_AFCI(self,checker):
63     #---------------------------------------------
64         if not self.exists() : return
65         phen, tsca = self.u_veri1()
66         afci=self.AFCI.get()
67         nbloc=afci[0]
68         assert len(afci)>=3*nbloc+1 , afci
69         for k in range(nbloc) :
70             nuno =afci[3*k +1]
71             nucmp=afci[3*k +2]
72             assert afci[3*k +3] == 0 , (k,afci)
73             assert nuno > 0 , (k,afci)
74             assert nucmp> 0 , (k,afci)
75
76
77     def check_AFCV(self,checker):
78     #-------------------------------------------------
79         if not self.exists() : return
80         phen, tsca = self.u_veri1()
81         afci=self.AFCI.get()
82         nbloc=afci[0]
83         if not self.AFCV.exists :
84             assert tsca=='FT',tsca
85             afck=self.AFCK.get()
86             assert afck[2].strip() != '' , afck
87         else :
88             tsca2 = self.AFCV.type.strip()
89             assert self.AFCV.lonmax >= nbloc , (nbloc,self.AFCV.lonmax)
90
91             if tsca == 'RE' :
92                 assert tsca2=='R', tsca2  # champ de réels
93             if tsca == 'FT' :
94                 assert tsca2=='K', tsca2  # champ de fonctions
95             if tsca == 'CX' :
96                 assert tsca2=='C', tsca2  # champ de complexes
97
98             # vérification des fonctions :
99             if tsca == 'FT'  :
100                 afcv  = self.AFCV.get()
101                 for fonc in afcv[:nbloc] :
102                     sd2=sd_fonction(fonc); sd2.check(checker)
103