Ce probleme a été corrigé en modifiant la methode isvalid de ETAPE et MACRO_ETAPE.
Maintenant lors des appels à isvalid pour des validités partielles (sd="non")
l'etat de validite de la commande n'est plus modifié (self.state et self.valid).
L'etat reste maintenant coherent et reflete seulement la validite complete.
Dans la methode Build_sd, on poursuit maintenant meme en presence d'une erreur
lors de la construction du concept produit (self.sd).
--- /dev/null
+Ce repertoire contient quelques tests d'Eficas pour Aster.
+
+Les fichiers tests doivent etre lisibles par Eficas sans probleme.
+Le repertoire Recette contient le cas de recette d'eficas_aster.
+On doit pouvoir le relire tel que et le reconstruire de zero (fichier
+normal et poursuite).
+
+Le test torsion.comm est un test pour format AsterV5
--- /dev/null
+DEPL2 = FORMULE(REEL="""(REEL:INST) =
+SIN(OMEGAA*INST)/(OMEGAA**2) """)
+DEPLACE2=CALC_FONC_INTERP( FONCTION=DEPL2,
+ LIST_PARA=L_INST,
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',
+ NOM_RESU='DEPL' )
+
+MONO_X=CALC_CHAR_SEISME( MATR_MASS=MASSE,
+ DIRECTION=( 1., 0., 0.,),
+ MONO_APPUI='OUI' )
+
+
+MACRO_PROJ_BASE(BASE=MODE_MEC,MATR_ASSE_GENE=(
+ _F( MATRICE = CO("MASS_GEN"), MATR_ASSE = MASSE),
+ _F( MATRICE = CO("RIGI_GEN"), MATR_ASSE = RIGIDITE)),
+ VECT_ASSE_GENE=_F( VECTEUR = CO("VECT_X"), VECT_ASSE = MONO_X)
+ )
+
+
+RETOUR()
--- /dev/null
+POURSUITE(CODE=_F( NOM = 'EFICA01A'))
+
+
+TRAN_GE2=DYNA_TRAN_MODAL( MASS_GENE=MGEN_BIC, RIGI_GENE=RGEN_BIC,
+ METHODE='EULER',
+ AMOR_REDUIT=( 0.07, 0.07, ),
+ MODE_STAT=MSTA_BIC,EXCIT=(
+ _F( VECT_GENE = VECT_X1, ACCE = ACCELER1,
+ MULT_APPUI = 'OUI',
+ DIRECTION = ( 1., 0., 0.,), NOEUD = 'NO1',
+ VITE = VITESSE1, DEPL = DEPLACE1),
+ _F( VECT_GENE = VECT_X2, ACCE = ACCELER2,
+ MULT_APPUI = 'OUI',
+ DIRECTION = ( 1., 0., 0.,), NOEUD = 'NO11',
+ VITE = VITESSE2, DEPL = DEPLACE2)),
+ CHOC=_F( GROUP_NO_1 = 'MASSES1',
+ GROUP_NO_2 = 'MASSES2',
+ OBSTACLE = GRILLE,
+ INTITULE = 'NO2/NO12',
+ NORM_OBST = (0., 0., 1.,),
+ DIST_1 = 0.4495,
+ DIST_2 = 0.4495,
+ RIGI_NOR = 2.88E7,
+ AMOR_NOR = 0.,
+ RIGI_TAN = 0.,
+ COULOMB = 0.),
+ INCREMENT=_F( INST_INIT = 0., INST_FIN = 1., PAS = 0.00025),
+ ARCHIVAGE=_F( PAS_ARCH = 8)
+ )
+
+LISTIMP=DEFI_LIST_REEL( DEBUT=0.,
+ INTERVALLE=_F( JUSQU_A = 1., NOMBRE = 500))
+
+RESUA1=REST_BASE_PHYS( RESU_GENE=TRAN_GE1,
+ LIST_INST=LISTIMP,
+ INTERPOL='LIN',
+ NOM_CHAM='DEPL',
+ MULT_APPUI='OUI'
+ )
+
+RESUR1=REST_BASE_PHYS( RESU_GENE=TRAN_GE1,
+ LIST_INST=LISTIMP,
+ INTERPOL='LIN',
+ NOM_CHAM='DEPL',
+ MULT_APPUI='NON'
+ )
+
+
+NO2_DXA=RECU_FONCTION( NOEUD='NO2', NOM_CMP='DX', NOM_CHAM='DEPL',
+ RESULTAT=RESUA1,
+ LIST_INST=LISTIMP, INTERPOL='LIN' )
+
+NO2_DX_A=RECU_FONCTION( NOEUD='NO2', NOM_CMP='DX', NOM_CHAM='DEPL',
+ RESU_GENE=TRAN_GE2,
+ MULT_APPUI='OUI', INTERP_NUME='LIN',
+ LIST_INST=LISTIMP, INTERPOL='LIN' )
+
+DIFF=CALC_FONCTION(COMB=(
+ _F( FONCTION = NO2_DX_A, COEF = 1.),
+ _F( FONCTION = NO2_DXA, COEF = -1.))
+ )
+
+TEST_FONCTION(VALEUR=(
+ _F( FONCTION = DIFF, VALE_PARA = 0.10, VALE_REFE = 0.,
+ CRITERE = 'ABSOLU', PRECISION = 3.E-5),
+ _F( FONCTION = DIFF, VALE_PARA = 0.30, VALE_REFE = 0.,
+ CRITERE = 'ABSOLU', PRECISION = 3.E-5),
+ _F( FONCTION = DIFF, VALE_PARA = 0.50, VALE_REFE = 0.,
+ CRITERE = 'ABSOLU', PRECISION = 3.E-5),
+ _F( FONCTION = DIFF, VALE_PARA = 0.70, VALE_REFE = 0.,
+ CRITERE = 'ABSOLU', PRECISION = 3.E-5),
+ _F( FONCTION = DIFF, VALE_PARA = 1.00, VALE_REFE = 0.,
+ CRITERE = 'ABSOLU', PRECISION = 3.E-5))
+ )
+
+
+FIN()
--- /dev/null
+# MODIF DATE 16/01/2002 AUTEUR DURAND C.DURAND
+# TITRE TEST DE NON REGRESSION DE L IHM EFICAS - DERIVE DE SDND102A
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND
+# REDISTRIBUTION OF THIS FILE.
+# ======================================================================
+# Ce cas test est gere en configuration dans la base ASTER, il sert de
+# modele pour prononcer la recette de l IHM d EFICAS : l objectif est de
+# pouvoir recreer ce test a l identique dans EFICAS a partir d une page
+# blanche.
+# On a donc essaye d y placer toutes les commandes un peu particulieres
+# du langage de commandes d ASTER
+#
+# Il s agit en fait du test SDND102A auquel on a ajoute :
+# la definition d un parametre (VAL)
+# l inclusion d un fichier (INCLUDE)
+# une poursuite (POURSUITE)
+# Il contient ainsi :
+# des parametres, des formules, des macros, des mots cles facteurs repetes
+# (y compris conditionnes par des regles : calc_fonction / COMB),
+# des blocs (mode_iter_simult,calc_char_seisme), un defi_valeur, un parametre.
+#
+#
+# Il faudra y associer quelques recommandations pour la recette :
+# - verifier qu en ouvrant le .com0, il demande bien a browser le .comm puis, en cascade, le .11
+# - verifier qu on peut bien supprimer une commande, un mot cle simple et facteur
+# - verifier les acces a la doc
+#
+
+DEBUT(CODE=_F( NOM = 'EFICA01A'))
+
+MAILLAGE=LIRE_MAILLAGE( )
+
+MAILLA2=LIRE_MAILLAGE( UNITE=19 )
+
+MODELE=AFFE_MODELE( MAILLAGE=MAILLAGE,
+ AFFE=(
+ _F( PHENOMENE = 'MECANIQUE', MODELISATION = 'DIS_T',
+ GROUP_MA = 'RESSORT'),
+ _F( PHENOMENE = 'MECANIQUE', MODELISATION = 'DIS_T',
+ GROUP_NO = 'MASSES') )
+ )
+
+BICHOC=AFFE_MODELE( MAILLAGE=MAILLA2,
+ AFFE=(
+ _F( PHENOMENE = 'MECANIQUE', MODELISATION = 'DIS_T',
+ GROUP_MA = 'RESSORTS'),
+ _F( PHENOMENE = 'MECANIQUE', MODELISATION = 'DIS_T',
+ GROUP_NO = ( 'MASSES1', 'MASSES2',)))
+ )
+
+VAL = 98696.0
+
+CARA_ELE=AFFE_CARA_ELEM( MODELE=MODELE,
+ DISCRET=(
+ _F( CARA = 'K_T_D_L', REPERE = 'GLOBAL', GROUP_MA = 'RESSORT',
+ VALE = (VAL, 0., 0., )),
+ _F( CARA = 'M_T_D_N', GROUP_NO = 'MASSES', VALE = 25.0))
+ )
+
+CARA_BIC=AFFE_CARA_ELEM( MODELE=BICHOC,
+ DISCRET=(
+ _F( CARA = 'K_T_D_L', REPERE = 'GLOBAL', GROUP_MA = 'RESSORTS',
+ VALE = (VAL, 0., 0., )),
+ _F( CARA = 'M_T_D_N', GROUP_NO = 'MASSES1', VALE = 25.0),
+ _F( CARA = 'M_T_D_N', GROUP_NO = 'MASSES2', VALE = 25.0))
+ )
+
+
+CON_LIM=AFFE_CHAR_MECA( MODELE=MODELE,DDL_IMPO=(
+ _F( GROUP_NO = 'ENCASTRE', DX = 0., DY = 0., DZ = 0.),
+ _F( GROUP_NO = 'MASSES', DY = 0., DZ = 0.))
+ )
+
+CL_BICHO=AFFE_CHAR_MECA( MODELE=BICHOC,DDL_IMPO=(
+ _F( GROUP_NO = 'ENCBICHO', DX = 0., DY = 0., DZ = 0.),
+ _F( GROUP_NO = ( 'MASSES1', 'MASSES2',), DY = 0., DZ = 0.))
+ )
+
+MACRO_MATR_ASSE( MODELE=MODELE,
+ CHARGE=CON_LIM,
+ CARA_ELEM=CARA_ELE,
+ NUME_DDL=CO("NUMEDDL"),
+ MATR_ASSE=(
+ _F( MATRICE = CO("RIGIDITE"), OPTION = 'RIGI_MECA'),
+ _F( MATRICE = CO("MASSE"), OPTION = 'MASS_MECA'))
+ )
+
+MACRO_MATR_ASSE( MODELE=BICHOC,
+ CHARGE=CL_BICHO,
+ CARA_ELEM=CARA_BIC,
+ NUME_DDL=CO("NUMDDLC"),
+ MATR_ASSE=(
+ _F( MATRICE = CO("RIGI_BIC"), OPTION = 'RIGI_MECA'),
+ _F( MATRICE = CO("MASS_BIC"), OPTION = 'MASS_MECA'))
+ )
+
+MODE_MEC=MODE_ITER_SIMULT( MATR_A=RIGIDITE, MATR_B=MASSE )
+
+MODE_MEC=NORM_MODE(reuse=MODE_MEC, MODE=MODE_MEC, NORME='MASS_GENE' )
+
+MODE_BIC=MODE_ITER_SIMULT( MATR_A=RIGI_BIC, MATR_B=MASS_BIC,
+ METHODE='JACOBI',
+ OPTION='SANS',
+ CALC_FREQ=_F( OPTION = 'BANDE', FREQ = (1., 10., ))
+ )
+
+MODE_BIC=NORM_MODE(reuse=MODE_BIC, MODE=MODE_BIC, NORME='MASS_GENE' )
+
+MODE_STA=MODE_STATIQUE( MATR_RIGI=RIGIDITE, MATR_MASS=MASSE,
+ MODE_STAT=_F( TOUT = 'OUI', AVEC_CMP = 'DX') )
+
+MSTA_BIC=MODE_STATIQUE( MATR_RIGI=RIGI_BIC, MATR_MASS=MASS_BIC,
+ MODE_STAT=_F( TOUT = 'OUI', AVEC_CMP = 'DX') )
+
+
+L_INST=DEFI_LIST_REEL( DEBUT=0.,
+ INTERVALLE=_F( JUSQU_A = 1., PAS = 0.0001) )
+
+OMEGAA=DEFI_VALEUR( R8=EVAL("""2.*PI*10.""") )
+
+ACCE1 = FORMULE(REEL="""(REEL:INST) = SIN(OMEGAA*INST) """)
+ACCELER1=CALC_FONC_INTERP( FONCTION=ACCE1, LIST_PARA=L_INST,
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',
+ NOM_RESU='ACCE' )
+
+ACCE2 = FORMULE(REEL="""(REEL:INST) =- SIN(OMEGAA*INST) """)
+ACCELER2=CALC_FONC_INTERP( FONCTION=ACCE2, LIST_PARA=L_INST,
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',
+ NOM_RESU='ACCE' )
+
+VITE1 = FORMULE(REEL="""(REEL:INST) =-COS(OMEGAA*INST)/OMEGAA """)
+VITESSE1=CALC_FONC_INTERP( FONCTION=VITE1, LIST_PARA=L_INST,
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',
+ NOM_RESU='VITE' )
+
+DEPL1 = FORMULE(REEL="""(REEL:INST) =-SIN(OMEGAA*INST)/(OMEGAA**2) """)
+DEPLACE1=CALC_FONC_INTERP( FONCTION=DEPL1, LIST_PARA=L_INST,
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',
+ NOM_RESU='DEPL' )
+
+VITE2 = FORMULE(REEL="""(REEL:INST) =COS(OMEGAA*INST)/OMEGAA """)
+VITESSE2=CALC_FONC_INTERP( FONCTION=VITE2, LIST_PARA=L_INST,
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',
+ NOM_RESU='VITE' )
+
+INCLUDE( UNITE=11, INFO=1 )
+
+MUR=DEFI_OBSTACLE( TYPE='PLAN_Z' )
+
+TRAN_GE1=DYNA_TRAN_MODAL( MASS_GENE=MASS_GEN, RIGI_GENE=RIGI_GEN,
+ METHODE='EULER',
+ AMOR_REDUIT=0.07,
+ MODE_STAT=MODE_STA,
+ EXCIT=_F(
+ VECT_GENE = VECT_X,
+ ACCE = ACCELER1,
+ VITE = VITESSE1,
+ DEPL = DEPLACE1,
+ MULT_APPUI = 'OUI',
+ DIRECTION = ( 1., 0., 0.,),
+ NOEUD = 'NO1'),
+ CHOC=_F( GROUP_NO_1 = 'MASSES',
+ OBSTACLE = MUR,
+ INTITULE = 'NO2/MUR',
+ ORIG_OBST = ( -1., 0., 0., ),
+ NORM_OBST = ( 0., 0., 1., ),
+ JEU = 1.1005,
+ RIGI_NOR = 5.76E7,
+ AMOR_NOR = 0.,
+ RIGI_TAN = 0.,
+ COULOMB = 0.0),
+ INCREMENT=_F( INST_INIT = 0., INST_FIN = 1., PAS = 0.0002),
+ ARCHIVAGE=_F( PAS_ARCH = 8)
+ )
+
+
+MULT_X1=CALC_CHAR_SEISME( MATR_MASS=MASS_BIC, DIRECTION=( 1., 0., 0.,),
+ MODE_STAT=MSTA_BIC, NOEUD='NO1' )
+
+MULT_X2=CALC_CHAR_SEISME( MATR_MASS=MASS_BIC, DIRECTION=( 1., 0., 0.,),
+ MODE_STAT=MSTA_BIC, NOEUD='NO11' )
+
+MACRO_PROJ_BASE(BASE=MODE_BIC,
+ MATR_ASSE_GENE=(
+ _F( MATRICE = CO("MGEN_BIC"), MATR_ASSE = MASS_BIC),
+ _F( MATRICE = CO("RGEN_BIC"), MATR_ASSE = RIGI_BIC)),
+ VECT_ASSE_GENE=(
+ _F( VECTEUR = CO("VECT_X1"), VECT_ASSE = MULT_X1),
+ _F( VECTEUR = CO("VECT_X2"), VECT_ASSE = MULT_X2))
+ )
+
+
+GRILLE=DEFI_OBSTACLE( TYPE='BI_PLAN_Z' )
+
+
+FIN()
--- /dev/null
+
+
+DEBUT();
+
+MA=LIRE_MAILLAGE();
+
+kk=DEFI_MATERIAU(ELAS=_F(E=56.24,
+ NU=0.3,),);
+
+uu=DEFI_MATERIAU(ELAS=_F(E=56.24,
+ NU=0.3,),);
+
+sansnom=DEFI_MATERIAU(ELAS=_F(E=56.24,
+ NU=0.3,),);
+
+FIN();
--- /dev/null
+
+
+DEBUT();
+
+MA=LIRE_MAILLAGE();
+
+kk=DEFI_MATERIAU(ELAS=_F(E=56.24,
+ NU=0.3,),);
+
+uu=DEFI_MATERIAU(ELAS=_F(E=56.24,
+ NU=0.3,),);
+
+sansnom=DEFI_MATERIAU(ELAS=_F(E=56.24,
+ NU=0.3,),);
+
+sansnom=DEFI_MATERIAU(ELAS=_F(E=56.24,
+ NU=0.3,),);
+
+FIN();
--- /dev/null
+
+
+DEBUT();
+
+ma=LIRE_MAILLAGE();
+
+air=DEFI_MATERIAU();
+
+champmat=AFFE_MATERIAU(MAILLAGE=ma,
+ AFFE=_F(TOUT='OUI',
+ MATER=air,),);
+
+mo=AFFE_MODELE(MAILLAGE=ma,
+ AFFE=_F(TOUT='OUI',
+ PHENOMENE='ACOUSTIQUE',
+ MODELISATION='3D',),);
+
+characou=AFFE_CHAR_ACOU(MODELE=mo,
+ VITE_FACE=_F(GROUP_MA=('ENTREE','SORTIE','TOTO','TITI',),
+ VNOR=('RI',0.014,0.0,),),);
+
+MACRO_MATR_ASSE(MODELE=mo,
+ NUME_DDL=CO('num'),
+ MATR_ASSE=_F(MATRICE=CO('matasm'),
+ OPTION='MASS_ACOU',),);
+
+vectelem=CALC_VECT_ELEM(OPTION='CHAR_ACOU',
+ CHAM_MATER=champmat,
+ CHARGE=characou,);
+
+sansnom=ASSE_VECTEUR(VECT_ELEM=None,
+ NUME_DDL=num,);
+
+sansnom=COMB_CHAM_NO(COMB_C=_F(CHAM_NO=None,),);
+
+matasm=FACT_LDLT(reuse =matasm,
+ MATR_ASSE=matasm,);
+
+sansnom=RESO_LDLT(MATR_FACT=matasm,
+ CHAM_NO=None,
+ );
\ No newline at end of file
--- /dev/null
+ DEBUT();
+
+
+ INCLUDE(UNITE: 80);
+
+TPS = 1. ;
+
+
+
+SY = 90. ;
+
+
+
+A = 1. ;
+H = 0.01 ;
+N = 50 ;
+T = 0.01 ;
+TD = DEFI_VALEUR(R8: EVAL(T*180./PI)) ;
+CT = DEFI_VALEUR(R8: EVAL(COS(T))) ;
+ST = DEFI_VALEUR(R8: EVAL(SIN(T))) ;
+MST= DEFI_VALEUR(R8: EVAL(-ST));
+RAT= DEFI_VALEUR(R8: EVAL(H/A));
+
+
+K_REF = DEFI_VALEUR( R8: EVAL(0.9845615*Q1) );
+EPS_Y = DEFI_VALEUR( R8: EVAL( (1./K_REF)**5. ));
+YOUNG = DEFI_VALEUR( R8: EVAL(SY/EPS_Y) );
+
+!FORMULE( REEL: (
+ RP(REEL:EPSI) = K_REF * SY * EPSI**0.2
+ ) );
+
+ECH_EPSI = DEFI_LIST_REEL (
+ DEBUT: EPS_Y
+ INTERVALLE: (
+ JUSQU_A: 3.
+ NOMBRE : 300
+ )
+ ) ;
+
+TRAC = CALC_FONC_INTERP (
+ FONCTION: RP
+ LIST_PARA : ECH_EPSI
+ PROL_GAUCHE: 'LINEAIRE'
+ PROL_DROIT : 'LINEAIRE'
+ ) ;
+
+
+ PRE_GIBI();
+ MA = LIRE_MAILLAGE();
+
+&MA = DEFI_GROUP
+ (
+ MAILLAGE: MA
+ CREA_GROUP_NO:
+ (
+ TOUT_GROUP_MA: 'OUI'
+ )
+ ) ;
+
+
+ CUIVRE = DEFI_MATERIAU
+ (
+ ELAS :
+ (
+ E : YOUNG
+ NU: 0.3
+ )
+ TRACTION : (
+ SIGM: TRAC
+ )
+ NON_LOCAL: (
+ LONG_CARA: LC
+ )
+ ) ;
+
+ CHMAT = AFFE_MATERIAU
+ (
+ MAILLAGE: MA
+ AFFE :
+ (
+ GROUP_MA: TRANCHE
+ MATER : CUIVRE
+ )
+ ) ;
+
+
+ MO_MECA = AFFE_MODELE
+ (
+ MAILLAGE: MA
+ AFFE :
+ (
+ GROUP_MA : TRANCHE
+ PHENOMENE : 'MECANIQUE'
+ MODELISATION : '3D_SI'
+ )
+ ) ;
+
+ MO_DELO = AFFE_MODELE (
+ MAILLAGE: MA
+ AFFE:
+ (
+ GROUP_MA: TRANCHE
+ PHENOMENE: 'NON_LOCAL'
+ MODELISATION: '3D'
+ )
+ ) ;
+
+
+!FORMULE ( REEL : ( UX_IMP(REEL: INST, REEL:X, REEL:Y) =
+ -INST*RAT*Y
+ ));
+!FORMULE ( REEL : ( UY_IMP(REEL: INST, REEL:X, REEL:Y) =
+ INST*RAT*X
+ ));
+!FORMULE ( REEL : ( UZ_IMP(REEL:X, REEL:Y) = 0. ));
+
+
+ ANCRAGE = AFFE_CHAR_MECA (
+ MODELE : MO_MECA
+ FACE_IMPO:
+ (
+ GROUP_MA: BAS
+ DX: 0.
+ DY: 0.
+ DZ: 0.
+ )
+ ) ;
+
+ TORSION = AFFE_CHAR_MECA_F (
+ MODELE : MO_MECA
+ FACE_IMPO:
+ (
+ GROUP_MA: HAUT
+ DX : UX_IMP
+ DY : UY_IMP
+ DZ : UZ_IMP
+ )
+ ) ;
+
+
+ SYMETRIE = AFFE_CHAR_MECA (
+ MODELE: MO_MECA
+ LIAISON_GROUP: (
+ GROUP_MA_1 : SYM_CY_0
+ GROUP_MA_2 : SYM_CY_1
+ SANS_GROUP_NO: (HAUT, BAS)
+ DDL_1 : ('DX' 'DY' )
+ DDL_2 : ('DX' )
+ COEF_MULT_1 : (CT MST)
+ COEF_MULT_2 : (-1.)
+ COEF_IMPO : 0.
+ CENTRE : (0. 0. 0.)
+ ANGL_NAUT : (TD 0. 0.)
+ SOMMET : 'OUI'
+ )
+ LIAISON_GROUP: (
+ GROUP_MA_1 : SYM_CY_0
+ GROUP_MA_2 : SYM_CY_1
+ SANS_GROUP_NO: (HAUT, BAS)
+ DDL_1 : ('DX' 'DY' )
+ DDL_2 : ('DY' )
+ COEF_MULT_1 : (ST CT)
+ COEF_MULT_2 : (-1.)
+ COEF_IMPO : 0.
+ CENTRE : (0. 0. 0.)
+ ANGL_NAUT : (TD 0. 0.)
+ SOMMET : 'OUI'
+ )
+ LIAISON_GROUP: (
+ GROUP_MA_1 : SYM_CY_0
+ GROUP_MA_2 : SYM_CY_1
+ SANS_GROUP_NO: (HAUT, BAS)
+ DDL_1 : ('DZ')
+ DDL_2 : ('DZ')
+ COEF_MULT_1 : (1.)
+ COEF_MULT_2 : (-1.)
+ COEF_IMPO : 0.
+ CENTRE : (0. 0. 0.)
+ ANGL_NAUT : (TD 0. 0.)
+ SOMMET : 'OUI'
+ )
+ ) ;
+
+
+ INSTANTS = DEFI_LIST_REEL
+ (
+ DEBUT: 0.
+ INTERVALLE:
+ (JUSQU_A: TPS NOMBRE: 50)
+ ) ;
+
+
+
+ EVOL = STAT_NON_LINE
+ (
+ MODELE: MO_MECA
+ CHAM_MATER: CHMAT
+ EXCIT :
+ (CHARGE: TORSION)
+ (CHARGE: ANCRAGE)
+ (CHARGE: SYMETRIE)
+ INCREMENT:
+ (
+ LIST_INST: INSTANTS
+ SUBD_PAS : 5
+ SUBD_PAS_MINI: 0.0001
+ )
+ COMP_INCR:
+ (
+ RELATION: 'PLAS_GRAD_TRAC'
+ DEFORMATION: 'PETIT'
+ )
+ NEWTON:
+ (
+ MATRICE:'ELASTIQUE'
+ )
+ CONVERGENCE:
+ (
+ RESI_GLOB_RELA: 1.E-4
+ ITER_GLOB_MAXI: 500
+ ITER_INTE_MAXI: 250
+ RESI_INTE_RELA: 1.E-9
+ )
+ ARCHIVAGE: (
+ ARCH_ETAT_INIT: 'OUI'
+ LIST_INST : INSTANTS
+ )
+
+ MODELE_NON_LOCAL: MO_DELO
+ LAGR_NON_LOCAL: (
+ RESI_PRIM_ABSO: 1.E-9
+ RESI_DUAL_ABSO: 1.E-4
+ RHO: 1000.
+ ITER_PRIM_MAXI: 100
+ ITER_DUAL_MAXI: 10
+ )
+ ) ;
+
+
+
+&EVOL = CALC_ELEM (
+ MODELE: MO_MECA
+ CHAM_MATER: CHMAT
+ RESULTAT : EVOL
+ OPTION: ('SIEF_ELNO_ELGA' 'VARI_ELNO_ELGA')
+ ) ;
+
+&EVOL = CALC_NO (
+ RESULTAT: EVOL
+ OPTION: ('FORC_NODA'
+ 'SIEF_NOEU_ELGA' 'VARI_NOEU_ELGA')
+ ) ;
+
+
+ECHAN = INTE_MAIL_3D (
+ MAILLAGE : MA
+ DEFI_SEGMENT: (
+ GROUP_NO_ORIG: O1
+ GROUP_NO_EXTR: A1
+ )
+ ) ;
+
+ PLAS_CUM = POST_RELEVE_T (
+ ACTION: (
+ INTITULE : 'P'
+ CHEMIN : ECHAN
+ RESULTAT : EVOL
+ NOM_CHAM : 'VARI_NOEU_ELGA'
+ NOM_CMP : 'V1'
+ INST : TPS
+ OPERATION: 'EXTRACTION'
+ )
+ ) ;
+
+
+ SIGMA = POST_RELEVE_T (
+ ACTION: (
+ INTITULE : 'SIYZ'
+ CHEMIN : ECHAN
+ RESULTAT : EVOL
+ NOM_CHAM : 'SIEF_NOEU_ELGA'
+ NOM_CMP : 'SIYZ'
+ INST : TPS
+ OPERATION: 'EXTRACTION'
+ )
+ ) ;
+
+
+
+ MOM_A = POST_RELEVE_T (
+ ACTION: (
+ INTITULE : 'MOMENT'
+ GROUP_NO : HAUT
+ RESULTAT : EVOL
+ NOM_CHAM : 'FORC_NODA'
+ RESULTANTE: ('DX' 'DY' 'DZ')
+ MOMENT : ('DRX' 'DRY' 'DRZ')
+ POINT : (0. 0. H)
+ TOUT_ORDRE: 'OUI'
+ OPERATION : 'EXTRACTION'
+ )
+ ) ;
+
+ MOM_KA_A = RECU_FONCTION (
+ TABLE : MOM_A
+ PARA_X: 'INST'
+ PARA_Y: 'MOMENT_Z'
+ ) ;
+
+!FORMULE ( REEL:( MA3_KA(REEL: INST) = MOM_KA_A(INST)*360/TD/A**3/SY));
+
+
+
+ DEFUFI(
+ IMPRESSION: (
+ NOM: 'POST_PY'
+ UNITE: 81
+ )
+ ) ;
+
+
+
+ IMPR_COURBE(
+ FORMAT: 'AGRAF'
+ FICHIER: 'POST_PY'
+ COURBE: (
+ FONCTION : MA3_KA
+ LIST_PARA: INSTANTS
+ )
+ ) ;
+
+
+ FIN();
+
+
+IMPR_TABLE(TABLE:SIGMA);
+IMPR_TABLE(TABLE:PLAS_CUM);
+
+ FIN();
\ No newline at end of file
('Mots-clés inconnus','mc_inconnus'),
]
),
+ ('Aide',[
+ ('Aide EFICAS','aideEFICAS'),
+ ]
+ ),
]
button_defs = (('New24',"newJDC","Création d'un nouveau fichier",'always'),
try:
from prefs import labels
except:
- labels= ('Fichier','Edition','Jeu de commandes','Catalogue','Browsers','Options')
+ labels= ('Fichier','Edition','Jeu de commandes','Catalogue','Browsers','Options','Aide')
def init(self):
self.menudict={}
--- /dev/null
+ DEBUT();
+
+
+ INCLUDE(UNITE: 80);
+
+TPS = 1. ;
+
+
+
+SY = 90. ;
+
+
+
+A = 1. ;
+H = 0.01 ;
+N = 50 ;
+T = 0.01 ;
+TD = DEFI_VALEUR(R8: EVAL(T*180./PI)) ;
+CT = DEFI_VALEUR(R8: EVAL(COS(T))) ;
+ST = DEFI_VALEUR(R8: EVAL(SIN(T))) ;
+MST= DEFI_VALEUR(R8: EVAL(-ST));
+RAT= DEFI_VALEUR(R8: EVAL(H/A));
+
+
+K_REF = DEFI_VALEUR( R8: EVAL(0.9845615*Q1) );
+EPS_Y = DEFI_VALEUR( R8: EVAL( (1./K_REF)**5. ));
+YOUNG = DEFI_VALEUR( R8: EVAL(SY/EPS_Y) );
+
+!FORMULE( REEL: (
+ RP(REEL:EPSI) = K_REF * SY * EPSI**0.2
+ ) );
+
+ECH_EPSI = DEFI_LIST_REEL (
+ DEBUT: EPS_Y
+ INTERVALLE: (
+ JUSQU_A: 3.
+ NOMBRE : 300
+ )
+ ) ;
+
+TRAC = CALC_FONC_INTERP (
+ FONCTION: RP
+ LIST_PARA : ECH_EPSI
+ PROL_GAUCHE: 'LINEAIRE'
+ PROL_DROIT : 'LINEAIRE'
+ ) ;
+
+
+ PRE_GIBI();
+ MA = LIRE_MAILLAGE();
+
+&MA = DEFI_GROUP
+ (
+ MAILLAGE: MA
+ CREA_GROUP_NO:
+ (
+ TOUT_GROUP_MA: 'OUI'
+ )
+ ) ;
+
+
+ CUIVRE = DEFI_MATERIAU
+ (
+ ELAS :
+ (
+ E : YOUNG
+ NU: 0.3
+ )
+ TRACTION : (
+ SIGM: TRAC
+ )
+ NON_LOCAL: (
+ LONG_CARA: LC
+ )
+ ) ;
+
+ CHMAT = AFFE_MATERIAU
+ (
+ MAILLAGE: MA
+ AFFE :
+ (
+ GROUP_MA: TRANCHE
+ MATER : CUIVRE
+ )
+ ) ;
+
+
+ MO_MECA = AFFE_MODELE
+ (
+ MAILLAGE: MA
+ AFFE :
+ (
+ GROUP_MA : TRANCHE
+ PHENOMENE : 'MECANIQUE'
+ MODELISATION : '3D_SI'
+ )
+ ) ;
+
+ MO_DELO = AFFE_MODELE (
+ MAILLAGE: MA
+ AFFE:
+ (
+ GROUP_MA: TRANCHE
+ PHENOMENE: 'NON_LOCAL'
+ MODELISATION: '3D'
+ )
+ ) ;
+
+
+!FORMULE ( REEL : ( UX_IMP(REEL: INST, REEL:X, REEL:Y) =
+ -INST*RAT*Y
+ ));
+!FORMULE ( REEL : ( UY_IMP(REEL: INST, REEL:X, REEL:Y) =
+ INST*RAT*X
+ ));
+!FORMULE ( REEL : ( UZ_IMP(REEL:X, REEL:Y) = 0. ));
+
+
+ ANCRAGE = AFFE_CHAR_MECA (
+ MODELE : MO_MECA
+ FACE_IMPO:
+ (
+ GROUP_MA: BAS
+ DX: 0.
+ DY: 0.
+ DZ: 0.
+ )
+ ) ;
+
+ TORSION = AFFE_CHAR_MECA_F (
+ MODELE : MO_MECA
+ FACE_IMPO:
+ (
+ GROUP_MA: HAUT
+ DX : UX_IMP
+ DY : UY_IMP
+ DZ : UZ_IMP
+ )
+ ) ;
+
+
+ SYMETRIE = AFFE_CHAR_MECA (
+ MODELE: MO_MECA
+ LIAISON_GROUP: (
+ GROUP_MA_1 : SYM_CY_0
+ GROUP_MA_2 : SYM_CY_1
+ SANS_GROUP_NO: (HAUT, BAS)
+ DDL_1 : ('DX' 'DY' )
+ DDL_2 : ('DX' )
+ COEF_MULT_1 : (CT MST)
+ COEF_MULT_2 : (-1.)
+ COEF_IMPO : 0.
+ CENTRE : (0. 0. 0.)
+ ANGL_NAUT : (TD 0. 0.)
+ SOMMET : 'OUI'
+ )
+ LIAISON_GROUP: (
+ GROUP_MA_1 : SYM_CY_0
+ GROUP_MA_2 : SYM_CY_1
+ SANS_GROUP_NO: (HAUT, BAS)
+ DDL_1 : ('DX' 'DY' )
+ DDL_2 : ('DY' )
+ COEF_MULT_1 : (ST CT)
+ COEF_MULT_2 : (-1.)
+ COEF_IMPO : 0.
+ CENTRE : (0. 0. 0.)
+ ANGL_NAUT : (TD 0. 0.)
+ SOMMET : 'OUI'
+ )
+ LIAISON_GROUP: (
+ GROUP_MA_1 : SYM_CY_0
+ GROUP_MA_2 : SYM_CY_1
+ SANS_GROUP_NO: (HAUT, BAS)
+ DDL_1 : ('DZ')
+ DDL_2 : ('DZ')
+ COEF_MULT_1 : (1.)
+ COEF_MULT_2 : (-1.)
+ COEF_IMPO : 0.
+ CENTRE : (0. 0. 0.)
+ ANGL_NAUT : (TD 0. 0.)
+ SOMMET : 'OUI'
+ )
+ ) ;
+
+
+ INSTANTS = DEFI_LIST_REEL
+ (
+ DEBUT: 0.
+ INTERVALLE:
+ (JUSQU_A: TPS NOMBRE: 50)
+ ) ;
+
+
+
+ EVOL = STAT_NON_LINE
+ (
+ MODELE: MO_MECA
+ CHAM_MATER: CHMAT
+ EXCIT :
+ (CHARGE: TORSION)
+ (CHARGE: ANCRAGE)
+ (CHARGE: SYMETRIE)
+ INCREMENT:
+ (
+ LIST_INST: INSTANTS
+ SUBD_PAS : 5
+ SUBD_PAS_MINI: 0.0001
+ )
+ COMP_INCR:
+ (
+ RELATION: 'PLAS_GRAD_TRAC'
+ DEFORMATION: 'PETIT'
+ )
+ NEWTON:
+ (
+ MATRICE:'ELASTIQUE'
+ )
+ CONVERGENCE:
+ (
+ RESI_GLOB_RELA: 1.E-4
+ ITER_GLOB_MAXI: 500
+ ITER_INTE_MAXI: 250
+ RESI_INTE_RELA: 1.E-9
+ )
+ ARCHIVAGE: (
+ ARCH_ETAT_INIT: 'OUI'
+ LIST_INST : INSTANTS
+ )
+
+ MODELE_NON_LOCAL: MO_DELO
+ LAGR_NON_LOCAL: (
+ RESI_PRIM_ABSO: 1.E-9
+ RESI_DUAL_ABSO: 1.E-4
+ RHO: 1000.
+ ITER_PRIM_MAXI: 100
+ ITER_DUAL_MAXI: 10
+ )
+ ) ;
+
+
+
+&EVOL = CALC_ELEM (
+ MODELE: MO_MECA
+ CHAM_MATER: CHMAT
+ RESULTAT : EVOL
+ OPTION: ('SIEF_ELNO_ELGA' 'VARI_ELNO_ELGA')
+ ) ;
+
+&EVOL = CALC_NO (
+ RESULTAT: EVOL
+ OPTION: ('FORC_NODA'
+ 'SIEF_NOEU_ELGA' 'VARI_NOEU_ELGA')
+ ) ;
+
+
+ECHAN = INTE_MAIL_3D (
+ MAILLAGE : MA
+ DEFI_SEGMENT: (
+ GROUP_NO_ORIG: O1
+ GROUP_NO_EXTR: A1
+ )
+ ) ;
+
+ PLAS_CUM = POST_RELEVE_T (
+ ACTION: (
+ INTITULE : 'P'
+ CHEMIN : ECHAN
+ RESULTAT : EVOL
+ NOM_CHAM : 'VARI_NOEU_ELGA'
+ NOM_CMP : 'V1'
+ INST : TPS
+ OPERATION: 'EXTRACTION'
+ )
+ ) ;
+
+
+ SIGMA = POST_RELEVE_T (
+ ACTION: (
+ INTITULE : 'SIYZ'
+ CHEMIN : ECHAN
+ RESULTAT : EVOL
+ NOM_CHAM : 'SIEF_NOEU_ELGA'
+ NOM_CMP : 'SIYZ'
+ INST : TPS
+ OPERATION: 'EXTRACTION'
+ )
+ ) ;
+
+
+
+ MOM_A = POST_RELEVE_T (
+ ACTION: (
+ INTITULE : 'MOMENT'
+ GROUP_NO : HAUT
+ RESULTAT : EVOL
+ NOM_CHAM : 'FORC_NODA'
+ RESULTANTE: ('DX' 'DY' 'DZ')
+ MOMENT : ('DRX' 'DRY' 'DRZ')
+ POINT : (0. 0. H)
+ TOUT_ORDRE: 'OUI'
+ OPERATION : 'EXTRACTION'
+ )
+ ) ;
+
+ MOM_KA_A = RECU_FONCTION (
+ TABLE : MOM_A
+ PARA_X: 'INST'
+ PARA_Y: 'MOMENT_Z'
+ ) ;
+
+!FORMULE ( REEL:( MA3_KA(REEL: INST) = MOM_KA_A(INST)*360/TD/A**3/SY));
+
+
+
+ DEFUFI(
+ IMPRESSION: (
+ NOM: 'POST_PY'
+ UNITE: 81
+ )
+ ) ;
+
+
+
+ IMPR_COURBE(
+ FORMAT: 'AGRAF'
+ FICHIER: 'POST_PY'
+ COURBE: (
+ FONCTION : MA3_KA
+ LIST_PARA: INSTANTS
+ )
+ ) ;
+
+
+ FIN();
+
+
+IMPR_TABLE(TABLE:SIGMA);
+IMPR_TABLE(TABLE:PLAS_CUM);
+
+ FIN();
\ No newline at end of file
if len(nom) > 8 and self.jdc.definition.code == 'ASTER':
return 0,"Nom de concept trop long (maxi 8 caractères)"
self.init_modif()
+ #
+ # On verifie d'abord si les mots cles sont valides
+ #
if not self.isvalid(sd='non') : return 0,"Nommage du concept refusé : l'opérateur n'est pas valide"
#
# Cas particulier des opérateurs obligatoirement réentrants
#
if self.definition.reentrant == 'o':
- # FR : appel à get_sdprod incorrect : il faut appeler get_sd_avant_etape
- #self.sd = self.reuse = self.jdc.get_sdprod(nom)
self.sd = self.reuse = self.jdc.get_sd_avant_etape(nom,self)
if self.sd != None :
self.sdnom=self.sd.nom
if self.sd == None :
if self.parent.get_sd_autour_etape(nom,self):
# Un concept de ce nom existe dans le voisinage de l'etape courante
- # On force self.valid a 0 car l appel a isvalid precedent l a mis a 1
- # mais ceci indique seulement une validité partielle
- # isvalid ne devrait peut etre pas mettre l attribut valid à 1 si sd == 'non'
- self.valid=0
# On retablit l'ancien concept reentrant s'il existait
if old_reuse:
self.sd=self.reuse=old_reuse
# Dans le cas où old_nom == sansnom, isvalid retourne 0 alors que ...
# par contre si le concept existe et qu'il s'appelle sansnom c'est que l'étape est valide
# on peut donc le nommer sans test préalable
- self.sd.nom=nom
- self.sdnom=nom
- return 1,"Nommage du concept effectué"
+ if self.parent.get_sd_autour_etape(nom,self):
+ return 0,"Nommage du concept refuse : un concept de meme nom existe deja"
+ else:
+ self.sd.nom=nom
+ self.sdnom=nom
+ return 1,"Nommage du concept effectué"
if self.isvalid() :
# Normalement l appel de isvalid a mis a jour le concept produit (son type)
# Il suffit de spécifier l attribut nom de sd pour le nommer si le nom n est pas
# CCAR : cette modification ne corrige le probleme qu'en partie. Il faudrait probablement
# supprimer les erreurs fatales (exception ) et retourner systematiquement un objet produit
# meme en cas d'erreur et reporter l'emission du message d'erreur a la phase de validation
+ #
if not self.isvalid(sd='non') : return
- else:self.state='undetermined'
+ #else:self.state='undetermined'
self.sdnom=nom
try:
if self.parent:
self.Execute()
return sd
except AsException,e:
- raise AsException("Etape ",self.nom,'ligne : ',self.appel[0],
- 'fichier : ',self.appel[1],e)
+ # Une erreur s'est produite lors de la construction du concept
+ # Comme on est dans EFICAS, on essaie de poursuivre quand meme
+ # Si on poursuit, on a le choix entre deux possibilités :
+ # 1. on annule la sd associée à self
+ # 2. on la conserve mais il faut la retourner
+ # En plus il faut rendre coherents sdnom et sd.nom
+ self.sd=None
+ self.sdnom=None
+ self.valid=0
+ return self.sd
+ #raise AsException("Etape ",self.nom,'ligne : ',self.appel[0],
+ # 'fichier : ',self.appel[1],e)
except EOFError:
# XXX Normalement le contexte courant doit etre le parent.
# Il n'y a pas de raison de remettre le contexte au parent
return self.valid
else:
valid = 1
+ # on teste les enfants
+ for child in self.mc_liste :
+ if not child.isvalid():
+ valid = 0
+ break
+ # on teste les règles de self
+ text_erreurs,test_regles = self.verif_regles()
+ if not test_regles :
+ if cr == 'oui' : self.cr.fatal(string.join(("Règle(s) non respectée(s) :", text_erreurs)))
+ valid = 0
+ if self.reste_val != {}:
+ if cr == 'oui' :
+ self.cr.fatal("Mots cles inconnus :" + string.join(self.reste_val.keys(),','))
+ valid=0
+ if sd == "non":
+ # Dans ce cas, on ne teste qu'une validité partielle (sans tests sur le concept produit)
+ # Conséquence : on ne change pas l'état ni l'attribut valid, on retourne simplement
+ # l'indicateur de validité valid
+ return valid
+ #
+ # On complète les tests avec ceux sur le concept produit
+ #
if hasattr(self,'valid'):
old_valid = self.valid
else:
old_valid = None
- # on teste si demandé la structure de donnée (par défaut)
- if sd == 'oui':
- if self.sd != None :pass
- # Ce test parait superflu. Il est sur que si sd existe il s'agit du concept produit
- # Quelle pourrait etre la raison qui ferait que sd n existe pas ???
- #if self.jdc.get_sdprod(self.sd.nom) == None :
- # if cr == 'oui' :
- # self.cr.fatal('Le concept '+self.sd.nom+" n'existe pas")
- # valid = 0
- else :
- if cr == 'oui' : self.cr.fatal("Concept retourné non défini")
- valid = 0
- # on teste, si elle existe, le nom de la sd (sa longueur doit etre <= 8 caractères)
- if self.sd != None :
+
+ if self.sd == None:
+ # Le concept produit n'existe pas => erreur
+ if cr == 'oui' : self.cr.fatal("Concept retourné non défini")
+ valid = 0
+ else:
+ # on teste, si elle existe, le nom de la sd (sa longueur doit etre <= 8 caractères)
# la SD existe déjà : on regarde son nom
if self.sd.nom != None :
if len(self.sd.nom) > 8 and self.jdc.definition.code == 'ASTER' :
if cr == 'oui' :
self.cr.fatal("Pas de nom pour le concept retourné")
valid = 0
- # on teste les enfants
- for child in self.mc_liste :
- if not child.isvalid():
- valid = 0
- break
- # on teste les règles de self
- text_erreurs,test_regles = self.verif_regles()
- if not test_regles :
- if cr == 'oui' : self.cr.fatal(string.join(("Règle(s) non respectée(s) :", text_erreurs)))
- valid = 0
- if self.reste_val != {}:
- if cr == 'oui' :
- self.cr.fatal("Mots cles inconnus :" + string.join(self.reste_val.keys(),','))
- valid=0
- if sd == 'oui' and valid:
+ if valid:
valid = self.update_sdprod(cr)
self.valid = valid
self.state = 'unchanged'
return self.valid
else:
valid = 1
+ # on teste les mots cles de la commande
+ for child in self.mc_liste :
+ if not child.isvalid():
+ valid = 0
+ break
+ # on teste les règles de la commande
+ text_erreurs,test_regles = self.verif_regles()
+ if not test_regles :
+ if cr == 'oui' : self.cr.fatal(string.join(("Règle(s) non respectée(s) :", text_erreurs)))
+ valid = 0
+ if self.reste_val != {}:
+ if cr == 'oui' :
+ self.cr.fatal("Mots cles inconnus :" + string.join(self.reste_val.keys(),','))
+ valid=0
+ if sd == "non":
+ # Dans ce cas, on ne calcule qu'une validite partielle, on ne modifie pas l'état de self
+ # on retourne simplement l'indicateur valid
+ return valid
if hasattr(self,'valid'):
old_valid = self.valid
else:
if cr == 'oui' :
self.cr.fatal("Pas de nom pour le concept retourné")
valid = 0
- # on teste les enfants
- for child in self.mc_liste :
- if not child.isvalid():
- valid = 0
- break
- # on teste les règles de self
- text_erreurs,test_regles = self.verif_regles()
- if not test_regles :
- if cr == 'oui' : self.cr.fatal(string.join(("Règle(s) non respectée(s) :", text_erreurs)))
- valid = 0
- if self.reste_val != {}:
- if cr == 'oui' :
- self.cr.fatal("Mots cles inconnus :" + string.join(self.reste_val.keys(),','))
- valid=0
- if sd == 'oui' and valid:
+ if valid:
valid = self.update_sdprod(cr)
# Si la macro comprend des etapes internes, on teste leur validite
for e in self.etapes:
--- /dev/null
+import glob,os
+
+copyright="""# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 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.
+#
+#
+# ======================================================================
+"""
+
+listfich=glob.glob('*')
+for fich in listfich:
+ if not os.path.isfile(fich):continue
+ print "Lecture ",fich
+ f=open(fich,'r')
+ text=f.read()
+ f.close()
+ os.rename(fich,fich+'.bak')
+
+ text=copyright + text
+
+ f2=open(fich,'w')
+ f2.write(text)
+ f2.close()
+