From 39a2fd8a9219f41e9a9a4b476c28c9d3c515cac0 Mon Sep 17 00:00:00 2001 From: Pascale Noyret Date: Thu, 6 Dec 2007 10:38:41 +0000 Subject: [PATCH] *** empty log message *** --- Aster/Cata/cataSTA8/Macro/impr_oar_ops.py | 11 +- .../cataSTA8/Macro/macr_ascouf_mail_ops.py | 10 +- Aster/Cata/cataSTA8/Macro/macr_spectre_ops.py | 15 +- Aster/Cata/cataSTA8/cata.py | 18 +- Aster/Cata/cataSTA8/ops.py | 3 +- Aster/Cata/cataSTA9/Macro/Sensibilite.py | 13 +- Aster/Cata/cataSTA9/Macro/impr_oar_ops.py | 9 +- .../cataSTA9/Macro/macr_ascouf_mail_ops.py | 10 +- Aster/Cata/cataSTA9/Macro/macr_recal_ops.py | 2 +- Aster/Cata/cataSTA9/Macro/macr_spectre_ops.py | 10 +- Aster/Cata/cataSTA9/Macro/test_fichier_ops.py | 422 ++++++++++-------- Aster/Cata/cataSTA9/SD/sd_cham_gene.py | 44 +- Aster/Cata/cataSTA9/SD/sd_cham_no.py | 7 +- Aster/Cata/cataSTA9/SD/sd_compor.py | 6 +- Aster/Cata/cataSTA9/SD/sd_macr_elem_stat.py | 6 +- Aster/Cata/cataSTA9/SD/sd_resultat_dyn.py | 32 +- Aster/Cata/cataSTA9/SD/sd_tran_gene.py | 20 +- Aster/Cata/cataSTA9/cata.py | 96 ++-- Aster/Cata/cataSTA9/ops.py | 4 +- Noyau/N_CONVERT.py | 84 ++-- Noyau/N_MCSIMP.py | 9 +- 21 files changed, 445 insertions(+), 386 deletions(-) diff --git a/Aster/Cata/cataSTA8/Macro/impr_oar_ops.py b/Aster/Cata/cataSTA8/Macro/impr_oar_ops.py index 44cebecc..f942f6c1 100644 --- a/Aster/Cata/cataSTA8/Macro/impr_oar_ops.py +++ b/Aster/Cata/cataSTA8/Macro/impr_oar_ops.py @@ -1,4 +1,4 @@ -#@ MODIF impr_oar_ops Macro DATE 07/11/2006 AUTEUR DURAND C.DURAND +#@ MODIF impr_oar_ops Macro DATE 21/11/2007 AUTEUR MACOCCO K.MACOCCO # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -18,14 +18,15 @@ # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== -import aster -try : +# protection pour eficas +try: + import aster from Utilitai.Utmess import UTMESS from Utilitai.Table import Table from Utilitai.partition import MAIL_PY -except : +except: pass - + def buildTabString(tabLevel): """ Construit une chaine de tabulation diff --git a/Aster/Cata/cataSTA8/Macro/macr_ascouf_mail_ops.py b/Aster/Cata/cataSTA8/Macro/macr_ascouf_mail_ops.py index 12369cd5..4a5993f9 100644 --- a/Aster/Cata/cataSTA8/Macro/macr_ascouf_mail_ops.py +++ b/Aster/Cata/cataSTA8/Macro/macr_ascouf_mail_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macr_ascouf_mail_ops Macro DATE 29/08/2006 AUTEUR MCOURTOI M.COURTOIS +#@ MODIF macr_ascouf_mail_ops Macro DATE 21/11/2007 AUTEUR MACOCCO K.MACOCCO # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -21,11 +21,13 @@ import os.path from math import sqrt,cos,sin,pi,tan,log,fabs,ceil,fmod,floor -import aster import string -try : + +# protection pour eficas +try: + import aster from Utilitai.Utmess import UTMESS -except : +except: pass # ------------------------------------------------------------------------------ diff --git a/Aster/Cata/cataSTA8/Macro/macr_spectre_ops.py b/Aster/Cata/cataSTA8/Macro/macr_spectre_ops.py index 7f05c8bc..19d0a455 100644 --- a/Aster/Cata/cataSTA8/Macro/macr_spectre_ops.py +++ b/Aster/Cata/cataSTA8/Macro/macr_spectre_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macr_spectre_ops Macro DATE 14/11/2006 AUTEUR COURTOIS M.COURTOIS +#@ MODIF macr_spectre_ops Macro DATE 21/11/2007 AUTEUR MACOCCO K.MACOCCO # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -19,12 +19,15 @@ # ====================================================================== from Accas import _F -import aster import string -try : - from Utilitai.Utmess import UTMESS -except : - pass + +# protection pour eficas +try: + import aster + from Utilitai.Utmess import UTMESS +except: + pass + def macr_spectre_ops(self,MAILLAGE,PLANCHER,NOM_CHAM,CALCUL,RESU,IMPRESSION=None, FREQ=None,LIST_FREQ=None,LIST_INST=None,AMOR_SPEC=None,**args): """ diff --git a/Aster/Cata/cataSTA8/cata.py b/Aster/Cata/cataSTA8/cata.py index 7faa61de..9649ad16 100755 --- a/Aster/Cata/cataSTA8/cata.py +++ b/Aster/Cata/cataSTA8/cata.py @@ -1,4 +1,4 @@ -#& MODIF ENTETE DATE 10/10/2006 AUTEUR MCOURTOI M.COURTOIS +#& MODIF ENTETE DATE 31/07/2007 AUTEUR SALMONA L.SALMONA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -34,7 +34,7 @@ except: pass __version__="$Name: $" -__Id__="$Id: cata.py,v 1.3.8.6 2007-06-14 16:18:24 pnoyret Exp $" +__Id__="$Id: cata_aster_v6.py,v 1.12 2001/01/16 15:55:05 iliade Exp $" EnumTypes = (ListType, TupleType) @@ -667,9 +667,10 @@ class fonction_c(fonction_class): if self.par_lot() : raise Accas.AsException("Erreur dans fonction_c.Trace en PAR_LOT='OUI'") from Utilitai.Graph import Graph + para = self.Parametres() gr=Graph() gr.AjoutCourbe(Val=self.Valeurs(), - Lab=[self.Parametres()['NOM_PARA'],self.Parametres()['NOM_RESU'],'IMAG']) + Lab=[para['NOM_PARA'], '%s_R' % para['NOM_RESU'], '%s_I' % para['NOM_RESU']]) gr.Trace(FORMAT=FORMAT,**kargs) def __call__(self,val): ### Pour EFICAS : substitution de l'instance de classe @@ -6136,7 +6137,7 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 16/10/2006 AUTEUR JMBHH01 J.M.PROIX +#& MODIF COMMANDE DATE 31/07/2007 AUTEUR SALMONA L.SALMONA # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -6191,9 +6192,11 @@ CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant b_fatigue_multi =BLOC(condition = "TYPE_CALCUL == 'FATIGUE_MULTI'", fr="Plan critique dans le cas de la fatigue multiaxiale à grand nombre de cycles.", + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), TYPE_CHARGE =SIMP(statut='o',typ='TXM',into=("PERIODIQUE","NON_PERIODIQUE") ), OPTION =SIMP(statut='o',typ='TXM',into=("DOMA_ELGA","DOMA_NOEUD") ), RESULTAT =SIMP(statut='o',typ=(evol_elas, evol_noli) ), + MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ), CHAM_MATER =SIMP(statut='o',typ=(cham_mater) ), GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**' ), MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**' ), @@ -6215,9 +6218,6 @@ CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant DELTA_OSCI =SIMP(statut='f',typ='R',defaut= 0.0E+0), ), ), - b_fati_grmano =BLOC(condition = "(GROUP_MA != None or MAILLE != None or GROUP_NO != None or NOEUD != None)", - MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ), - ), ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), @@ -21466,7 +21466,7 @@ POST_MAIL_XFEM=OPER(nom="POST_MAIL_XFEM",op= 187,sd_prod=maillage_sdaster, MODELE = SIMP(statut='o',typ=modele_sdaster), TITRE = SIMP(statut='f',typ='TXM',max='**'), ); -#& MODIF COMMANDE DATE 03/10/2006 AUTEUR CIBHHLV L.VIVAN +#& MODIF COMMANDE DATE 28/11/2007 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -21707,7 +21707,7 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster, NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ), COMBINABLE =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ), NUME_GROUPE =SIMP(statut='o',typ='I',fr="numéro du groupe de la situation" ), - NUME_PASSAGE =SIMP(statut='f',typ='I',max=2,fr="numéro des deux groupes en relation" ), +# NUME_PASSAGE =SIMP(statut='f',typ='I',max=2,fr="numéro des deux groupes en relation" ), NUME_RESU_THER =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ), CHAR_ETAT_A =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ), CHAR_ETAT_B =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ), diff --git a/Aster/Cata/cataSTA8/ops.py b/Aster/Cata/cataSTA8/ops.py index 6e08bd2a..810894c0 100644 --- a/Aster/Cata/cataSTA8/ops.py +++ b/Aster/Cata/cataSTA8/ops.py @@ -1,4 +1,4 @@ -#@ MODIF ops Cata DATE 31/07/2007 AUTEUR SALMONA L.SALMONA +#@ MODIF ops Cata DATE 21/11/2007 AUTEUR MACOCCO K.MACOCCO # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -28,6 +28,7 @@ import pickle import Accas from Accas import ASSD + try: import aster # Si le module aster est présent, on le connecte diff --git a/Aster/Cata/cataSTA9/Macro/Sensibilite.py b/Aster/Cata/cataSTA9/Macro/Sensibilite.py index 1e7194e1..abd3f873 100644 --- a/Aster/Cata/cataSTA9/Macro/Sensibilite.py +++ b/Aster/Cata/cataSTA9/Macro/Sensibilite.py @@ -1,4 +1,4 @@ -#@ MODIF Sensibilite Macro DATE 16/10/2007 AUTEUR REZETTE C.REZETTE +#@ MODIF Sensibilite Macro DATE 19/11/2007 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -24,11 +24,12 @@ Module traite de la gestion des concepts sensibles : - corps de la macro MEMO_NOM_SENSI """ -import aster -try : - from Utilitai.Utmess import UTMESS -except : - pass +# protection pour eficas +try: + import aster + from Utilitai.Utmess import UTMESS +except: + pass _VIDE_ = '????????' diff --git a/Aster/Cata/cataSTA9/Macro/impr_oar_ops.py b/Aster/Cata/cataSTA9/Macro/impr_oar_ops.py index 415f20b8..0a45e207 100644 --- a/Aster/Cata/cataSTA9/Macro/impr_oar_ops.py +++ b/Aster/Cata/cataSTA9/Macro/impr_oar_ops.py @@ -1,4 +1,4 @@ -#@ MODIF impr_oar_ops Macro DATE 16/10/2007 AUTEUR REZETTE C.REZETTE +#@ MODIF impr_oar_ops Macro DATE 19/11/2007 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -18,12 +18,13 @@ # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== -import aster -try : +# protection pour eficas +try: + import aster from Utilitai.Utmess import UTMESS from Utilitai.Table import Table from Utilitai.partition import MAIL_PY -except : +except: pass def buildTabString(tabLevel): diff --git a/Aster/Cata/cataSTA9/Macro/macr_ascouf_mail_ops.py b/Aster/Cata/cataSTA9/Macro/macr_ascouf_mail_ops.py index 5e3e1e89..9305fd0e 100644 --- a/Aster/Cata/cataSTA9/Macro/macr_ascouf_mail_ops.py +++ b/Aster/Cata/cataSTA9/Macro/macr_ascouf_mail_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macr_ascouf_mail_ops Macro DATE 16/10/2007 AUTEUR REZETTE C.REZETTE +#@ MODIF macr_ascouf_mail_ops Macro DATE 19/11/2007 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -21,14 +21,14 @@ import os.path from math import sqrt,cos,sin,pi,tan,log,fabs,ceil,fmod,floor -import aster import string -try : + +try: + import aster from Utilitai.Utmess import UTMESS -except : +except: pass - # ------------------------------------------------------------------------------ def ASCFON(RC,RM,EP,ORIEN,AZIM,AXEC,POS,Y): """ diff --git a/Aster/Cata/cataSTA9/Macro/macr_recal_ops.py b/Aster/Cata/cataSTA9/Macro/macr_recal_ops.py index eb1cfa28..e0fafb60 100644 --- a/Aster/Cata/cataSTA9/Macro/macr_recal_ops.py +++ b/Aster/Cata/cataSTA9/Macro/macr_recal_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macr_recal_ops Macro DATE 16/10/2007 AUTEUR REZETTE C.REZETTE +#@ MODIF macr_recal_ops Macro DATE 19/11/2007 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== diff --git a/Aster/Cata/cataSTA9/Macro/macr_spectre_ops.py b/Aster/Cata/cataSTA9/Macro/macr_spectre_ops.py index ea44846a..44fb67d6 100644 --- a/Aster/Cata/cataSTA9/Macro/macr_spectre_ops.py +++ b/Aster/Cata/cataSTA9/Macro/macr_spectre_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macr_spectre_ops Macro DATE 16/10/2007 AUTEUR REZETTE C.REZETTE +#@ MODIF macr_spectre_ops Macro DATE 19/11/2007 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -19,12 +19,14 @@ # ====================================================================== from Accas import _F -import aster import string -try : + +try: + import aster from Utilitai.Utmess import UTMESS -except : +except: pass + def macr_spectre_ops(self,MAILLAGE,PLANCHER,NOM_CHAM,CALCUL,RESU,IMPRESSION=None, FREQ=None,LIST_FREQ=None,LIST_INST=None,AMOR_SPEC=None,**args): """ diff --git a/Aster/Cata/cataSTA9/Macro/test_fichier_ops.py b/Aster/Cata/cataSTA9/Macro/test_fichier_ops.py index 62361680..62e7d02c 100644 --- a/Aster/Cata/cataSTA9/Macro/test_fichier_ops.py +++ b/Aster/Cata/cataSTA9/Macro/test_fichier_ops.py @@ -1,4 +1,4 @@ -#@ MODIF test_fichier_ops Macro DATE 16/10/2007 AUTEUR REZETTE C.REZETTE +#@ MODIF test_fichier_ops Macro DATE 19/11/2007 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -19,18 +19,52 @@ # ====================================================================== import sys -import os.path +import os import re -from math import floor, log10 -from types import StringType import md5 #------------------------------------------------------------------------------- -def test_fichier_ops(self, FICHIER, NB_CHIFFRE, EPSILON, VALE_K, INFO, **args): +class TestFichierError(Exception): + pass + +#------------------------------------------------------------------------------- +def convert(x): + return float(x) + +def f_SOMM(somme, lx): + return somme + sum([convert(x) for x in lx]) + +def f_SOMM_ABS(somme, lx): + return somme + sum([abs(convert(x)) for x in lx]) + +def f_MINI(val, lx): + return min(val, min([convert(x) for x in lx])) + +def f_MAXI(val, lx): + return max(val, max([convert(x) for x in lx])) + +def f_MINI_ABS(val, lx): + return min(val, min([abs(convert(x)) for x in lx])) + +def f_MAXI_ABS(val, lx): + return max(val, max([abs(convert(x)) for x in lx])) + +dict_func_test = { + 'SOMM' : f_SOMM, + 'SOMM_ABS' : f_SOMM_ABS, + 'MINI' : f_MINI, + 'MAXI' : f_MAXI, + 'MINI_ABS' : f_MINI_ABS, + 'MAXI_ABS' : f_MAXI_ABS, +} + +#------------------------------------------------------------------------------- +def test_fichier_ops(self, FICHIER, NB_VALE, VALE, VALE_K, TYPE_TEST, + CRITERE, PRECISION, INFO, **kwargs): """ - Macro TEST_FICHIER permettant de tester la non-regression d'un fichier - 'a une tolerance' pres pour les nombres reels en calculant - le md5sum. + Macro permettant de tester la non-regression d'un fichier. + On teste le nombre de réels présents, et, facultativement, la + somme de ces nombres et le texte du fichier. """ ier = 0 # La macro compte pour 1 dans la numerotation des commandes @@ -45,233 +79,235 @@ def test_fichier_ops(self, FICHIER, NB_CHIFFRE, EPSILON, VALE_K, INFO, **args): import aster from Accas import _F - from Macro.test_fichier_ops import md5file from Utilitai.Utmess import UTMESS - # vérifie la syntaxe des expressions régulières fournies - l_regexp = [] - if args['EXPR_IGNORE']: - if type(args['EXPR_IGNORE']) is StringType: - lexp = [args['EXPR_IGNORE']] - else: - lexp = args['EXPR_IGNORE'] - for exp in lexp: - try: - obj = re.compile(exp) - except re.error, s: -# ' %s pour %s' % (str(s), repr(exp))) - UTMESS('F','TEST0_1',valk=[str(s), repr(exp)]) - else: - l_regexp.append(exp) - is_ok = 0 # vérifier que le fichier a été fermé tinfo__ = INFO_EXEC_ASTER(LISTE_INFO='ETAT_UNITE', FICHIER=FICHIER) - - if tinfo__['ETAT_UNITE', 1].find('OUVERT')>-1: -# "LE FICHIER N'A PAS ETE FERME :\n%s" % FICHIER) - UTMESS('A','TEST0_2',valk=FICHIER) + if tinfo__['ETAT_UNITE', 1].find('OUVERT') > -1: + UTMESS('S','TEST0_2',valk=FICHIER) - # fichier correctement fermé - else: - # calcule le md5sum du fichier - ier, mdsum = md5file(FICHIER, NB_CHIFFRE, EPSILON, l_regexp, INFO) - if ier != 0: - if ier == 4: - texte_erreur = 'Fichier inexistant : '+FICHIER - else: - texte_erreur = 'Erreur dans md5file, code retour = '+str(ier) - texte_erreur = ' '+texte_erreur - # aujourd'hui, je ne sais pas déclencher autre chose que ... - self.cr.fatal(texte_erreur) - return ier - - # comparaison a la reference - if INFO > 0 : - aster.affiche('MESSAGE', ' %-20s : %32s\n' % ('REFERENCE', VALE_K)) - - if mdsum == VALE_K: - is_ok = 1 + # lecture du fichier + if not os.path.isfile(FICHIER): + UTMESS('S', 'TEST0_3', valk=FICHIER) + fileobj = open(FICHIER, 'r') + + # filtre par expression régulière + try: + fileobj = regexp_filter(fileobj, kwargs['EXPR_IGNORE']) + except TestFichierError, (idmess, valk): + UTMESS('S', idmess, valk=valk) + + # calcule le nombre de réels et la somme ou min/max + nbval, valeur, md5sum = test_iter(fileobj, function=dict_func_test[TYPE_TEST], verbose=(INFO > 1)) + fileobj.close() # produit le TEST_TABLE - tab1__ = CREA_TABLE(LISTE=(_F(PARA='TEST', - TYPE_K='K8', - LISTE_K='VALEUR ',), - _F(PARA='BOOLEEN', - LISTE_I=is_ok,),),) - if args['REFERENCE'] == 'NON_REGRESSION': - TEST_TABLE(TABLE=tab1__, - FILTRE=_F(NOM_PARA='TEST', - VALE_K='VALEUR ',), - NOM_PARA='BOOLEEN', - VALE_I=1, - PRECISION=1.e-3, - CRITERE='ABSOLU', - REFERENCE=args['REFERENCE'], - VERSION=args['VERSION'],) + md5ref = VALE_K or 'non testé' + is_ok = int(md5sum == md5ref) + tab1__ = CREA_TABLE(LISTE=(_F(PARA='NBVAL', LISTE_I=nbval,), + _F(PARA='VALEUR', LISTE_R=valeur,), + _F(PARA='TEXTE', LISTE_I=is_ok),),) + if VALE is not None: + sVALE = '%20.13e' % VALE else: + sVALE = 'non testé' + UTMESS('I', 'TEST0_4', vali=(nbval, NB_VALE), valr=valeur, valk=(md5sum, md5ref, FICHIER, sVALE)) + + kwopt = { 'REFERENCE' : kwargs['REFERENCE'], } + if kwargs['REFERENCE'] == 'NON_REGRESSION': + kwopt['VERSION'] = kwargs['VERSION'] + + TEST_TABLE(TABLE=tab1__, + NOM_PARA='NBVAL', + VALE_I=NB_VALE, + CRITERE='ABSOLU', + PRECISION=0, + **kwopt) + + if VALE: + TEST_TABLE(TABLE=tab1__, + NOM_PARA='VALEUR', + VALE=VALE, + CRITERE=CRITERE, + PRECISION=PRECISION, + **kwopt) + + if VALE_K: TEST_TABLE(TABLE=tab1__, - FILTRE=_F(NOM_PARA='TEST', - VALE_K='VALEUR ',), - NOM_PARA='BOOLEEN', - VALE_I=1, - PRECISION=1.e-3, + NOM_PARA='TEXTE', + VALE_I=int(True), + PRECISION=0, CRITERE='ABSOLU', - REFERENCE=args['REFERENCE'],) + **kwopt) DETRUIRE(CONCEPT=_F(NOM=('tinfo__','tab1__'),), ALARME='NON',INFO=1,) return ier +#------------------------------------------------------------------------------- +def regexp_filter(file_in, regexp_ignore, debug=False): + """Filtre le fichier fourni (file descriptor) en utilisant les + expressions régulières fournies. + On retourne l'objet file vers le fichier modifié (ou non). + """ + if not regexp_ignore: # None or [] + return file_in + # vérification des expressions régulières + if type(regexp_ignore) not in (list, tuple): + regexp_ignore = [regexp_ignore,] + l_regexp = [] + for exp in regexp_ignore: + try: + obj = re.compile(exp) + except re.error, s: + raise TestFichierError, ('TEST0_1', (s, str(exp))) + else: + l_regexp.append(obj) + # filtre du fichier + file_out = os.tmpfile() + file_in.seek(0) + for i, line in enumerate(file_in): + if debug: + print 'LIGNE', i, + keep = True + for exp in l_regexp: + if exp.search(line): + keep = False + if debug: + print ' >>>>>>>>>> IGNOREE <<<<<<<<<<' + break + if keep: + file_out.write(line) + if debug: + print + file_out.seek(0) + return file_out + #------------------------------------------------------------------------------- -def sign(x): - return int(x/abs(x)) - -def _round(x, n, exp): - v = x * 10**(-exp+n) - val = int(v + sign(x)*0.4999) - return val - -def entier_ini(x, nbch, exp=None): - #if exp is None: - #exp = int(floor(log10(abs(x)))) - val = _round(x, nbch-1, exp) - return val, exp-nbch+1 - -def entier_triple(x, nbch, exp_epsi): - #if abs(x) <= 10**exp_epsi: - #return '0' - y = _round(x * 10**(-exp_epsi), 0, 0) * 10**exp_epsi - exp = int(floor(log10(abs(y)))) - z1, e1 = entier_ini(y, nbch+2, exp) - z2, e2 = entier_ini(z1 * 10**e1, nbch+1, exp) - z3, e3 = entier_ini(z2 * 10**e2, nbch, exp) - return '%sE%d' % (z3, e3) +re_float_expo = re.compile('[-+]?[0-9\.]+[eED][\-\+]{0,1}[0-9]+') +re_float = re.compile('[-+]?[0-9]+?\.[0-9]*') +re_int = re.compile('[0-9]+') + +re_fortran = re.compile('([0-9]+)[dD]([\-\+]{0,1}[0-9]+)') #------------------------------------------------------------------------------- -def md5file(fich, nbch, epsi, - regexp_ignore=[], info=0, output=None, format_func=entier_triple): +def test_iter(obj, function, verbose=False): """ - Cette methode retourne le md5sum d'un fichier en arrondissant les nombres - reels a la valeur significative. + Cette fonction compte le nombre de réels dans le fichier et une grandeur + à partir des valeurs (somme, sommes des valeurs absolues, min/max...). IN : - fich : nom du fichier - nbch : nombre de decimales significatives - epsi : valeur en deca de laquelle on prend 0 - regexp_ignore : liste d'expressions régulières permettant d'ignorer - certaines lignes - output : pour rediriger l'interprétation du fichier (INFO=2) - dans le fichier de nom `output`, - info : on affiche le résumé si info>0 - format_func : on peut préciser une autre fonction pour formatter - les réels... + obj : objet 'file' ou 'string' sur le lequel on peut itérer + function : fonction de test val = func_test(val, [xi, ...]) + verbose : on affiche le résumé si info>0 OUT : - code retour : 0 si ok, >0 sinon - md5sum + nombre de valeurs, valeur résultat + """ + max_buff_size = 1000 + nbval = 0 + val = 0. + md5text = md5.new() + + # Si on lit tout le fichier d'un coup, on va environ 3 fois plus vite + # que si on le lit ligne à ligne, mais on consomme en mémoire environ + # 5 fois la taille du fichier... + # En lisant par paquet de 1000 (ou 10000), on va quasiment aussi vite + # en consommant très peu de mémoire. + + # fichier tout ligne/ligne 1000 lignes + # 10 Mo 3 s 10 s 3 s + # 50 Mo 17 s 48 s 17 s + # 100 Mo 34 s 96 s 35 s - NE PAS AJOUTER D'IMPORT QUI RENDRAIT CETTE FONCTION - INUTILISABLE EN DEHORS DE CODE_ASTER. - """ - if output != None: + # l'itérateur est l'objet file lui-même ou on le crée sur la liste + if type(obj) is file: + obj.seek(0) + iterator = obj + else: + iterator = iter(obj) + + ok = True + buff = [] + while ok: try: - sys.stdout = open(output, 'w') - except IOError, msg: - print "Erreur d'écriture sur %s : %s" % (output, msg) + text = iterator.next() + except StopIteration: + ok = False + text = '' + buff.append(text) + if ok and len(buff) < max_buff_size: + continue + else: + text = ''.join(buff) + buff = [] + + l_float = re_float_expo.findall(text) + l_float = [s.replace('D', 'E') for s in l_float] + text = re_float_expo.sub('', text) + l_float.extend(re_float.findall(text)) + text = re_float.sub('', text) + l_float.extend( re_int.findall(text)) + text = re_int.sub('', text) + + nbval += len(l_float) + val = function(val, l_float) + + text = ''.join([s.strip() for s in text.split()]) + md5text.update(text) + + if verbose: + print 'Nombres réels et entiers :' + print l_float + print 'Texte :' + print text - # 1 Mo 10 Mo 100 Mo - # v0 2.6 s 20.4 s 196.6 s - # v1 2.0 s 10.3 s 94.9 s (pas de distinction entier/reel) - # remplacer le try/except par if re.search(...), 80% plus lent - # v2 10.7 s - if not os.path.isfile(fich): - return 4, '' - f = open(fich,'r') - m = md5.new() - exp_epsi = int(floor(log10(abs(epsi)))) - i = 0 - for ligne in f: - i = i+1 - if info >= 2: - print 'LIGNE', i, - keep = True - for exp in regexp_ignore: - if re.search(exp, ligne): - keep = False - if info >= 2: - print ' >>>>>>>>>> IGNOREE <<<<<<<<<<', - break - if keep: - # découpe des nombres collés : 1.34E-142-1.233D+09 - ligne = re.sub('([0-9]+)\-', '\g<1> -', ligne) - # conversion des DOUBLE fortran en 'E' - ligne = re.sub('([0-9]+)[dD]([\-\+]{0,1}[0-9]+)', '\g<1>E\g<2>', ligne) - r = ligne.split() - for x in r: - try: - xv = float(x) - if abs(xv)= 2: - print (' %'+str(nbch+7)+'s') % s, - m.update(s) - if info >= 2: - print - f.close() - md5sum = m.hexdigest() + md5sum = md5text.hexdigest() - affich_resu = True - if info >= 1: - while affich_resu: - form = ' %-20s : %32s' - print form % ('Fichier', fich) - print form % ('Nombre de lignes', str(i)) - #print form % ('Format des reels',format_float) - print form % ('Nombre de chiffres', str(nbch)) - print form % ('Epsilon', str(epsi)) - print form % ('md5sum', md5sum) - if output == None: - affich_resu = False - else: - sys.stdout = sys.__stdout__ - output = None - return 0, md5sum + return nbval, val, md5sum +#------------------------------------------------------------------------------- +def test_file(filename, regexp_ignore=[], type_test='SOMM', verbose=False): + """Raccourci pour tester rapidement un fichier (utilisé par stanley.py). + """ + if type(regexp_ignore) not in (list, tuple): + regexp_ignore = [regexp_ignore,] + + fileobj = open(filename, 'r') + fileobj = regexp_filter(fileobj, regexp_ignore) + + nbv, val, md5sum = test_iter(fileobj, function=dict_func_test[type_test], verbose=verbose) + + return nbv, val, md5sum #------------------------------------------------------------------------------- if __name__ == '__main__': from optparse import OptionParser, OptionGroup - p = OptionParser(usage='usage: %s a_tester [options]' % sys.argv[0]) - p.add_option('-n', '--nbch', - action='store', dest='nbch', type='int', default=6, - help='nombre de chiffres significatifs') - p.add_option('-e', '--epsilon', - action='store', dest='epsi', type='float', default=1.e-14, - help='epsilon en dessous duquel on considère les nombres nuls') + p = OptionParser(usage='usage: %s fichier [options]' % sys.argv[0]) + p.add_option('--type_test', + action='store', dest='type_test', default='SOMM', + help='type du test : SOMM, SOMM_ABS, MIN, MAX') p.add_option('--expr_ignore', action='store', dest='exp', type='string', help='expression régulière à ignorer') - p.add_option('-o', '--output', - action='store', dest='output', type='string', default='output.txt', - help='fichier de sortie') + p.add_option('-v', '--verbose', + action='store_true', dest='verbose', default=False, + help='mode bavard') opts, args = p.parse_args() - if len(args)<1: - p.print_usage() - sys.exit(1) + if len(args) == 0: + p.error('fichier à tester ?') + if opts.exp is None: exp = [] else: exp = [opts.exp] - print 'Lignes retenues dans %s' % opts.output - iret = md5file(args[0], opts.nbch, opts.epsi, - regexp_ignore=exp, info=2, output=opts.output) + fileobj = open(args[0], 'r') + fileobj = regexp_filter(fileobj, exp) + nbv2, sumv2, md5sum2 = test_iter(fileobj, function=dict_func_test[opts.type_test], verbose=opts.verbose) + print '%6d valeurs, resultat = %f, texte : %s' % (nbv2, sumv2, md5sum2) + diff --git a/Aster/Cata/cataSTA9/SD/sd_cham_gene.py b/Aster/Cata/cataSTA9/SD/sd_cham_gene.py index 906b33b0..43cca8ee 100644 --- a/Aster/Cata/cataSTA9/SD/sd_cham_gene.py +++ b/Aster/Cata/cataSTA9/SD/sd_cham_gene.py @@ -1,24 +1,25 @@ -#@ MODIF sd_cham_gene SD DATE 13/02/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_cham_gene SD DATE 27/11/2007 AUTEUR ANDRIAM H.ANDRIAMBOLOLONA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== from SD import * +from SD.sd_nume_ddl_gene import sd_nume_ddl_gene class sd_cham_gene(AsBase): nomj = SDNom(fin=19) @@ -27,3 +28,18 @@ class sd_cham_gene(AsBase): DESC = AsVI(docu='VGEN', ) + def exists(self): + # retourne "vrai" si la SD semble exister (et donc qu'elle peut etre vérifiée) + return self.REFE.exists + + # indirection vers NUME_DDL_GENE: + def check_REFE(self, checker): + if not self.exists() : return + refe = self.REFE.get_stripped() + # ce test fait planter les verif de SD issues de DYNA_TRAN_MODAL + RECU_GENE + # op0037 cree un refe[1]='$TRAN_GENE' bidon + if refe[1] == '$TRAN_GENE': return + if refe[1] : + sd2 = sd_nume_ddl_gene(refe[1]) ; sd2.check(checker) + + diff --git a/Aster/Cata/cataSTA9/SD/sd_cham_no.py b/Aster/Cata/cataSTA9/SD/sd_cham_no.py index 1fa32c08..7a1333de 100644 --- a/Aster/Cata/cataSTA9/SD/sd_cham_no.py +++ b/Aster/Cata/cataSTA9/SD/sd_cham_no.py @@ -1,4 +1,4 @@ -#@ MODIF sd_cham_no SD DATE 17/07/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_cham_no SD DATE 28/11/2007 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -44,8 +44,9 @@ class sd_cham_no(sd_titre): # faut-il vérifier le sd_maillage de chaque sd_cham_no ? AJACOT_PB # - cela risque de couter cher # - cela pose un problème "import circulaire" avec sd_maillage -> sd_cham_no => import ici - #from SD.sd_maillage import sd_maillage - #sd2 = sd_maillage(lnom[0]) ; sd2.check(checker) + from SD.sd_maillage import sd_maillage + sd2 = sd_maillage(lnom[0]) + sd2.check(checker) # j'aurai préféré : sd_prof_chno que sd_nume_equa (mais sslv111b !) AJACOT_PB : if lnom[1].strip() : diff --git a/Aster/Cata/cataSTA9/SD/sd_compor.py b/Aster/Cata/cataSTA9/SD/sd_compor.py index 7b77d401..b7ed032f 100644 --- a/Aster/Cata/cataSTA9/SD/sd_compor.py +++ b/Aster/Cata/cataSTA9/SD/sd_compor.py @@ -1,4 +1,4 @@ -#@ MODIF sd_compor SD DATE 12/11/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_compor SD DATE 19/11/2007 AUTEUR PROIX J-M.PROIX # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -52,8 +52,8 @@ class sd_compor(AsBase): #------------------------------------ nboccm=cpri[4] nvi =cpri[2] - nbsys=(nvi-8)/3 - assert nvi==8+3*nbsys , (nvi, nbsys, cpri) + nbsys=(nvi-9)/3 + assert nvi==9+3*nbsys , (nvi, nbsys, cpri) cprk=self.CPRK.get_stripped() # vérif existence et longueur diff --git a/Aster/Cata/cataSTA9/SD/sd_macr_elem_stat.py b/Aster/Cata/cataSTA9/SD/sd_macr_elem_stat.py index a1ebed47..c9020c1b 100644 --- a/Aster/Cata/cataSTA9/SD/sd_macr_elem_stat.py +++ b/Aster/Cata/cataSTA9/SD/sd_macr_elem_stat.py @@ -1,4 +1,4 @@ -#@ MODIF sd_macr_elem_stat SD DATE 22/10/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_macr_elem_stat SD DATE 27/11/2007 AUTEUR ANDRIAM H.ANDRIAMBOLOLONA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -22,6 +22,7 @@ from SD import * from SD.sd_matr_asse_gd import sd_matr_asse_gd from SD.sd_stoc_lciel import sd_stoc_lciel +from SD.sd_proj_mesu import sd_proj_mesu class sd_macr_elem_stat(AsBase): @@ -51,6 +52,9 @@ class sd_macr_elem_stat(AsBase): LICA = Facultatif(AsColl(acces='NO', stockage='DISPERSE', modelong='CONSTANT', type='R', ltyp=8)) LICH = Facultatif(AsColl(acces='NO', stockage='CONTIG', modelong='CONSTANT', type='K', ltyp=8)) + # si utilisation de PROJ_MESU_MODAL : + PROJM = Facultatif(sd_proj_mesu()) + def check_longueurs(self, checker): #------------------------------------ diff --git a/Aster/Cata/cataSTA9/SD/sd_resultat_dyn.py b/Aster/Cata/cataSTA9/SD/sd_resultat_dyn.py index 51406bd5..c0bdacb5 100644 --- a/Aster/Cata/cataSTA9/SD/sd_resultat_dyn.py +++ b/Aster/Cata/cataSTA9/SD/sd_resultat_dyn.py @@ -1,21 +1,21 @@ -#@ MODIF sd_resultat_dyn SD DATE 13/02/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_resultat_dyn SD DATE 27/11/2007 AUTEUR ANDRIAM H.ANDRIAMBOLOLONA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== from SD import * @@ -24,6 +24,7 @@ from SD.sd_resultat import sd_resultat from SD.sd_nume_ddl import sd_nume_ddl from SD.sd_matr_asse import sd_matr_asse from SD.sd_interf_dyna_clas import sd_interf_dyna_clas +from SD.sd_proj_mesu import sd_proj_mesu class sd_resultat_dyn(sd_resultat): @@ -32,6 +33,9 @@ class sd_resultat_dyn(sd_resultat): PROFC_NUME_REFN = Facultatif(AsVK24(SDNom(nomj='.PROFC.NUME.REFN'), lonmax=2, )) REFD = Facultatif(AsVK24(SDNom(debut=19), lonmax=6, )) # n'existe pas dans sdll23a + # si utilisation de PROJ_MESU_MODAL : + PROJM = Facultatif(sd_proj_mesu()) + # indirection vers les SD de .REFD : def check_resultat_dyn_i_REFD(self, checker): diff --git a/Aster/Cata/cataSTA9/SD/sd_tran_gene.py b/Aster/Cata/cataSTA9/SD/sd_tran_gene.py index 9ec5c393..a5c682f4 100644 --- a/Aster/Cata/cataSTA9/SD/sd_tran_gene.py +++ b/Aster/Cata/cataSTA9/SD/sd_tran_gene.py @@ -1,4 +1,4 @@ -#@ MODIF sd_tran_gene SD DATE 10/07/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_tran_gene SD DATE 27/11/2007 AUTEUR ANDRIAM H.ANDRIAMBOLOLONA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -22,6 +22,7 @@ from SD import * from SD.sd_titre import sd_titre from SD.sd_nume_ddl_gene import sd_nume_ddl_gene from SD.sd_matr_asse_gene import sd_matr_asse_gene +from SD.sd_proj_mesu import sd_proj_mesu from SD.sd_util import * @@ -61,13 +62,9 @@ class sd_tran_gene(sd_titre) : REDC = Facultatif(AsVI()) REDD = Facultatif(AsVR()) - # objets commencant en 8 : - # Ces objets ne sont pas encore documentés. - # une fiche a été émise pour ces objets : 10882 - BASEPR = Facultatif(AsVR(SDNom(debut=8))) - VNOEUD = Facultatif(AsVI(SDNom(debut=8))) - VORIEN = Facultatif(AsVR(SDNom(debut=8))) - VRANGE = Facultatif(AsVK8(SDNom(debut=8))) + # si utilisation de PROJ_MESU_MODAL : + PROJM = Facultatif(sd_proj_mesu(SDNom(debut=8))) + @@ -90,12 +87,15 @@ class sd_tran_gene(sd_titre) : def check_REFD(self,checker): + # AJACOT : j'avais cru comprendre des choses ... mais sdld104a me prouve le contraire ! + # à revoir ????? + return refd=self.REFD.get_stripped() assert refd[0] != '' , refd sd2= sd_matr_asse_gene(refd[0]) ; sd2.check() assert refd[1] != '' , refd - sd2= sd_matr_asse_gene(refd[1]) ; sd2.check() - if refd[2] != '' : + sd2= sd_matr_asse_gene(refd[0]) ; sd2.check() + if refd[2] != '' : sd2= sd_matr_asse_gene(refd[2]) ; sd2.check() assert refd[3] != '' , refd sd2= sd_nume_ddl_gene(refd[3]) ; sd2.check() diff --git a/Aster/Cata/cataSTA9/cata.py b/Aster/Cata/cataSTA9/cata.py index bbac13de..71e22d03 100644 --- a/Aster/Cata/cataSTA9/cata.py +++ b/Aster/Cata/cataSTA9/cata.py @@ -1,4 +1,4 @@ -#& MODIF ENTETE DATE 13/02/2007 AUTEUR PELLET J.PELLET +#& MODIF ENTETE DATE 28/11/2007 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -18,8 +18,11 @@ # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== -__version__ = "$Name: BR_dev_V1_13 $" -__Id__ = "$Id: cata.py,v 1.2.6.3 2007-11-15 12:46:21 pnoyret Exp $" +# faire que la division soit toujours réelle +from __future__ import division + +__version__ = "$Name: $" +__Id__ = "$Id: cata_aster_v6.py,v 1.12 2001/01/16 15:55:05 iliade Exp $" import Accas from Accas import * @@ -1821,7 +1824,7 @@ AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 101,sd_prod=affe_char_cine_f_pr ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 08/10/2007 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 27/11/2007 AUTEUR BOYERE E.BOYERE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2807,24 +2810,8 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, "CDI","CDG") ), VALE_PDC =SIMP(statut='f',typ='R',max='**', fr="valeurs des coefficients de perte de charge singulière",), - APPL_FORC_ARCHI =SIMP(statut='f',typ='TXM',defaut="REPARTIE" , - fr="application de la force d'archimède", - into=("REPARTIE","CDG") ), - APPL_FORC_FPLAQ =SIMP(statut='f',typ='TXM',defaut="REPARTIE" , - fr="application de la force de plaquage dans le guidage continu", - into=("REPARTIE","CDG","ZONE","MILIEU","DISTRI") ), - APPL_FORC_FMEC =SIMP(statut='f',typ='TXM',defaut="REPARTIE" , - fr="application de la force dans le mécanisme de levée", - into=("REPARTIE","CDG","ZONE","PTREP") ), - APPL_FORC_FTG =SIMP(statut='f',typ='TXM',defaut="REPARTIE" , - fr="application de la force tube_guide", - into=("REPARTIE","CDG","ZONE","PTREP") ), DIRE_FORC_FPLAQ =SIMP(statut='f',typ='R',min=3,max=3, fr="direction d'application de la force de plaquage",), - b_CDG =BLOC(condition = "(APPL_FORC_ARCHI == 'CDG') or (APPL_FORC_FPLAQ == 'CDG') or \ - (APPL_FORC_FMEC == 'CDG') or (APPL_FORC_FTG == 'CDG')", - MASS_INER =SIMP(statut='o',typ=table_sdaster ), - ), UNITE_IMPR_FORCE =SIMP(statut='f',typ='I', fr="unité d'impression des forces",), UNITE_IMPR_NOEUD =SIMP(statut='f',typ='I', @@ -13119,7 +13106,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 23/10/2007 AUTEUR BOITEAU O.BOITEAU +#& MODIF COMMANDE DATE 27/11/2007 AUTEUR ABBAS M.ABBAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13377,33 +13364,6 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), ), #------------------------------------------------------------------- - RECH_LINEAIRE =FACT(statut='f', - METHODE =SIMP(statut='f',typ='TXM',defaut="CORDE",into=("CORDE","MIXTE") ), - RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-1 ), - ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3), - ITER_LINE_CRIT =SIMP(statut='f',typ='I',defaut= 20), - PAS_MINI_CRIT =SIMP(statut='f',typ='R',defaut=0.0E+0), - RHO_MIN =SIMP(statut='f',typ='R',defaut=1.0E-2), - RHO_MAX =SIMP(statut='f',typ='R',defaut=1.0E+1), - RHO_EXCL =SIMP(statut='f',typ='R',defaut=0.9E-2,val_min=0.), - ), - PILOTAGE =FACT(statut='f', - regles=(EXCLUS('NOEUD','GROUP_NO'),PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), - TYPE =SIMP(statut='o',typ='TXM',into=("DDL_IMPO","LONG_ARC","PRED_ELAS","PRED_ELAS_INCR","DEFORMATION","ANA_LIM") ), - COEF_MULT =SIMP(statut='f',typ='R',defaut= 1.0E+0), - ETA_PILO_MAX =SIMP(statut='f',typ='R'), - ETA_PILO_MIN =SIMP(statut='f',typ='R'), - ETA_PILO_R_MAX =SIMP(statut='f',typ='R'), - ETA_PILO_R_MIN =SIMP(statut='f',typ='R'), - PROJ_BORNES =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), - SELECTION =SIMP(statut='f',typ='TXM',defaut="NORM_INCR_DEPL", into=("RESIDU","ANGL_INCR_DEPL","NORM_INCR_DEPL") ), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), - MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), - NOM_CMP =SIMP(statut='f',typ='TXM',max='**' ), - ), CONVERGENCE =FACT(statut='d', regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA'),), b_refe_rela =BLOC(condition = "RESI_REFE_RELA != None", @@ -14028,7 +13988,7 @@ EXTR_TABLE=OPER(nom="EXTR_TABLE",op=173,sd_prod=extr_table_prod,reentrant='n', TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 23/10/2007 AUTEUR BOITEAU O.BOITEAU +#& MODIF COMMANDE DATE 19/11/2007 AUTEUR COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG @@ -14047,7 +14007,7 @@ EXTR_TABLE=OPER(nom="EXTR_TABLE",op=173,sd_prod=extr_table_prod,reentrant='n', # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== -def fact_ldlt_prod(MATR_ASSE,**args): +def factoriser_prod(MATR_ASSE,**args): if AsType(MATR_ASSE) == matr_asse_depl_r : return matr_asse_depl_r if AsType(MATR_ASSE) == matr_asse_depl_c : return matr_asse_depl_c if AsType(MATR_ASSE) == matr_asse_temp_r : return matr_asse_temp_r @@ -14056,7 +14016,7 @@ def fact_ldlt_prod(MATR_ASSE,**args): if AsType(MATR_ASSE) == matr_asse_pres_c : return matr_asse_pres_c raise AsException("type de concept resultat non prevu") -FACTORISER=OPER(nom="FACTORISER",op=14,sd_prod=fact_ldlt_prod, +FACTORISER=OPER(nom="FACTORISER",op=14,sd_prod=factoriser_prod, fr="Factoriser une matrice assemblée en un produit de deux matrices triangulaires"+ "ou construire une matrice de préconditionnement pour une résolution par gradient conjugué", reentrant='f', UIinfo={"groupes":("Résolution",)}, @@ -17758,7 +17718,7 @@ MACR_ECLA_PG=MACRO(nom="MACR_ECLA_PG",op=macr_ecla_pg_ops,sd_prod=macr_ecla_pg_p PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), ) -#& MODIF COMMANDE DATE 08/11/2007 AUTEUR SALMONA L.SALMONA +#& MODIF COMMANDE DATE 19/11/2007 AUTEUR DEVESA G.DEVESA # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -17786,7 +17746,8 @@ MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op= 81,sd_prod=macr_elem_dyna, MATR_RIGI =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_depl_c),), MATR_MASS =SIMP(statut='f',typ=matr_asse_depl_r ), MATR_AMOR =SIMP(statut='f',typ=matr_asse_depl_r ), - AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'), + AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno ), MATR_IMPE =SIMP(statut='f',typ=matr_asse_gene_c ), b_matr_impe =BLOC(condition = "MATR_IMPE != None", FREQ_EXTR =SIMP(statut='o',typ='R' ), @@ -18802,14 +18763,14 @@ MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",op=macro_matr_ajou_ops,sd_prod=macro from Macro.macro_matr_asse_ops import macro_matr_asse_ops def macro_matr_asse_prod(self,NUME_DDL,MATR_ASSE,**args): + if not MATR_ASSE: raise AsException("Impossible de typer les concepts resultats") + if not NUME_DDL : raise AsException("Impossible de typer les concepts resultats") if isinstance(NUME_DDL,CO) : self.type_sdprod(NUME_DDL,nume_ddl_sdaster) else: self.type_sdprod(NUME_DDL,NUME_DDL.__class__) - for m in MATR_ASSE: opti=m['OPTION'] - if opti==None:t=matr_asse if opti in ( "RIGI_MECA","RIGI_FLUI_STRU","RIGI_MECA_LAGR" , "MASS_MECA" , "MASS_FLUI_STRU" ,"RIGI_GEOM" ,"RIGI_ROTA", @@ -18824,9 +18785,6 @@ def macro_matr_asse_prod(self,NUME_DDL,MATR_ASSE,**args): if opti == "RIGI_MECA_HYST" : t= matr_asse_depl_c self.type_sdprod(m['MATRICE'],t) - - if not MATR_ASSE: raise AsException("Impossible de typer les concepts resultats") - if not NUME_DDL : raise AsException("Impossible de typer les concepts resultats") return None MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops, @@ -21448,7 +21406,7 @@ POST_MAIL_XFEM=OPER(nom="POST_MAIL_XFEM",op= 187,sd_prod=maillage_sdaster, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ), ); -#& MODIF COMMANDE DATE 03/04/2007 AUTEUR VIVAN L.VIVAN +#& MODIF COMMANDE DATE 27/11/2007 AUTEUR VIVAN L.VIVAN # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -21692,7 +21650,7 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster, NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ), COMBINABLE =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ), NUME_GROUPE =SIMP(statut='o',typ='I',fr="numéro du groupe de la situation" ), - NUME_PASSAGE =SIMP(statut='f',typ='I',max=2,fr="numéro des deux groupes en relation" ), +# NUME_PASSAGE =SIMP(statut='f',typ='I',max=2,fr="numéro des deux groupes en relation" ), NUME_RESU_THER =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ), CHAR_ETAT_A =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ), CHAR_ETAT_B =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ), @@ -23654,7 +23612,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) -#& MODIF COMMANDE DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 19/11/2007 AUTEUR COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG @@ -23681,11 +23639,17 @@ TEST_FICHIER=MACRO(nom="TEST_FICHIER", op=test_fichier_ops, UIinfo={"groupes":("Impression",)}, fr="Tester la non régression de fichiers produits par des commandes aster", FICHIER =SIMP(statut='o',typ='TXM',validators=LongStr(1,255)), - NB_CHIFFRE =SIMP(statut='o',typ='I',), # defaut=6 pas de defaut, il faut - EPSILON =SIMP(statut='o',typ='R',), # defaut=1.E-12 se poser la question ! - EXPR_IGNORE =SIMP(statut='f',typ='TXM',max='**', - fr="Liste d'expressions régulières permettant d'ignorer certaines lignes"), - VALE_K =SIMP(statut='o',typ='TXM' ), + EXPR_IGNORE =SIMP(statut='f',typ='TXM',max='**', + fr="Liste d'expressions régulières permettant d'ignorer certaines lignes"), + + TYPE_TEST =SIMP(statut='f',typ='TXM',defaut='SOMM',into=("SOMM_ABS","SOMM","MAXI","MINI","MAXI_ABS","MINI_ABS")), + NB_VALE =SIMP(statut='o',typ='I',), + VALE =SIMP(statut='f',typ='R',max='**'), + VALE_K =SIMP(statut='f',typ='TXM'), + + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), + REFERENCE =SIMP(statut='f',typ='TXM', into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ), diff --git a/Aster/Cata/cataSTA9/ops.py b/Aster/Cata/cataSTA9/ops.py index c8163ee5..bbe60718 100644 --- a/Aster/Cata/cataSTA9/ops.py +++ b/Aster/Cata/cataSTA9/ops.py @@ -1,4 +1,4 @@ -#@ MODIF ops Cata DATE 16/10/2007 AUTEUR REZETTE C.REZETTE +#@ MODIF ops Cata DATE 19/11/2007 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -56,8 +56,6 @@ def commun_DEBUT_POURSUITE(jdc, PAR_LOT, IMPR_MACRO, CODE, DEBUG): if CODE != None: jdc.fico = CODE['NOM'] if aster_exists: - # on commence l'execution proprement dite, fin des initialisations - jdc.timer.Stop('JDC init') # en POURSUITE, ne pas écraser la mémorisation existante. if not hasattr(jdc, 'memo_sensi'): jdc.memo_sensi = MEMORISATION_SENSIBILITE() diff --git a/Noyau/N_CONVERT.py b/Noyau/N_CONVERT.py index 4d1af5ad..9d3443dd 100644 --- a/Noyau/N_CONVERT.py +++ b/Noyau/N_CONVERT.py @@ -1,4 +1,4 @@ -#@ MODIF N_CONVERT Noyau DATE 19/11/2007 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_CONVERT Noyau DATE 30/11/2007 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -22,10 +22,6 @@ Module de conversion des valeurs saisies par l'utilisateur après vérification. """ -# ----------------------------------------------------------------------------- -class ConversionError(Exception): - pass - # ----------------------------------------------------------------------------- def is_int(real): """Est-ce que 'real' a une valeur entière ? @@ -33,46 +29,74 @@ def is_int(real): return abs(int(real) - real) < 1.e-12 # ----------------------------------------------------------------------------- -class TypeConversion: - """Conversion de type +class Conversion: + """Conversion de type. """ - def __init__(self, name, typ=None): + def __init__(self, name, typ): self.name = name - self.typ = typ + self.typ = typ def convert(self, obj): """Filtre liste """ in_type = type(obj) - is_simple = in_type not in (list, tuple) - if is_simple: + if in_type not in (list, tuple): obj = (obj,) result = [] for o in obj: - result.append(self.defaut(o)) + result.append(self.function(o)) - if is_simple: + if in_type not in (list, tuple): return result[0] else: - return in_type(result) + # ne marche pas avec MACR_RECAL qui attend une liste et non un tuple + return tuple(result) - def defaut(self, obj): - """Conversion de obj si c'est possible. - """ - for type_permis in self.typ: - # attention si plusieurs types sont permis, l'ordre de self.typ peut influer sur le résultat. - if type_permis == 'R': - if type(obj) in (int, float, long): - return float(obj) - elif type_permis == 'I': - if type(obj) in (int, float, long): - if is_int(obj): - return int(obj) - else: - raise ConversionError("%s (%s) ne peut pas être considéré comme entier" % (repr(obj), type(obj))) + def function(self, o): + raise NotImplementedError, 'cette classe doit être dérivée' + +# ----------------------------------------------------------------------------- +class TypeConversion(Conversion): + """Conversion de type + """ + def __init__(self, typ): + Conversion.__init__(self, 'type', typ) + +# ----------------------------------------------------------------------------- +class IntConversion(TypeConversion): + """Conversion en entier + """ + def __init__(self): + TypeConversion.__init__(self, 'I') + + def function(self, o): + if type(o) is float and is_int(o): + o = int(o) + return o + +# ----------------------------------------------------------------------------- +class FloatConversion(TypeConversion): + """Conversion de type + """ + def __init__(self): + TypeConversion.__init__(self, 'R') + + def function(self, o): + if type(o) in (int, float, long): + o = float(o) + return o + +# ----------------------------------------------------------------------------- +_convertI = IntConversion() +_convertR = FloatConversion() - # autres types : pas de conversion, la validation arrêtera si obj est incorrect. - return obj +def ConversionFactory(name, typ): + if name == 'type': + if 'I' in typ: + return _convertI + elif 'R' in typ: + return _convertR + return None diff --git a/Noyau/N_MCSIMP.py b/Noyau/N_MCSIMP.py index 8d2e939a..2f42ae93 100644 --- a/Noyau/N_MCSIMP.py +++ b/Noyau/N_MCSIMP.py @@ -1,4 +1,4 @@ -#@ MODIF N_MCSIMP Noyau DATE 19/11/2007 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_MCSIMP Noyau DATE 30/11/2007 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -32,7 +32,7 @@ from copy import copy from Noyau.N_ASSD import ASSD,assd from Noyau.N_CO import CO import N_OBJECT -from N_CONVERT import TypeConversion +from N_CONVERT import ConversionFactory class MCSIMP(N_OBJECT.OBJECT): """ @@ -59,7 +59,7 @@ class MCSIMP(N_OBJECT.OBJECT): self.nom=nom self.val = val self.parent = parent - self.convProto = TypeConversion('type', typ=self.definition.type) + self.convProto = ConversionFactory('type', typ=self.definition.type) self.valeur = self.GETVAL(self.val) if parent : self.jdc = self.parent.jdc @@ -78,7 +78,8 @@ class MCSIMP(N_OBJECT.OBJECT): """ if (val is None and hasattr(self.definition,'defaut')) : val = self.definition.defaut - val = self.convProto.convert(val) + if self.convProto: + val = self.convProto.convert(val) return val def get_valeur(self): -- 2.39.2