-#@ 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
# ======================================================================
# 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
-#@ 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
# ======================================================================
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
# ------------------------------------------------------------------------------
-#@ 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
# ======================================================================
# ======================================================================
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):
"""
-#& 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
# ======================================================================
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)
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
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
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='**' ),
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) ),
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
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" ),
-#@ 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
# ======================================================================
import Accas
from Accas import ASSD
+
try:
import aster
# Si le module aster est présent, on le connecte
-#@ 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
# ======================================================================
- 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_ = '????????'
-#@ 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
# ======================================================================
# 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):
-#@ 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
# ======================================================================
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):
"""
-#@ 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
# ======================================================================
-#@ 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
# ======================================================================
# ======================================================================
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):
"""
-#@ 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
# ======================================================================
# ======================================================================
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
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:
-# '<INVALID_REGEXP> %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 = '<S> <TEST_FICHIER> '+texte_erreur
- # aujourd'hui, je ne sais pas déclencher autre chose que <F>...
- 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)<epsi:
- s = '0'
- else:
- #s = format_float % float(x)
- s = format_func(xv, nbch, exp_epsi)
- except ValueError:
- s = x
- if info >= 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)
+
-#@ 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)
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)
+
+
-#@ 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
# ======================================================================
# 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() :
-#@ 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
# ======================================================================
#------------------------------------
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
-#@ 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
# ======================================================================
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):
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):
#------------------------------------
-#@ 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 *
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):
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):
-#@ 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
# ======================================================================
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 *
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)))
+
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()
-#& 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
# ======================================================================
# 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 *
),
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
"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',
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
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",
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
# 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
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",)},
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
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' ),
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",
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,
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
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" ),
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
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") ),
-#@ 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
# ======================================================================
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()
-#@ 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
# ======================================================================
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 ?
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
-#@ 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
# ======================================================================
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):
"""
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
"""
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):