1 #@ MODIF sd_util SD DATE 22/10/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.
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 Utilitaires pour la vérification des SD
25 # pour utilisation dans eficas
35 # 1) Utilitaires pour vérifier certaines propriétés.
36 # Ces utilitaires ne provoquent pas d'arret mais écrivent des messages dans un "checker"
37 # -----------------------------------------------------------------------------------------
40 # 1.1 Utilitaires pour des scalaires :
41 # ------------------------------------
43 def sdu_assert(ojb, checker, bool,comment=''):
44 # Vérifie que le booléen (bool) est vrai
46 checker.err(ojb, "condition non respectée : (%s)" % (comment,))
48 def sdu_compare(ojb, checker, val1, comp, val2, comment=''):
49 # Vérifie que la relation de comparaison entre val1 et val2 est respectée :
50 # comp= '==' / '!=' / '>=' / '>' / '<=' / '<'
66 sdu_assert(ojb, checker, 0, 'sdu_compare: opérateur de comparaison interdit: '+comp)
69 checker.err(ojb, "condition non respectée : %s %s %s (%s)" % (val1,comp,val2,comment))
72 # 1.2 Utilitaires pour des séquences :
73 # ------------------------------------
75 def sdu_tous_differents(ojb,checker,sequence=None,comment=''):
76 # Vérifie que les éléments de la séquence sont tous différents.
77 # Si l'argument sequence est None, on prend l'ensemble de l'ojb.
84 sdu_compare(ojb, checker, len(seq), '==', len(Set(seq)), comment='Tous différents: '+comment)
87 def sdu_tous_non_blancs(ojb,checker,sequence=None,comment=''):
88 # Vérifie que les éléments (chaines) de la séquence sont tous "non blancs".
89 # Si l'argument sequence est None, on prend l'ensemble de l'ojb.
97 assert len(elem.strip()) > 0 , (seq,self, 'tous "non blancs" '+comment)
100 def sdu_tous_compris(ojb,checker,sequence=None,vmin=None,vmax=None,comment=''):
101 # Vérifie que toutes les valeurs de la sequence sont comprises entre vmin et vmax
102 # Les bornes vmin et vmax sont autorisées
103 # Si l'argument sequence est None, on prend l'ensemble de l'ojb.
105 assert (not vmin is None) or (not vmax is None),'Il faut fournir au moins une des valeurs vmin ou vmax'
113 if vmin and v < vmin : ier = 1
114 if vmax and v > vmax : ier = 1
115 if ier == 1 : checker.err( ojb, "L'objet doit contenir des valeurs dans l'intervalle : [%s, %s] " % (vmin,vmax))
119 def sdu_monotone(seqini) :
120 #-------------------------------
121 # vérifie qu'une séquence est triée par ordre croissant (ou décroissant)
123 # 3 : ni croissant ni décroissant (désordre)
129 if isinstance(seqini,tuple) :
134 seq2=copy.deepcopy(seq)
136 seq3=copy.deepcopy(seq)
143 if seq[k] != seq2[k] :
145 if seq[k] != seq3[k] :
148 if croiss==1 and decroiss==1 :
150 elif croiss==1 and decroiss==0 :
152 elif croiss==0 and decroiss==1 :
154 elif croiss==0 and decroiss==0 :
159 # 2) Utilitaires de questionnement :
160 # -----------------------------------------------------------------------------------------
162 def sdu_nom_gd(numgd) :
163 # retourne le nom de la grandeur de numéro (numgd)
164 assert numgd > 0 and numgd <1000 , numgd
165 ptn=aster.getvectjev('&CATA.GD.NOMGD')
166 return ptn[numgd-1].strip()
168 def sdu_licmp_gd(numgd) :
169 # retourne la liste des cmps de la grandeur de numéro (numgd)
170 nomgd=sdu_nom_gd(numgd)
171 nocmp=aster.getcolljev('&CATA.GD.NOMCMP')
172 return nocmp[nomgd.ljust(8)]
176 # 3) Utilitaires pour la vérification de l'existence des objets :
177 # -----------------------------------------------------------------------------------------
179 def sdu_ensemble(lojb) :
180 # vérifie que les objets JEVEUX de lojb existent simultanément :
181 assert len(lojb) > 1 , lojb
184 lexi.append(obj1.exists)
186 assert x==lexi[0] , (lojb,lexi)