From 0d46fd52a1ecb7221e33cbf9bf9d7d997b296ed0 Mon Sep 17 00:00:00 2001 From: eficas <> Date: Thu, 16 Oct 2003 14:31:22 +0000 Subject: [PATCH] =?utf8?q?CCAR:=20merge=20du=20developpement=20realise=20d?= =?utf8?q?ans=20la=20branche=20BR=5FPN=5FVAL=20qui=20int=C3=A9gre=20les=20?= =?utf8?q?validateurs?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Aster/Cata/Macro/calc_precont_ops.py | 14 +- Aster/Cata/Macro/macr_adap_mail_ops.py | 54 +- Aster/Cata/Macro/macro_miss_3d_ops.py | 4 +- Aster/Cata/cata_STA7.py | 1423 +++++++++++++++++++++--- Aster/Cata/cata_reduit.py | 576 ++++++++++ Aster/Cata/ops.py | 3 + Aster/NEWS | 8 +- Aster/Tests/err.comm | 25 +- Editeur/Objecttreeitem.py | 4 +- Editeur/appli.py | 2 +- Editeur/componuplet.py | 11 +- Editeur/composimp.py | 666 +++++++---- Editeur/utils.py | 15 +- Editeur/widgets.py | 8 +- Ihm/I_ETAPE.py | 33 +- Ihm/I_JDC_CATA.py | 1 + Ihm/I_MACRO_ETAPE.py | 27 +- Ihm/I_MCSIMP.py | 248 ++++- Ihm/I_PROC_ETAPE.py | 20 + Ihm/I_VALIDATOR.py | 251 ++++- Minicode/Test2/deb1.comm | 17 +- Minicode/Test3/main.comm | 31 +- Minicode/cata_saturne.py | 4 + Minicode/cata_saturne2.py | 5 +- Minicode/ops.py | 234 +++- Noyau/N_BLOC.py | 21 +- Noyau/N_CR.py | 3 +- Noyau/N_ETAPE.py | 22 +- Noyau/N_FACT.py | 50 +- Noyau/N_JDC.py | 10 +- Noyau/N_JDC_CATA.py | 4 +- Noyau/N_MACRO.py | 30 +- Noyau/N_MACRO_ETAPE.py | 43 +- Noyau/N_MCCOMPO.py | 18 +- Noyau/N_OBJECT.py | 2 +- Noyau/N_OPER.py | 32 +- Noyau/N_PROC.py | 28 +- Noyau/N_PROC_ETAPE.py | 2 +- Noyau/N_REGLE.py | 12 +- Noyau/N_SIMP.py | 30 +- Noyau/nommage.py | 6 +- Validation/V_ENSEMBLE.py | 2 +- Validation/V_ETAPE.py | 8 +- Validation/V_EXCLUS.py | 2 +- Validation/V_JDC.py | 2 +- Validation/V_MACRO_ETAPE.py | 8 +- Validation/V_MCBLOC.py | 5 +- Validation/V_MCFACT.py | 5 +- Validation/V_MCLIST.py | 6 +- Validation/V_MCSIMP.py | 57 +- Validation/V_PRESENT_ABSENT.py | 4 +- Validation/V_PRESENT_PRESENT.py | 2 +- Validation/V_PROC_ETAPE.py | 2 +- 53 files changed, 3336 insertions(+), 764 deletions(-) create mode 100755 Aster/Cata/cata_reduit.py diff --git a/Aster/Cata/Macro/calc_precont_ops.py b/Aster/Cata/Macro/calc_precont_ops.py index 4d3a9776..bb42a62c 100644 --- a/Aster/Cata/Macro/calc_precont_ops.py +++ b/Aster/Cata/Macro/calc_precont_ops.py @@ -1,4 +1,4 @@ -#@ MODIF calc_precont_ops Macro DATE 01/04/2003 AUTEUR DURAND C.DURAND +#@ MODIF calc_precont_ops Macro DATE 15/09/2003 AUTEUR ASSIRE A.ASSIRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG @@ -31,6 +31,7 @@ def calc_precont_ops(self,reuse,MODELE,CHAM_MATER,CARA_ELEM,EXCIT, import copy import aster import string + import types from Accas import _F from Noyau.N_utils import AsType ier=0 @@ -178,6 +179,17 @@ def calc_precont_ops(self,reuse,MODELE,CHAM_MATER,CARA_ELEM,EXCIT, # Recuperation des cables dans les concepts CABLE_BP # et CABLE_BP_INACTIF # ------------------------------------------------------ + if type(CABLE_BP) is not types.NoneType: + if type(CABLE_BP) is not types.TupleType: + CABLE_BP0 = CABLE_BP + CABLE_BP = [] + CABLE_BP.append ( CABLE_BP0 ) + + if type(CABLE_BP_INACTIF) is not types.NoneType: + if type(CABLE_BP_INACTIF) is not types.TupleType: + CABLE_BP_INACTIF0 = CABLE_BP_INACTIF + CABLE_BP_INACTIF = [] + CABLE_BP_INACTIF.append ( CABLE_BP_INACTIF0 ) motscles={} motscles['RELA_CINE_BP']=[] diff --git a/Aster/Cata/Macro/macr_adap_mail_ops.py b/Aster/Cata/Macro/macr_adap_mail_ops.py index 0561942e..cccf5c78 100644 --- a/Aster/Cata/Macro/macr_adap_mail_ops.py +++ b/Aster/Cata/Macro/macr_adap_mail_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macr_adap_mail_ops Macro DATE 01/07/2003 AUTEUR GNICOLAS G.NICOLAS +#@ MODIF macr_adap_mail_ops Macro DATE 13/10/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG @@ -45,10 +45,12 @@ def macr_adap_mail_ops ( self, # est conservé dans la liste Liste_Passages. Cette liste est nécessairement globale pour pouvoir # la retrouver à chaque nouveau passage. # Description du dictionnaire de passages : -# dico['Maillage_0'] = o ; string ; nom du concept du maillage initial de la série d'adaptation -# dico['Maillage_NP1'] = o ; string ; nom du concept du dernier maillage adapté -# dico['Rep_Calc_HOMARD'] = o ; string ; Nom du répertoire de calcul pour HOMARD -# dico['niter'] = o ; entier ; numéro d'itération +# dico['Maillage_0'] = o ; string ; nom du concept du maillage initial de la série d'adaptation +# dico['Maillage_NP1'] = o ; string ; nom du concept du dernier maillage adapté +# dico['Rep_Calc_HOMARD_global'] = o ; string ; Nom global du répertoire de calcul pour HOMARD +# dico['Rep_Calc_HOMARD_local'] = o ; string ; Nom local du répertoire de calcul pour HOMARD +# depuis le répertoire de calcul pour ASTER +# dico['niter'] = o ; entier ; numéro d'itération # # 3. Les caractéristiques d'un maillage sont conservées dans un dictionnaire. Il y a autant de # dictionnaires que de maillages manipulés. L'ensemble de ces dictionnaires est conservé @@ -242,8 +244,10 @@ def macr_adap_mail_ops ( self, # niter = 0 Nom_Rep_local = Nom_Concept_Maillage_N + "_" + modhom + "_" + str(Numero_Passage_Fonction) - Rep_Calc_HOMARD = os.path.join(Rep_Calc_ASTER,Nom_Rep_local) -### print "Rep_Calc_HOMARD = ", Rep_Calc_HOMARD + Rep_Calc_HOMARD_local = os.path.join('.',Nom_Rep_local) + Rep_Calc_HOMARD_global = os.path.join(Rep_Calc_ASTER,Nom_Rep_local) +### print "Rep_Calc_HOMARD_local = ", Rep_Calc_HOMARD_local +### print "Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global # # 3.2.2. ==> En adaptation : # @@ -258,7 +262,8 @@ def macr_adap_mail_ops ( self, for dico in Liste_Passages : if ( dico['Maillage_NP1'] == Nom_Concept_Maillage_N ) : niter = dico['niter'] + 1 - Rep_Calc_HOMARD = dico['Rep_Calc_HOMARD'] + Rep_Calc_HOMARD_local = dico['Rep_Calc_HOMARD_local'] + Rep_Calc_HOMARD_global = dico['Rep_Calc_HOMARD_global'] # # 3.2.2.2. ==> Memorisation de ce passage # @@ -268,7 +273,8 @@ def macr_adap_mail_ops ( self, dico = {} dico['Maillage_0'] = Nom_Concept_Maillage_N dico['Maillage_NP1'] = Nom_Concept_Maillage_NP1 - dico['Rep_Calc_HOMARD'] = Rep_Calc_HOMARD + dico['Rep_Calc_HOMARD_local'] = Rep_Calc_HOMARD_local + dico['Rep_Calc_HOMARD_global'] = Rep_Calc_HOMARD_global dico['niter'] = niter Liste_Passages.append(dico) # @@ -283,7 +289,7 @@ def macr_adap_mail_ops ( self, L.append(dico) Liste_Passages = L # -### print "niter = ", niter, ", Rep_Calc_HOMARD = ", Rep_Calc_HOMARD +### print "niter = ", niter, ", Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global # #-------------------------------------------------------------------- # 4. Ecriture des commandes @@ -296,10 +302,10 @@ def macr_adap_mail_ops ( self, if ( niter == 0 ) : # try : - os.mkdir(Rep_Calc_HOMARD) + os.mkdir(Rep_Calc_HOMARD_global) except os.error,codret_partiel : self.cr.warn("Code d'erreur de mkdir : " + str(codret_partiel[0]) + " : " + codret_partiel[1]) - self.cr.fatal("Impossible de créer le répertoire de travail pour HOMARD : "+Rep_Calc_HOMARD) + self.cr.fatal("Impossible de créer le répertoire de travail pour HOMARD : "+Rep_Calc_HOMARD_global) codret = codret + 1 # # 4.2. ==> Ecriture des commandes de creation des donnees MED @@ -326,7 +332,7 @@ def macr_adap_mail_ops ( self, Unite_Fichier_ASTER_vers_HOMARD = 1787 + 2*Numero_Passage_Fonction Fichier_ASTER_vers_HOMARD = os.path.join(Rep_Calc_ASTER,"fort." + str(Unite_Fichier_ASTER_vers_HOMARD)) Nom_Symbolique_Fichier_ASTER_vers_HOMARD = "ASTER_to_HOMARD" - Fichier_HOMARD_Entree = os.path.join(Rep_Calc_HOMARD,"MAILL."+str(niter)+".MED") + Fichier_HOMARD_Entree = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter)+".MED") ### print "Fichier_ASTER_vers_HOMARD = ",Fichier_ASTER_vers_HOMARD ### print "Fichier_HOMARD_Entree = ",Fichier_HOMARD_Entree try : @@ -341,7 +347,7 @@ def macr_adap_mail_ops ( self, if ( modhom == "ADAP" ) : Unite_Fichier_HOMARD_vers_ASTER = Unite_Fichier_ASTER_vers_HOMARD + 1 Fichier_HOMARD_vers_ASTER = os.path.join(Rep_Calc_ASTER,"fort." + str(Unite_Fichier_HOMARD_vers_ASTER)) - Fichier_HOMARD_Sortie = os.path.join(Rep_Calc_HOMARD,"MAILL."+str(niter+1)+".MED") + Fichier_HOMARD_Sortie = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter+1)+".MED") ### print "Fichier_HOMARD_vers_ASTER = ",Fichier_HOMARD_vers_ASTER ### print "Fichier_HOMARD_Sortie = ",Fichier_HOMARD_Sortie try : @@ -502,15 +508,17 @@ def macr_adap_mail_ops ( self, # dico = {} # - Fichier_Configuration = os.path.join(Rep_Calc_HOMARD,'HOMARD.Configuration') + Nom_Fichier_Configuration = 'HOMARD.Configuration' + Fichier_Configuration = os.path.join(Rep_Calc_HOMARD_local,'HOMARD.Configuration') # 1234567890123456 dico[Fichier_Configuration] = ('HOMARD_CONFIG','FICHIER_CONF',unite) # if ( modhom != "ADAP" ) : unite = unite + 1 - Fichier_Donnees = os.path.join(Rep_Calc_HOMARD,'HOMARD.Donnees') + Nom_Fichier_Donnees = 'HOMARD.Donnees' + Fichier_Donnees = os.path.join(Rep_Calc_HOMARD_local,Nom_Fichier_Donnees) # 1234567890123456 - dico[Fichier_Donnees] = ('HOMARD_DONNEES','FICHIER_DONN',unite) + dico[Fichier_Donnees] = ('HOMARD_DONN','FICHIER_DONN',unite) # # 4.3.3.2. ==> L'ouverture de ces fichiers # @@ -537,7 +545,7 @@ def macr_adap_mail_ops ( self, # Remarque : aujourd'hui on est obligé de passer par le numéro d'unité logique # for fic in dico.keys() : - DEFI_FICHIER ( ACTION= "LIBERER", NOM_SYSTEME = fic, UNITE = dico[fic][2], INFO = INFO ) + DEFI_FICHIER ( ACTION= "LIBERER", UNITE = dico[fic][2], INFO = INFO ) # # 4.4. ==> Ecriture de la commande d'exécution de homard # Remarque : dans la donnée de la version de HOMARD, il faut remplacer @@ -556,12 +564,12 @@ def macr_adap_mail_ops ( self, VERSION_HOMARD=VERSION_HOMARD[:-6] # if ( modhom == "ADAP" ) : - Fichier_Donnees = '0' + Nom_Fichier_Donnees = '0' # - EXEC_LOGICIEL ( ARGUMENT = (_F(NOM_PARA=Rep_Calc_HOMARD), # nom du repertoire + EXEC_LOGICIEL ( ARGUMENT = (_F(NOM_PARA=Rep_Calc_HOMARD_global), # nom du repertoire _F(NOM_PARA=VERSION_HOMARD), # version de homard _F(NOM_PARA=str(INFO)), # niveau d information - _F(NOM_PARA=Fichier_Donnees), # fichier de données HOMARD + _F(NOM_PARA=Nom_Fichier_Donnees), # fichier de données HOMARD ), LOGICIEL = homard ) @@ -610,7 +618,7 @@ def macr_adap_mail_ops ( self, # 5. Menage des fichiers MED et HOMARD devenus inutiles #-------------------------------------------------------------------- # - fic = os.path.join(Rep_Calc_HOMARD,"MAILL."+str(niter)+".HOM") + fic = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter)+".HOM") Liste_aux = [ Fichier_ASTER_vers_HOMARD, Fichier_HOMARD_Entree, fic ] if ( modhom == "ADAP" ) : Liste_aux.append(Fichier_HOMARD_vers_ASTER) @@ -633,7 +641,7 @@ def macr_adap_mail_ops ( self, self.cr.warn("Impossible de détruire le fichier : "+fic) codret = codret + 1 ### print os.listdir(Rep_Calc_ASTER) -### print os.listdir(Rep_Calc_HOMARD) +### print os.listdir(Rep_Calc_HOMARD_global) # #-------------------------------------------------------------------- # 6. C'est fini ! diff --git a/Aster/Cata/Macro/macro_miss_3d_ops.py b/Aster/Cata/Macro/macro_miss_3d_ops.py index d3367203..55b83d9e 100644 --- a/Aster/Cata/Macro/macro_miss_3d_ops.py +++ b/Aster/Cata/Macro/macro_miss_3d_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macro_miss_3d_ops Macro DATE 20/01/2003 AUTEUR DURAND C.DURAND +#@ MODIF macro_miss_3d_ops Macro DATE 29/09/2003 AUTEUR ACBHHCD G.DEVESA # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -44,7 +44,7 @@ def macro_miss_3d_ops(self,UNITE_IMPR_ASTER,UNITE_OPTI_MISS, if OPTION['TOUT']!=None: MODUL2='COMPLET' elif OPTION['MODULE']=='MISS_IMPE': - MODUL2='MISS_IMPE' + MODUL2='CALC_IMPE' elif OPTION['MODULE']=='MISS_EVOL': MODUL2='MISS_PTAS' elif OPTION['MODULE']=='PRE_MISS': diff --git a/Aster/Cata/cata_STA7.py b/Aster/Cata/cata_STA7.py index 1dc9e02f..1fa56710 100755 --- a/Aster/Cata/cata_STA7.py +++ b/Aster/Cata/cata_STA7.py @@ -1,20 +1,20 @@ -#& MODIF ENTETE DATE 02/06/2003 AUTEUR F1BHHAJ J.ANGLES +#& MODIF ENTETE DATE 26/09/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 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. +# 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. +# 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. +# 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. # ====================================================================== import Accas from Accas import * @@ -30,7 +30,7 @@ except: # __version__="$Name: $" -__Id__="$Id: cata_STA7.py,v 1.2.2.1 2003/09/18 10:21:39 eficas Exp $" +__Id__="$Id: cata_STA7.py,v 1.3.2.1 2003/10/15 15:11:51 eficas Exp $" # JdC = JDC_CATA(code='ASTER', execmodul=None, @@ -93,7 +93,7 @@ class listr8 (ASSD): """ retourne la liste des valeurs [ val1, ...] """ vale=string.ljust(self.get_name(),19)+'.VALE' return list(aster.getvectjev(vale)) - + # maillage : @@ -107,8 +107,8 @@ class maillage(ASSD): """ retourne la liste des groupes de mailles sous la forme : [ (gma1, nb mailles gma1, dime max des mailles gma1), ...] """ return aster.GetMaillage(self.get_name(), "GROUP_MA") - - + + class squelette (maillage):pass @@ -225,6 +225,8 @@ class resultat(ASSD): return aster.GetResu(self.get_name(), "COMPOSANTES") def LIST_VARI_ACCES (self) : return aster.GetResu(self.get_name(), "VARI_ACCES") + def LIST_PARA (self) : + return aster.GetResu(self.get_name(), "PARAMETRES") class acou_harmo (resultat):pass class base_modale (resultat):pass @@ -293,14 +295,18 @@ class nappe(fonction):pass # matr_asse : #-------------------------------- class matr_asse(ASSD):pass -class matr_asse_depl_c(matr_asse):pass -class matr_asse_depl_r(matr_asse):pass -class matr_asse_gene_r(matr_asse):pass -class matr_asse_gene_c(matr_asse):pass -class matr_asse_pres_c(matr_asse):pass -class matr_asse_pres_r(matr_asse):pass -class matr_asse_temp_c(matr_asse):pass -class matr_asse_temp_r(matr_asse):pass + +class matr_asse_gene(matr_asse):pass +class matr_asse_gene_r(matr_asse_gene):pass +class matr_asse_gene_c(matr_asse_gene):pass + +class matr_asse_gd(matr_asse):pass +class matr_asse_depl_c(matr_asse_gd):pass +class matr_asse_depl_r(matr_asse_gd):pass +class matr_asse_pres_c(matr_asse_gd):pass +class matr_asse_pres_r(matr_asse_gd):pass +class matr_asse_temp_c(matr_asse_gd):pass +class matr_asse_temp_r(matr_asse_gd):pass # matr_elem : #-------------------------------- @@ -321,7 +327,7 @@ class table(ASSD): requete=string.ljust(key[0],24) tblp=string.ljust(self.get_name(),19)+'.TBLP' tabnom=list(aster.getvectjev(tblp)) - for i in range(len(tabnom)) : + for i in range(len(tabnom)) : if tabnom[i]==requete: break resu=aster.getvectjev(tabnom[i+2]) if key[1]>len(resu) : raise KeyError @@ -642,7 +648,7 @@ def C_COMP_INCR() : return FACT(statut='f',min=1,max='**', #COMMUN# MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), ) ; -#& MODIF COMMUN DATE 17/06/2003 AUTEUR VABHHTS J.PELLET +#& MODIF COMMUN DATE 16/09/2003 AUTEUR JMBHH01 J.M.PROIX # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG @@ -760,6 +766,7 @@ def C_NOM_CHAM_INTO() : return ("ACCE", #COMMUN# "META_ELGA_TEMP", "META_ELNO_TEMP", "META_NOEU_TEMP", + "MODE_FLAMB", "PMPB_ELGA_SIEF", "PMPB_ELNO_SIEF", "PMPB_NOEU_SIEF", @@ -1292,7 +1299,7 @@ AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 108,sd_prod=affe_char_cine_f_pr INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 09/09/2003 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 29/09/2003 AUTEUR CIBHHPD D.NUNEZ # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -1611,6 +1618,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca EXCLUS('DIST_1','COEF_IMPO'),), NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","PRES","TEMP")), FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS",) ), + NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ), REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", fr="Paramètre de la réactualisation géométrique", @@ -1627,7 +1635,8 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca b_lagrangien =BLOC(condition = "METHODE == 'LAGRANGIEN' ", fr="Paramètres de la méthode Lagrangienne (contact avec ou sans frottement)", NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)), - FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), + FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), + NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ), REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", fr="Paramètre de la réactualisation géométrique", @@ -1647,6 +1656,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)), E_N =SIMP(statut='f',typ='R'), FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), + NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ), REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", fr="Paramètre de la réactualisation géométrique", @@ -2061,7 +2071,7 @@ AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op= 7,sd_prod=char_meca, INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 09/09/2003 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 29/09/2003 AUTEUR CIBHHPD D.NUNEZ # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2231,6 +2241,7 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, EXCLUS('DIST_1','COEF_IMPO'),), NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","PRES","TEMP")), FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS",) ), + NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ), REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", fr="Paramètre de la réactualisation géométrique", @@ -2247,7 +2258,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, b_lagrangien =BLOC(condition = "METHODE == 'LAGRANGIEN' ", fr="Paramètres de la méthode Lagrangienne (contact avec ou sans frottement)", NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)), - FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), + FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), + NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ), REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", fr="Paramètre de la réactualisation géométrique", @@ -2266,7 +2278,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, fr="Paramètres de la méthode pénalisée (contact avec ou sans frottement)", NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)), E_N =SIMP(statut='f',typ='R'), - FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), + FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), + NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ), REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", fr="Paramètre de la réactualisation géométrique", @@ -3007,7 +3020,7 @@ AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater, ), ) ; -#& MODIF COMMANDE DATE 09/09/2003 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 29/09/2003 AUTEUR JMBHH01 J.M.PROIX # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3144,7 +3157,8 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele,docu="U4.41.01-g", "POU_D_TGM", "Q4G", "TUYAU_3M", - "TUYAU_6M" + "TUYAU_6M", + "SHB8" ) ) ), b_thermique =BLOC( condition = "PHENOMENE=='THERMIQUE'", @@ -6305,6 +6319,49 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,docu="U4.44.12-e",r ) ; +#& MODIF COMMANDE DATE 16/09/2003 AUTEUR REZETTE C.REZETTE +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2003 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. +# ====================================================================== +CREA_TABLE=OPER(nom="CREA_TABLE",op= 36,sd_prod=table, + fr="Creation d'une table a partir d'une fonction ou de deux listes", + reentrant='n',docu='U4.99.99',UIinfo={"groupes":("Table",)}, + + regles=(EXCLUS('FONCTION','LISTE')), + + FONCTION=FACT(statut='f',min=1,max=1, + fr="Creation d'une table a partir d'une fonction", + FONCTION=SIMP(statut='o',typ=fonction), + PARA=SIMP(statut='f',typ='TXM',min=2,max=2)), + + LISTE=FACT(statut='f',min=2,max=2, + fr="Creation d'une table a partir de deux listes", + regles=(UN_PARMI('LISTE_I','LISTE_R','LISTE_K')), + PARA=SIMP(statut='o',typ='TXM'), + TYPE_K=SIMP(statut='f',typ='TXM',defaut='K8', + into=('K8','K16','K24')), + LISTE_I=SIMP(statut='f',typ='I',max='**'), + LISTE_R=SIMP(statut='f',typ='R',max='**'), + LISTE_K=SIMP(statut='f',typ='TXM', max='**')), +) ; + + + + #& MODIF COMMANDE DATE 06/09/2003 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -6620,7 +6677,7 @@ DEFI_COQU_MULT=OPER(nom="DEFI_COQU_MULT",op=56,sd_prod=mater,docu="U4.42.03-f",r ), ) ; -#& MODIF COMMANDE DATE 09/09/2003 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 10/10/2003 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG @@ -6643,16 +6700,22 @@ DEFI_FICHIER=PROC(nom="DEFI_FICHIER",op=26,docu="U4.12.03-a", UIinfo={"groupes":("Gestion du travail",)}, fr="Gestion d une unité logique : ajout, suppression", - regles=(AU_MOINS_UN('NOM_SYSTEME','FICHIER'),), ACTION =SIMP(statut='f',typ='TXM',into=("ASSOCIER","LIBERER"),defaut="ASSOCIER"), - FICHIER =SIMP(statut='f',typ='TXM'), UNITE =SIMP(statut='o',typ='I' ,val_min=1), - NOM_SYSTEME =SIMP(statut='f',typ='TXM'), - TYPE =SIMP(statut='f',typ='TXM',into=("ASCII","BINARY","LIBRE"),defaut="ASCII"), - ACCES =SIMP(statut='f',typ='TXM',into=("NEW","APPEND","OLD"),defaut="NEW"), - + b_associer =BLOC(condition = "ACTION == 'ASSOCIER'",fr="Paramètres pour l ouverture du fichier", + TYPE =SIMP(statut='f',typ='TXM',into=("ASCII","BINARY","LIBRE"),defaut="ASCII"), + b_type_ascii =BLOC(condition = "TYPE == 'ASCII'",fr="Paramètres pour le type ASCII", + NOM_SYSTEME =SIMP(statut='f',typ='TXM',validators=LongStr(1,255)), + FICHIER =SIMP(statut='o',typ='TXM'), + ), + b_type_autre =BLOC(condition = "TYPE != 'ASCII'",fr="Paramètres pour les types BINARY et LIBRE", + regles=(AU_MOINS_UN('NOM_SYSTEME','FICHIER'),), + NOM_SYSTEME =SIMP(statut='f',typ='TXM',validators=LongStr(1,255)), + FICHIER =SIMP(statut='f',typ='TXM'), + ), + ACCES =SIMP(statut='f',typ='TXM',into=("NEW","APPEND","OLD"),defaut="NEW"), + ), INFO =SIMP(statut='f',typ='I',into=(1,2) ), - ) #& MODIF COMMANDE DATE 09/09/2003 AUTEUR DURAND C.DURAND @@ -7443,7 +7506,7 @@ DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op= 88,sd_prod=maillage, ), ) ; -#& MODIF COMMANDE DATE 09/09/2003 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 26/09/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7494,7 +7557,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, # # comportement élastique # - ELAS =FACT(statut='f',min=0, + ELAS =FACT(statut='f', E =SIMP(statut='o',typ='R',val_min=0.E+0), NU =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=0.5E+0), RHO =SIMP(statut='f',typ='R'), @@ -7503,7 +7566,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, AMOR_BETA =SIMP(statut='f',typ='R'), AMOR_HYST =SIMP(statut='f',typ='R'), ), - ELAS_FO =FACT(statut='f',min=0, + ELAS_FO =FACT(statut='f', regles=(PRESENT_PRESENT('ALPHA','TEMP_DEF_ALPHA'),), E =SIMP(statut='o',typ=(fonction,formule)), NU =SIMP(statut='o',typ=(fonction,formule)), @@ -7522,7 +7585,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, VERI_P3 =SIMP(statut='c',typ='TXM',defaut="HYDR",into=("HYDR",) ), VERI_P4 =SIMP(statut='c',typ='TXM',defaut="SECH",into=("SECH",) ), ), - ELAS_FLUI =FACT(statut='f',min=0, + ELAS_FLUI =FACT(statut='f', E =SIMP(statut='o',typ='R'), NU =SIMP(statut='o',typ='R'), RHO =SIMP(statut='o',typ='R'), @@ -7531,7 +7594,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, COEF_MASS_AJOU =SIMP(statut='o',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="ABSC",into=("ABSC",) ), ), - ELAS_ISTR =FACT(statut='f',min=0, + ELAS_ISTR =FACT(statut='f', E_L =SIMP(statut='o',typ='R'), E_N =SIMP(statut='o',typ='R'), NU_LT =SIMP(statut='o',typ='R'), @@ -7541,7 +7604,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, ALPHA_L =SIMP(statut='f',typ='R',defaut= 0.E+0 ), ALPHA_N =SIMP(statut='f',typ='R',defaut= 0.E+0 ), ), - ELAS_ISTR_FO =FACT(statut='f',min=0, + ELAS_ISTR_FO =FACT(statut='f', regles=( PRESENT_PRESENT('ALPHA_L','TEMP_DEF_ALPHA'), PRESENT_PRESENT('ALPHA_N','TEMP_DEF_ALPHA'), @@ -7558,7 +7621,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, ALPHA_N =SIMP(statut='f',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP","INST")), ), - ELAS_ORTH =FACT(statut='f',min=0, + ELAS_ORTH =FACT(statut='f', E_L =SIMP(statut='o',typ='R'), E_T =SIMP(statut='o',typ='R'), E_N =SIMP(statut='f',typ='R'), @@ -7578,7 +7641,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, YC =SIMP(statut='f',typ='R',defaut= 1. ), S_LT =SIMP(statut='f',typ='R',defaut= 1. ), ), - ELAS_ORTH_FO =FACT(statut='f',min=0, + ELAS_ORTH_FO =FACT(statut='f', regles=( PRESENT_PRESENT('ALPHA_L','TEMP_DEF_ALPHA'), PRESENT_PRESENT('ALPHA_N','TEMP_DEF_ALPHA'), @@ -7601,7 +7664,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, ALPHA_N =SIMP(statut='f',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP","INST",) ), ), - ELAS_THM =FACT(statut='f',min=0, + ELAS_THM =FACT(statut='f', RHO_S =SIMP(statut='o',typ='R'), UN_SUR_KS =SIMP(statut='o',typ='R'), E =SIMP(statut='f',typ='R'), @@ -7610,7 +7673,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, ALPHA_S =SIMP(statut='f',typ='R'), ALPHA_D =SIMP(statut='f',typ='R'), ), - SURF_ETAT_SATU =FACT(statut='f',min=0, + SURF_ETAT_SATU =FACT(statut='f', E_CHAR =SIMP(statut='o',typ='R'), E_DECHAR =SIMP(statut='o',typ='R'), XN =SIMP(statut='f',typ='R'), @@ -7627,7 +7690,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, COHE =SIMP(statut='o',typ='R'), RESI_TRAC =SIMP(statut='o',typ='R'), ), - CAM_CLAY_THM =FACT(statut='f',min=0, + CAM_CLAY_THM =FACT(statut='f', NU =SIMP(statut='f',typ='R'), LAMBDA =SIMP(statut='o',typ='R'), KAPA =SIMP(statut='o',typ='R'), @@ -7643,7 +7706,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, ALPHA3_PC =SIMP(statut='f',typ='R'), ALPHA_S =SIMP(statut='f',typ='R'), ), - SURF_ETAT_NSAT =FACT(statut='f',min=0, + SURF_ETAT_NSAT =FACT(statut='f', E_CHAR =SIMP(statut='o',typ='R'), E_DECHAR =SIMP(statut='o',typ='R'), XN =SIMP(statut='f',typ='R'), @@ -7667,7 +7730,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, C_SURF_SATU =SIMP(statut='f',typ='R'), D_SURF_SATU =SIMP(statut='f',typ='R'), ), - ELAS_COQUE =FACT(statut='f',min=0, + ELAS_COQUE =FACT(statut='f', regles=(EXCLUS('MEMB_L','M_LLLL',), PRESENT_PRESENT('MEMB_L','MEMB_LT', 'MEMB_T','MEMB_G_LT','FLEX_L','FLEX_LT', 'FLEX_T','FLEX_G_LT','CISA_L','CISA_T',), @@ -7723,7 +7786,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, RHO =SIMP(statut='f',typ='R'), ALPHA =SIMP(statut='f',typ='R'), ), - ELAS_COQUE_FO =FACT(statut='f',min=0, + ELAS_COQUE_FO =FACT(statut='f', regles=(EXCLUS('MEMB_L','M_LLLL',), PRESENT_PRESENT('MEMB_L','MEMB_LT','MEMB_T','MEMB_G_LT','FLEX_L','FLEX_LT', 'FLEX_T','FLEX_G_LT','CISA_L','CISA_T',), @@ -7779,11 +7842,11 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, ALPHA =SIMP(statut='f',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP","INST") ), ), - APPUI_ELAS =FACT(statut='f',min=0, + APPUI_ELAS =FACT(statut='f', E_N =SIMP(statut='o',typ='R'), E_TAN =SIMP(statut='f',typ='R',defaut= 0.E+0), ), - CABLE =FACT(statut='f',min=0, + CABLE =FACT(statut='f', E =SIMP(statut='o',typ='R'), EC_SUR_E =SIMP(statut='f',typ='R',defaut= 1.E-4 ), RHO =SIMP(statut='f',typ='R'), @@ -7794,41 +7857,41 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, # # comportement mécanique non linéaire # - TRACTION =FACT(statut='f',min=0, + TRACTION =FACT(statut='f', SIGM =SIMP(statut='o',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="EPSI",into=("EPSI",) ), VERI_P2 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), VERI_P3 =SIMP(statut='c',typ='TXM',defaut="HYDR",into=("HYDR",) ), VERI_P4 =SIMP(statut='c',typ='TXM',defaut="SECH",into=("SECH",) ), ), - ECRO_LINE =FACT(statut='f',min=0, + ECRO_LINE =FACT(statut='f', D_SIGM_EPSI =SIMP(statut='o',typ='R'), SY =SIMP(statut='o',typ='R'), ), - ECRO_LINE_FO =FACT(statut='f',min=0, + ECRO_LINE_FO =FACT(statut='f', D_SIGM_EPSI =SIMP(statut='o',typ=(fonction,formule)), SY =SIMP(statut='o',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - BETON_ECRO_LINE =FACT(statut='f',min=0, + BETON_ECRO_LINE =FACT(statut='f', D_SIGM_EPSI =SIMP(statut='o',typ='R'), SYT =SIMP(statut='o',typ='R'), SYC =SIMP(statut='f',typ='R'), ), - PRAGER =FACT(statut='f',min=0, + PRAGER =FACT(statut='f', C =SIMP(statut='o',typ='R'), ), - PRAGER_FO =FACT(statut='f',min=0, + PRAGER_FO =FACT(statut='f', C =SIMP(statut='o',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - ECRO_FLEJOU =FACT(statut='f',min=0, + ECRO_FLEJOU =FACT(statut='f', EP =SIMP(statut='o',typ='R'), SY =SIMP(statut='o',typ='R'), SU =SIMP(statut='o',typ='R'), PUISS =SIMP(statut='o',typ='R'), ), - TAHERI =FACT(statut='f',min=0, + TAHERI =FACT(statut='f', R_0 =SIMP(statut='o',typ='R'), ALPHA =SIMP(statut='o',typ='R'), M =SIMP(statut='o',typ='R'), @@ -7838,7 +7901,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, C_INF =SIMP(statut='o',typ='R'), S =SIMP(statut='o',typ='R'), ), - TAHERI_FO =FACT(statut='f',min=0, + TAHERI_FO =FACT(statut='f', R_0 =SIMP(statut='o',typ=(fonction,formule)), ALPHA =SIMP(statut='o',typ=(fonction,formule)), M =SIMP(statut='o',typ=(fonction,formule)), @@ -7849,7 +7912,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, S =SIMP(statut='o',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - ROUSSELIER =FACT(statut='f',min=0, + ROUSSELIER =FACT(statut='f', D =SIMP(statut='o',typ='R'), SIGM_1 =SIMP(statut='o',typ='R'), PORO_INIT =SIMP(statut='o',typ='R'), @@ -7859,7 +7922,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, D_SIGM_EPSI_NORM=SIMP(statut='f',typ='R',defaut= 1. ), AN =SIMP(statut='f',typ='R',defaut= 0. ), ), - ROUSSELIER_FO =FACT(statut='f',min=0, + ROUSSELIER_FO =FACT(statut='f', D =SIMP(statut='o',typ=(fonction,formule)), SIGM_1 =SIMP(statut='o',typ=(fonction,formule)), PORO_INIT =SIMP(statut='o',typ=(fonction,formule)), @@ -7870,12 +7933,12 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, AN =SIMP(statut='f',typ='R',defaut= 0. ), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - ROUSS_VISC =FACT(statut='f',min=0, + ROUSS_VISC =FACT(statut='f', SIGM_0 =SIMP(statut='o',typ='R'), EPSI_0 =SIMP(statut='o',typ='R'), M =SIMP(statut='o',typ='R'), ), - CHABOCHE =FACT(statut='f',min=0, + CHABOCHE =FACT(statut='f', R_I =SIMP(statut='o',typ='R'), R_0 =SIMP(statut='o',typ='R'), B =SIMP(statut='o',typ='R'), @@ -7886,7 +7949,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, C1 =SIMP(statut='o',typ='R'), C2 =SIMP(statut='o',typ='R'), ), - CIN1_CHAB =FACT(statut='f',min=0, + CIN1_CHAB =FACT(statut='f', R_0 =SIMP(statut='o',typ='R'), R_I =SIMP(statut='f',typ='R'), B =SIMP(statut='f',typ='R',defaut= 0.0E+0), @@ -7896,7 +7959,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, G_0 =SIMP(statut='o',typ='R'), A_I =SIMP(statut='f',typ='R',defaut= 1.0E+0), ), - CIN1_CHAB_FO =FACT(statut='f',min=0, + CIN1_CHAB_FO =FACT(statut='f', R_0 =SIMP(statut='o',typ=(fonction,formule)), R_I =SIMP(statut='o',typ=(fonction,formule)), B =SIMP(statut='o',typ=(fonction,formule)), @@ -7907,7 +7970,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, A_I =SIMP(statut='o',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), ), - CIN2_CHAB =FACT(statut='f',min=0, + CIN2_CHAB =FACT(statut='f', R_0 =SIMP(statut='o',typ='R'), R_I =SIMP(statut='f',typ='R'), B =SIMP(statut='f',typ='R',defaut= 0.E+0 ), @@ -7919,7 +7982,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, G2_0 =SIMP(statut='o',typ='R'), A_I =SIMP(statut='f',typ='R',defaut= 1.E+0 ), ), - CIN2_CHAB_FO =FACT(statut='f',min=0, + CIN2_CHAB_FO =FACT(statut='f', R_0 =SIMP(statut='o',typ=(fonction,formule)), R_I =SIMP(statut='o',typ=(fonction,formule)), B =SIMP(statut='o',typ=(fonction,formule)), @@ -7932,7 +7995,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, A_I =SIMP(statut='o',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - VISCOCHAB =FACT(statut='f',min=0, + VISCOCHAB =FACT(statut='f', K_0 =SIMP(statut='o',typ='R'), A_K =SIMP(statut='o',typ='R'), A_R =SIMP(statut='o',typ='R'), @@ -7959,7 +8022,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, G2_0 =SIMP(statut='o',typ='R'), A_I =SIMP(statut='o',typ='R'), ), - VISCOCHAB_FO =FACT(statut='f',min=0, + VISCOCHAB_FO =FACT(statut='f', K_0 =SIMP(statut='o',typ=(fonction,formule)), A_K =SIMP(statut='o',typ=(fonction,formule)), A_R =SIMP(statut='o',typ=(fonction,formule)), @@ -7987,7 +8050,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, A_I =SIMP(statut='o',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - POLY_CFC =FACT(statut='f',min=0, + POLY_CFC =FACT(statut='f', TEXTURE =SIMP(statut='o',typ=(tabl_texture) ), DL =SIMP(statut='f',typ='R'), DA =SIMP(statut='f',typ='R'), @@ -8003,7 +8066,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, D1 =SIMP(statut='o',typ='R'), C2 =SIMP(statut='o',typ='R'), ), - POLY_CFC_FO =FACT(statut='f',min=0, + POLY_CFC_FO =FACT(statut='f', TEXTURE =SIMP(statut='o',typ=(tabl_texture) ), DL =SIMP(statut='o',typ=(fonction,formule)), DA =SIMP(statut='o',typ=(fonction,formule)), @@ -8020,40 +8083,40 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, C2 =SIMP(statut='o',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - LEMAITRE =FACT(statut='f',min=0, + LEMAITRE =FACT(statut='f', N =SIMP(statut='o',typ='R'), UN_SUR_K =SIMP(statut='o',typ='R'), UN_SUR_M =SIMP(statut='f',typ='R',defaut= 0.E+0 ), ), - ZIRC_CYRA2 =FACT(statut='f',min=0, + ZIRC_CYRA2 =FACT(statut='f', EPSI_FAB =SIMP(statut='o',typ=(fonction,formule)), TEMP_RECUIT =SIMP(statut='o',typ=(fonction,formule)), FLUX_PHI =SIMP(statut='o',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="INST",into=("INST",) ), ), - ZIRC_EPRI =FACT(statut='f',min=0, + ZIRC_EPRI =FACT(statut='f', FLUX_PHI =SIMP(statut='o',typ='R'), R_P =SIMP(statut='o',typ='R'), THETA_MAX =SIMP(statut='o',typ='R'), ), - LEMAITRE_FO =FACT(statut='f',min=0, + LEMAITRE_FO =FACT(statut='f', N =SIMP(statut='o',typ=(fonction,formule)), UN_SUR_K =SIMP(statut='o',typ=(fonction,formule)), UN_SUR_M =SIMP(statut='o',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - GRAN_IRRA =FACT(statut='f',min=0, + GRAN_IRRA =FACT(statut='f', A =SIMP(statut='f',typ='R',defaut= 0.E+0), B =SIMP(statut='f',typ='R',defaut= 0.E+0), S =SIMP(statut='f',typ='R',defaut= 0.E+0), ), - FLU_IRRA =FACT(statut='f',min=0, + FLU_IRRA =FACT(statut='f', QSR_K =SIMP(statut='f',typ='R',defaut= 0.E+0 ), BETA =SIMP(statut='f',typ='R',defaut= 0.E+0 ), PHI_ZERO =SIMP(statut='f',typ='R',defaut= 1.E+20), L =SIMP(statut='f',typ='R',defaut= 0.E+0 ), ), - OHNO =FACT(statut='f',min=0, + OHNO =FACT(statut='f', R_I =SIMP(statut='o',typ='R'), R_0 =SIMP(statut='o',typ='R'), B =SIMP(statut='o',typ='R'), @@ -8074,7 +8137,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, M4 =SIMP(statut='o',typ='R'), M5 =SIMP(statut='o',typ='R'), ), - OHNO_FO =FACT(statut='f',min=0, + OHNO_FO =FACT(statut='f', R_I =SIMP(statut='o',typ=(fonction,formule)), R_0 =SIMP(statut='o',typ=(fonction,formule)), B =SIMP(statut='o',typ=(fonction,formule)), @@ -8096,7 +8159,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, M5 =SIMP(statut='o',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - LMARC =FACT(statut='f',min=0, + LMARC =FACT(statut='f', DE_0 =SIMP(statut='o',typ='R'), R_0 =SIMP(statut='o',typ='R'), N =SIMP(statut='o',typ='R'), @@ -8127,7 +8190,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, R33 =SIMP(statut='o',typ='R'), R66 =SIMP(statut='o',typ='R'), ), - LMARC_FO =FACT(statut='f',min=0, + LMARC_FO =FACT(statut='f', DE_0 =SIMP(statut='o',typ=(fonction,formule)), R_0 =SIMP(statut='o',typ=(fonction,formule)), N =SIMP(statut='o',typ=(fonction,formule)), @@ -8159,7 +8222,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, R66 =SIMP(statut='o',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - VMIS_POUTRE =FACT(statut='f',min=0, + VMIS_POUTRE =FACT(statut='f', NP =SIMP(statut='o',typ='R'), MEY =SIMP(statut='o',typ='R'), MPY =SIMP(statut='o',typ='R'), @@ -8171,7 +8234,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, CBZ =SIMP(statut='o',typ='R'), MPX =SIMP(statut='o',typ='R'), ), - VMIS_POUTRE_FO =FACT(statut='f',min=0, + VMIS_POUTRE_FO =FACT(statut='f', NP =SIMP(statut='o',typ=(fonction,formule)), MEY =SIMP(statut='o',typ=(fonction,formule)), MPY =SIMP(statut='o',typ=(fonction,formule)), @@ -8184,14 +8247,14 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, MPX =SIMP(statut='o',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - ARME =FACT(statut='f',min=0, + ARME =FACT(statut='f', KYE =SIMP(statut='o',typ='R'), DLE =SIMP(statut='o',typ='R'), KYP =SIMP(statut='o',typ='R'), DLP =SIMP(statut='o',typ='R'), KYG =SIMP(statut='o',typ='R'), ), - ASSE_CORN =FACT(statut='f',min=0, + ASSE_CORN =FACT(statut='f', NU_1 =SIMP(statut='o',typ='R'), MU_1 =SIMP(statut='o',typ='R'), DXU_1 =SIMP(statut='o',typ='R'), @@ -8207,7 +8270,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, KRX =SIMP(statut='o',typ='R'), KRZ =SIMP(statut='o',typ='R'), ), - DIS_CONTACT =FACT(statut='f',min=0, + DIS_CONTACT =FACT(statut='f', RIGI_NOR =SIMP(statut='f',typ='R' ), DIST_1 =SIMP(statut='f',typ='R',defaut= 0.E+0 ), DIST_2 =SIMP(statut='f',typ='R',defaut= 0.E+0 ), @@ -8238,7 +8301,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, VERI_P2 =SIMP(statut='c',typ='TXM',defaut="INST",into=("INST",) ), VERI_P3 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - NADAI_B =FACT(statut='f',min=0, + NADAI_B =FACT(statut='f', F_C =SIMP(statut='o',typ='R'), F_T =SIMP(statut='o',typ='R'), CRIT_E_C =SIMP(statut='o',typ='R'), @@ -8247,7 +8310,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, EPSI_R_T =SIMP(statut='o',typ='R'), FAC_T_C =SIMP(statut='o',typ='R'), ), - BETON_DOUBLE_DP =FACT(statut='f',min=0, + BETON_DOUBLE_DP =FACT(statut='f', F_C =SIMP(statut='o',typ=(fonction,formule)), F_T =SIMP(statut='o',typ=(fonction,formule)), COEF_BIAX =SIMP(statut='o',typ=(fonction,formule)), @@ -8290,7 +8353,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, BT =SIMP(statut='o',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - VENDOCHAB =FACT(statut='f',min=0, + VENDOCHAB =FACT(statut='f', S_VP =SIMP(statut='o',typ='R'), SEDVP1 =SIMP(statut='o',typ='R'), SEDVP2 =SIMP(statut='o',typ='R'), @@ -8301,7 +8364,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, A_D =SIMP(statut='o',typ='R'), K_D =SIMP(statut='o',typ='R'), ), - VENDOCHAB_FO =FACT(statut='f',min=0, + VENDOCHAB_FO =FACT(statut='f', S_VP =SIMP(statut='o',typ=(fonction,formule)), SEDVP1 =SIMP(statut='o',typ=(fonction,formule)), SEDVP2 =SIMP(statut='o',typ=(fonction,formule)), @@ -8314,7 +8377,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), VERI_P2 =SIMP(statut='c',typ='TXM',defaut="X",into=("X",) ), ), - PINTO_MENEGOTTO =FACT(statut='f',min=0, + PINTO_MENEGOTTO =FACT(statut='f', SY =SIMP(statut='o',typ='R'), EPSI_ULTM =SIMP(statut='o',typ='R'), SIGM_ULTM =SIMP(statut='o',typ='R'), @@ -8328,18 +8391,20 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, C_PM =SIMP(statut='f',typ='R',defaut= 0.5 ), A_PM =SIMP(statut='f',typ='R',defaut= 6.0E-3 ), ), - BPEL_BETON =FACT(statut='f',min=0, + BPEL_BETON =FACT(statut='f', PERT_FLUA =SIMP(statut='f',typ='R',defaut= 0.E+0 ), PERT_RETR =SIMP(statut='f',typ='R',defaut= 0.E+0 ), ), - BPEL_ACIER =FACT(statut='f',min=0, + BPEL_ACIER =FACT(statut='f', + regles=(PRESENT_PRESENT('RELAX_1000','F_PRG',), + PRESENT_PRESENT('MU0_RELAX','F_PRG',),), RELAX_1000 =SIMP(statut='f',typ='R',defaut= 0.E+0 ), MU0_RELAX =SIMP(statut='f',typ='R',defaut= 0.E+0 ), - SY =SIMP(statut='o',typ='R'), - FROT_COURB =SIMP(statut='o',typ='R'), - FROT_LINE =SIMP(statut='o',typ='R'), + F_PRG =SIMP(statut='f',typ='R'), + FROT_COURB =SIMP(statut='f',typ='R',defaut=0.E+0), + FROT_LINE =SIMP(statut='f',typ='R',defaut=0.E+0), ), - CAM_CLAY =FACT(statut='f',min=0, + CAM_CLAY =FACT(statut='f', PORO =SIMP(statut='o',typ='R'), LAMBDA =SIMP(statut='o',typ='R'), KAPA =SIMP(statut='o',typ='R'), @@ -8347,7 +8412,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, PRES_CRIT =SIMP(statut='o',typ='R'), PA =SIMP(statut='o',typ='R'), ), - CJS =FACT(statut='f',min=0, + CJS =FACT(statut='f', BETA_CJS =SIMP(statut='o',typ='R'), RM =SIMP(statut='o',typ='R'), N_CJS =SIMP(statut='f',typ='R',defaut= 0.E+0 ), @@ -8363,13 +8428,13 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, Q_INIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ), R_INIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ), ), - ECRO_ASYM_LINE =FACT(statut='f',min=0, + ECRO_ASYM_LINE =FACT(statut='f', DC_SIGM_EPSI =SIMP(statut='o',typ='R'), SY_C =SIMP(statut='o',typ='R'), DT_SIGM_EPSI =SIMP(statut='o',typ='R'), SY_T =SIMP(statut='o',typ='R'), ), - GRANGER_FP =FACT(statut='f',min=0, + GRANGER_FP =FACT(statut='f', J1 =SIMP(statut='f',typ='R'), J2 =SIMP(statut='f',typ='R'), J3 =SIMP(statut='f',typ='R'), @@ -8388,12 +8453,12 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, TAUX_8 =SIMP(statut='f',typ='R'), QSR_K =SIMP(statut='f',typ='R'), ), - V_GRANGER_FP =FACT(statut='f',min=0, + V_GRANGER_FP =FACT(statut='f', QSR_VEIL =SIMP(statut='f',typ='R'), FONC_V =SIMP(statut='f',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="INST",into=("INST",) ), ), - BAZANT_FD =FACT(statut='f',min=0, + BAZANT_FD =FACT(statut='f', LAM_VISC =SIMP(statut='o',typ='R'), ), BETON_UMLV_FP =FACT(statut='f',min=0 , @@ -8408,14 +8473,14 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, # # comportement thermique # - THER_NL =FACT(statut='f',min=0, + THER_NL =FACT(statut='f', regles=(UN_PARMI('BETA','RHO_CP', ),), LAMBDA =SIMP(statut='o',typ=(fonction,formule)), BETA =SIMP(statut='f',typ=(fonction,formule)), RHO_CP =SIMP(statut='f',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - THER_HYDR =FACT(statut='f',min=0, + THER_HYDR =FACT(statut='f', LAMBDA =SIMP(statut='o',typ=(fonction,formule)), BETA =SIMP(statut='f',typ=(fonction,formule)), AFFINITE =SIMP(statut='o',typ=(fonction,formule)), @@ -8424,22 +8489,22 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("HYDR",) ), VERI_P2 =SIMP(statut='c',typ='TXM',defaut="HYDR",into=("HYDR",) ), ), - THER =FACT(statut='f',min=0, + THER =FACT(statut='f', LAMBDA =SIMP(statut='o',typ='R'), RHO_CP =SIMP(statut='f',typ='R'), ), - THER_FO =FACT(statut='f',min=0, + THER_FO =FACT(statut='f', LAMBDA =SIMP(statut='o',typ=(fonction,formule)), RHO_CP =SIMP(statut='f',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="INST",into=("INST",) ), ), - THER_ORTH =FACT(statut='f',min=0, + THER_ORTH =FACT(statut='f', LAMBDA_L =SIMP(statut='o',typ='R'), LAMBDA_T =SIMP(statut='o',typ='R'), LAMBDA_N =SIMP(statut='f',typ='R'), RHO_CP =SIMP(statut='f',typ='R'), ), - THER_COQUE =FACT(statut='f',min=0, + THER_COQUE =FACT(statut='f', COND_LMM =SIMP(statut='o',typ='R'), COND_TMM =SIMP(statut='o',typ='R'), COND_LMP =SIMP(statut='o',typ='R'), @@ -8457,7 +8522,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, CMAS_PP =SIMP(statut='f',typ='R'), CMAS_SI =SIMP(statut='f',typ='R'), ), - THER_COQUE_FO =FACT(statut='f',min=0, + THER_COQUE_FO =FACT(statut='f', COND_LMM =SIMP(statut='o',typ=(fonction,formule)), COND_TMM =SIMP(statut='o',typ=(fonction,formule)), COND_LMP =SIMP(statut='o',typ=(fonction,formule)), @@ -8475,22 +8540,22 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, CMAS_PP =SIMP(statut='f',typ=(fonction,formule)), CMAS_SI =SIMP(statut='f',typ=(fonction,formule)), ), - SECH_GRANGER =FACT(statut='f',min=0, + SECH_GRANGER =FACT(statut='f', A =SIMP(statut='o',typ='R'), B =SIMP(statut='o',typ='R'), QSR_K =SIMP(statut='o',typ='R'), TEMP_0_C =SIMP(statut='o',typ='R'), ), - SECH_MENSI =FACT(statut='f',min=0, + SECH_MENSI =FACT(statut='f', A =SIMP(statut='o',typ='R'), B =SIMP(statut='o',typ='R'), ), - SECH_BAZANT =FACT(statut='f',min=0, + SECH_BAZANT =FACT(statut='f', D1 =SIMP(statut='o',typ='R'), ALPHA_BAZANT =SIMP(statut='o',typ='R'), N =SIMP(statut='o',typ='R'), ), - SECH_NAPPE =FACT(statut='f',min=0, + SECH_NAPPE =FACT(statut='f', FONCTION =SIMP(statut='o',typ=(nappe,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), VERI_P2 =SIMP(statut='c',typ='TXM',defaut="TSEC",into=("TSEC",) ), @@ -8498,7 +8563,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, # # comportement métallurgique # - META_ACIER =FACT(statut='f',min=0, + META_ACIER =FACT(statut='f', TRC =SIMP(statut='o',typ=(tabl_trc) ), AR3 =SIMP(statut='o',typ='R'), ALPHA =SIMP(statut='o',typ='R'), @@ -8512,7 +8577,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, D10 =SIMP(statut='f',typ='R'), WSR_K =SIMP(statut='f',typ='R'), ), - META_ZIRC =FACT(statut='f',min=0, + META_ZIRC =FACT(statut='f', TDEQ =SIMP(statut='o',typ='R'), N =SIMP(statut='o',typ='R'), K =SIMP(statut='o',typ='R'), @@ -8524,14 +8589,14 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, AR =SIMP(statut='o',typ='R'), BR =SIMP(statut='o',typ='R'), ), - DURT_META =FACT(statut='f',min=0, + DURT_META =FACT(statut='f', F1_DURT =SIMP(statut='o',typ='R'), F2_DURT =SIMP(statut='o',typ='R'), F3_DURT =SIMP(statut='o',typ='R'), F4_DURT =SIMP(statut='o',typ='R'), C_DURT =SIMP(statut='o',typ='R'), ), - ELAS_META =FACT(statut='f',min=0, + ELAS_META =FACT(statut='f', E =SIMP(statut='o',typ='R'), NU =SIMP(statut='o',typ='R'), F_ALPHA =SIMP(statut='o',typ='R'), @@ -8553,7 +8618,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, S_VP_MELANGE =SIMP(statut='f',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="META",into=("META",)), ), - ELAS_META_FO =FACT(statut='f',min=0, + ELAS_META_FO =FACT(statut='f', regles=( PRESENT_PRESENT('F_ALPHA','TEMP_DEF_ALPHA'), PRESENT_PRESENT('C_ALPHA','TEMP_DEF_ALPHA'), @@ -8581,7 +8646,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), VERI_P2 =SIMP(statut='c',typ='TXM',defaut="META",into=("META",)), ), - META_ECRO_LINE =FACT(statut='f',min=0, + META_ECRO_LINE =FACT(statut='f', F1_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction,formule)), F2_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction,formule)), F3_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction,formule)), @@ -8589,7 +8654,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, C_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), ), - META_TRACTION =FACT(statut='f',min=0, + META_TRACTION =FACT(statut='f', SIGM_F1 =SIMP(statut='f',typ=(fonction,formule)), SIGM_F2 =SIMP(statut='f',typ=(fonction,formule)), SIGM_F3 =SIMP(statut='f',typ=(fonction,formule)), @@ -8598,7 +8663,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, VERI_P1 =SIMP(statut='c',typ='TXM',defaut="EPSI",into=("EPSI",)), VERI_P2 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), ), - META_VISC_FO =FACT(statut='f',min=0, + META_VISC_FO =FACT(statut='f', F1_ETA =SIMP(statut='f',typ=(fonction,formule)), F1_N =SIMP(statut='f',typ=(fonction,formule)), F1_C =SIMP(statut='f',typ=(fonction,formule)), @@ -8621,7 +8686,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, C_M =SIMP(statut='f',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - META_PT =FACT(statut='f',min=0, + META_PT =FACT(statut='f', F1_K =SIMP(statut='f',typ='R'), F2_K =SIMP(statut='f',typ='R'), F3_K =SIMP(statut='f',typ='R'), @@ -8633,7 +8698,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), VERI_P2 =SIMP(statut='c',typ='TXM',defaut="META",into=("META",) ), ), - META_RE =FACT(statut='f',min=0, + META_RE =FACT(statut='f', C_F1_THETA =SIMP(statut='f',typ='R'), C_F2_THETA =SIMP(statut='f',typ='R'), C_F3_THETA =SIMP(statut='f',typ='R'), @@ -8646,13 +8711,13 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, # # comportement fluide # - FLUIDE =FACT(statut='f',min=0, + FLUIDE =FACT(statut='f', regles=(EXCLUS('CELE_C','CELE_R'),), RHO =SIMP(statut='o',typ='R'), CELE_C =SIMP(statut='f',typ='C'), CELE_R =SIMP(statut='f',typ='R'), ), - PORO_JOINT =FACT(statut='f',min=0, + PORO_JOINT =FACT(statut='f', RHO_FLUI =SIMP(statut='o',typ='R'), ENTRO_FLUI =SIMP(statut='o',typ='R'), BIOT_M =SIMP(statut='o',typ='R'), @@ -8664,7 +8729,863 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, SOURCE_INIT =SIMP(statut='o',typ='R'), OMEGA_0 =SIMP(statut='o',typ='R'), ), - THM_LIQU =FACT(statut='f',min=0, +# ================================================================================= +# COMPORTEMENT THERMO_HYDRO_MECANIQUE +# LES DONNEES NECESSAIRES A LA DEFINITION DU MATERIAU SONT DEPENDANTES +# DE LA LOI DE COUPLAGE THM DE LA RELATION +# LE COMPORTEMENT DE COUPLAGE COMP_THM N EST VALABLE QUE POUR LES LOIS +# DE COUPLAGE : LIQU_SATU,LIQU_GAZ,GAZ,LIQU_GAZ_ATM,LIQU_VAPE_GAZ,LIQU_VAPE +# POUR LES LOIS DE COUPLAGE LIQU_SATU_GAT ET LIQU_NSAT_GAT +# ON NE MODIFIE RIEN +# LA CORRESPONDANCE AVEC LES VARIABLES CACHEES EST LA SUIVANTE : +# 1 --> LIQU_SATU +# 2 --> GAZ +# 3 --> LIQU_VAPE +# 4 --> LIQU_VAPE_GAZ +# 5 --> LIQU_GAZ +# 6 --> LIQU_GAZ_ATM +# 7 --> LIQU_SATU_GAT +# 8 --> LIQU_NSAT_GAT +# ================================================================================= + COMP_THM = SIMP(statut='f', typ='TXM', + into = ( "LIQU_SATU" , + "LIQU_GAZ" , + "GAZ" , + "LIQU_GAZ_ATM" , + "LIQU_VAPE_GAZ" , + "LIQU_VAPE" , + "LIQU_SATU_GAT" , + "LIQU_NSAT_GAT" , + ) ), +# ================================================================================= +# --- LOI DE COUPLAGE DE TYPE LIQU_SATU ------------------------------------------- +# ================================================================================= +# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : --------------------------------- +# --- THM_INIT, THM_DIFFU, THM_LIQU ----------------------------------------------- +# ================================================================================= + b_liqusatu = BLOC(condition = "COMP_THM == 'LIQU_SATU' ", + fr="Paramètres nécessaires pour une loi de couplage de type LIQU_SATU", +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_INIT = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + PRE1 = SIMP(statut='o',typ='R'), + PORO = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + TEMP = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + PRE2 = SIMP(statut='f',typ='R'), + PRES_VAPE = SIMP(statut='f',typ='R'), + DEGR_SATU = SIMP(statut='f',typ='R'), + PRES_ATMO = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 1.0,), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_DIFFU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + BIOT_COEF = SIMP(statut='o',typ='R'), + PESA_X = SIMP(statut='o',typ='R'), + PESA_Y = SIMP(statut='o',typ='R'), + PESA_Z = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + PERM_IN = SIMP(statut='f',typ=(fonction,formule)), + PERM_END = SIMP(statut='f',typ=(fonction,formule)), + regles = (EXCLUS('PERM_IN','PERM_END'),), + LAMBDA = SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + R_GAZ = SIMP(statut='f',typ='R'), + SATU_PRES =SIMP(statut='f',typ=(fonction,formule)), + D_SATU_PRES =SIMP(statut='f',typ=(fonction,formule)), + PERM_LIQU =SIMP(statut='f',typ=(fonction,formule)), + D_PERM_LIQU_SATU=SIMP(statut='f',typ=(fonction,formule)), + PERM_GAZ =SIMP(statut='f',typ=(fonction,formule)), + D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction,formule)), + D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction,formule)), + FICK =SIMP(statut='f',typ=(fonction,formule)), + D_FICK_TEMP =SIMP(statut='f',typ=(fonction,formule)), + D_FICK_GAZ_PRES =SIMP(statut='f',typ=(fonction,formule)), + SIGMA_T =SIMP(statut='f',typ=(fonction,formule)), + D_SIGMA_T =SIMP(statut='f',typ=(fonction,formule)), + PERM_G_INTR =SIMP(statut='f',typ=(fonction,formule)), + CHAL_VAPO =SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), + VERI_P2 =SIMP(statut='c',typ='TXM',defaut="SAT", into=("SAT" ,) ), + VERI_P3 =SIMP(statut='c',typ='TXM',defaut="PORO",into=("PORO",) ), + VERI_P4 =SIMP(statut='c',typ='TXM',defaut="PGAZ",into=("PGAZ",) ), + VERI_P5 =SIMP(statut='c',typ='TXM',defaut="PCAP",into=("PCAP",) ), + VERI_P6 =SIMP(statut='c',typ='TXM',defaut="ENDO",into=("ENDO",) ), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_LIQU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + UN_SUR_K = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + ALPHA = SIMP(statut='f',typ='R'), + CP = SIMP(statut='f',typ='R'), + LAMBDA = SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + COEF_HENRY =SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 = SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), +# ================================================================================= +# --- MOT-CLE INUTILE ------------------------------------------------------------- +# ================================================================================= + THM_GAZ =FACT(statut='f', + MASS_MOL =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction,formule)), + LAMBDA =SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction,formule)), + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), +# ================================================================================= +# --- MOT-CLE INUTILE ------------------------------------------------------------- +# ================================================================================= + THM_VAPE_GAZ =FACT(statut='f', + MASS_MOL =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction,formule)), + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), + ), +# ================================================================================= +# --- LOI DE COUPLAGE DE TYPE LIQU_GAZ -------------------------------------------- +# ================================================================================= +# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : --------------------------------- +# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ -------------------------------------- +# ================================================================================= + b_liqugaz = BLOC(condition = "COMP_THM == 'LIQU_GAZ' ", + fr="Paramètres nécessaires pour une loi de couplage de type LIQU_GAZ", +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_INIT = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + PRE1 = SIMP(statut='o',typ='R'), + PRE2 = SIMP(statut='o',typ='R'), + PORO = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + TEMP = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + PRES_VAPE = SIMP(statut='f',typ='R'), + DEGR_SATU = SIMP(statut='f',typ='R'), + PRES_ATMO = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 5.0,), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_DIFFU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + R_GAZ = SIMP(statut='o',typ='R'), + RHO = SIMP(statut='o',typ='R'), + BIOT_COEF = SIMP(statut='o',typ='R'), + PESA_X = SIMP(statut='o',typ='R'), + PESA_Y = SIMP(statut='o',typ='R'), + PESA_Z = SIMP(statut='o',typ='R'), + SATU_PRES = SIMP(statut='o',typ=(fonction,formule)), + D_SATU_PRES = SIMP(statut='o',typ=(fonction,formule)), + PERM_LIQU = SIMP(statut='o',typ=(fonction,formule)), + D_PERM_LIQU_SATU = SIMP(statut='o',typ=(fonction,formule)), + PERM_GAZ = SIMP(statut='o',typ=(fonction,formule)), + D_PERM_SATU_GAZ = SIMP(statut='o',typ=(fonction,formule)), + D_PERM_PRES_GAZ = SIMP(statut='o',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + PERM_IN = SIMP(statut='f',typ=(fonction,formule)), + PERM_END = SIMP(statut='f',typ=(fonction,formule)), + regles = (EXCLUS('PERM_IN','PERM_END'),), + LAMBDA = SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + FICK = SIMP(statut='f',typ=(fonction,formule)), + D_FICK_TEMP = SIMP(statut='f',typ=(fonction,formule)), + D_FICK_GAZ_PRES = SIMP(statut='f',typ=(fonction,formule)), + SIGMA_T = SIMP(statut='f',typ=(fonction,formule)), + D_SIGMA_T = SIMP(statut='f',typ=(fonction,formule)), + PERM_G_INTR = SIMP(statut='f',typ=(fonction,formule)), + CHAL_VAPO = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 = SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), + VERI_P2 = SIMP(statut='c',typ='TXM',defaut="SAT" ,into=("SAT" ,) ), + VERI_P3 = SIMP(statut='c',typ='TXM',defaut="PORO",into=("PORO",) ), + VERI_P4 = SIMP(statut='c',typ='TXM',defaut="PGAZ",into=("PGAZ",) ), + VERI_P5 = SIMP(statut='c',typ='TXM',defaut="PCAP",into=("PCAP",) ), + VERI_P6 = SIMP(statut='c',typ='TXM',defaut="ENDO",into=("ENDO",) ), + ) , +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_LIQU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + UN_SUR_K = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + ALPHA = SIMP(statut='f',typ='R'), + CP = SIMP(statut='f',typ='R'), + LAMBDA = SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + COEF_HENRY = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 = SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_GAZ = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + MASS_MOL = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + LAMBDA = SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 = SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), +# ================================================================================= +# --- MOT-CLE INUTILE ------------------------------------------------------------- +# ================================================================================= + THM_VAPE_GAZ =FACT(statut='f', + MASS_MOL =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction,formule)), + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), + ), +# ================================================================================= +# --- LOI DE COUPLAGE DE TYPE GAZ ------------------------------------------------- +# ================================================================================= +# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : --------------------------------- +# --- THM_INIT, THM_DIFFU, THM_GAZ ------------------------------------------------ +# ================================================================================= + b_gaz = BLOC(condition = "COMP_THM == 'GAZ' ", + fr="Paramètres nécessaires pour une loi de couplage de type GAZ", +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_INIT = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + TEMP = SIMP(statut='o',typ='R'), + PRE1 = SIMP(statut='o',typ='R'), + PORO = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + PRE2 = SIMP(statut='f',typ='R'), + PRES_VAPE = SIMP(statut='f',typ='R'), + DEGR_SATU = SIMP(statut='f',typ='R'), + PRES_ATMO = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 2.0,), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_DIFFU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + R_GAZ = SIMP(statut='o',typ='R'), + RHO = SIMP(statut='o',typ='R'), + BIOT_COEF = SIMP(statut='o',typ='R'), + PESA_X = SIMP(statut='o',typ='R'), + PESA_Y = SIMP(statut='o',typ='R'), + PESA_Z = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + PERM_IN = SIMP(statut='f',typ=(fonction,formule)), + PERM_END = SIMP(statut='f',typ=(fonction,formule)), + regles = (EXCLUS('PERM_IN','PERM_END'),), + LAMBDA = SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + SATU_PRES =SIMP(statut='f',typ=(fonction,formule)), + D_SATU_PRES =SIMP(statut='f',typ=(fonction,formule)), + PERM_LIQU =SIMP(statut='f',typ=(fonction,formule)), + D_PERM_LIQU_SATU=SIMP(statut='f',typ=(fonction,formule)), + PERM_GAZ =SIMP(statut='f',typ=(fonction,formule)), + D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction,formule)), + D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction,formule)), + FICK =SIMP(statut='f',typ=(fonction,formule)), + D_FICK_TEMP =SIMP(statut='f',typ=(fonction,formule)), + D_FICK_GAZ_PRES =SIMP(statut='f',typ=(fonction,formule)), + SIGMA_T =SIMP(statut='f',typ=(fonction,formule)), + D_SIGMA_T =SIMP(statut='f',typ=(fonction,formule)), + PERM_G_INTR =SIMP(statut='f',typ=(fonction,formule)), + CHAL_VAPO =SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), + VERI_P2 =SIMP(statut='c',typ='TXM',defaut="SAT",into=("SAT",) ), + VERI_P3 =SIMP(statut='c',typ='TXM',defaut="PORO",into=("PORO",) ), + VERI_P4 =SIMP(statut='c',typ='TXM',defaut="PGAZ",into=("PGAZ",) ), + VERI_P5 =SIMP(statut='c',typ='TXM',defaut="PCAP",into=("PCAP",) ), + VERI_P6 =SIMP(statut='c',typ='TXM',defaut="ENDO",into=("ENDO",) ), + ) , +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_GAZ = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + MASS_MOL = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + LAMBDA = SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 = SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), +# ================================================================================= +# --- MOT-CLE INUTILE ------------------------------------------------------------- +# ================================================================================= + THM_LIQU =FACT(statut='f', + RHO =SIMP(statut='f',typ='R'), + UN_SUR_K =SIMP(statut='f',typ='R'), + ALPHA =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction,formule)), + LAMBDA =SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction,formule)), + COEF_HENRY =SIMP(statut='f',typ='R'), + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), +# ================================================================================= +# --- MOT-CLE INUTILE ------------------------------------------------------------- +# ================================================================================= + THM_VAPE_GAZ =FACT(statut='f', + MASS_MOL =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction,formule)), + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), + ), +# ================================================================================= +# --- LOI DE COUPLAGE DE TYPE LIQU_GAZ_ATM ---------------------------------------- +# ================================================================================= +# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : --------------------------------- +# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ -------------------------------------- +# ================================================================================= + b_liqugazatm = BLOC(condition = "COMP_THM == 'LIQU_GAZ_ATM' ", + fr="Paramètres nécessaires pour une loi de couplage de type LIQU_GAZ_ATM", +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_INIT = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + PRE1 = SIMP(statut='o',typ='R'), + PORO = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + TEMP = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + PRE2 = SIMP(statut='f',typ='R'), + PRES_VAPE = SIMP(statut='f',typ='R'), + DEGR_SATU = SIMP(statut='f',typ='R'), + PRES_ATMO = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 6.0,), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_DIFFU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + BIOT_COEF = SIMP(statut='o',typ='R'), + PESA_X = SIMP(statut='o',typ='R'), + PESA_Y = SIMP(statut='o',typ='R'), + PESA_Z = SIMP(statut='o',typ='R'), + SATU_PRES = SIMP(statut='o',typ=(fonction,formule)), + D_SATU_PRES = SIMP(statut='o',typ=(fonction,formule)), + PERM_LIQU = SIMP(statut='o',typ=(fonction,formule)), + D_PERM_LIQU_SATU = SIMP(statut='o',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + PERM_IN = SIMP(statut='f',typ=(fonction,formule)), + PERM_END = SIMP(statut='f',typ=(fonction,formule)), + regles = (EXCLUS('PERM_IN','PERM_END'),), + LAMBDA = SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + R_GAZ =SIMP(statut='f',typ='R'), + PERM_GAZ =SIMP(statut='f',typ=(fonction,formule)), + D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction,formule)), + D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction,formule)), + FICK =SIMP(statut='f',typ=(fonction,formule)), + D_FICK_TEMP =SIMP(statut='f',typ=(fonction,formule)), + D_FICK_GAZ_PRES =SIMP(statut='f',typ=(fonction,formule)), + SIGMA_T =SIMP(statut='f',typ=(fonction,formule)), + D_SIGMA_T =SIMP(statut='f',typ=(fonction,formule)), + PERM_G_INTR =SIMP(statut='f',typ=(fonction,formule)), + CHAL_VAPO =SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), + VERI_P2 =SIMP(statut='c',typ='TXM',defaut="SAT", into=("SAT", ) ), + VERI_P3 =SIMP(statut='c',typ='TXM',defaut="PORO",into=("PORO",) ), + VERI_P4 =SIMP(statut='c',typ='TXM',defaut="PGAZ",into=("PGAZ",) ), + VERI_P5 =SIMP(statut='c',typ='TXM',defaut="PCAP",into=("PCAP",) ), + VERI_P6 =SIMP(statut='c',typ='TXM',defaut="ENDO",into=("ENDO",) ), + ) , +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_LIQU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + UN_SUR_K = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + ALPHA = SIMP(statut='f',typ='R'), + CP = SIMP(statut='f',typ='R'), + LAMBDA = SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + COEF_HENRY = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 = SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_GAZ = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + MASS_MOL = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + LAMBDA = SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES --------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 = SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), +# ================================================================================= +# --- MOT-CLE INUTILE ------------------------------------------------------------- +# ================================================================================= + THM_VAPE_GAZ =FACT(statut='f', + MASS_MOL =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction,formule)), + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), + ), +# ================================================================================= +# --- LOI DE COUPLAGE DE TYPE LIQU_VAPE_GAZ --------------------------------------- +# ================================================================================= +# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : --------------------------------- +# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ, THM_VAPE_GAZ ------------------------ +# ================================================================================= + b_liquvapegaz = BLOC(condition = "COMP_THM == 'LIQU_VAPE_GAZ' ", + fr="Paramètres nécessaires pour une loi de couplage de type LIQU_VAPE_GAZ", +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_INIT = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + PRE1 = SIMP(statut='o',typ='R'), + PRE2 = SIMP(statut='o',typ='R'), + PORO = SIMP(statut='o',typ='R'), + PRES_VAPE = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + TEMP = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + DEGR_SATU = SIMP(statut='f',typ='R'), + PRES_ATMO = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 4.0,), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_DIFFU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + R_GAZ = SIMP(statut='o',typ='R'), + RHO = SIMP(statut='o',typ='R'), + BIOT_COEF = SIMP(statut='o',typ='R'), + PESA_X = SIMP(statut='o',typ='R'), + PESA_Y = SIMP(statut='o',typ='R'), + PESA_Z = SIMP(statut='o',typ='R'), + SATU_PRES = SIMP(statut='o',typ=(fonction,formule)), + D_SATU_PRES = SIMP(statut='o',typ=(fonction,formule)), + PERM_LIQU = SIMP(statut='o',typ=(fonction,formule)), + D_PERM_LIQU_SATU = SIMP(statut='o',typ=(fonction,formule)), + PERM_GAZ = SIMP(statut='o',typ=(fonction,formule)), + D_PERM_SATU_GAZ = SIMP(statut='o',typ=(fonction,formule)), + D_PERM_PRES_GAZ = SIMP(statut='o',typ=(fonction,formule)), + FICK = SIMP(statut='o',typ=(fonction,formule)), + D_FICK_TEMP = SIMP(statut='o',typ=(fonction,formule)), + D_FICK_GAZ_PRES = SIMP(statut='o',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + PERM_IN = SIMP(statut='f',typ=(fonction,formule)), + PERM_END = SIMP(statut='f',typ=(fonction,formule)), + regles = (EXCLUS('PERM_IN','PERM_END'),), + LAMBDA = SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + SIGMA_T = SIMP(statut='f',typ=(fonction,formule)), + D_SIGMA_T = SIMP(statut='f',typ=(fonction,formule)), + PERM_G_INTR = SIMP(statut='f',typ=(fonction,formule)), + CHAL_VAPO = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 = SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), + VERI_P2 = SIMP(statut='c',typ='TXM',defaut="SAT" ,into=("SAT" ,) ), + VERI_P3 = SIMP(statut='c',typ='TXM',defaut="PORO",into=("PORO",) ), + VERI_P4 = SIMP(statut='c',typ='TXM',defaut="PGAZ",into=("PGAZ",) ), + VERI_P5 = SIMP(statut='c',typ='TXM',defaut="PCAP",into=("PCAP",) ), + VERI_P6 = SIMP(statut='c',typ='TXM',defaut="ENDO",into=("ENDO",) ), + ) , +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_LIQU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + UN_SUR_K = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + ALPHA = SIMP(statut='f',typ='R'), + CP = SIMP(statut='f',typ='R'), + LAMBDA = SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + COEF_HENRY = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 = SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_GAZ = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + MASS_MOL = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + LAMBDA = SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 = SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_VAPE_GAZ = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + MASS_MOL = SIMP(statut='o',typ='R'), + CP = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 = SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), + ), +# ================================================================================= +# --- LOI DE COUPLAGE DE TYPE LIQU_VAPE ------------------------------------------- +# ================================================================================= +# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : --------------------------------- +# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_VAPE_GAZ --------------------------------- +# ================================================================================= + b_liquvape = BLOC(condition = "COMP_THM == 'LIQU_VAPE' ", + fr="Paramètres nécessaires pour une loi de couplage de type LIQU_VAPE", +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_INIT = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + PRE1 = SIMP(statut='o',typ='R'), + PORO = SIMP(statut='o',typ='R'), + PRES_VAPE = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + TEMP = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + PRE2 = SIMP(statut='f',typ='R'), + DEGR_SATU = SIMP(statut='f',typ='R'), + PRES_ATMO = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 3.0,), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_DIFFU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + R_GAZ = SIMP(statut='o',typ='R'), + RHO = SIMP(statut='o',typ='R'), + BIOT_COEF = SIMP(statut='o',typ='R'), + PESA_X = SIMP(statut='o',typ='R'), + PESA_Y = SIMP(statut='o',typ='R'), + PESA_Z = SIMP(statut='o',typ='R'), + SATU_PRES = SIMP(statut='o',typ=(fonction,formule)), + D_SATU_PRES = SIMP(statut='o',typ=(fonction,formule)), + PERM_LIQU = SIMP(statut='o',typ=(fonction,formule)), + D_PERM_LIQU_SATU = SIMP(statut='o',typ=(fonction,formule)), + PERM_GAZ = SIMP(statut='o',typ=(fonction,formule)), + D_PERM_SATU_GAZ = SIMP(statut='o',typ=(fonction,formule)), + D_PERM_PRES_GAZ = SIMP(statut='o',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + PERM_IN = SIMP(statut='f',typ=(fonction,formule)), + PERM_END = SIMP(statut='f',typ=(fonction,formule)), + regles = (EXCLUS('PERM_IN','PERM_END'),), + LAMBDA = SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + FICK = SIMP(statut='f',typ=(fonction,formule)), + D_FICK_TEMP = SIMP(statut='f',typ=(fonction,formule)), + D_FICK_GAZ_PRES = SIMP(statut='f',typ=(fonction,formule)), + SIGMA_T = SIMP(statut='f',typ=(fonction,formule)), + D_SIGMA_T = SIMP(statut='f',typ=(fonction,formule)), + PERM_G_INTR = SIMP(statut='f',typ=(fonction,formule)), + CHAL_VAPO = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 = SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), + VERI_P2 = SIMP(statut='c',typ='TXM',defaut="SAT" ,into=("SAT" ,) ), + VERI_P3 = SIMP(statut='c',typ='TXM',defaut="PORO",into=("PORO",) ), + VERI_P4 = SIMP(statut='c',typ='TXM',defaut="PGAZ",into=("PGAZ",) ), + VERI_P5 = SIMP(statut='c',typ='TXM',defaut="PCAP",into=("PCAP",) ), + VERI_P6 = SIMP(statut='c',typ='TXM',defaut="ENDO",into=("ENDO",) ), + ) , +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_LIQU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + UN_SUR_K = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + ALPHA = SIMP(statut='f',typ='R'), + CP = SIMP(statut='f',typ='R'), + LAMBDA = SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP = SIMP(statut='f',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + COEF_HENRY = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES --------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 = SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_VAPE_GAZ = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + MASS_MOL = SIMP(statut='o',typ='R'), + CP = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + VERI_P1 = SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), +# ================================================================================= +# --- MOT-CLE INUTILE ------------------------------------------------------------- +# ================================================================================= + THM_GAZ =FACT(statut='f', + MASS_MOL =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction,formule)), + LAMBDA =SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction,formule)), + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), + ), +# ================================================================================= + b_liqusatugat = BLOC(condition = "COMP_THM == 'LIQU_SATU_GAT' ", + fr="Paramètres nécessaires pour une loi de couplage de type LIQU_SATU_GAT", + THM_LIQU =FACT(statut='f', RHO =SIMP(statut='o',typ='R'), UN_SUR_K =SIMP(statut='f',typ='R'), ALPHA =SIMP(statut='f',typ='R'), @@ -8676,7 +9597,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, COEF_HENRY =SIMP(statut='f',typ='R'), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), ), - THM_GAZ =FACT(statut='f',min=0, + THM_GAZ =FACT(statut='f', MASS_MOL =SIMP(statut='f',typ='R'), CP =SIMP(statut='f',typ='R'), VISC =SIMP(statut='f',typ=(fonction,formule)), @@ -8685,14 +9606,14 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), ), - THM_VAPE_GAZ =FACT(statut='f',min=0, + THM_VAPE_GAZ =FACT(statut='f', MASS_MOL =SIMP(statut='f',typ='R'), CP =SIMP(statut='f',typ='R'), VISC =SIMP(statut='f',typ=(fonction,formule)), D_VISC_TEMP =SIMP(statut='f',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), ), - THM_INIT =FACT(statut='f',min=0, + THM_INIT =FACT(statut='f', TEMP =SIMP(statut='o',typ='R'), PRE1 =SIMP(statut='o',typ='R'), PRE2 =SIMP(statut='o',typ='R'), @@ -8700,8 +9621,12 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, PRES_VAPE =SIMP(statut='o',typ='R'), DEGR_SATU =SIMP(statut='f',typ='R'), PRES_ATMO =SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 7.0,), ), - THM_DIFFU =FACT(statut='f',min=0, + THM_DIFFU =FACT(statut='f', R_GAZ =SIMP(statut='o',typ='R'), RHO =SIMP(statut='f',typ='R'), CP =SIMP(statut='f',typ='R'), @@ -8735,10 +9660,89 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, VERI_P5 =SIMP(statut='c',typ='TXM',defaut="PCAP",into=("PCAP",) ), VERI_P6 =SIMP(statut='c',typ='TXM',defaut="ENDO",into=("ENDO",) ), ), + ), + b_liqunsatgat = BLOC(condition = "COMP_THM == 'LIQU_NSAT_GAT' ", + fr="Paramètres nécessaires pour une loi de couplage de type LIQU_NSAT_GAT", + THM_LIQU =FACT(statut='f', + RHO =SIMP(statut='o',typ='R'), + UN_SUR_K =SIMP(statut='f',typ='R'), + ALPHA =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction,formule)), + LAMBDA =SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction,formule)), + COEF_HENRY =SIMP(statut='f',typ='R'), + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), + THM_GAZ =FACT(statut='f', + MASS_MOL =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction,formule)), + LAMBDA =SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction,formule)), + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), + THM_VAPE_GAZ =FACT(statut='f', + MASS_MOL =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction,formule)), + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",)), + ), + THM_INIT =FACT(statut='f', + TEMP =SIMP(statut='o',typ='R'), + PRE1 =SIMP(statut='o',typ='R'), + PRE2 =SIMP(statut='o',typ='R'), + PORO =SIMP(statut='o',typ='R'), + PRES_VAPE =SIMP(statut='o',typ='R'), + DEGR_SATU =SIMP(statut='f',typ='R'), + PRES_ATMO =SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 8.0,), + ), + THM_DIFFU =FACT(statut='f', + R_GAZ =SIMP(statut='o',typ='R'), + RHO =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + BIOT_COEF =SIMP(statut='f',typ='R'), + SATU_PRES =SIMP(statut='f',typ=(fonction,formule)), + D_SATU_PRES =SIMP(statut='f',typ=(fonction,formule)), + PESA_X =SIMP(statut='f',typ='R'), + PESA_Y =SIMP(statut='f',typ='R'), + PESA_Z =SIMP(statut='f',typ='R'), + PERM_IN =SIMP(statut='f',typ=(fonction,formule)), + PERM_END =SIMP(statut='f',typ=(fonction,formule)), + regles=(EXCLUS('PERM_IN','PERM_END'),), + PERM_LIQU =SIMP(statut='f',typ=(fonction,formule)), + D_PERM_LIQU_SATU=SIMP(statut='f',typ=(fonction,formule)), + PERM_GAZ =SIMP(statut='f',typ=(fonction,formule)), + D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction,formule)), + D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction,formule)), + FICK =SIMP(statut='f',typ=(fonction,formule)), + D_FICK_TEMP =SIMP(statut='f',typ=(fonction,formule)), + D_FICK_GAZ_PRES =SIMP(statut='f',typ=(fonction,formule)), + LAMBDA =SIMP(statut='f',typ=(fonction,formule)), + D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction,formule)), + SIGMA_T =SIMP(statut='f',typ=(fonction,formule)), + D_SIGMA_T =SIMP(statut='f',typ=(fonction,formule)), + PERM_G_INTR =SIMP(statut='f',typ=(fonction,formule)), + CHAL_VAPO =SIMP(statut='f',typ=(fonction,formule)), + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), + VERI_P2 =SIMP(statut='c',typ='TXM',defaut="SAT",into=("SAT",) ), + VERI_P3 =SIMP(statut='c',typ='TXM',defaut="PORO",into=("PORO",) ), + VERI_P4 =SIMP(statut='c',typ='TXM',defaut="PGAZ",into=("PGAZ",) ), + VERI_P5 =SIMP(statut='c',typ='TXM',defaut="PCAP",into=("PCAP",) ), + VERI_P6 =SIMP(statut='c',typ='TXM',defaut="ENDO",into=("ENDO",) ), + ), + ), # # courbes et coefficients associés à la fatigue et au dommage # - FATIGUE =FACT(statut='f',min=0, + FATIGUE =FACT(statut='f', regles=(PRESENT_ABSENT('WOHLER','A_BASQUIN','BETA_BASQUIN'), PRESENT_ABSENT('WOHLER','A0','A1','A2','A3','SL'), PRESENT_ABSENT('A_BASQUIN','A0','A1','A2','A3','SL'), @@ -8761,12 +9765,12 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, VERI_P1 =SIMP(statut='c',typ='TXM',defaut="SIGM",into=("SIGM",) ), VERI_P2 =SIMP(statut='c',typ='TXM',defaut="EPSI",into=("EPSI",) ), ), - DOMMA_LEMAITRE =FACT(statut='f',min=0, + DOMMA_LEMAITRE =FACT(statut='f', S =SIMP(statut='o',typ=(fonction,formule)), EPSP_SEUIL =SIMP(statut='o',typ='R'), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - CISA_PLAN_CRIT =FACT(statut='f',min=0, + CISA_PLAN_CRIT =FACT(statut='f', CRITERE =SIMP(statut='o',typ='TXM',into=("MATAKE","DANG_VAN") ), b_critere_matake =BLOC(condition="CRITERE=='MATAKE'", @@ -8786,13 +9790,13 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, # # autres comportements ... # - WEIBULL =FACT(statut='f',min=0, + WEIBULL =FACT(statut='f', M =SIMP(statut='o',typ='R'), VOLU_REFE =SIMP(statut='o',typ='R'), SIGM_REFE =SIMP(statut='o',typ='R'), SEUIL_EPSP_CUMU =SIMP(statut='f',typ='R',defaut= 1.0E-6), ), - WEIBULL_FO =FACT(statut='f',min=0, + WEIBULL_FO =FACT(statut='f', M =SIMP(statut='o',typ='R'), VOLU_REFE =SIMP(statut='o',typ='R'), SIGM_CNV =SIMP(statut='o',typ='R'), @@ -8800,16 +9804,16 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, SEUIL_EPSP_CUMU =SIMP(statut='f',typ='R',defaut= 1.0E-6), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - NON_LOCAL =FACT(statut='f',min=0, + NON_LOCAL =FACT(statut='f', LONG_CARA =SIMP(statut='o',typ='R'), COEF_RIGI_MINI =SIMP(statut='f',typ='R'), ), - RUPT_FRAG =FACT(statut='f',min=0, + RUPT_FRAG =FACT(statut='f', GC =SIMP(statut='o',typ='R'), SIGM_C =SIMP(statut='f',typ='R'), SAUT_C =SIMP(statut='f',typ='R'), ), - RCCM =FACT(statut='f',min=0, + RCCM =FACT(statut='f', SY_02 =SIMP(statut='f',typ='R'), SM =SIMP(statut='f',typ='R'), SU =SIMP(statut='f',typ='R'), @@ -8818,7 +9822,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, N_KE =SIMP(statut='f',typ='R'), M_KE =SIMP(statut='f',typ='R'), ), - RCCM_FO =FACT(statut='f',min=0, + RCCM_FO =FACT(statut='f', SY_02 =SIMP(statut='f',typ=(fonction,formule)), SM =SIMP(statut='f',typ=(fonction,formule)), SU =SIMP(statut='f',typ=(fonction,formule)), @@ -8827,7 +9831,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, M_KE =SIMP(statut='f',typ=(fonction,formule)), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), - LAIGLE =FACT(statut='f',min=0, + LAIGLE =FACT(statut='f', GAMMA_ULT =SIMP(statut='o',typ='R'), GAMMA_E =SIMP(statut='o',typ='R'), M_ULT =SIMP(statut='o',typ='R'), @@ -9649,7 +10653,7 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, # Peut-on aussi rajouter ici le test d incompatibilite charge complexe - derivation # presents dans le Fortran -#& MODIF COMMANDE DATE 09/09/2003 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 14/10/2003 AUTEUR ACBHHCD G.DEVESA # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9714,7 +10718,8 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, EXCLUS('ACCE','COEF_MULT'), PRESENT_ABSENT('ACCE','FONC_MULT'), PRESENT_PRESENT('ACCE','VITE','DEPL'), - PRESENT_ABSENT('MULT_APPUI','FONC_MULT'),), + # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'), + ), VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r ), CHARGE =SIMP(statut='f',typ=char_meca ), FONC_MULT =SIMP(statut='f',typ=(fonction,formule) ), @@ -9723,7 +10728,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, ACCE =SIMP(statut='f',typ=(fonction,formule) ), VITE =SIMP(statut='f',typ=(fonction,formule) ), DEPL =SIMP(statut='f',typ=(fonction,formule) ), - MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), DIRECTION =SIMP(statut='f',typ='R',max='**'), NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), @@ -9777,7 +10782,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 09/09/2003 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 14/10/2003 AUTEUR ACBHHCD G.DEVESA # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9807,7 +10812,8 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', EXCIT =FACT(statut='o',max='**', regles=(PRESENT_ABSENT('FONC_MULT','ACCE'), PRESENT_PRESENT('ACCE','VITE','DEPL'), - PRESENT_ABSENT('MULT_APPUI','FONC_MULT'),), + # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'), + ), TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE", into=("FIXE_CSTE","FIXE_PILO","SUIV","DIDI")), CHARGE =SIMP(statut='o',typ=char_meca), @@ -9815,7 +10821,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', DEPL =SIMP(statut='f',typ=(fonction,formule)), ACCE =SIMP(statut='f',typ=(fonction,formule)), VITE =SIMP(statut='f',typ=(fonction,formule)), - MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), DIRECTION =SIMP(statut='f',typ='R',max='**'), NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), @@ -10079,7 +11085,7 @@ DYNA_SPEC_MODAL=OPER(nom="DYNA_SPEC_MODAL",op= 147,sd_prod=tabl_intsp, TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 09/09/2003 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 14/10/2003 AUTEUR ACBHHCD G.DEVESA # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG @@ -10108,7 +11114,8 @@ DYNA_TRAN_EXPLI=OPER(nom="DYNA_TRAN_EXPLI",op= 69,sd_prod=evol_noli,reentrant='f EXCIT =FACT(statut='o',max='**', regles=(PRESENT_ABSENT('FONC_MULT','ACCE'), PRESENT_PRESENT('ACCE','VITE','DEPL'), - PRESENT_ABSENT('MULT_APPUI','FONC_MULT'),), + # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'), + ), TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE", into=("FIXE_CSTE","FIXE_PILO","SUIV","DIDI")), CHARGE =SIMP(statut='o',typ=char_meca), @@ -10116,7 +11123,7 @@ DYNA_TRAN_EXPLI=OPER(nom="DYNA_TRAN_EXPLI",op= 69,sd_prod=evol_noli,reentrant='f DEPL =SIMP(statut='f',typ=(fonction,formule)), ACCE =SIMP(statut='f',typ=(fonction,formule)), VITE =SIMP(statut='f',typ=(fonction,formule)), - MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), DIRECTION =SIMP(statut='f',typ='R',max=3), NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), @@ -10729,6 +11736,56 @@ EXTR_RESU=OPER(nom="EXTR_RESU",op=176,sd_prod=extr_resu_prod,docu="U4.71.04-c",r TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; +#& MODIF COMMANDE DATE 16/09/2003 AUTEUR CIBHHLV L.VIVAN +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2003 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. +# ====================================================================== +def extr_table_prod(TYPE_RESU,**args): + if TYPE_RESU == "MATR_ASSE_GENE_R" : return matr_asse_gene_r + raise AsException("type de concept resultat non prevu") + +EXTR_TABLE=OPER(nom="EXTR_TABLE",op=173,sd_prod=extr_table_prod,docu="U4.71.05",reentrant='n', + UIinfo={"groupes":("Résultats et champs",)}, + + TYPE_RESU =SIMP(statut='o',typ='TXM',into=("MATR_ASSE_GENE_R",) ), + + TABLE =SIMP(statut='o',typ=table), + + NOM_PARA =SIMP(statut='o',typ='TXM'), + + FILTRE =FACT(statut='f',min=1,max='**', + NOM_PARA =SIMP(statut='o',typ='TXM'), + CRIT_COMP =SIMP(statut='f',typ='TXM',defaut="EQ", + into=("EQ","LT","GT","NE","LE","GE","VIDE", + "NON_VIDE","MAXI","ABS_MAXI","MINI","ABS_MINI") ), + b_vale =BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))", + regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),), + VALE =SIMP(statut='f',typ='R'), + VALE_I =SIMP(statut='f',typ='I'), + VALE_C =SIMP(statut='f',typ='C'), + 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 ), + ), + + TITRE =SIMP(statut='f',typ='TXM',max='**' ), +) ; + #& MODIF COMMANDE DATE 09/09/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -11725,30 +12782,30 @@ IMPR_MACR_ELEM=PROC(nom="IMPR_MACR_ELEM",op= 160, ) ; -#& MODIF COMMANDE DATE 09/09/2003 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 11/09/2003 AUTEUR VABHHTS J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 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. +# 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. +# 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. +# 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. # ====================================================================== IMPR_MATRICE=PROC(nom="IMPR_MATRICE",op= 159, fr="Impression des matrices élémentaires et des matrices assemblées", docu="U7.04.32-d", UIinfo={"groupes":("Impression",)}, regles=(AU_MOINS_UN('MATR_ELEM','MATR_ASSE'),), - + MATR_ELEM =FACT(statut='f',max='**', FICHIER =SIMP(statut='f',typ='TXM' ), FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS", @@ -11756,9 +12813,9 @@ IMPR_MATRICE=PROC(nom="IMPR_MATRICE",op= 159, b_format =BLOC(condition = "FORMAT == 'IDEAS'", VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ), ), -# créer les types matr_elem et vect_elem +# créer les types matr_elem et vect_elem MATRICE =SIMP(statut='o',typ=(matr_elem, vect_elem)), -# Quelle regle pour TOUT, NOEUD, GROUP_NO, MAILLE, GROUP_MA +# Quelle regle pour TOUT, NOEUD, GROUP_NO, MAILLE, GROUP_MA TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), @@ -11774,9 +12831,9 @@ IMPR_MATRICE=PROC(nom="IMPR_MATRICE",op= 159, FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS", into=("IDEAS","RESULTAT") ), VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ), -# créer le type matr_elem - MATRICE =SIMP(statut='o',typ=matr_asse), -# Quelle regle pour TOUT, NOEUD, GROUP_NO, MAILLE, GROUP_MA +# créer le type matr_elem + MATRICE =SIMP(statut='o',typ=matr_asse_gd), +# Quelle regle pour TOUT, NOEUD, GROUP_NO, MAILLE, GROUP_MA TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), @@ -12288,7 +13345,7 @@ INTE_MAIL_3D=OPER(nom="INTE_MAIL_3D",op=96,sd_prod=surface,docu="U4.81.12-f", INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 09/09/2003 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 30/09/2003 AUTEUR VABHHTS J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12468,7 +13525,7 @@ LIRE_CHAMP=OPER(nom="LIRE_CHAMP",op= 192,sd_prod=lire_champ_prod, "NOEU_VAR2_R", "ELEM_VARI_R", "ELNO_VARI_R", "ELGA_VARI_R", "NOEU_VNOR_C", "ELEM_VNOR_C", "ELNO_VNOR_C", "ELGA_VNOR_C", "NOEU_IRRA_R", "ELEM_IRRA_R", "ELNO_IRRA_R", "ELGA_IRRA_R",) ), - b_modele =BLOC(condition = "TYPE_CHAM[0:2] == 'EL'", + b_modele =BLOC(condition = "TYPE_CHAM!=None and TYPE_CHAM[0:2] == 'EL'", MODELE =SIMP(statut='o',typ=modele, ), ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), @@ -15690,7 +16747,7 @@ MODI_BASE_MODALE=OPER(nom="MODI_BASE_MODALE",op= 149,sd_prod=mode_meca, TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 09/09/2003 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 29/09/2003 AUTEUR JMBHH01 J.M.PROIX # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15715,7 +16772,7 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage, UIinfo={"groupes":("Maillage",)}, regles=(AU_MOINS_UN('ORIE_CONTACT','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE', - 'TRANSLATION','ROTATION','MODI_BASE','ECHELLE',), + 'TRANSLATION','ROTATION','MODI_BASE','ECHELLE','ORIE_SHB8'), PRESENT_ABSENT('ORIE_CONTACT','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',), PRESENT_ABSENT('DEFORME','ORIE_CONTACT','EQUE_PIQUA','ORIE_PEAU_2D', @@ -15725,9 +16782,9 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage, PRESENT_ABSENT('ORIE_PEAU_2D','ORIE_CONTACT','DEFORME','EQUE_PIQUA', 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',), PRESENT_ABSENT('ORIE_PEAU_3D','ORIE_CONTACT','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', - 'ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',), + 'PLAQ_TUBE','MODI_MAILLE',), PRESENT_ABSENT('ORIE_NORM_COQUE','ORIE_CONTACT','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', - 'ORIE_PEAU_3D','PLAQ_TUBE','MODI_MAILLE',), + 'PLAQ_TUBE','MODI_MAILLE',), PRESENT_ABSENT('PLAQ_TUBE','ORIE_CONTACT','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', 'ORIE_PEAU_3D','ORIE_NORM_COQUE','MODI_MAILLE',), PRESENT_ABSENT('MODI_MAILLE','ORIE_CONTACT','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', @@ -15771,6 +16828,9 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage, ORIE_PEAU_3D =FACT(statut='f',max='**', GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), ), + ORIE_SHB8 =FACT(statut='f',max='**', + GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + ), ORIE_NORM_COQUE =FACT(statut='f',max='**', regles=(EXCLUS('NOEUD','GROUP_NO'), PRESENT_PRESENT('NOEUD','VECT_NORM'), @@ -18347,7 +19407,7 @@ REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=tabl_intsp, TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 09/09/2003 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 26/09/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -18365,12 +19425,12 @@ REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=tabl_intsp, # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== -RETOUR=MACRO(nom="RETOUR",op= ops.build_retour,docu="U4.13.02-f", +RETOUR=MACRO(nom="RETOUR",op=ops.build_retour,docu="U4.13.02-f", UIinfo={"groupes":("Gestion du travail",)}, fr="Retour au fichier de commandes appelant", ) ; -#& MODIF COMMANDE DATE 09/09/2003 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 16/09/2003 AUTEUR JMBHH01 J.M.PROIX # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -18569,6 +19629,11 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**'), + ), + CRIT_FLAMB =FACT(statut='f',min=1,max=1, + NB_FREQ =SIMP(statut='f',typ='I',max=1,defaut=3), + CHAR_CRIT =SIMP(statut='f',typ='R',min=2,max=2,defaut=(-10.0,10), + fr="Valeur des deux charges critiques délimitant la bande de recherche en HPP"), ), SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', fr="Liste des paramètres de sensibilité", diff --git a/Aster/Cata/cata_reduit.py b/Aster/Cata/cata_reduit.py new file mode 100755 index 00000000..120cdb4f --- /dev/null +++ b/Aster/Cata/cata_reduit.py @@ -0,0 +1,576 @@ +#& MODIF ENTETE DATE 18/03/2003 AUTEUR MCOURTOI M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 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. +# ====================================================================== +import Accas +from Accas import * +from Accas import _F +import string + +import ops + +try: + import aster +except: + pass + +# +__version__="$Name: $" +__Id__="$Id: cata_reduit.py,v 1.1.2.2 2003/10/16 10:09:09 eficas Exp $" +# +JdC = JDC_CATA(code='ASTER', + execmodul=None, + regles = (AU_MOINS_UN('DEBUT','POURSUITE'), + AU_MOINS_UN('FIN'), + A_CLASSER(('DEBUT','POURSUITE'),'FIN'))) +# Type le plus general +class entier (ASSD):pass +class reel (ASSD):pass +class complexe(ASSD):pass +class chaine (ASSD):pass + + +# Type geometriques +class no (GEOM):pass +class grno(GEOM):pass +class ma (GEOM):pass +class grma(GEOM):pass + + + +# Autres + +class cabl_precont (ASSD):pass +class cara_elem (ASSD):pass +class cara_pout (ASSD):pass +class cham_mater (ASSD):pass +class char_acou (ASSD):pass +class char_cine_acou (ASSD):pass +class char_cine_meca (ASSD):pass +class char_cine_ther (ASSD):pass +class char_meca (ASSD):pass +class char_ther (ASSD):pass +class courbe (ASSD):pass +class fond_fiss (ASSD):pass +class interf_dyna_clas(ASSD):pass +class interspfact (ASSD):pass +class listis (ASSD):pass +class liste (ASSD):pass +class macr_elem_dyna (ASSD):pass +class macr_elem_stat (ASSD):pass +class mater (ASSD):pass +class melasflu (ASSD):pass +class modele (ASSD):pass +class modele_gene (ASSD):pass +class nume_ddl (ASSD):pass +class nume_ddl_gene (ASSD):pass +class obstacle (ASSD):pass +class spectre (ASSD):pass +class surface (ASSD):pass +class tran_gene (ASSD):pass +class type_flui_stru (ASSD):pass +class valeur (ASSD):pass + + +# liste : +#-------------------------------- +class listr8 (ASSD): + def LIST_VALEURS(self) : + """ retourne la liste des valeurs [ val1, ...] """ + vale=string.ljust(self.get_name(),19)+'.VALE' + return list(aster.getvectjev(vale)) + + + +# maillage : +#-------------------------------- +class maillage(ASSD): + def LIST_GROUP_NO(self) : + """ retourne la liste des groupes de noeuds sous la forme : + [ (gno1, nb noeuds gno1), ...] """ + return aster.GetMaillage(self.get_name(), "GROUP_NO") + def LIST_GROUP_MA(self) : + """ retourne la liste des groupes de mailles sous la forme : + [ (gma1, nb mailles gma1, dime max des mailles gma1), ...] """ + return aster.GetMaillage(self.get_name(), "GROUP_MA") + + +class squelette (maillage):pass + + +# cham_gd (carte,cham_no,cham_elem) +#-------------------------------- + +class cham_gd(ASSD):pass + +# cham_gd/carte : +#-------------------------------- +class carte(cham_gd):pass +class carte_dbel_r (carte):pass +class carte_depl_c (carte):pass +class carte_depl_f (carte):pass +class carte_depl_r (carte):pass +class carte_durt_r (carte):pass +class carte_ener_r (carte):pass +class carte_epsi_r (carte):pass +class carte_erreur (carte):pass +class carte_flux_r (carte):pass +class carte_g_depl_r (carte):pass +class carte_geom_r (carte):pass +class carte_hydr_r (carte):pass +class carte_inst_r (carte):pass +class carte_inte_r (carte):pass +class carte_irra_r (carte):pass +class carte_meta_r (carte):pass +class carte_neut_f (carte):pass +class carte_neut_r (carte):pass +class carte_pres_r (carte):pass +class carte_sief_r (carte):pass +class carte_sour_r (carte):pass +class carte_temp_f (carte):pass +class carte_temp_r (carte):pass +class carte_var2_r (carte):pass +class carte_vnor_c (carte):pass + + +# cham_gd/cham_elem : +#-------------------------------- +class cham_elem(cham_gd):pass +class cham_elem_crit_r(cham_elem):pass +class cham_elem_dbel_r(cham_elem):pass +class cham_elem_depl_c(cham_elem):pass +class cham_elem_depl_f(cham_elem):pass +class cham_elem_depl_r(cham_elem):pass +class cham_elem_dommag(cham_elem):pass +class cham_elem_durt_r(cham_elem):pass +class cham_elem_ener_r(cham_elem):pass +class cham_elem_epsi_c(cham_elem):pass +class cham_elem_epsi_r(cham_elem):pass +class cham_elem_erreur(cham_elem):pass +class cham_elem_facy_r(cham_elem):pass +class cham_elem_flux_r(cham_elem):pass +class cham_elem_g_depl(cham_elem):pass +class cham_elem_geom_r(cham_elem):pass +class cham_elem_hydr_r(cham_elem):pass +class cham_elem_inst_r(cham_elem):pass +class cham_elem_inte_r(cham_elem):pass +class cham_elem_irra_r(cham_elem):pass +class cham_elem_meta_r(cham_elem):pass +class cham_elem_neut_f(cham_elem):pass +class cham_elem_neut_r(cham_elem):pass +class cham_elem_pres_r(cham_elem):pass +class cham_elem_sief_c(cham_elem):pass +class cham_elem_sief_r(cham_elem):pass +class cham_elem_sour_r(cham_elem):pass +class cham_elem_spma_r(cham_elem):pass +class cham_elem_temp_f(cham_elem):pass +class cham_elem_temp_r(cham_elem):pass +class cham_elem_vari_r(cham_elem):pass +class cham_elem_vnor_c(cham_elem):pass + + +# cham_gd/cham_no : +#-------------------------------- +class cham_no(cham_gd):pass +class cham_no_dbel_r (cham_no):pass +class cham_no_depl_c (cham_no):pass +class cham_no_depl_f (cham_no):pass +class cham_no_depl_r (cham_no):pass +class cham_no_durt_r (cham_no):pass +class cham_no_ener_r (cham_no):pass +class cham_no_epsi_r (cham_no):pass +class cham_no_erreur (cham_no):pass +class cham_no_flux_r (cham_no):pass +class cham_no_g_depl_r (cham_no):pass +class cham_no_geom_r (cham_no):pass +class cham_no_hydr_r (cham_no):pass +class cham_no_inst_r (cham_no):pass +class cham_no_inte_r (cham_no):pass +class cham_no_irra_r (cham_no):pass +class cham_no_meta_r (cham_no):pass +class cham_no_neut_f (cham_no):pass +class cham_no_neut_r (cham_no):pass +class cham_no_pres_c (cham_no):pass +class cham_no_pres_r (cham_no):pass +class cham_no_sief_r (cham_no):pass +class cham_no_sour_r (cham_no):pass +class cham_no_spma_r (cham_no):pass +class cham_no_temp_c (cham_no):pass +class cham_no_temp_f (cham_no):pass +class cham_no_temp_r (cham_no):pass +class cham_no_vanl_r (cham_no):pass +class cham_no_var2_r (cham_no):pass +class cham_no_vnor_c (cham_no):pass + + +# resultat : (evol,mode_stat,mode_meca) +#-------------------------------- + +class resultat(ASSD): + def LIST_CHAMPS (self) : + return aster.GetResu(self.get_name(), "CHAMPS") + def LIST_NOM_CMP (self) : + return aster.GetResu(self.get_name(), "COMPOSANTES") + def LIST_VARI_ACCES (self) : + return aster.GetResu(self.get_name(), "VARI_ACCES") + +class acou_harmo (resultat):pass +class base_modale (resultat):pass +class comb_fourier (resultat):pass +class dyna_harmo (resultat):pass +class dyna_trans (resultat):pass +class fourier_elas (resultat):pass +class harm_gene (resultat):pass +class mode_acou (resultat):pass +class mode_cycl (resultat):pass +class mode_flamb (resultat):pass +class mode_gene (resultat):pass +class mult_elas (resultat):pass +class theta_geom (resultat):pass + +# resultat/evol : +#-------------------------------- +class evol(resultat):pass +class evol_char(evol):pass +class evol_elas(evol):pass +class evol_noli(evol):pass +class evol_ther(evol):pass +class evol_varc(evol):pass + +# resultat/mode_stat : +#-------------------------------- +class mode_stat(resultat):pass +class mode_stat_depl(mode_stat):pass +class mode_stat_acce(mode_stat):pass +class mode_stat_forc(mode_stat):pass + + +# resultat/mode_meca : +#-------------------------------- +class mode_meca(resultat):pass +class mode_meca_c(mode_meca):pass + + +# fonction : +#-------------------------------- +class fonction(ASSD): + def LIST_VALEURS(self) : + """ retourne la liste des valeurs [ val1, ...] """ + vale=string.ljust(self.get_name(),19)+'.VALE' + lbl=list(aster.getvectjev(vale)) + lbr=[] + for i in range(len(lbl)/2): + lbr.append(lbl[i]) + lbr.append(lbl[len(lbl)/2+i]) + return lbr +class para_sensi(fonction):pass +class fonction_c(fonction): + def LIST_VALEURS(self) : + """ retourne la liste des valeurs [ val1, ...] """ + vale=string.ljust(self.get_name(),19)+'.VALE' + lbl=list(aster.getvectjev(vale)) + lbr=[] + for i in range(len(lbl)/3): + lbr.append(lbl[i]) + lbr.append(lbl[len(lbl)/3+i*2]) + lbr.append(lbl[len(lbl)/3+i*2+1]) + return lbr +class nappe(fonction):pass + + +# matr_asse : +#-------------------------------- +class matr_asse(ASSD):pass +class matr_asse_depl_c(matr_asse):pass +class matr_asse_depl_r(matr_asse):pass +class matr_asse_gene_r(matr_asse):pass +class matr_asse_gene_c(matr_asse):pass +class matr_asse_pres_c(matr_asse):pass +class matr_asse_pres_r(matr_asse):pass +class matr_asse_temp_c(matr_asse):pass +class matr_asse_temp_r(matr_asse):pass + +# matr_elem : +#-------------------------------- +class matr_elem(ASSD):pass +class matr_elem_depl_c(matr_elem):pass +class matr_elem_depl_r(matr_elem):pass +class matr_elem_pres_c(matr_elem):pass +class matr_elem_temp_r(matr_elem):pass + + + + +# table : +#-------------------------------- + +class table(ASSD): + def __getitem__(self,key): + requete=string.ljust(key[0],24) + tblp=string.ljust(self.get_name(),19)+'.TBLP' + tabnom=list(aster.getvectjev(tblp)) + for i in range(len(tabnom)) : + if tabnom[i]==requete: break + resu=aster.getvectjev(tabnom[i+2]) + if key[1]>len(resu) : raise KeyError + else : return resu[key[1]-1] + +class tabl_aire_int (table):pass +class tabl_calc_g_loca(table):pass +class tabl_calc_g_th (table):pass +class tabl_cara_geom (table):pass +class tabl_char_limite(table):pass +class tabl_ener_elas (table):pass +class tabl_ener_pot (table):pass +class tabl_ener_cin (table):pass +class tabl_trav_ext (table):pass +class tabl_ener_totale(table):pass +class tabl_indic_ener (table):pass +class tabl_indic_seuil(table):pass +class tabl_intsp (table):pass +class tabl_mass_iner (table):pass +class tabl_post_alea (table):pass +class tabl_post_beta (table):pass +class tabl_post_dyna (table):pass +class tabl_post_f_alea(table):pass +class tabl_post_fatig (table):pass +class tabl_post_gouj2e(table):pass +class tabl_post_k (table):pass +class tabl_post_rccm (table):pass +class tabl_post_rele (table):pass +class tabl_post_simpli(table):pass +class tabl_post_usur (table):pass +class tabl_reca_weib (table):pass +class tabl_rice_tracey(table):pass +class tabl_texture (table):pass +class tabl_trc (table):pass +class tabl_weibull (table):pass + + +# vect_asse : +#-------------------------------- +class vect_asse(ASSD):pass +class vect_asse_gene(vect_asse):pass + + +# vect_elem : +#-------------------------------- +class vect_elem(ASSD):pass +class vect_elem_depl_r(vect_elem):pass +class vect_elem_pres_c(vect_elem):pass +class vect_elem_pres_r(vect_elem):pass +class vect_elem_temp_r(vect_elem):pass + +#& MODIF COMMUN DATE 31/03/2003 AUTEUR ASSIRE A.ASSIRE +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2003 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. +# ====================================================================== +DEBUT=MACRO(nom="DEBUT",op=ops.build_debut ,docu="U4.11.01-g",repetable='n', + UIinfo={"groupes":("Gestion du travail",)}, + fr="Ouverture d une étude. Allocation des ressources mémoire et disque", + sd_prod=ops.DEBUT, + + PAR_LOT =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM', + into=("OUI","NON"),defaut="OUI"), + BASE =FACT(fr="définition des paramètres associés aux bases JEVEUX", + statut='f',min=1,max=3, + FICHIER =SIMP(fr="nom de la base",statut='o',typ='TXM', + into=('GLOBALE','VOLATILE','LOCALE'),), + TITRE =SIMP(statut='f',typ='TXM'), + CAS =SIMP(statut='f',typ='TXM'), + NMAX_ENRE =SIMP(fr="nombre maximum d enregistrements",statut='f',typ='I'), + LONG_ENRE =SIMP(fr="longueur des enregistrements",statut='f',typ='I'), + LONG_REPE =SIMP(fr="longueur du répertoire",statut='f',typ='I'), + ), + IMPRESSION =FACT(statut='f',min=1,max=3, + FICHIER =SIMP(statut='o',typ='TXM'), + UNITE =SIMP(statut='o',typ='I'), + ), + CATALOGUE =FACT(statut='f',min=1,max=10, + FICHIER =SIMP(statut='o',typ='TXM'), + TITRE =SIMP(statut='f',typ='TXM'), + UNITE =SIMP(statut='f',typ='I'), + ), + CODE =FACT(fr="définition d un nom pour l'esemble d'une étude", + statut='f',min=1,max=1, + NOM =SIMP(statut='o',typ='TXM'), + NIV_PUB_WEB =SIMP(statut='o',typ='TXM',into=('INTERNET','INTRANET')), + UNITE =SIMP(statut='f',typ='I',defaut=15), + ), + DEBUG =FACT(fr="option de déboggage reservée aux développeurs", + statut='f',min=1,max=1, + JXVERI =SIMP(fr="vérifie l intégrité de la segmentation mémoire", + statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'), + JEVEUX =SIMP(fr="force les déchargement sur disque", + statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'), + ENVIMA =SIMP(fr="imprime les valeurs définies dans ENVIMA", + statut='f',typ='TXM',into=('TEST',)), + ), + MEMOIRE =FACT(fr="mode de gestion mémoire utilisé",statut='f',min=1,max=1, + GESTION =SIMP(statut='f',typ='TXM',into=('COMPACTE','RAPIDE'),defaut='RAPIDE'), + TYPE_ALLOCATION =SIMP(statut='f',typ='I',into=(1,2,3,4),defaut=1), + TAILLE =SIMP(statut='f',typ='I'), + TAILLE_BLOC =SIMP(statut='f',typ='R',defaut=800.), + PARTITION =SIMP(statut='f',typ='R'), + ), + ); +#& MODIF COMMANDE DATE 22/04/2003 AUTEUR MCOURTOI M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 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. +# ====================================================================== +AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele,docu="U4.41.01-g", + fr="Affectation des éléments finis sur le maillage", + reentrant='n', + UIinfo={"groupes":("Modélisation",)}, +VERIF=SIMP(statut='f',typ='TXM',max=2,into=("MAILLE","NOEUD")), +) ; + +PLS_BASE_SIMPLE=OPER(nom="PLS_BASE_SIMPLE",op=19,sd_prod=cara_elem, + fr="Exemple de PLUSIEURS_BASE_Panel sans validator", + docu="U4.42.01-g",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, + VAR1=SIMP(statut='o',typ='TXM',min=1,max=6 ), + VAR2=SIMP(statut='o',typ='TXM',min=1,max=6,into =( "TUTU","TATA","CCCC")), + VAR3=SIMP(statut='o',typ='I',min=1,max=1,into =( 1,2,3)), + VAR4=SIMP(statut='o',typ='I',min=1,max=1), + VAR44=SIMP(statut='o',typ='I',min=1,max=6), + VAR5=SIMP(statut='o',typ='TXM',min=1,max=1), + VAR6=SIMP(statut='o',typ='C',min=1,max=1), + MODELE=SIMP(statut='o',typ=modele ), +) ; + +TESTS_VALID=OPER(nom="TESTS_VALID",op=19,sd_prod=cara_elem, + fr="Exemple de PLUSIEURS_BASE_Panel sans validator", + docu="U4.42.01-g",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, + LongStr=SIMP(statut='o',typ='TXM',validators=LongStr(3,5)), + ListStr=SIMP(statut='o',typ='TXM',min=1,max=4,validators=LongStr(3,5)), + PairVal=SIMP(statut='o',typ='I',min=1,max=4,validators=PairVal()), + RangeVal=SIMP(statut='o',typ='I',validators=RangeVal(3,15)), + CardVal=SIMP(statut='o',typ='I',max='**',validators=CardVal(3,15)), + EnumVal=SIMP(statut='o',typ='I',validators=EnumVal((3,2,4,8,9,15))), + OrdList=SIMP(statut='o',typ='I',max='**',validators=OrdList("croissant")), + OrdList2=SIMP(statut='o',typ='I',into=(1,2,3,4,5,6),max='**',validators=OrdList("croissant")), + TypeVal=SIMP(statut='o',typ='I',validators=TypeVal(int)), +) ; + +PLS_BASE_NOREPEAT=OPER(nom="PLS_BASE_NOREPEAT",op=19,sd_prod=cara_pout, + fr="Exemple de PLUSIEURS_BASE_Panel avec validator", + docu="U4.42.01-g",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, + VAR1=SIMP(statut='o',typ='TXM',min=1,max=6,validators=NoRepeat()), + VAR2=SIMP(statut='o',typ='TXM',min=1,max=6,into =( "TUTU","TATA","CCCC"),validators=NoRepeat()), + VAR3=SIMP(statut='o',typ='I',min=1,max=1,into =( 1,2,3),validators=PairVal()), + VAR4=SIMP(statut='o',typ='I',min=1,max=1,validators=PairVal()), + VAR5=SIMP(statut='o',typ='I',min=1,max=6,validators=PairVal()), + VAR6=SIMP(statut='o',typ='I',min=1,max=6,validators=(NoRepeat(),PairVal())), + VAR7=SIMP(statut='o',typ='I',min=1,max=6,validators=[NoRepeat(),PairVal()]), +) ; + +#& MODIF COMMANDE DATE 21/03/2003 AUTEUR ASSIRE A.ASSIRE +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +POURSUITE=MACRO(nom="POURSUITE",op=ops.build_poursuite,repetable='n',fr="Poursuite d une étude", + docu="U4.11.03-g",sd_prod = ops.POURSUITE, + UIinfo={"groupes":("Gestion du travail",)}, + op_init = ops.POURSUITE_context,fichier_ini = 1, + PAR_LOT =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM', + into=("OUI","NON"),defaut="OUI"), + BASE =FACT(fr="définition des parmètres associés aux bases JEVEUX", + statut='f',min=1,max=3, + FICHIER =SIMP(fr="nom de la base",statut='o',typ='TXM'), + TITRE =SIMP(statut='f',typ='TXM'), + CAS =SIMP(statut='f',typ='TXM'), + NMAX_ENRE =SIMP(fr="nombre maximum d enregistrements",statut='f',typ='I'), + LONG_ENRE =SIMP(fr="longueur des enregistrements",statut='f',typ='I'), + LONG_REPE =SIMP(fr="longueur du répertoire",statut='f',typ='I'), + ), + IMPRESSION =FACT(statut='f',min=1,max=3, + FICHIER =SIMP(statut='o',typ='TXM'), + UNITE =SIMP(statut='o',typ='I'), + ), + CATALOGUE =FACT(statut='f',min=1,max=10, + FICHIER =SIMP(statut='o',typ='TXM'), + TITRE =SIMP(statut='f',typ='TXM'), + UNITE =SIMP(statut='f',typ='I'), + ), + DEBUG =FACT(fr="option de déboggage reservée aux développeurs", + statut='f',min=1,max=1, + JXVERI =SIMP(fr="vérifie l intégrité de la segmentation mémoire", + statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'), + JEVEUX =SIMP(fr="force les déchargement sur disque", + statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'), + ENVIMA =SIMP(fr="imprime les valeurs définies dans ENVIMA", + statut='f',typ='TXM',into=('TES',)), + ), + MEMOIRE =FACT(fr="mode de gestion mémoire utilisé",statut='f',min=1,max=1, + GESTION =SIMP(statut='f',typ='TXM',into=('COMPACTE','RAPIDE'),defaut='RAPIDE'), + TYPE_ALLOCATION =SIMP(statut='f',typ='I',into=(1,2,3,4),defaut=1), + TAILLE =SIMP(statut='f',typ='I'), + TAILLE_BLOC =SIMP(statut='f',typ='R',defaut=800.), + PARTITION =SIMP(statut='f',typ='R' ), + ), + CODE =FACT("définition d un nom pour l'esemble d'une étude", + statut='f',min=1,max=1, + NOM =SIMP(statut='o',typ='TXM'), + UNITE =SIMP(statut='f',typ='I',defaut=15), + ), +) ; +# 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. +# ====================================================================== +FIN=PROC(nom="FIN",op=9999,repetable='n',fr="Fin d'une étude", + docu="U4.11.02-g", + UIinfo={"groupes":("Gestion du travail",)}, + RETASSAGE =SIMP(fr="provoque le retassage de la base GLOBALE", + statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), + PERFORMANCE =SIMP(fr="provoque l'impression d'un résumé des mesures de temps ", + statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ), + INFO_RESU =SIMP(fr="provoque l'impression des informations sur les structures de données", + statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ), + FICHIER =SIMP(statut='f',typ='TXM',defaut="MESSAGE"), +) ; + diff --git a/Aster/Cata/ops.py b/Aster/Cata/ops.py index 0234e371..841a3e56 100644 --- a/Aster/Cata/ops.py +++ b/Aster/Cata/ops.py @@ -197,9 +197,12 @@ def detruire(self,d): if d.has_key(e):del d[e] if self.jdc.sds_dict.has_key(e):del self.jdc.sds_dict[e] else: +#CCAR: ajout de ce test pour ne pas détruire une formule. Faut-il le reintegrer +# dans le catalogue d'Aster ? Est-il spécial EFICAS ? if isinstance(mcs,formule): cr=self.parent.report() cr.fatal("la destruction d'une FORMULE est impossible" ) +#CCAR: fin ajout if isinstance(mcs,ASSD): sd.append(mcs) mcs=mcs.nom diff --git a/Aster/NEWS b/Aster/NEWS index 66a003f7..5bb441b4 100644 --- a/Aster/NEWS +++ b/Aster/NEWS @@ -1,11 +1,15 @@ -Verion 1.4 (5/2003): +Version 1.5 (10/2003): + Mise en synchronisation avec la version STA7 de Code_Aster d'octobre 2003 (7.2) + Introduction des validateurs de mots cles simples + +Version 1.4 (5/2003): Mise en synchronisation avec la version STA7 de Code_Aster de mai 2003 (7.1) Possibilité de donner un nom de fichier en argument lors de l'ouverture d'EFICAS (EO2003-060) Correction d'une anomalie dans la fonctionnalité de commentarisation des commandes (AO2003-041) Ajout du bouton de documentation dans le pannneau FORMULE (AO2002-447) Selection automatique du concept quand il n'en existe qu'un (EO2002-162) -Verion 1.3 (11/2002): +Version 1.3 (11/2002): Mise en synchronisation avec la version STA6 de Code_Aster de septembre 2002 Ajout de la possibilité de visualiser les INCLUDE, INCLUDE_MATERIAU et POURSUITE (popup sur click droit de la souris sur l'icone de la commande) diff --git a/Aster/Tests/err.comm b/Aster/Tests/err.comm index f037ce5f..6ded4a0a 100644 --- a/Aster/Tests/err.comm +++ b/Aster/Tests/err.comm @@ -1,4 +1,7 @@ +# Test pour vérifier qu'une commande dont le concept +# produit est nommé sansnom est considérée comme invalide +#plusieurs commandes : PROC, MACRO, OPER DEBUT(); @@ -10,7 +13,27 @@ kk=DEFI_MATERIAU(ELAS=_F(E=56.24, uu=DEFI_MATERIAU(ELAS=_F(E=56.24, NU=0.3,),); -sansnom=DEFI_MATERIAU(ELAS=_F(E=56.24, +SD_4=DEFI_MATERIAU(ELAS=_F(E=56.24, NU=0.3,),); +sansnom=AFFE_CHAR_CINE(MODELE=None,); + +MACR_ADAP_MAIL(ADAPTATION=_F(LIBRE='RAFFINEMENT', + MAILLAGE_N=MA, + MAILLAGE_NP1=CO('MAA'), + RESULTAT_N=None, + INDICATEUR=None, + NOM_CMP_INDICA=None, + CRIT_RAFF_ABS=1.0,),); + +MACR_ADAP_MAIL(ADAPTATION=_F(LIBRE='RAFFINEMENT', + MAILLAGE_N=MA, + MAILLAGE_NP1=MAA, + RESULTAT_N=None, + INDICATEUR=None, + NOM_CMP_INDICA=None, + CRIT_RAFF_ABS=1.0,),); + +PRE_CHAR_IDEAS(MODELE=None,); + FIN(); diff --git a/Editeur/Objecttreeitem.py b/Editeur/Objecttreeitem.py index dd0a4898..a79bb754 100644 --- a/Editeur/Objecttreeitem.py +++ b/Editeur/Objecttreeitem.py @@ -320,9 +320,9 @@ class ObjectTreeItem(TreeItem,Delegate): """ Retourne la clé de doc de l'objet pointé par self """ return self.object.get_docu() - def set_valeur(self,new_valeur,evaluation='oui'): + def set_valeur(self,new_valeur): """ Remplace la valeur de l'objet pointé par self par new_valeur """ - return self.object.set_valeur(new_valeur,evaluation=evaluation) + return self.object.set_valeur(new_valeur) def GetText(self): return myrepr.repr(self.object) diff --git a/Editeur/appli.py b/Editeur/appli.py index 740b1eb8..d2e02783 100644 --- a/Editeur/appli.py +++ b/Editeur/appli.py @@ -39,7 +39,7 @@ import properties from widgets import Fenetre from Misc import MakeNomComplet -VERSION="EFICAS v1.4" +VERSION="EFICAS v1.5" class APPLI: def __init__ (self,master,code='ASTER',fichier=None) : diff --git a/Editeur/componuplet.py b/Editeur/componuplet.py index 0df50210..e45ba80f 100644 --- a/Editeur/componuplet.py +++ b/Editeur/componuplet.py @@ -30,7 +30,7 @@ import panels # __version__="$Name: $" -__Id__="$Id: componuplet.py,v 1.2 2002/05/15 15:31:58 eficas Exp $" +__Id__="$Id: componuplet.py,v 1.3.2.1 2003/10/09 14:57:58 eficas Exp $" # myrepr = Repr() @@ -66,7 +66,8 @@ class NUPLETPanel(panels.OngletPanel): aide=self.gen_aide(obj) if objet_mc.into != None : l_choix=list(objet_mc.into) - obj.set_valeur(l_choix[0],evaluation='non') + #obj.set_valeur(l_choix[0],evaluation='non') + obj.set_valeur(l_choix[0]) option=Pmw.OptionMenu (frame_valeur, items = l_choix, menubutton_width = 10, @@ -91,7 +92,8 @@ class NUPLETPanel(panels.OngletPanel): Enregistre val comme valeur de self.node.item.object SANS faire de test de validité """ - obj.set_valeur(val,evaluation='non') + #obj.set_valeur(val,evaluation='non') + obj.set_valeur(val) self.parent.appli.affiche_infos(mess) self.node.parent.verif() self.node.update() @@ -111,7 +113,8 @@ class NUPLETPanel(panels.OngletPanel): self.parent.appli.affiche_infos('Valeur du mot-cl\351 enregistr\351e') e.widget.insert(0,obj.getval()) else: - obj.set_valeur(anc_val,evaluation='non') + #obj.set_valeur(anc_val,evaluation='non') + obj.set_valeur(anc_val) self.parent.appli.affiche_infos("valeur du mot-cl\351 non autoris\351e") e.widget.insert(0,anc_val) else: diff --git a/Editeur/composimp.py b/Editeur/composimp.py index 6fb84f36..ecca5128 100644 --- a/Editeur/composimp.py +++ b/Editeur/composimp.py @@ -64,34 +64,65 @@ class newSIMPPanel(panels.OngletPanel): # au mot-clé courant # ---------------------------------------------------------------------------------------- - def record_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'): + def reset_old_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'): """ Enregistre val comme valeur de self.node.item.object SANS - faire de test de validité + faire de test de validité ni ré-évaluer l'ancienne valeur + permet de rester avec des valeurs non entrees et de ne pas + ré-évaluer des entiers par exemple """ if self.parent.modified == 'n' : self.parent.init_modif() - if name != None: - valeur =name - else : - #XXX Pourquoi proceder ainsi ? Il n'est pas possible de mettre - # None comme valeur du mot cle. - # Probablement que ce debranchement permet de mettre record_valeur - # en call back, il faut donc aller chercher la valeur dans l'entry - valeur= self.entry.get() - self.entry.delete(0,END) - #XXX Pour permettre la mise a None du mot cle, on remet None si valeur == '' - if valeur == '':valeur=None - self.node.item.set_valeur(valeur,evaluation='non') + self.node.item.set_valeur(name) self.parent.appli.affiche_infos(mess) if self.node.item.get_position()=='global': - self.node.etape.verif_all() + self.node.etape.verif_all() elif self.node.item.get_position()=='global_jdc': - self.node.racine.verif_all() + self.node.racine.verif_all() else : - self.node.parent.verif() + self.node.parent.verif() self.node.update() - if self.node.item.isvalid(): - self.node.parent.select() + + def record_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'): + """ + Enregistre val comme valeur de self.node.item.object + en evaluant l item et en le validant + """ + if self.parent.modified == 'n' : self.parent.init_modif() + if name != None: + valeur = name + validite = 1 + else : + valeurentree= self.entry.get() + self.entry.delete(0,END) + if valeurentree == '': valeurentree=None + valeur,validite=self.node.item.eval_valeur(valeurentree) + if not validite : + valeur= self.entry.get() + commentaire = "impossible d'évaluer : %s " %`valeurentree` + self.parent.appli.affiche_infos(commentaire) + + if validite : + if self.node.item.is_list() : + validite=self.node.item.valide_liste_complete(valeur) + commentaire=self.node.item.info_erreur_liste() + else : + validite=self.node.item.valide_item(valeur) + commentaire=self.node.item.info_erreur_item() + + if validite : + self.node.item.set_valeur(valeur) + self.parent.appli.affiche_infos(mess) + if self.node.item.get_position()=='global': + self.node.etape.verif_all() + elif self.node.item.get_position()=='global_jdc': + self.node.racine.verif_all() + else : + self.node.parent.verif() + self.node.update() + if self.node.item.isvalid(): + self.node.parent.select() + else : + self.parent.appli.affiche_infos(commentaire) # ---------------------------------------------------------------------------------------- # Méthodes utilisées pour la manipulation des items dans les listes de choix @@ -107,30 +138,35 @@ class newSIMPPanel(panels.OngletPanel): Supprime la valeur selectionnée de la liste des valeurs et la rajoute à la liste des choix possibles """ - liste_valeurs = self.Liste_valeurs.get_liste() - liste_valeurs.remove(self.selected_valeur) - liste_choix = self.node.item.get_definition().into - liste_choix = substract_list(liste_choix,liste_valeurs) - self.Liste_valeurs.put_liste(liste_valeurs) - self.Liste_choix.put_liste(liste_choix) - self.selected_valeur = None + if hasattr(self,'selected_valeur') : + if ( self.selected_valeur != None and self.selected_valeur != ''): + liste_valeurs = self.Liste_valeurs.get_liste() + liste_valeurs.remove(self.selected_valeur) + self.Liste_valeurs.put_liste(liste_valeurs) + listeActuelle=self.Liste_valeurs.get_liste() + liste_choix=self.node.item.get_liste_possible(listeActuelle) + self.Liste_choix.put_liste(liste_choix) + self.selected_valeur = None def add_choix(self,name=None): """ Ajoute le choix selectionné à la liste des valeurs et le retire de la liste des choix possibles """ - min,max = self.node.item.GetMinMax() - liste_valeurs = self.Liste_valeurs.get_liste() - if len(liste_valeurs) >= max : - self.parent.appli.affiche_infos("La liste ne peut pas avoir plus de %d éléments" %max) - return - liste_valeurs.append(self.selected_choix) - liste_choix = self.Liste_choix.get_liste() - # liste_choix.remove(self.selected_choix) - self.Liste_valeurs.put_liste(liste_valeurs) - self.Liste_choix.put_liste(liste_choix) - self.selected_choix = None + + if hasattr(self,'selected_choix') : + if (self.selected_choix != None and self.selected_choix != ''): + min,max = self.node.item.GetMinMax() + liste_valeurs = self.Liste_valeurs.get_liste() + if len(liste_valeurs) >= max : + self.parent.appli.affiche_infos("La liste ne peut pas avoir plus de %d éléments" %max) + return + liste_valeurs.append(self.selected_choix) + self.Liste_valeurs.put_liste(liste_valeurs) + listeActuelle=self.Liste_valeurs.get_liste() + liste_choix=self.node.item.get_liste_possible(listeActuelle) + self.Liste_choix.put_liste(liste_choix) + self.selected_choix = None def selectChoix(self,name): self.selected_choix = name @@ -197,7 +233,7 @@ class SHELLPanel(newSIMPPanel): valeur = val else: valeur = self.node.item.get_valeur() - if valeur == None : return + if valeur == None or valeur == '': return self.text.insert(END,valeur) class PLUSIEURS_Panel(newSIMPPanel): @@ -211,17 +247,11 @@ class PLUSIEURS_Panel(newSIMPPanel): et l'affecte au mot-clé courant. """ l1_valeurs = self.Liste_valeurs.get_liste() - # PN : remplacement des paramétres par leur nom (cf get_liste) - # l_valeurs=[] for val in l1_valeurs : - if val.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'): - v=val.nom - else: - v=val - l_valeurs.append(v) + if val != '' and val != None : + l_valeurs.append(val) - print "l_valeurs = ", l_valeurs longueur = len(l_valeurs) if longueur < min or longueur > max : self.parent.appli.affiche_infos("Valeur refusée : nombre d'éléments incorrect dans la liste") @@ -232,11 +262,11 @@ class PLUSIEURS_Panel(newSIMPPanel): valeur = l_valeurs[0] else: valeur = None + self.parent.appli.affiche_infos("Valeur acceptée") - print "valeur = " ,valeur self.record_valeur(valeur) - if self.node.item.isvalid(): - self.node.parent.select() + #if self.node.item.isvalid(): + # self.node.parent.select() # fermeture de la fenêtre de sélection if self.ajout_valeurs: self.ajout_valeurs.quit() @@ -250,63 +280,67 @@ class PLUSIEURS_Panel(newSIMPPanel): if self.ajout_valeurs: self.ajout_valeurs.quit() - def traite_reel(self,valeur): - """ - Cette fonction a pour but de rajouter le '.' en fin de chaîne pour un réel - ou de détecter si on fait référence à un concept produit par DEFI_VALEUR - ou un EVAL ... - """ - valeur = string.strip(valeur) - liste_reels = self.node.item.get_sd_avant_du_bon_type() - if valeur in liste_reels: - return valeur - if len(valeur) >= 3 : - if valeur[0:4] == 'EVAL' : - # on a trouvé un EVAL --> on retourne directement la valeur - return valeur - if string.find(valeur,'.') == -1 : - # aucun '.' n'a été trouvé dans valeur --> on en rajoute un à la fin - return valeur+'.' - else: - return valeur - - def add_valeur_sans_into(self,name=None): + def add_valeur_sans_into(self,name=None,encorevalide=1): """ Lit ce que l'utilisateur a saisi dans self.entry et cherche à l'évaluer : - si la valeur est acceptable, elle est ajoutée dans la liste des valeurs - sinon elle est refusée + encorevalide vaut 1 si le validateur trouve l item et la liste correctes + 0 si le validateur trouve la valeur de l item incorrecte + -1 si le validateur trouve la liste incorrecte """ - min,max = self.node.item.GetMinMax() + + commentaire="Valeur incorrecte : ajout à la liste refusé" + testvalide=1 + + # Lecture de la zone de saisie et evaluation si nécessaire if name != None : - valeur = name - else: - valeur = self.get_valeur() - if self.node.item.wait_reel(): - valeur = self.traite_reel(valeur) - if self.node.item.wait_geom(): - val,test1 = valeur,1 - else: - val,test1 = self.node.item.object.eval_valeur(valeur) - if test1 : - test2 = self.node.item.object.verif_type(val) - if test2 : - liste_valeurs = self.Liste_valeurs.get_liste() - if len(liste_valeurs) >= max : - self.parent.appli.affiche_infos("La liste a déjà atteint le nombre maximum d'éléments, ajout refusé") - self.erase_valeur() - return - liste_valeurs.append(val) - self.Liste_valeurs.put_liste(liste_valeurs) - self.erase_valeur() - self.parent.appli.affiche_infos("Nouvelle valeur acceptée") - else: - self.parent.appli.affiche_infos("Valeur incorrecte : ajout à la liste refusé") + valeur = name else: - print "impossible d'évaluer %s" %val - self.parent.appli.affiche_infos("Valeur incorrecte : ajout à la liste refusé") - #if self.node.item.isvalid(): - # self.node.parent.select() + valeurentree = self.get_valeur() + if valeurentree == '': valeur=None + valeurentree,testvalide=self.node.item.eval_valeur(valeur) + if (not testvalide) : + commentaire = "impossible d'évaluer : %s " %`valeurentree` + + # Pas de traitement des valeurs nulles ( a priori clic involontaire + if (valeur == None or valeur =="") : + commentaire = "Pas de saisie des valeurs nulles" + encorevalide = -2 + testtype=0 + else : + testtype = self.node.item.object.verif_type(valeur) + if not testtype : + commentaire ="Type de la valeur incorrecte" + encorevalide=-2 + + if (encorevalide ==0) : + commentaire=self.node.item.info_erreur_item() + if (encorevalide == -1) : + commentaire=self.node.item.info_erreur_liste() + # On traite le cas ou la liste n est pas valide pour un pb de cardinalite + min,max = self.node.item.GetMinMax() + if len(self.Liste_valeurs.get_liste()) >= max : + commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé" + + if testvalide and (encorevalide == 1): + min,max = self.node.item.GetMinMax() + + if testtype : + liste_valeurs = self.Liste_valeurs.get_liste() + if len(liste_valeurs) >= max : + commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé" + else : + liste_valeurs.append(valeur) + self.Liste_valeurs.put_liste(liste_valeurs) + self.erase_valeur() + commentaire="Nouvelle valeur acceptée" + else : + commentaire ="Type de la valeur incorrecte" + + #self.erase_valeur() + self.parent.appli.affiche_infos(commentaire) def sup_valeur_sans_into(self,name=None): """ @@ -319,7 +353,6 @@ class PLUSIEURS_Panel(newSIMPPanel): # la valeur sélectionnée n'est pas dans la liste return self.Liste_valeurs.put_liste(liste_valeurs) - #self.display_valeur('') self.display_valeur(self.selected_valeur) self.selected_valeur = None @@ -355,9 +388,12 @@ class PLUSIEURS_INTO_Panel(PLUSIEURS_Panel): bulle_aide=self.get_bulle_aide() objet_mc = self.node.item.get_definition() min,max = self.node.item.GetMinMax() - l_choix=list(objet_mc.into) - l_choix.sort() + #l_choix=list(objet_mc.into) + l_valeurs = self.node.item.GetListeValeurs() + l_choix= self.node.item.get_liste_possible(l_valeurs) + # reinitialisation de l_valeurs l_valeurs = self.node.item.GetListeValeurs() + # remplissage du panneau self.frame_valeurs = Frame(page) self.frame_valeurs.place(relx=0.05,rely=0.05,relwidth=0.35,relheight=0.7) @@ -375,9 +411,11 @@ class PLUSIEURS_INTO_Panel(PLUSIEURS_Panel): liste_commandes_choix = (("",self.selectChoix), ("",self.deselectChoix), ("",self.add_choix)) - self.Liste_valeurs = ListeChoix(self,self.frame_valeurs,l_valeurs,liste_commandes = liste_commandes_valeurs, + self.Liste_valeurs = ListeChoix(self,self.frame_valeurs, + l_valeurs,liste_commandes = liste_commandes_valeurs, titre="Valeur(s) actuelle(s)") - self.Liste_choix = ListeChoix(self,self.frame_choix,l_choix,liste_commandes = liste_commandes_choix, + self.Liste_choix = ListeChoix(self,self.frame_choix,l_choix, + liste_commandes = liste_commandes_choix, titre= "Valeurs possibles") bouton_add = Button(self.frame_boutons_fleches, #text="<--", @@ -415,6 +453,7 @@ class PLUSIEURS_INTO_Panel(PLUSIEURS_Panel): Retourne la phrase d'aide indiquant de quel type de base doivent être les valeurs que saisit l'utilisateur """ + commentaire="" mc = self.node.item.get_definition() d_aides = { 'TXM' : 'chaînes de caractères', 'R' : 'réels', @@ -427,10 +466,12 @@ class PLUSIEURS_INTO_Panel(PLUSIEURS_Panel): else : return "entrez entre "+str(mc.min)+" et "+str(mc.max)+" valeurs" if mc.min == mc.max: - return "Une liste de "+str(mc.min)+" "+d_aides[type]+" est attendue" + commentaire="Une liste de "+str(mc.min)+" "+d_aides[type]+" est attendue" else : - return "Entre "+str(mc.min)+" et "+str(mc.max)+" valeurs de type "+d_aides[type]+" sont attendues" - return " " + commentaire="Entre "+str(mc.min)+" et "+str(mc.max)+" valeurs de type "+d_aides[type]+" sont attendues" + aideval=self.node.item.aide() + commentaire=commentaire + "\n" + aideval + return commentaire def get_bulle_aide(self): """ @@ -467,6 +508,7 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel): aide = justify_text(texte=aide) min,max = self.node.item.GetMinMax() l_valeurs = self.node.item.GetListeValeurs() + # création des frames globales self.frame1 = Frame(page,relief='groove',bd=2) self.frame2 = Frame(page) @@ -474,6 +516,7 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel): self.frame2.place(relx=0.,rely=0.85,relwidth=1,relheight=0.15) self.frame_right = Frame(self.frame1) self.frame_right.place(relx=0.35,rely=0.,relwidth=0.65,relheight=1.) + # création des frames internes self.frame_valeurs = Frame(self.frame1) self.frame_valeurs.place(relx=0.02,rely=0.05,relwidth=0.35,relheight=0.95) @@ -489,26 +532,31 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel): self.frame_boutons_fleches,self.frame_choix,self.frame_aide,self.frame_boutons): fram.bind("",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a)) fram.bind("",self.parent.appli.efface_aide) + # création des objets dans les frames liste_commandes_valeurs = (("",self.selectValeur), ("",self.deselectValeur), ("",self.sup_valeur_sans_into)) self.Liste_valeurs = ListeChoix(self,self.frame_valeurs,l_valeurs,liste_commandes = liste_commandes_valeurs, titre="Valeur(s) actuelle(s)") + # Création de l'entry ou de la liste des SD self.label = Label(self.frame_choix,text="Valeur :") - self.make_entry(frame = self.frame_choix,command = self.add_valeur_sans_into) + # PN : pour ajouter les validators + self.make_entry(frame = self.frame_choix,command = self.add_valeur_plusieurs_base) self.label.place(relx=0.05,rely=0.5) + # Création d'un bouton "Importer ..." sur le panel. bouton_valeurs_fichier = Button(self.frame_choix, text="Importer ...", command=self.select_in_file) bouton_valeurs_fichier.place(relx=0.28,rely=0.7,relwidth=0.6) self.ajout_valeurs = None + # boutons Ajouter et Supprimer bouton_add = Button(self.frame_boutons_fleches, image = images.get_image('arrow_left'), - command = self.add_valeur_sans_into) + command = self.add_valeur_plusieurs_base) bouton_sup = Button(self.frame_boutons_fleches, image = images.get_image('arrow_right'), command = self.sup_valeur_sans_into) @@ -533,6 +581,25 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel): for but in (bouton_accepter,bouton_annuler): but.pack(side='left',padx=5) + def add_valeur_plusieurs_base(self,name=None): + if name != None : + valeur = name + else: + valeurentree = self.get_valeur() + if valeurentree == '': valeur=None + valeur,validite=self.node.item.eval_valeur(valeurentree) + if not validite : + commentaire = "impossible d'évaluer : %s " %`valeurentree` + self.parent.appli.affiche_infos(commentaire) + return + + encorevalide=self.node.item.valide_item(valeur) + if encorevalide : + listecourante=self.Liste_valeurs.get_liste() + encorevalide=self.node.item.valide_liste_partielle(valeur,listecourante) + if not encorevalide : encorevalide = -1 + self.add_valeur_sans_into(valeur,encorevalide) + def select_in_file(self): """ Permet d'ouvrir un fichier choisi par l'utilisateur. """ nom_fichier = askopenfilename(title="Choix fichier :") @@ -572,6 +639,7 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel): Retourne la phrase d'aide indiquant de quel type de base doivent être les valeurs que saisit l'utilisateur """ + commentaire="" mc = self.node.item.get_definition() d_aides = { 'TXM' : 'chaînes de caractères', 'R' : 'réels', @@ -580,9 +648,12 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel): type = mc.type[0] if not d_aides.has_key(type) : return 'Type de base inconnu' if mc.min == mc.max: - return "Une liste de "+d_aides[type]+" chaînes de caractères est attendue" + commentaire="Une liste de "+d_aides[type]+" chaînes de caractères est attendue" else : - return "Une liste de "+d_aides[type]+" est attendue (min="+`mc.min`+",max="+`mc.max`+')' + commentaire="Une liste de "+d_aides[type]+" est attendue (min="+`mc.min`+",max="+`mc.max`+')' + aideval=self.node.item.aide() + commentaire=commentaire +"\n"+aideval + return commentaire def make_entry(self,frame,command): """ @@ -657,7 +728,8 @@ class PLUSIEURS_ASSD_Panel(PLUSIEURS_Panel): ("",self.sup_valeur_sans_into)) liste_commandes_choix = (("",self.selectChoix), ("",self.deselectChoix), - ("",self.add_valeur_sans_into)) + # ("",self.add_valeur_sans_into)) + ("",self.add_eval_valeur_sans_into)) self.Liste_valeurs = ListeChoix(self,self.frame_valeurs,l_valeurs,liste_commandes = liste_commandes_valeurs, titre="Valeur(s) actuelle(s)") self.Liste_choix = ListeChoix(self,self.frame_choix,l_choix,liste_commandes = liste_commandes_choix, @@ -665,7 +737,8 @@ class PLUSIEURS_ASSD_Panel(PLUSIEURS_Panel): bouton_add = Button(self.frame_boutons_fleches, #text="<--", image = images.get_image('arrow_left'), - command = self.add_valeur_sans_into) + # command = self.add_valeur_sans_into) + command = self.add_eval_valeur_sans_into) bouton_sup = Button(self.frame_boutons_fleches, #text="-->", image = images.get_image('arrow_right'), @@ -685,6 +758,14 @@ class PLUSIEURS_ASSD_Panel(PLUSIEURS_Panel): for fram in (self.frame_valeurs,self.frame_boutons_fleches,self.frame_choix,self.frame_boutons): fram.bind("",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a)) fram.bind("",self.parent.appli.efface_aide) + + def add_eval_valeur_sans_into(self,valeurentree=None): + valeur,validite=self.node.item.eval_valeur(valeurentree) + if not validite : + commentaire = "impossible d'évaluer : %s " %`valeurentree` + self.parent.appli.affiche_infos(commentaire) + return + self.add_valeur_sans_into(valeur) def get_bulle_aide(self): """ @@ -706,15 +787,20 @@ class PLUSIEURS_ASSD_Panel(PLUSIEURS_Panel): Retourne la phrase d'aide indiquant de quel type doivent être les valeurs que doit entrer l'utilisateur """ + commentaire="" mc = self.node.item.get_definition() type = mc.type[0].__name__ if len(mc.type)>1 : for typ in mc.type[1:] : type = type + ' ou '+typ.__name__ if mc.min == mc.max: - return "Une liste de "+`mc.min`+" objets de type "+type+" est attendue" + commentaire="Une liste de "+`mc.min`+" objets de type "+type+" est attendue" else : - return "Une liste d'objets de type "+type+" est attendue (min="+`mc.min`+",max="+`mc.max`+')' + commentaire="Une liste d'objets de type "+type+" est attendue (min="+`mc.min`+",max="+`mc.max`+')' + aideval=self.node.item.aide() + commentaire=commentaire +"\n"+ aideval + return commentaire + def sup_valeur(self,name=None): """ @@ -772,13 +858,20 @@ class UNIQUE_Panel(newSIMPPanel): - si non, restaure l'ancienne valeur """ if self.parent.modified == 'n' : self.parent.init_modif() - valeur = self.get_valeur() - self.erase_valeur() anc_val = self.node.item.get_valeur() + valeurentree = self.get_valeur() + self.erase_valeur() + valeur,validite=self.node.item.eval_valeur(valeurentree) + if not validite : + commentaire = "impossible d'évaluer : %s " %`valeurentree` + self.parent.appli.affiche_infos(commentaire) + return + test = self.node.item.set_valeur(valeur) + if not test : mess = "impossible d'évaluer : %s " %`valeur` - self.parent.appli.affiche_infos("Valeur du mot-clé non autorisée :"+mess) + self.parent.appli.affiche_infos("Valeur du mot-clé non autorisée : "+mess) elif self.node.item.isvalid() : self.parent.appli.affiche_infos('Valeur du mot-clé enregistrée') if self.node.item.get_position()=='global': @@ -792,7 +885,7 @@ class UNIQUE_Panel(newSIMPPanel): else : cr = self.node.item.get_cr() mess = "Valeur du mot-clé non autorisée :"+cr.get_mess_fatal() - self.record_valeur(anc_val,mess=mess) + self.reset_old_valeur(anc_val,mess=mess) class UNIQUE_INTO_Panel(UNIQUE_Panel): """ @@ -811,10 +904,12 @@ class UNIQUE_INTO_Panel(UNIQUE_Panel): # remplissage du panel self.frame_valeur = Frame(page) self.frame_valeur.pack(fill='both',expand=1) - self.frame_valeur.bind("",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a)) + self.frame_valeur.bind("",lambda e,s=self,a=bulle_aide : + s.parent.appli.affiche_aide(e,a)) self.frame_valeur.bind("",self.parent.appli.efface_aide) - l_choix=list(objet_mc.into) - l_choix.sort() + #l_choix=list(objet_mc.into) + #l_choix.sort() + l_choix=self.node.item.get_liste_possible([]) self.label = Label(self.frame_valeur,text='Choisir une valeur :') self.label.pack(side='top') self.frame = Frame(page) @@ -822,7 +917,8 @@ class UNIQUE_INTO_Panel(UNIQUE_Panel): liste_commandes = (("",self.selectChoix), ("",self.deselectChoix), ("",self.record_valeur)) - self.Liste_choix = ListeChoix(self,self.frame,l_choix,liste_commandes = liste_commandes, + self.Liste_choix = ListeChoix(self,self.frame,l_choix, + liste_commandes = liste_commandes, titre="Valeurs possibles") self.Liste_choix.affiche_liste() @@ -867,7 +963,7 @@ class UNIQUE_ASSD_Panel(UNIQUE_Panel): else : cr = self.node.item.get_cr() mess = "Valeur du mot-clé non autorisée :"+cr.get_mess_fatal() - self.record_valeur(anc_val,mess=mess) + self.reset_old_valeur(anc_val,mess=mess) def makeValeurPage(self,page): """ @@ -922,7 +1018,11 @@ class UNIQUE_ASSD_Panel(UNIQUE_Panel): if len(mc.type)>1 : for typ in mc.type[1:] : type = type + ' ou '+typ.__name__ - return "Un objet de type "+type+" est attendu" + commentaire="Un objet de type "+type+" est attendu" + aideval=self.node.item.aide() + commentaire=commentaire +"\n"+ aideval + return commentaire + def select_valeur_from_list(self): """ @@ -953,7 +1053,7 @@ class UNIQUE_ASSD_Panel(UNIQUE_Panel): Affiche la valeur de l'objet pointé par self """ valeur = self.node.item.get_valeur() - if valeur == None : return # pas de valeur à afficher ... + if valeur == None or valeur == '' : return # pas de valeur à afficher ... self.valeur_choisie.set(valeur.nom) def erase_valeur(self): @@ -1048,7 +1148,7 @@ class UNIQUE_SDCO_Panel(UNIQUE_ASSD_Panel): else : cr = self.node.item.get_cr() mess = "Valeur du mot-clé non autorisée :"+cr.get_mess_fatal() - self.record_valeur(anc_val,mess=mess) + self.reset_old_valeur(anc_val,mess=mess) return if self.node.item.get_position()=='global': self.node.etape.verif_all() @@ -1077,7 +1177,7 @@ class UNIQUE_SDCO_Panel(UNIQUE_ASSD_Panel): else : cr = self.node.item.get_cr() mess = "Valeur du mot-clé non autorisée :"+cr.get_mess_fatal() - self.record_valeur(anc_val,mess=mess) + self.reset_old_valeur(anc_val,mess=mess) return if self.node.item.get_position()=='global': self.node.etape.verif_all() @@ -1201,7 +1301,10 @@ class UNIQUE_BASE_Panel(UNIQUE_Panel): 'R' : "Un réel est attendu", 'I' : "Un entier est attendu"} type = mc.type[0] - return d_aides.get(type,"Type de base inconnu") + commentaire=d_aides.get(type,"Type de base inconnu") + aideval=self.node.item.aide() + commentaire=commentaire +"\n"+ aideval + return commentaire def get_bulle_aide(self): """ @@ -1215,7 +1318,7 @@ class UNIQUE_BASE_Panel(UNIQUE_Panel): Affiche la valeur de l'objet pointé par self """ valeur = self.node.item.get_valeur() - if valeur == None : return # pas de valeur à afficher ... + if valeur == None or valeur == '' : return # pas de valeur à afficher ... self.entry.delete(0,END) self.entry.insert(0,valeur) self.entry.focus() @@ -1275,7 +1378,10 @@ class UNIQUE_COMP_Panel(UNIQUE_Panel): Retourne la phrase d'aide décrivant le type de la valeur que peut prendre le mot-clé simple courant """ - return 'Un complexe est attendu' + commentaire='Un complexe est attendu' + aideval=self.node.item.aide() + commentaire=commentaire +"\n"+ aideval + return commentaire def get_valeur(self): """ @@ -1311,23 +1417,15 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): if self.wait_shell(): # l'objet attend un shell self.panel = SHELLPanel - elif self.wait_into(): + elif self.has_into(): # l'objet prend sa (ses) valeur(s) dans un ensemble discret de valeurs - min,max = self.GetMinMax() - # PN : - # Remplacement du if ?? - #if max != 1 and ((min != 0 and min != max) or (min == 0)): - assert (min <= max) - if max > 1 : - # l'objet attend une liste de valeurs + if self.is_list() : self.panel = PLUSIEURS_INTO_Panel else: - # l'objet n'attend qu'une seule valeur self.panel = UNIQUE_INTO_Panel else: # l'objet prend une ou des valeurs à priori quelconques - min,max = self.GetMinMax() - if max != 1 : + if self.is_list() : # on attend une liste de valeurs mais de quel type ? if self.wait_assd(): # on attend une liste de SD @@ -1351,59 +1449,32 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): else: # on attend un entier, un réel ou une string self.panel = UNIQUE_BASE_Panel - - def SetText(self, text): - try: - value = eval(text) - self.object.setval(value) - except: - pass - - def GetIconName(self): - if self.isvalid(): - return "ast-green-ball" - elif self.object.isoblig(): - return "ast-red-ball" - else: - return "ast-yel-ball" - - def GetText(self): - """ - Classe SIMPTreeItem - Retourne le texte à afficher dans l'arbre représentant la valeur de l'objet - pointé par self - """ - text= self.object.GetText() - return text + print "affect_panel : ",self.panel - def has_into(self): + def is_list(self): """ - Cette méthode indique si le mot cle simple propose un choix (valeur de retour 1) - ou s'il n'en propose pas (valeur de retour 0) + Cette méthode indique si le mot cle simple attend une liste (valeur de retour 1) + ou s'il n'en attend pas (valeur de retour 0) Deux cas principaux peuvent se presenter : avec validateurs ou bien sans. - Dans le cas sans validateur, l'information est donnée par l'attribut into + Dans le cas sans validateur, l'information est donnée par l'attribut max de la definition du mot cle. Dans le cas avec validateur, il faut combiner l'information précédente avec - celle issue de l'appel de la méthode has_into sur le validateur. On utilisera + celle issue de l'appel de la méthode is_list sur le validateur.On utilisera l'operateur ET pour effectuer cette combinaison (AndVal). """ - if not self.object.definition.validators: - if self.definition.into: - return 1 - else: - return 0 - else: - # Dans le cas avec validateurs, pour que le mot cle soit considéré - # comme proposant un choix, il faut que into soit présent OU - # que la méthode has_into du validateur retourne 1. Dans les autres cas - # on retournera 0 (ne propose pas de choix) - if self.definition.into: - return 1 - elif self.object.definition.validators.has_into(): - return 1 - else: - return 0 + is_a_list=0 + min,max = self.GetMinMax() + assert (min <= max) + if max > 1 : + is_a_list=1 + # Dans le cas avec validateurs, pour que le mot cle soit considéré + # comme acceptant une liste, il faut que max soit supérieur a 1 + # ET que la méthode is_list du validateur retourne 1. Dans les autres cas + # on retournera 0 (n'attend pas de liste) + if self.definition.validators : + is_a_list= self.definition.validators.is_list() * is_a_list + return is_a_list def get_into(self,liste_courante=None): """ @@ -1419,35 +1490,108 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): return self.object.definition.into else: return self.object.definition.validators.get_into(liste_courante,self.definition.into) - - def is_list(self): + + def has_into(self): """ - Cette méthode indique si le mot cle simple attend une liste (valeur de retour 1) - ou s'il n'en attend pas (valeur de retour 0) + Cette méthode indique si le mot cle simple propose un choix (valeur de retour 1) + ou s'il n'en propose pas (valeur de retour 0) Deux cas principaux peuvent se presenter : avec validateurs ou bien sans. - Dans le cas sans validateur, l'information est donnée par l'attribut max + Dans le cas sans validateur, l'information est donnée par l'attribut into de la definition du mot cle. - Dans le cas avec validateur, il faut combiner l'information précédente avec - celle issue de l'appel de la méthode is_list sur le validateur.On utilisera - l'operateur ET pour effectuer cette combinaison (AndVal). - """ - if not self.object.definition.validators: - if self.definition.max <= 1: - return 0 - else: - return 1 - else: - # Dans le cas avec validateurs, pour que le mot cle soit considéré - # comme acceptant une liste, il faut que max soit supérieur a 1 - # ET que la méthode is_list du validateur retourne 1. Dans les autres cas - # on retournera 0 (n'attend pas de liste) - if self.definition.max <= 1: - return 0 - elif not self.object.definition.validators.is_list(): - return 0 - else: - return 1 + Dans le cas avec validateurs, pour que le mot cle soit considéré + comme proposant un choix, il faut que into soit présent OU + que la méthode has_into du validateur retourne 1. Dans les autres cas + on retournera 0 (ne propose pas de choix) + """ + has_an_into=0 + if self.definition.into: + has_an_into=1 + elif self.definition.validators : + has_an_into= self.definition.validators.has_into() + return has_an_into + + def valide_item(self,item): + """ + On fait un try except pour les erreurs de types (exple + on rentre 1 pour une chaine de caracteres + """ + valide=1 + if self.definition.validators : + try : + valide=self.definition.validators.verif_item(item) + except : + valide = 0 + return valide + + def valide_liste_partielle(self,item,listecourante): + valeuravant=self.object.valeur + valeur=listecourante + valeur.append(item) + valeur = tuple(valeur) + retour=self.object.set_valeur(valeur) + validite=0 + if self.object.isvalid(): + validite=1 + elif self.definition.validators : + validite=self.definition.validators.valide_liste_partielle(valeur) + if validite==0: + min,max=self.GetMinMax() + if len(valeur) < min : + validite=1 + retour=self.object.set_valeur(valeuravant) + return validite + + def valide_liste_complete (self,valeur): + valeuravant=self.object.valeur + retour=self.object.set_valeur(valeur) + validite=0 + if self.object.isvalid(): + validite=1 + retour=self.object.set_valeur(valeuravant) + return validite + + def info_erreur_item(self) : + commentaire="" + if self.definition.validators : + commentaire=self.definition.validators.info_erreur_item() + return commentaire + + def aide(self) : + commentaire="" + if self.definition.validators : + commentaire=self.definition.validators.aide() + return commentaire + + def info_erreur_liste(self) : + commentaire="" + if self.definition.validators : + commentaire=self.definition.validators.info_erreur_liste() + return commentaire + + def SetText(self, text): + try: + value = eval(text) + self.object.setval(value) + except: + pass + + def GetIconName(self): + if self.isvalid(): + return "ast-green-ball" + elif self.object.isoblig(): + return "ast-red-ball" + else: + return "ast-yel-ball" + + def GetText(self): + """ + Classe SIMPTreeItem + Retourne le texte à afficher dans l'arbre représentant la valeur de l'objet + pointé par self + """ + text= self.object.GetText() + return text def wait_co(self): """ @@ -1546,6 +1690,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): Retourne la liste des noms des SD présentes avant l'étape qui contient le MCS pointé par self et du type requis par ce MCS """ + a=self.object.etape.parent.get_sd_avant_du_bon_type(self.object.etape,self.object.definition.type) return self.object.etape.parent.get_sd_avant_du_bon_type(self.object.etape, self.object.definition.type) @@ -1557,14 +1702,64 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): pass def isvalid(self): + valide=self.object.isvalid() return self.object.isvalid() def eval_valeur(self,valeur): """ Lance l'interprétation de 'valeur' (chaîne de caractères) comme valeur de l'objet pointé par self : - retourne l'objet associé si on a pu interpréter (entier, réel, ASSD,...) - - retourne 'valeur' (chaîne de caractères) sinon """ - return self.object.eval_valeur(valeur) + - retourne 'valeur' (chaîne de caractères) sinon + - retourne None en cas d invalidite + - retourne invalide si 1 des objets du tuple l est + """ + validite=1 + if type(valeur) in (types.ListType,types.TupleType) : + valeurretour=[] + for item in valeur : + newvaleur,validiteitem=self.eval_valeur_item(item) + valeurretour.append(newvaleur) + if validiteitem == 0: + validite=0 + else : + valeurretour,validite= self.eval_valeur_item(valeur) + if validite == 0 : + valeurretour = None + return valeurretour,validite + + def eval_valeur_item(self,valeur): + if valeur==None or valeur == "" : + return None,0 + validite=1 + if self.wait_reel(): + valeurinter = self.traite_reel(valeur) + valeurretour,validite= self.object.eval_valeur(valeurinter) + elif self.wait_geom(): + valeurretour,validite = valeur,1 + else : + valeurretour,validite= self.object.eval_valeur(valeur) + if validite == 0: + if type(valeur) == types.StringType and self.object.wait_TXM(): + essai_valeur="'" + valeur + "'" + valeurretour,validite= self.object.eval_valeur(essai_valeur) + if valeurretour.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'): + validite=1 + if self.wait_co(): + try: + valeurretour=Accas.CO(valeur) + except: + valeurretour=None + validite=0 + + # on est dans le cas où on a évalué et où on n'aurait pas du + if self.object.wait_TXM() : + if type(valeurretour) != 'str': + if valeur[0]=="'" and valeur[-1]=="'" : + valeurretour=str(valeur) + validite=1 + + return valeurretour,validite + def is_CO(self,valeur=None): """ @@ -1594,6 +1789,51 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): #self.object.etape.parent.del_sdprod(valeur) self.object.etape.parent.delete_concept(valeur) + def get_liste_possible(self,listeActuelle=[]): + if hasattr(self.definition.validators,'into'): + self.get_definition().into=self.definition.validators.into + valeurspossibles = self.get_definition().into + listevalideitem=[] + for item in valeurspossibles: + encorevalide=self.valide_item(item) + if encorevalide : + listevalideitem.append(item) + # on ne verifie pas la liste des choix si max = 1 + # (sinon cela enleve tous les choix possibles) + min,max=self.GetMinMax() + if max != 1 : + listevalideliste=[] + for item in listevalideitem: + listetravail=[] + for item2 in listeActuelle : listetravail.append(item2) + encorevalide=self.valide_liste_partielle(item,listetravail) + if encorevalide : + listevalideliste.append(item) + else : + listevalideliste=listevalideitem + return listevalideliste + + def traite_reel(self,valeur): + """ + Cette fonction a pour but de rajouter le '.' en fin de chaîne pour un réel + ou de détecter si on fait référence à un concept produit par DEFI_VALEUR + ou un EVAL ... + """ + valeur = string.strip(valeur) + liste_reels = self.get_sd_avant_du_bon_type() + if valeur in liste_reels: + return valeur + if len(valeur) >= 3 : + if valeur[0:4] == 'EVAL' : + # on a trouvé un EVAL --> on retourne directement la valeur + return valeur + if string.find(valeur,'.') == -1 : + # aucun '.' n'a été trouvé dans valeur --> on en rajoute un à la fin + return valeur+'.' + else: + return valeur + + import Accas treeitem = SIMPTreeItem objet = Accas.MCSIMP diff --git a/Editeur/utils.py b/Editeur/utils.py index f186acbc..44eb986f 100644 --- a/Editeur/utils.py +++ b/Editeur/utils.py @@ -23,6 +23,7 @@ import os,re import glob import traceback +import codecs,types def substract_list(liste1,liste2): """ @@ -83,12 +84,16 @@ def save_in_file(file,text): retourne 1 si OK 0 sinon """ try : - f=open(file,'w+') - f.write(text) - f.close() - return 1 + if type(text) == types.StringType: + f=open(file,'w') + else: + # Probablement Unicode + f=codecs.open(file,'w','iso-8859-1') + f.write(text) + f.close() + return 1 except: - return 0 + return 0 def extension_fichier(pathAndFile): """ Return ext if path/filename.ext is given """ diff --git a/Editeur/widgets.py b/Editeur/widgets.py index e33547a1..593cf88b 100644 --- a/Editeur/widgets.py +++ b/Editeur/widgets.py @@ -696,10 +696,10 @@ class ListeChoix : def get_liste(self): l=[] for val in self.liste: - try: - v = eval(val) - l.append(v) - except: +# try: +# v = eval(val) +# l.append(v) +# except: l.append(val) return l diff --git a/Ihm/I_ETAPE.py b/Ihm/I_ETAPE.py index 6528f0d3..a58727b9 100644 --- a/Ihm/I_ETAPE.py +++ b/Ihm/I_ETAPE.py @@ -20,10 +20,13 @@ """ """ # Modules Python -import sys +import sys,re import string,types from copy import copy +# Objet re pour controler les identificateurs Python +concept_re=re.compile(r'[a-zA-Z_]\w*$') + # import rajoutés suite à l'ajout de Build_sd --> à résorber import traceback import Noyau @@ -91,8 +94,13 @@ class ETAPE(I_MCCOMPO.MCCOMPO): - 0 si le nommage n'a pas pu etre mené à son terme, - 1 dans le cas contraire """ + # Le nom d'un concept doit etre un identificateur Python (toujours vrai ?) + if not concept_re.match(nom): + return 0,"Un nom de concept doit etre un identificateur Python" + 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 @@ -283,6 +291,7 @@ class ETAPE(I_MCCOMPO.MCCOMPO): for child in self.mc_liste : child.replace_concept(old_sd,sd) +#ATTENTION SURCHARGE: cette methode doit etre gardée en synchronisation avec Noyau def make_register(self): """ Initialise les attributs jdc, id, niveau et réalise les @@ -380,7 +389,29 @@ class ETAPE(I_MCCOMPO.MCCOMPO): for motcle in self.mc_liste : motcle.verif_existence_sd() +#ATTENTION SURCHARGE: a garder en synchro ou a reintegrer dans le Noyau def Build_sd(self,nom): + """ + Methode de Noyau surchargee pour poursuivre malgre tout + si une erreur se produit pendant la creation du concept produit + """ + try: + sd=Noyau.N_ETAPE.ETAPE.Build_sd(self,nom) + except AsException,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.state="unchanged" + self.valid=0 + + return self.sd + + def Build_sd_old(self,nom): """ Construit le concept produit de l'opérateur. Deux cas peuvent se présenter : diff --git a/Ihm/I_JDC_CATA.py b/Ihm/I_JDC_CATA.py index 751cacda..9057c9b8 100644 --- a/Ihm/I_JDC_CATA.py +++ b/Ihm/I_JDC_CATA.py @@ -23,6 +23,7 @@ class JDC_CATA: def __init__(self): self.l_noms_entites=[] +#ATTENTION SURCHARGE: cette methode doit etre synchronisée avec celle du Noyau def enregistre(self,commande): """ Cette méthode surcharge la méthode de la classe du Noyau diff --git a/Ihm/I_MACRO_ETAPE.py b/Ihm/I_MACRO_ETAPE.py index f301d6a2..fa7ed33e 100644 --- a/Ihm/I_MACRO_ETAPE.py +++ b/Ihm/I_MACRO_ETAPE.py @@ -268,8 +268,33 @@ class MACRO_ETAPE(I_ETAPE.ETAPE): # On met g_context à blanc self.g_context={} -#ATTENTION : cette methode surcharge celle de Noyau (a garder en synchro) +#ATTENTION SURCHARGE: a garder en synchro ou a reintegrer dans le Noyau def Build_sd(self,nom): + """ + Methode de Noyau surchargee pour poursuivre malgre tout + si une erreur se produit pendant la creation du concept produit + """ + try: + sd=Noyau.N_MACRO_ETAPE.MACRO_ETAPE.Build_sd(self,nom) + self.state="unchanged" + self.valid=1 + except AsException,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 + # On choisit de l'annuler + # En plus il faut rendre coherents sdnom et sd.nom + self.sd=None + self.sdnom=None + self.state="unchanged" + self.valid=0 + + return self.sd + +#ATTENTION : cette methode surcharge celle de Noyau (a garder en synchro ou a reintegrer) + def Build_sd_old(self,nom): """ Construit le concept produit de l'opérateur. Deux cas peuvent se présenter : diff --git a/Ihm/I_MCSIMP.py b/Ihm/I_MCSIMP.py index 7baeb142..f85d97a5 100644 --- a/Ihm/I_MCSIMP.py +++ b/Ihm/I_MCSIMP.py @@ -66,6 +66,10 @@ class MCSIMP(I_OBJECT.OBJECT): txt=txt + i*',' + str(val) elif type(val) == types.InstanceType and isinstance(val,ASSD): txt = txt + i*',' + val.get_name() + #PN + # ajout du elif + elif val.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'): + txt = txt + i*','+ str(val) else: txt = txt + i*','+ myrepr.repr(val) i=1 @@ -182,57 +186,52 @@ class MCSIMP(I_OBJECT.OBJECT): def isoblig(self): return self.definition.statut=='o' +# def set_valeur(self,new_valeur,evaluation='oui'): +# """ +# Remplace la valeur de self(si elle existe) par new_valeur +# - si evaluation = 'oui' : +# essaie d'évaluer new_valeur dans le contexte +# - si evaluation = 'non' : +# n'essaie pas d'évaluer (on stocke une string ou +# une valeur de la liste into ) +# """ +# if evaluation == 'oui' and not self.wait_assd_or_geom(): +# valeur,test = self.eval_valeur(new_valeur) +# if test : +# self.val = new_valeur +# self.valeur = valeur +# self.init_modif() +# self.fin_modif() +# return 1 +# else: +# # On n'a pas trouve de concept ni réussi à évaluer la valeur +# # dans le contexte +# # Si le mot cle simple attend un type CO on crée un objet de ce +# # type de nom new_valeur +# if self.wait_co(): +# try: +# # Pour avoir la classe CO avec tous ses comportements +# from Accas import CO +# self.valeur=CO(new_valeur) +# except: +# traceback.print_exc() +# return 0 +# self.init_modif() +# self.val=self.valeur +# self.fin_modif() +# return 1 +# elif type(new_valeur)==types.StringType and self.wait_TXM(): +# self.init_modif() +# self.val = new_valeur +# self.valeur = new_valeur +# self.fin_modif() +# return 1 +# else: +# return 0 +# else : + # on ne fait aucune vérification ... def set_valeur(self,new_valeur,evaluation='oui'): - """ - Remplace la valeur de self(si elle existe) par new_valeur - - si evaluation = 'oui' : - essaie d'évaluer new_valeur dans le contexte - - si evaluation = 'non' : - n'essaie pas d'évaluer (on stocke une string ou - une valeur de la liste into ) - """ - if evaluation == 'oui' and not self.wait_assd_or_geom(): - valeur,test = self.eval_valeur(new_valeur) - if test : - self.val = new_valeur - self.valeur = valeur self.init_modif() - self.fin_modif() - return 1 - else: - # On n'a pas trouve de concept ni réussi à évaluer la valeur - # dans le contexte - # Si le mot cle simple attend un type CO on crée un objet de ce - # type de nom new_valeur - if self.wait_co(): - try: - # Pour avoir la classe CO avec tous ses comportements - from Accas import CO - self.valeur=CO(new_valeur) - except: - traceback.print_exc() - return 0 - self.init_modif() - self.val=self.valeur - self.fin_modif() - return 1 - elif type(new_valeur)==types.StringType and self.wait_TXM(): - self.init_modif() - self.val = new_valeur - self.valeur = new_valeur - self.fin_modif() - return 1 - else: - return 0 - else : - # on ne fait aucune vérification ... - self.init_modif() - try: - self.valeur = eval(new_valeur) - self.val = eval(new_valeur) - self.fin_modif() - return 1 - except: self.valeur = new_valeur self.val = new_valeur self.fin_modif() @@ -243,7 +242,6 @@ class MCSIMP(I_OBJECT.OBJECT): Essaie d'évaluer new_valeur comme une SD, une déclaration Python ou un EVAL: Retourne la valeur évaluée (ou None) et le test de réussite (1 ou 0) """ - #sd = self.jdc.get_sd_avant_etape(new_valeur,self.etape) sd = self.jdc.get_contexte_avant(self.etape).get(new_valeur,None) if sd : return sd,1 @@ -256,15 +254,6 @@ class MCSIMP(I_OBJECT.OBJECT): objet = eval(new_valeur,d) return objet,1 except Exception: -# PN : -# - Ajout de quote autour de la valeur en cas de chaine de caracteres - if type(new_valeur)==types.StringType and self.wait_TXM(): - new_valeur="'"+new_valeur+"'" - try : - objet = eval(new_valeur,d) - return objet,1 - except : - return None,0 if CONTEXT.debug : traceback.print_exc() return None,0 @@ -433,3 +422,144 @@ class MCSIMP(I_OBJECT.OBJECT): #ATTENTION SURCHARGE : toutes les methodes ci apres sont des surcharges du Noyau et de Validation # Elles doivent etre reintegrees des que possible + + def is_complexe(self,valeur): + """ Retourne 1 si valeur est un complexe, 0 sinon """ + if type(valeur) == types.InstanceType : + #XXX je n'y touche pas pour ne pas tout casser mais il serait + #XXX préférable d'appeler une méthode de valeur : return valeur.is_type('C'), par exemple + if valeur.__class__.__name__ in ('EVAL','complexe','PARAMETRE_EVAL'): + return 1 + elif valeur.__class__.__name__ in ('PARAMETRE',): + # il faut tester si la valeur du parametre est un entier + #XXX ne serait ce pas plutot complexe ???? sinon expliquer + return self.is_entier(valeur.valeur) + else: + print "Objet non reconnu dans is_complexe %s" %`valeur` + return 0 + # Pour permettre l'utilisation de complexes Python + #elif type(valeur) == types.ComplexType: + #return 1 + elif type(valeur) != types.TupleType : + return 0 + else: + if len(valeur) != 3 : + return 0 + else: + if type(valeur[0]) != types.StringType : return 0 + if string.strip(valeur[0]) not in ('RI','MP'): + return 0 + else: + if not self.is_reel(valeur[1]) or not self.is_reel(valeur[2]) : return 0 + else: return 1 + + def is_reel(self,valeur): + """ + Retourne 1 si valeur est un reel, 0 sinon + """ + if type(valeur) == types.InstanceType : + #XXX je n'y touche pas pour ne pas tout casser mais il serait + #XXX préférable d'appeler une méthode de valeur : return valeur.is_type('R'), par exemple + #XXX ou valeur.is_reel() + #XXX ou encore valeur.compare(self.is_reel) + if valeur.__class__.__name__ in ('EVAL','reel','PARAMETRE_EVAL') : + return 1 + elif valeur.__class__.__name__ in ('PARAMETRE',): + # il faut tester si la valeur du parametre est un réel + return self.is_reel(valeur.valeur) + else: + print "Objet non reconnu dans is_reel %s" %`valeur` + return 0 + elif type(valeur) not in (types.IntType,types.FloatType,types.LongType): + # ce n'est pas un réel + return 0 + else: + return 1 + + def is_entier(self,valeur): + """ Retourne 1 si valeur est un entier, 0 sinon """ + if type(valeur) == types.InstanceType : + #XXX je n'y touche pas pour ne pas tout casser mais il serait + #XXX préférable d'appeler une méthode de valeur : return valeur.is_type('I'), par exemple + if valeur.__class__.__name__ in ('EVAL','entier','PARAMETRE_EVAL') : + return 1 + elif valeur.__class__.__name__ in ('PARAMETRE',): + # il faut tester si la valeur du parametre est un entier + return self.is_entier(valeur.valeur) + else: + print "Objet non reconnu dans is_reel %s" %`valeur` + return 0 + elif type(valeur) not in (types.IntType,types.LongType): + # ce n'est pas un entier + return 0 + else: + return 1 + + def is_object_from(self,objet,classe): + """ + Retourne 1 si valeur est un objet de la classe classe ou d'une + sous-classe de classe, 0 sinon + """ + if type(objet) != types.InstanceType : + return 0 + if not objet.__class__ == classe and not issubclass(objet.__class__,classe): + return 0 + else: + return 1 + + def get_valid(self): + if hasattr(self,'valid'): + return self.valid + else: + self.valid=None + return None + + def set_valid(self,valid): + old_valid=self.get_valid() + self.valid = valid + self.state = 'unchanged' + if not old_valid or old_valid != self.valid : + self.init_modif_up() + + def isvalid(self,cr='non'): + """ + Cette méthode retourne un indicateur de validité de l'objet de type MCSIMP + + - 0 si l'objet est invalide + - 1 si l'objet est valide + + Le paramètre cr permet de paramétrer le traitement. Si cr == 'oui' + la méthode construit également un comte-rendu de validation + dans self.cr qui doit avoir été créé préalablement. + """ + if self.state == 'unchanged': + return self.valid + else: + v=self.valeur + valid = 1 + # verifiaction presence + if self.isoblig() and v == None : + if cr == 'oui' : + self.cr.fatal(string.join(("Mot-clé : ",self.nom," obligatoire non valorisé"))) + valid = 0 + + if v is None: + valid=0 + if cr == 'oui' : + self.cr.fatal("None n'est pas une valeur autorisée") + else: + # type,into ... + valid = self.verif_type(val=v,cr=cr)*self.verif_into(cr=cr)*self.verif_card(cr=cr) + # + # On verifie les validateurs s'il y en a et si necessaire (valid == 1) + # + if valid and self.definition.validators and not self.definition.validators.verif(self.valeur): + if cr == 'oui' : + self.cr.fatal(string.join(("Mot-clé : ",self.nom,"devrait avoir ",self.definition.validators.info()))) + valid=0 + # fin des validateurs + # + + self.set_valid(valid) + return self.valid + diff --git a/Ihm/I_PROC_ETAPE.py b/Ihm/I_PROC_ETAPE.py index b9e18b1d..17a1720d 100644 --- a/Ihm/I_PROC_ETAPE.py +++ b/Ihm/I_PROC_ETAPE.py @@ -65,7 +65,27 @@ class PROC_ETAPE(I_ETAPE.ETAPE): for child in self.mc_liste : child.replace_concept(old_sd,sd) +#ATTENTION SURCHARGE: a garder en synchro ou a reintegrer dans le Noyau def Build_sd(self): + """ + Methode de Noyau surchargee pour poursuivre malgre tout + si une erreur se produit pendant la creation du concept produit + """ + try: + sd=Noyau.N_PROC_ETAPE.PROC_ETAPE.Build_sd(self) + except AsException,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.state="unchanged" + self.valid=0 + + def Build_sd_old(self): """ Cette methode applique la fonction op_init au contexte du parent et lance l'exécution en cas de traitement commande par commande diff --git a/Ihm/I_VALIDATOR.py b/Ihm/I_VALIDATOR.py index d968e8a0..c241e857 100644 --- a/Ihm/I_VALIDATOR.py +++ b/Ihm/I_VALIDATOR.py @@ -9,6 +9,9 @@ interface sera stabilisée. """ +import types +import Noyau.N_VALIDATOR + class Valid: """ Cette classe est la classe mere de toutes les classes complémentaires @@ -60,6 +63,20 @@ class Valid: """ return 0 + def valide_liste_partielle(self,liste_courante): + return 0 + + def verif_item(self,valeur): + """ + La methode verif du validateur effectue une validation complete de la valeur. + valeur peut etre un scalaire ou une liste. Le validateur doit traiter les 2 + aspects s'il accepte des listes (dans ce cas la methode is_list doit retourner 1). + La methode valid_item sert pour effectuer des validations partielles de liste + Elle doit uniquement verifier la validite d'un item de liste mais pas les caracteristiques + de la liste + """ + return 0 + def get_into(self,liste_courante=None,into_courant=None): """ Cette méthode retourne la liste de choix proposée par le validateur. Si le validateur ne propose @@ -80,9 +97,89 @@ class Valid: """ return into_courant + def is_eval(self,valeur): + """ + Cette méthode indique si valeur est un objet de type EVAL ou autre + que l'on ne cherchera pas à evaluer et qui doit etre considere comme toujours valide + Si c'est un objet de ce type elle retourne la valeur 1 sinon la valeur 0 + """ + if type(valeur) == types.InstanceType : + if valeur.__class__.__name__ in ('EVAL','entier','reel','chaine','complexe','liste','PARAMETRE_EVAL') : + return 1 + return 0 + + def is_param(self,valeur): + """ + Cette méthode indique si valeur est un objet de type PARAMETRE + dont on cherchera à evaluer la valeur (valeur.valeur) + """ + if type(valeur) == types.InstanceType : + if valeur.__class__.__name__ in ('PARAMETRE',): + return 1 + return 0 + + def is_unknown(self,valeur): + """ + Cette méthode indique si valeur est un objet de type inconnu + c'est à dire ni de type EVAL ni de type PARAMETRE + """ + if type(valeur) == types.InstanceType : + if not self.is_eval(valeur) and not self.is_param(valeur): + return 1 + return 0 + + def surcharge_verif(self,methode_verif_initiale,valeur): + if type(valeur) == types.InstanceType : + #CCAR: pour le moment on fait comme dans is_entier de V_MCSIMP.py + # mais il serait préférable d'appeler une méthode de valeur : valeur.AsType() + # qui donnerait le type générique de l'objet. + # Pour un objet de "type" entier on obtiendrait par exemple 'I' + if valeur.__class__.__name__ in ('EVAL','entier','reel','chaine','complexe','liste','PARAMETRE_EVAL') : + # On ne vérifie pas le type d'un EVAL ou d'un objet de classe entier, .... C'est toujours valide + return 1 + elif valeur.__class__.__name__ in ('PARAMETRE',): + # Dans le cas d'un parametre, il faut tester si la valeur du parametre est un entier + valeur=valeur.valeur + else: + # Objet inconnu : invalide + print "Objet non reconnu dans surcharge_verif : %s" %`valeur` + return 0 + + return methode_verif_initiale(self,valeur) + class FunctionVal(Valid):pass class OrVal(Valid): + def verif_item(self,valeur): + for validator in self.validators: + v=validator.verif_item(valeur) + if v : + return 1 + return 0 + + def info_erreur_item(self): + chaine="" + a=1 + for v in self.validators: + if v.info_erreur_item() != "" : + if a==1: + chaine=v.info_erreur_item() + a=0 + else: + chaine=chaine+" \n ou "+ v.info_erreur_item() + return chaine + + def info_erreur_liste(self): + chaine="" + a=1 + for v in self.validators: + if v.info_erreur_liste() != "" : + if a==1: + chaine=v.info_erreur_liste() + a=0 + else: + chaine=chaine+" \n ou "+v.info_erreur_liste() + def is_list(self): """ Si plusieurs validateurs sont reliés par un OU @@ -120,13 +217,49 @@ class OrVal(Valid): """ validator_into=[] for validator in self.validators: - v_into=v.get_info(liste_courante,into_courant) + v_into=validator.get_into(liste_courante,into_courant) if v_into is None: return v_into validator_into.extend(v_into) return validator_into + class AndVal(Valid): + def info(self): + return "\n et ".join([v.info() for v in self.validators]) + + def info_erreur_item(self): + chaine="" + a=1 + for v in self.validators: + if v.info_erreur_item() != "" : + if a==1: + chaine=v.info_erreur_item() + a=0 + else: + chaine=chaine+" \n et "+v.info_erreur_item() + return chaine + + def info_erreur_liste(self): + a=1 + for v in self.validators: + if v.info_erreur_liste() != "" : + if a==1: + chaine=v.info_erreur_liste() + a=0 + else: + chaine=chaine+" \n et "+v.info_erreur_liste() + return chaine + + def verif_item(self,valeur): + for validator in self.validators: + v=validator.verif_item(valeur) + if not v : + # L'info n'est probablement pas la meme que pour verif ??? + self.local_info=validator.info() + return 0 + return 1 + def is_list(self): """ Si plusieurs validateurs sont reliés par un ET @@ -155,6 +288,7 @@ class AndVal(Valid): return 1 return 0 + def get_into(self,liste_courante=None,into_courant=None): """ Dans le cas ou plusieurs validateurs sont reliés par un ET @@ -166,18 +300,32 @@ class AndVal(Valid): En revanche, Enum(1,2,3) ET Enum(4,5,6) ne propose pas de choix """ for validator in self.validators: - into_courant=v.get_info(liste_courante,into_courant) + into_courant=validator.get_into(liste_courante,into_courant) if into_courant in ([],None): return into_courant return into_courant class CardVal(Valid): + def info(self): + return "longueur de liste comprise entre %s et %s" % (self.min,self.max) + def is_list(self): if self.max == '**' or self.max > 1: return 1 else: return 0 + def verif_item(self,valeur): + return 1 + + def valide_liste_partielle(self,liste_courante=None): + validite=1 + print liste_courante + if liste_courante != None : + if len(liste_courante) > self.max : + validite=0 + return validite + def get_into(self,liste_courante=None,into_courant=None): if into_courant is None: return None @@ -190,6 +338,9 @@ class CardVal(Valid): else: return [] + def info_erreur_liste(self): + return "La cardinalité de la liste doit être comprise entre %s et %s" % (self.min,self.max) + class ListVal(Valid): def is_list(self): return 1 @@ -210,6 +361,10 @@ class ListVal(Valid): return liste_choix class EnumVal(ListVal): + def verif_item(self,valeur): + if valeur not in self.into:return 0 + return 1 + def has_into(self): return 1 @@ -222,14 +377,86 @@ class EnumVal(ListVal): if e in self.into: liste_choix.append(e) return liste_choix + + def info_erreur_item(self): + return "La valeur n'est pas dans la liste des choix possibles" -class LongStr(ListVal):pass -class RangeVal(ListVal):pass -class TypeVal(ListVal):pass -class PairVal(ListVal):pass -class InstanceVal(ListVal):pass +class LongStr(ListVal): + def info_erreur_item(self): + return "Longueur de la chaine incorrecte" + + def verif_item(self,valeur): + low=self.low + high=self.high + if valeur[0]=="'" and valeur[-1]=="'" : + low=low+2 + high=high+2 + if len(valeur) < low :return 0 + if len(valeur) > high:return 0 + return 1 + +class RangeVal(ListVal): + def verif_item(self,valeur): + if valeur < self.low :return 0 + if valeur > self.high:return 0 + return 1 + + def info_erreur_item(self) : + return "La valeur doit être comprise entre %s et %s" % (self.low,self.high) + +class TypeVal(ListVal): + def verif_item(self,valeur): + try: + self.coerce(valeur) + except: + return 0 + return 1 + +class PairVal(ListVal): + + def info_erreur_item(self): + return "La valeur saisie doit être paire" + + #ATTENTION METHODE SURCHARGEE: a resorber dans une future version + def verif_item(self,valeur): + if self.is_eval(valeur): + return 1 + elif self.is_param(valeur): + valeur=valeur.valeur + elif self.is_unknown(valeur): + return 0 + return valeur % 2 == 0 + + def verif(self,valeur): + if self.is_param(valeur): + valeur=valeur.valeur + if type(valeur) in (types.ListType,types.TupleType): + for val in valeur: + if not self.verif_item(val): + return 0 + return 1 + else: + return self.verif_item(valeur) + + def verif_old(self,valeur): + print "Ihm.I_MCSIMP.PairVal.verif: ",valeur + return self.surcharge_verif(Noyau.N_VALIDATOR.PairVal.verif,valeur) + +class InstanceVal(ListVal): + def verif_item(self,valeur): + if not isinstance(valeur,self.aClass): return 0 + return 1 class NoRepeat(ListVal): + def info(self): + return "pas de presence de doublon dans la liste" + + def info_erreur_liste(self): + return "Les doublons ne sont pas permis" + + def verif_item(self,valeur): + return 1 + def get_into(self,liste_courante=None,into_courant=None): """ Methode get_into spécifique pour validateur NoRepeat @@ -247,6 +474,9 @@ class NoRepeat(ListVal): return liste_choix class OrdList(ListVal): + def verif_item(self,valeur): + return 1 + def get_into(self,liste_courante=None,into_courant=None): """ Methode get_into spécifique pour validateur OrdList @@ -267,9 +497,6 @@ class OrdList(ListVal): liste_choix.append(e) return liste_choix + def info_erreur_liste(self) : + return "La liste doit être en ordre "+self.ord - - - - - diff --git a/Minicode/Test2/deb1.comm b/Minicode/Test2/deb1.comm index 4b084bad..1974998f 100644 --- a/Minicode/Test2/deb1.comm +++ b/Minicode/Test2/deb1.comm @@ -1,4 +1,13 @@ -POURSUITE() -MMA=LIRE_MAILLAGE() -INCLUDE(UNITE=23) -FIN() + +#Test de poursuite avec include emboites +#Utiliser deb0.comm comme fichier initial de deb1.comm +#ensuite utiliser les fichiers incl.* correspondant au numero +#d'unité indiqué + +POURSUITE(); + +MMA=LIRE_MAILLAGE(); + +INCLUDE(UNITE=23,); + +FIN(); diff --git a/Minicode/Test3/main.comm b/Minicode/Test3/main.comm index e95c4b0b..8a3c4930 100644 --- a/Minicode/Test3/main.comm +++ b/Minicode/Test3/main.comm @@ -1,5 +1,26 @@ -# Changer unite 15 par incl.14 -DEBUT() -INCLUDE(UNITE=15) -MA=LIRE_MAILLAGE() -FIN() + +# Scenario de test +# 1- Donner le fichier incl.15 pour l'include unite 15 +# 2- Donner le fichier incl.16 pour l'include unité 16 +#Le fichier de commandes est invalide car MA est défini plusieurs fois +# 3- Changer include unite 15 par incl.14 : +# Le changement doit etre accepté mais la commande LIRE_MAILLAGE +#reste invalide +# 4- Detruire la commande INCLUDE et nommer le concept de LIRE_MAILLAGE MA +# 5- Ajouter un INCLUDE avant LIRE_MAILLAGE d'unité 16 (incl.16) +#L'INCLUDE doit etre invalide +# 6- Changer le nom du concept de LIRE_MAILLAGE en MMM +# L'INCLUDE reste invalide bien que le conflit soit résolu +# 7- Revalider l'INCLUDE en allant dans l'onglet Fichier INCLUDE et en cliquant +# sur le bouton Valider +# +# +# + +DEBUT(); + +INCLUDE(UNITE=15,); + +MA=LIRE_MAILLAGE(); + +FIN(); diff --git a/Minicode/cata_saturne.py b/Minicode/cata_saturne.py index 5f86f0a5..97528b37 100755 --- a/Minicode/cata_saturne.py +++ b/Minicode/cata_saturne.py @@ -101,6 +101,9 @@ INCLUDE=MACRO(nom="INCLUDE",op=-1,docu="U4.13.01-e", POURSUITE=MACRO(nom="POURSUITE",op=0,repetable='n',fr="Poursuite d une étude", docu="U4.11.03-f1",sd_prod = ops.POURSUITE, op_init = ops.POURSUITE_context,fichier_ini = 1, + HDF =FACT(statut='f',min=1,max=1, + FICHIER =SIMP(fr="nom du fichier hdf associe",statut='o',typ='TXM'), + ), PAR_LOT =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM', into=("OUI","NON"),defaut="OUI"), BASE =FACT(fr="définition des parmètres associés aux bases JEVEUX", @@ -1632,6 +1635,7 @@ INCLUDE_MATERIAU=MACRO(nom="INCLUDE_MATERIAU",op=-14,docu="U4.43.02-a", COMPOR =SIMP(statut='o',typ='TXM' ), TEMP_EVAL =SIMP(statut='o',typ='R' ), ), + UNITE_LONGUEUR =SIMP(statut='f',typ='TXM',into=("M","MM"),defaut="M" ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; diff --git a/Minicode/cata_saturne2.py b/Minicode/cata_saturne2.py index c9345320..16663659 100755 --- a/Minicode/cata_saturne2.py +++ b/Minicode/cata_saturne2.py @@ -9,7 +9,7 @@ from Accas import EVAL,PARAMETRE,COMMENTAIRE,PARAMETRE_EVAL,COMMANDE_COMM from Accas import ASSD,CO,GEOM,fonction,geom,assd # __version__="$Name: $" -__Id__="$Id: cata_saturne.py,v 1.10 2000/10/24 10:32:56 iliade Exp $" +__Id__="$Id: cata_saturne2.py,v 1.1.1.1.6.1 2003/10/16 12:13:36 eficas Exp $" # import ops @@ -53,6 +53,9 @@ INCLUDE=MACRO(nom="INCLUDE",op=-1,docu="U4.13.01-e", POURSUITE=MACRO(nom="POURSUITE",op=0,repetable='n',fr="Poursuite d une étude", docu="U4.11.03-f1",sd_prod = ops.POURSUITE, op_init = ops.POURSUITE_context,fichier_ini = 1, + HDF =FACT(statut='f',min=1,max=1, + FICHIER =SIMP(fr="nom du fichier hdf associe",statut='o',typ='TXM'), + ), PAR_LOT =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM', into=("OUI","NON"),defaut="OUI"), BASE =FACT(fr="définition des parmètres associés aux bases JEVEUX", diff --git a/Minicode/ops.py b/Minicode/ops.py index eecdc442..841a3e56 100644 --- a/Minicode/ops.py +++ b/Minicode/ops.py @@ -1,4 +1,4 @@ -#@ MODIF ops Cata DATE 23/10/2002 AUTEUR DURAND C.DURAND +#@ MODIF ops Cata DATE 06/09/2003 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -24,6 +24,7 @@ import string,linecache,os,traceback,re # Modules Eficas import Accas from Accas import ASSD +from Noyau.N_FONCTION import formule try: import aster @@ -34,25 +35,71 @@ try: except: pass -def DEBUT(self,PAR_LOT,**args): +def DEBUT(self,PAR_LOT,CODE,**args): """ Fonction sdprod de la macro DEBUT """ + # La commande DEBUT ne peut exister qu'au niveau jdc + if self.jdc is not self.parent : + raise Accas.AsException("La commande DEBUT ne peut exister qu'au niveau jdc") + self.jdc.set_par_lot(PAR_LOT) + if CODE!=None : + self.jdc.fico=CODE['NOM'] + else: + self.jdc.fico=None + +def build_debut(self,**args): + """ + Fonction ops pour la macro DEBUT + """ + self.jdc.UserError=self.codex.error + + if self.jdc.par_lot == 'NON' : + self.jdc._Build() + # On execute la fonction debut pour initialiser les bases + # Cette execution est indispensable avant toute autre action sur ASTER + # op doit etre un entier car la fonction debut appelle GCECDU qui demande + # le numero de l'operateur associé (getoper) + self.definition.op=0 + self.set_icmd(1) + lot,ier=self.codex.debut(self,1) + # On remet op a None juste apres pour eviter que la commande DEBUT + # ne soit executée dans la phase d'execution + self.definition.op=None + return ier -def POURSUITE(self,PAR_LOT,**args): +def POURSUITE(self,PAR_LOT,CODE,HDF,**args): """ Fonction sdprod de la macro POURSUITE """ + # La commande POURSUITE ne peut exister qu'au niveau jdc + if self.jdc is not self.parent : + raise Accas.AsException("La commande POURSUITE ne peut exister qu'au niveau jdc") + self.jdc.set_par_lot(PAR_LOT) - if self.codex and os.path.isfile("glob.1"): + if CODE!=None : + self.jdc.fico=CODE['NOM'] + else: + self.jdc.fico=None + if (self.codex and os.path.isfile("glob.1")) or HDF!=None: # Le module d'execution est accessible et glob.1 est present + # Pour eviter de rappeler plusieurs fois la sequence d'initialisation + # on memorise avec l'attribut fichier_init que l'initialisation + # est réalisée if hasattr(self,'fichier_init'):return self.fichier_init='glob.1' self.jdc.initexec() + # le sous programme fortran appelé par self.codex.poursu demande le numero + # de l'operateur (GCECDU->getoper), on lui donne la valeur 0 + self.definition.op=0 lot,ier,lonuti,concepts=self.codex.poursu(self,1) - self.icmd=lonuti - #print "Fin de debut",ier,lot,lonuti + # Par la suite pour ne pas executer la commande pendant la phase + # d'execution on le remet à None + self.definition.op=None + # On demande la numerotation de la commande POURSUITE avec l'incrément + # lonuti pour qu'elle soit numérotée à la suite des commandes existantes. + self.set_icmd(lonuti) pos=0 d={} while pos+80 < len(concepts)+1: @@ -60,6 +107,7 @@ def POURSUITE(self,PAR_LOT,**args): concep=concepts[pos+8:pos+24] nomcmd=concepts[pos+24:pos+40] statut=concepts[pos+40:pos+48] + print nomres,concep,nomcmd,statut if nomres[0] not in (' ','.','&') and statut != '&DETRUIT': exec nomres+'='+string.lower(concep)+'()' in self.parent.g_context,d pos=pos+80 @@ -88,6 +136,16 @@ def POURSUITE_context(self,d): for v in self.g_context.values(): if isinstance(v,ASSD) : self.jdc.sds.append(v) +def build_poursuite(self,**args): + """ + Fonction ops pour la macro POURSUITE + """ + # Pour POURSUITE on ne modifie pas la valeur initialisee dans ops.POURSUITE + # Il n y a pas besoin d executer self.codex.poursu (c'est deja fait dans + # la fonction sdprod de la commande (ops.POURSUITE)) + self.jdc.UserError=self.codex.error + return 0 + def INCLUDE(self,UNITE,**args): """ Fonction sd_prod pour la macro INCLUDE @@ -97,12 +155,8 @@ def INCLUDE(self,UNITE,**args): self.unite=UNITE if self.jdc and self.jdc.par_lot == 'NON': - # On est en mode commande par commande - # On teste la validite de la commande avec interruption eventuelle - cr=self.report() - self.parent.cr.add(cr) - if not cr.estvide(): - raise EOFError + # On est en mode commande par commande, on appelle la methode speciale + self.Execute_alone() self.make_include(unite=UNITE) @@ -113,49 +167,87 @@ def INCLUDE_context(self,d): for k,v in self.g_context.items(): d[k]=v +def build_include(self,**args): + """ + Fonction ops de la macro INCLUDE appelée lors de la phase de Build + """ + # Pour presque toutes les commandes (sauf FORMULE et POURSUITE) + # le numero de la commande n est pas utile en phase de construction + # La macro INCLUDE ne sera pas numérotée (incrément=None) + ier=0 + self.set_icmd(None) + icmd=0 + # On n'execute pas l'ops d'include en phase BUILD car il ne sert a rien. + #ier=self.codex.opsexe(self,icmd,-1,1) + return ier + def detruire(self,d): """ Cette fonction est la fonction op_init de la PROC DETRUIRE """ - sd=[] - for mc in self["CONCEPT"]: - mcs=mc["NOM"] - if type(mcs) == types.ListType or type(mcs) == types.TupleType: - for e in mcs: - if isinstance(e,ASSD): - sd.append(e) - e=e.nom - if d.has_key(e):del d[e] - if self.jdc.sds_dict.has_key(e):del self.jdc.sds_dict[e] - else: - if isinstance(mcs,ASSD): - sd.append(mcs) - mcs=mcs.nom - if d.has_key(mcs):del d[mcs] - if self.jdc.sds_dict.has_key(mcs):del self.jdc.sds_dict[mcs] - for s in sd: - # On signale au parent que le concept s n'existe plus apres l'étape self - self.parent.delete_concept_after_etape(self,s) - -def subst_materiau(text,NOM_MATER,EXTRACTION): + if self["CONCEPT"]!=None: + sd=[] + for mc in self["CONCEPT"]: + mcs=mc["NOM"] + if type(mcs) == types.ListType or type(mcs) == types.TupleType: + for e in mcs: + if isinstance(e,ASSD): + sd.append(e) + e=e.nom + if d.has_key(e):del d[e] + if self.jdc.sds_dict.has_key(e):del self.jdc.sds_dict[e] + else: +#CCAR: ajout de ce test pour ne pas détruire une formule. Faut-il le reintegrer +# dans le catalogue d'Aster ? Est-il spécial EFICAS ? + if isinstance(mcs,formule): + cr=self.parent.report() + cr.fatal("la destruction d'une FORMULE est impossible" ) +#CCAR: fin ajout + if isinstance(mcs,ASSD): + sd.append(mcs) + mcs=mcs.nom + if d.has_key(mcs):del d[mcs] + if self.jdc.sds_dict.has_key(mcs):del self.jdc.sds_dict[mcs] + for s in sd: + # On signale au parent que le concept s n'existe plus apres l'étape self + self.parent.delete_concept_after_etape(self,s) + +def subst_materiau(text,NOM_MATER,EXTRACTION,UNITE_LONGUEUR): """ Cette fonction retourne un texte obtenu à partir du texte passé en argument (text) en substituant le nom du materiau par NOM_MATER et en réalisant les extractions spéciifées dans EXTRACTION """ lines=string.split(text,'\n') + +##### traitement de UNIT : facteur multiplicatif puissance de 10 + regmcsu=re.compile(r" *(.*) *= *([^ ,]*) *## +([^ ]*) *([^ ]*)") + ll_u=[] + for l in lines: + m=regmcsu.match(l) + if m: + if m.group(3) == "UNIT": + if UNITE_LONGUEUR=='M' : coef = '0' + elif UNITE_LONGUEUR=='MM' : coef = m.group(4) + print ' UNITE_LONGUEUR = BINGO' + print ' UNITE_LONGUEUR = ',m.group(4),type(m.group(4)) + ll_u.append(' '+m.group(1)+" = "+m.group(2)+coef) + else : ll_u.append(l) + else : ll_u.append(l) + +##### traitement de EXTRACTION if EXTRACTION: - ll=[] regmcf=re.compile(r" *(.*) *= *_F\( *## +(.*) +(.*)") regmcs=re.compile(r" *(.*) *= *([^ ,]*) *, *## +([^ ]*) *([^ ]*)") regfin=re.compile(r" *\) *") + ll=[] temps={};lmcf=[] for e in EXTRACTION: mcf=e['COMPOR'] lmcf.append(mcf) temps[mcf]=e['TEMP_EVAL'] FLAG=0 - for l in lines: + for l in ll_u: m=regmcf.match(l) if m: # On a trouve un mot cle facteur "commentarise" if m.group(2) == "SUBST": # il est de plus substituable @@ -187,7 +279,7 @@ def subst_materiau(text,NOM_MATER,EXTRACTION): del temps[mcf] ll.append(l) else: - ll=lines + ll=ll_u for l in ll: print l @@ -199,8 +291,15 @@ def subst_materiau(text,NOM_MATER,EXTRACTION): text=string.join(ll,'\n') return text +def post_INCLUDE(self): + """ + Cette fonction est executée apres toutes les commandes d'un INCLUDE (RETOUR) + Elle sert principalement pour les INCLUDE_MATERIAU : remise a blanc du prefixe Fortran + """ + self.codex.opsexe(self,0,-1,2) + def INCLUDE_MATERIAU(self,NOM_AFNOR,TYPE_MODELE,VARIANTE,TYPE_VALE,NOM_MATER, - EXTRACTION,INFO,**args): + EXTRACTION,UNITE_LONGUEUR,INFO,**args): """ Fonction sd_prod pour la macro INCLUDE_MATERIAU """ @@ -221,7 +320,7 @@ def INCLUDE_MATERIAU(self,NOM_AFNOR,TYPE_MODELE,VARIANTE,TYPE_VALE,NOM_MATER, text=string.replace(open(f).read(),'\r\n','\n') # On effectue les substitutions necessaires self.prefix=NOM_MATER - self.text= subst_materiau(text,NOM_MATER,EXTRACTION) + self.text= subst_materiau(text,NOM_MATER,EXTRACTION,UNITE_LONGUEUR) if INFO == 2: print "INCLUDE_MATERIAU: ", self.mat,' ',NOM_MATER,'\n' print self.text @@ -230,16 +329,57 @@ def INCLUDE_MATERIAU(self,NOM_AFNOR,TYPE_MODELE,VARIANTE,TYPE_VALE,NOM_MATER, # et le contexte de l etape (local au sens Python) # Il faut auparavant l'enregistrer aupres du module linecache (utile pour nommage.py) linecache.cache[f]=0,0,string.split(self.text,'\n'),f + + self.postexec=post_INCLUDE + if self.jdc.par_lot == 'NON': - # On est en mode commande par commande - # On teste la validite de la commande avec interruption eventuelle - cr=self.report() - self.parent.cr.add(cr) - if not cr.estvide(): - raise EOFError - # Et en plus il faut executer la fonction ops014 avant les sous - # commandes car le prefixe PRFXCO doit etre initialise dans le Fortran - self.codex.opsexe(self,0,-1,-self.definition.op) + # On est en mode commande par commande, on appelle la methode speciale + self.Execute_alone() self.make_contexte(f,self.text) +def build_formule(self,**args): + """ + Fonction ops de la macro FORMULE appelée lors de la phase de Build + """ + from Build import B_utils + for mc in self.mc_liste: +### if mc.nom in ('REEL','ENTIER','COMPLEXE'): + if mc.nom in ('REEL','COMPLEXE'): + texte= self.sd.get_name()+ string.strip(mc.valeur) + mc.valeur=B_utils.ReorganisationDe(texte,80) + # ATTENTION : FORMULE est une des rares commandes qui a besoin de + # connaitre son numero d execution avant d etre construite + self.set_icmd(1) + # La macro formule doit etre executee. Seules les macros qui ont + # un numero d'op sont executees lors des phases suivantes + self.definition.op = -5 + ier=self.codex.opsexe(self,self.icmd,-1,-self.definition.op) + return ier + +def build_procedure(self,**args): + """ + Fonction ops de la macro PROCEDURE appelée lors de la phase de Build + """ + ier=0 + # Pour presque toutes les commandes (sauf FORMULE et POURSUITE) + # le numero de la commande n est pas utile en phase de construction + # On ne numérote pas une macro PROCEDURE (incrément=None) + self.set_icmd(None) + icmd=0 + #ier=self.codex.opsexe(self,icmd,-1,3) + return ier + +def build_retour(self,**args): + """ + Fonction ops de la macro RETOUR appelée lors de la phase de Build + """ + ier=0 + # Pour presque toutes les commandes (sauf FORMULE et POURSUITE) + # le numero de la commande n est pas utile en phase de construction + # On ne numérote pas une macro RETOUR (incrément=None) + self.set_icmd(None) + icmd=0 + #ier=self.codex.opsexe(self,icmd,-1,2) + return ier + diff --git a/Noyau/N_BLOC.py b/Noyau/N_BLOC.py index 0f8a2b60..f00a8b54 100644 --- a/Noyau/N_BLOC.py +++ b/Noyau/N_BLOC.py @@ -36,11 +36,11 @@ class BLOC(N_ENTITE.ENTITE): Cette classe a deux attributs de classe : - - class_instance qui indique la classe qui devra etre utilisée + - class_instance qui indique la classe qui devra etre utilisée pour créer l'objet qui servira à controler la conformité d'un bloc de mots-clés avec sa définition - - label qui indique la nature de l'objet de définition (ici, BLOC) + - label qui indique la nature de l'objet de définition (ici, BLOC) """ class_instance = N_MCBLOC.MCBLOC @@ -52,12 +52,17 @@ class BLOC(N_ENTITE.ENTITE): """ Un bloc est caractérisé par les attributs suivants : - - fr : chaine de caractere commentaire pour aide en ligne (en francais) - - ang : chaine de caractere commentaire pour aide en ligne (en anglais) - - regles : liste d'objets de type REGLE pour vérifier la cohérence des sous-objets - - statut : obligatoire ('o') ou facultatif ('f') - - condition : chaine de caractère evaluable par l'interpreteur Python - - entites : dictionnaire contenant les sous-objets de self (mots-clés). La clé du dictionnaire + - fr : chaine de caractere commentaire pour aide en ligne (en francais) + + - ang : chaine de caractere commentaire pour aide en ligne (en anglais) + + - regles : liste d'objets de type REGLE pour vérifier la cohérence des sous-objets + + - statut : obligatoire ('o') ou facultatif ('f') + + - condition : chaine de caractère evaluable par l'interpreteur Python + + - entites : dictionnaire contenant les sous-objets de self (mots-clés). La clé du dictionnaire est le nom du mot-clé et la valeur l'objet de définition correspondant. Cet attribut est initialisé avec l'argument args de la méthode __init__ diff --git a/Noyau/N_CR.py b/Noyau/N_CR.py index f7b6439f..5be765e7 100644 --- a/Noyau/N_CR.py +++ b/Noyau/N_CR.py @@ -68,7 +68,8 @@ class CR : def estvide(self): """ Retourne 1 si self ne contient aucun message grave (fatal ou exception) et - aucun CR qui en contienne, 0 sinon + aucun CR qui en contienne, + 0 sinon """ if self.crexception : return 0 if self.crfatal : return 0 diff --git a/Noyau/N_ETAPE.py b/Noyau/N_ETAPE.py index e5d7effc..cb968d3a 100644 --- a/Noyau/N_ETAPE.py +++ b/Noyau/N_ETAPE.py @@ -1,4 +1,4 @@ -#@ MODIF N_ETAPE Noyau DATE 03/09/2002 AUTEUR GNICOLAS G.NICOLAS +#@ MODIF N_ETAPE Noyau DATE 26/09/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -107,11 +107,11 @@ class ETAPE(N_MCCOMPO.MCCOMPO): Construit le concept produit de l'opérateur. Deux cas peuvent se présenter : - - le parent n'est pas défini. Dans ce cas, l'étape prend en charge la création - et le nommage du concept. + - le parent n'est pas défini. Dans ce cas, l'étape prend en charge la création + et le nommage du concept. - - le parent est défini. Dans ce cas, l'étape demande au parent la création et - le nommage du concept. + - le parent est défini. Dans ce cas, l'étape demande au parent la création et + le nommage du concept. """ if not self.isactif():return @@ -155,11 +155,11 @@ class ETAPE(N_MCCOMPO.MCCOMPO): """ Retourne le concept résultat de l'étape Deux cas : - - sd_prod de oper n'est pas une fonction + cas 1 : sd_prod de oper n'est pas une fonction il s'agit d'une sous classe de ASSD on construit le sd à partir de cette classe et on le retourne - - il s'agit d'une fonction + cas 2 : il s'agit d'une fonction on l'évalue avec les mots-clés de l'étape (mc_liste) on construit le sd à partir de la classe obtenue et on le retourne @@ -194,11 +194,11 @@ class ETAPE(N_MCCOMPO.MCCOMPO): """ Retourne le type du concept résultat de l'étape Deux cas : - - sd_prod de oper n'est pas une fonction + cas 1 : sd_prod de oper n'est pas une fonction il s'agit d'une sous classe de ASSD on retourne le nom de la classe - - il s'agit d'une fonction - on l'évalue avec les mots-clés de l'étape (mc_liste) + cas 2 : il s'agit d'une fonction + on l'évalue avec les mots-clés de l'étape (mc_liste) et on retourne son résultat """ if type(self.definition.sd_prod) == types.FunctionType: @@ -254,7 +254,7 @@ class ETAPE(N_MCCOMPO.MCCOMPO): def reset_current_step(self): """ Methode utilisee par l'etape self qui remet son etape parent comme - etape courante + etape courante """ #print "reset_current_step ",self.nom #traceback.print_stack(limit=3,file=sys.stdout) diff --git a/Noyau/N_FACT.py b/Noyau/N_FACT.py index d8904247..0f3def12 100644 --- a/Noyau/N_FACT.py +++ b/Noyau/N_FACT.py @@ -34,11 +34,13 @@ class FACT(N_ENTITE.ENTITE): Cette classe a trois attributs de classe - - class_instance qui indique la classe qui devra etre utilisée - pour créer l'objet qui servira à controler la conformité d'un - mot-clé facteur avec sa définition - - list_instance - - label qui indique la nature de l'objet de définition (ici, FACT) + - class_instance qui indique la classe qui devra etre utilisée + pour créer l'objet qui servira à controler la conformité d'un + mot-clé facteur avec sa définition + + - list_instance + + - label qui indique la nature de l'objet de définition (ici, FACT) """ class_instance = N_MCFACT.MCFACT list_instance = N_MCLIST.MCList @@ -50,15 +52,23 @@ class FACT(N_ENTITE.ENTITE): """ Un mot-clé facteur est caractérisé par les attributs suivants : - - fr : - - ang : - - statut : - - defaut : - - regles - - min - - max - - position - - docu + - fr : + + - ang : + + - statut : + + - defaut : + + - regles + + - min + + - max + + - position + + - docu """ N_ENTITE.ENTITE.__init__(self,validators) # Initialisation des attributs @@ -87,14 +97,14 @@ class FACT(N_ENTITE.ENTITE): MCFACT soit une liste de type MCLIST. La creation d un mot cle facteur depend de son statut - - Si statut ='o' il est obligatoire - - Si statut == 'd' il est facultatif mais ses sous mots cles avec + Si statut ='o' il est obligatoire + Si statut == 'd' il est facultatif mais ses sous mots cles avec defaut sont visibles - - Si statut == 'f' il est facultatif et ses sous mots avec defaut ne + Si statut == 'f' il est facultatif et ses sous mots avec defaut ne sont pas visibles - - Si statut == 'c' il est cache ??? - - Si defaut != None, on utilise cette valeur pour calculer la valeur - par defaut du mot cle facteur + Si statut == 'c' il est cache ??? + Si defaut != None, on utilise cette valeur pour calculer la valeur + par defaut du mot cle facteur """ if val == None: if self.defaut == None: diff --git a/Noyau/N_JDC.py b/Noyau/N_JDC.py index 4f695290..d538ca71 100644 --- a/Noyau/N_JDC.py +++ b/Noyau/N_JDC.py @@ -1,4 +1,4 @@ -#@ MODIF N_JDC Noyau DATE 23/10/2002 AUTEUR DURAND C.DURAND +#@ MODIF N_JDC Noyau DATE 26/09/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -237,17 +237,17 @@ NONE = None def create_sdprod(self,etape,nomsd): """ - Intention : Cette methode doit fabriquer le concept produit retourne + Intention : Cette methode doit fabriquer le concept produit retourne par l'etape etape et le nommer. Elle est appelée à l'initiative de l'etape pendant le processus de construction de cette etape : - - methode __call__ de la classe CMD (OPER ou MACRO) + methode __call__ de la classe CMD (OPER ou MACRO) Ce travail est réalisé par le contexte supérieur (etape.parent) car dans certains cas, le concept ne doit pas etre fabriqué mais l'etape doit simplement utiliser un concept préexistant. - 1. etape.reuse != None : le concept est réutilisé - 2. l'étape appartient à une macro qui a déclaré un + Cas 1 : etape.reuse != None : le concept est réutilisé + Cas 2 : l'étape appartient à une macro qui a déclaré un concept de sortie qui doit etre produit par cette etape. Dans le cas du JDC, le deuxième cas ne peut pas se produire. diff --git a/Noyau/N_JDC_CATA.py b/Noyau/N_JDC_CATA.py index 9a5b5f37..4bb371a6 100644 --- a/Noyau/N_JDC_CATA.py +++ b/Noyau/N_JDC_CATA.py @@ -34,11 +34,11 @@ class JDC_CATA(N_ENTITE.ENTITE): Attributs de classe : - - class_instance qui indique la classe qui devra etre utilisée + - class_instance qui indique la classe qui devra etre utilisée pour créer l'objet qui servira à controler la conformité du jeu de commandes avec sa définition - - label qui indique la nature de l'objet de définition (ici, JDC) + - label qui indique la nature de l'objet de définition (ici, JDC) """ class_instance = N_JDC.JDC diff --git a/Noyau/N_MACRO.py b/Noyau/N_MACRO.py index 497b86d5..46cb881b 100644 --- a/Noyau/N_MACRO.py +++ b/Noyau/N_MACRO.py @@ -35,46 +35,46 @@ class MACRO(N_ENTITE.ENTITE): Cette classe a trois attributs de classe - - class_instance qui indique la classe qui devra etre utilisée + - class_instance qui indique la classe qui devra etre utilisée pour créer l'objet qui servira à controler la conformité d'un macro-commande avec sa définition - - label qui indique la nature de l'objet de définition (ici, MACRO) + - label qui indique la nature de l'objet de définition (ici, MACRO) - - nommage qui est un module Python qui fournit la fonctionnalité de nommage + - nommage qui est un module Python qui fournit la fonctionnalité de nommage et les attributs d'instance suivants : - - nom : son nom + - nom : son nom - - op : le numéro d'opérateur + - op : le numéro d'opérateur - - sd_prod : le type de concept produit. C'est une classe ou une fonction qui retourne + - sd_prod : le type de concept produit. C'est une classe ou une fonction qui retourne une classe - - reentrant : vaut 'n' ou 'o'. Indique si l'opérateur est réentrant ou pas. Un opérateur + - reentrant : vaut 'n' ou 'o'. Indique si l'opérateur est réentrant ou pas. Un opérateur réentrant peut modifier un concept d'entrée et le produire comme concept de sortie - - repetable : vaut 'n' ou 'o'. Indique si l'opérateur est répetable ou pas. Un opérateur + - repetable : vaut 'n' ou 'o'. Indique si l'opérateur est répetable ou pas. Un opérateur non répétable ne doit apparaitre qu'une fois dans une exécution. C'est du ressort de l'objet gérant le contexte d'exécution de vérifier cette contrainte. - - fr : commentaire associé en francais + - fr : commentaire associé en francais - - ang : commentaire associé en anglais + - ang : commentaire associé en anglais - - docu : clé de documentation associée + - docu : clé de documentation associée - - regles : liste des règles associées + - regles : liste des règles associées - - op_init : cet attribut vaut None ou une fonction. Si cet attribut ne vaut pas None, cette + - op_init : cet attribut vaut None ou une fonction. Si cet attribut ne vaut pas None, cette fonction est exécutée lors des phases d'initialisation de l'étape associée. - - niveau : indique le niveau dans lequel est rangé l'opérateur. Les opérateurs peuvent etre + - niveau : indique le niveau dans lequel est rangé l'opérateur. Les opérateurs peuvent etre rangés par niveau. Ils apparaissent alors exclusivement dans leur niveau de rangement. Si niveau vaut None, l'opérateur est rangé au niveau global. - - entites : dictionnaire dans lequel sont stockés les sous entités de l'opérateur. Il s'agit + - entites : dictionnaire dans lequel sont stockés les sous entités de l'opérateur. Il s'agit des entités de définition pour les mots-clés : FACT, BLOC, SIMP. Cet attribut est initialisé avec args, c'est à dire les arguments d'appel restants. diff --git a/Noyau/N_MACRO_ETAPE.py b/Noyau/N_MACRO_ETAPE.py index 57807dd7..953b0d94 100644 --- a/Noyau/N_MACRO_ETAPE.py +++ b/Noyau/N_MACRO_ETAPE.py @@ -1,4 +1,4 @@ -#@ MODIF N_MACRO_ETAPE Noyau DATE 06/01/2003 AUTEUR ASSIRE A.ASSIRE +#@ MODIF N_MACRO_ETAPE Noyau DATE 26/09/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -45,7 +45,7 @@ class MACRO_ETAPE(N_ETAPE.ETAPE): - definition : objet portant les attributs de définition d'une étape de type macro-commande. Il est initialisé par - l'argument oper. + l'argument oper. - reuse : indique le concept d'entrée réutilisé. Il se trouvera donc en sortie si les conditions d'exécution de l'opérateur @@ -99,11 +99,11 @@ class MACRO_ETAPE(N_ETAPE.ETAPE): Construit le concept produit de l'opérateur. Deux cas peuvent se présenter : - - le parent n'est pas défini. Dans ce cas, l'étape prend en charge - la création et le nommage du concept. + - le parent n'est pas défini. Dans ce cas, l'étape prend en charge + la création et le nommage du concept. - - le parent est défini. Dans ce cas, l'étape demande au parent la - création et le nommage du concept. + - le parent est défini. Dans ce cas, l'étape demande au parent la + création et le nommage du concept. """ if not self.isactif():return @@ -146,15 +146,15 @@ class MACRO_ETAPE(N_ETAPE.ETAPE): """ Retourne le concept résultat d'une macro étape La difference avec une etape ou une proc-etape tient a ce que - le concept produit peut exister ou pas + le concept produit peut exister ou pas Si sd_prod == None le concept produit n existe pas on retourne None Deux cas : - - sd_prod n'est pas une fonction + cas 1 : sd_prod n'est pas une fonction il s'agit d'une sous classe de ASSD on construit le sd à partir de cette classe et on le retourne - - sd_prod est une fonction - on l'évalue avec les mots-clés de l'étape (mc_liste) + cas 2 : sd_prod est une fonction + on l'évalue avec les mots-clés de l'étape (mc_liste) on construit le sd à partir de la classe obtenue et on le retourne """ @@ -193,12 +193,12 @@ class MACRO_ETAPE(N_ETAPE.ETAPE): def get_type_produit(self,force=0): """ Retourne le type du concept résultat de l'étape et eventuellement type - les concepts produits "à droite" du signe égal (en entrée) + les concepts produits "à droite" du signe égal (en entrée) Deux cas : - - sd_prod de oper n'est pas une fonction + cas 1 : sd_prod de oper n'est pas une fonction il s'agit d'une sous classe de ASSD on retourne le nom de la classe - - il s'agit d'une fonction + cas 2 : il s'agit d'une fonction on l'évalue avec les mots-clés de l'étape (mc_liste) et on retourne son résultat """ @@ -266,12 +266,11 @@ class MACRO_ETAPE(N_ETAPE.ETAPE): def type_sdprod(self,co,t): """ Cette methode a pour fonction de typer le concept co avec le type t - dans les conditions suivantes - 1. co est un concept produit de self - 2. co est un concept libre : on le type et on l attribue à self - + dans les conditions suivantes + 1- co est un concept produit de self + 2- co est un concept libre : on le type et on l attribue à self Elle enregistre egalement les concepts produits (on fait l hypothese - que la liste sdprods a été correctement initialisee, vide probablement) + que la liste sdprods a été correctement initialisee, vide probablement) """ if not hasattr(co,'etape'): # Le concept vaut None probablement. On ignore l'appel @@ -335,7 +334,7 @@ class MACRO_ETAPE(N_ETAPE.ETAPE): def create_sdprod(self,etape,nomsd): """ - Intention : Cette methode doit fabriquer le concept produit retourne + Intention : Cette methode doit fabriquer le concept produit retourne par l'etape etape et le nommer. Elle est appelée à l'initiative de l'etape pendant le processus de construction de cette etape : methode __call__ @@ -343,9 +342,9 @@ class MACRO_ETAPE(N_ETAPE.ETAPE): Ce travail est réalisé par le contexte supérieur (etape.parent) car dans certains cas, le concept ne doit pas etre fabriqué mais l'etape doit simplement utiliser un concept préexistant. - - Cas 1 : etape.reuse != None : le concept est réutilisé - - Cas 2 : l'étape appartient à une macro qui a déclaré un concept - de sortie qui doit etre produit par cette etape. + Cas 1 : etape.reuse != None : le concept est réutilisé + Cas 2 : l'étape appartient à une macro qui a déclaré un concept + de sortie qui doit etre produit par cette etape. """ if self.Outputs.has_key(nomsd): # Il s'agit d'un concept de sortie de la macro. Il ne faut pas le créer diff --git a/Noyau/N_MCCOMPO.py b/Noyau/N_MCCOMPO.py index daa83e64..56fa972d 100644 --- a/Noyau/N_MCCOMPO.py +++ b/Noyau/N_MCCOMPO.py @@ -125,14 +125,15 @@ class MCCOMPO(N_OBJECT.OBJECT): Cette méthode réalise les opérations suivantes en plus de transformer la liste en dictionnaire : - - ajouter tous les mots-clés non présents avec la valeur None - - ajouter tous les mots-clés globaux (attribut position = 'global' - et 'global_jdc') + - ajouter tous les mots-clés non présents avec la valeur None - ATTENTION : on ne remonte pas (semble en contradiction avec la - programmation de la méthode get_valeur du bloc) les - mots-clé fils d'un bloc au niveau du - contexte car celà peut générer des erreurs. + - ajouter tous les mots-clés globaux (attribut position = 'global' + et 'global_jdc') + + ATTENTION : -- on ne remonte pas (semble en contradiction avec la + programmation de la méthode get_valeur du bloc) les + mots-clé fils d'un bloc au niveau du + contexte car celà peut générer des erreurs. L'argument liste est, en général, une mc_liste en cours de construction, contenant les mots-clés locaux et les blocs déjà créés. @@ -285,7 +286,8 @@ class MCCOMPO(N_OBJECT.OBJECT): Retourne le fils de self de nom name ou None s'il n'existe pas Si restreint vaut oui : ne regarde que dans la mc_liste Si restreint vaut non : regarde aussi dans les entites possibles - avec defaut. (Ce dernier cas n'est utilisé que dans le catalogue) + avec defaut + (Ce dernier cas n'est utilisé que dans le catalogue) """ for v in self.mc_liste: if v.nom == name : return v diff --git a/Noyau/N_OBJECT.py b/Noyau/N_OBJECT.py index 7b009330..48712790 100644 --- a/Noyau/N_OBJECT.py +++ b/Noyau/N_OBJECT.py @@ -30,7 +30,7 @@ class OBJECT: Elle ne peut etre instanciée. Une sous classe doit obligatoirement implémenter les méthodes : - - __init__ + - __init__ """ diff --git a/Noyau/N_OPER.py b/Noyau/N_OPER.py index 7850c70b..5e43776e 100644 --- a/Noyau/N_OPER.py +++ b/Noyau/N_OPER.py @@ -35,46 +35,46 @@ class OPER(N_ENTITE.ENTITE): Cette classe a trois attributs de classe - - class_instance qui indique la classe qui devra etre utilisée + - class_instance qui indique la classe qui devra etre utilisée pour créer l'objet qui servira à controler la conformité d'un opérateur avec sa définition - - label qui indique la nature de l'objet de définition (ici, OPER) + - label qui indique la nature de l'objet de définition (ici, OPER) - - nommage qui est un module Python qui fournit la fonctionnalité de nommage + - nommage qui est un module Python qui fournit la fonctionnalité de nommage et les attributs d'instance suivants : - - nom : son nom + - nom : son nom - - op : le numéro d'opérateur + - op : le numéro d'opérateur - - sd_prod : le type de concept produit. C'est une classe ou une fonction qui retourne + - sd_prod : le type de concept produit. C'est une classe ou une fonction qui retourne une classe - - reentrant : vaut 'n' ou 'o'. Indique si l'opérateur est réentrant ou pas. Un opérateur + - reentrant : vaut 'n' ou 'o'. Indique si l'opérateur est réentrant ou pas. Un opérateur réentrant peut modifier un concept d'entrée et le produire comme concept de sortie - - repetable : vaut 'n' ou 'o'. Indique si l'opérateur est répetable ou pas. Un opérateur + - repetable : vaut 'n' ou 'o'. Indique si l'opérateur est répetable ou pas. Un opérateur non répétable ne doit apparaitre qu'une fois dans une exécution. C'est du ressort de l'objet gérant le contexte d'exécution de vérifier cette contrainte. - - fr : commentaire associé en francais + - fr : commentaire associé en francais - - ang : commentaire associé en anglais + - ang : commentaire associé en anglais - - docu : clé de documentation associée + - docu : clé de documentation associée - - regles : liste des règles associées + - regles : liste des règles associées - - op_init : cet attribut vaut None ou une fonction. Si cet attribut ne vaut pas None, cette + - op_init : cet attribut vaut None ou une fonction. Si cet attribut ne vaut pas None, cette fonction est exécutée lors des phases d'initialisation de l'étape associée. - - niveau : indique le niveau dans lequel est rangé l'opérateur. Les opérateurs peuvent etre + - niveau : indique le niveau dans lequel est rangé l'opérateur. Les opérateurs peuvent etre rangés par niveau. Ils apparaissent alors exclusivement dans leur niveau de rangement. Si niveau vaut None, l'opérateur est rangé au niveau global. - - entites : dictionnaire dans lequel sont stockés les sous entités de l'opérateur. Il s'agit + - entites : dictionnaire dans lequel sont stockés les sous entités de l'opérateur. Il s'agit des entités de définition pour les mots-clés : FACT, BLOC, SIMP. Cet attribut est initialisé avec args, c'est à dire les arguments d'appel restants. @@ -128,7 +128,7 @@ class OPER(N_ENTITE.ENTITE): def make_objet(self,mc_list='oui'): """ Cette méthode crée l'objet ETAPE dont la définition est self sans - l'enregistrer ni créer sa sdprod. + l'enregistrer ni créer sa sdprod. Si l'argument mc_list vaut 'oui', elle déclenche en plus la construction des objets MCxxx. """ diff --git a/Noyau/N_PROC.py b/Noyau/N_PROC.py index 0d9b5907..6e1b73fa 100644 --- a/Noyau/N_PROC.py +++ b/Noyau/N_PROC.py @@ -34,42 +34,42 @@ class PROC(N_ENTITE.ENTITE): Cette classe a deux attributs de classe - - class_instance qui indique la classe qui devra etre utilisée + - class_instance qui indique la classe qui devra etre utilisée pour créer l'objet qui servira à controler la conformité d'un opérateur avec sa définition - - label qui indique la nature de l'objet de définition (ici, PROC) + - label qui indique la nature de l'objet de définition (ici, PROC) et les attributs d'instance suivants : - - nom : son nom + - nom : son nom - - op : le numéro d'opérateur + - op : le numéro d'opérateur - - reentrant : vaut 'n' ou 'o'. Indique si l'opérateur est réentrant ou pas. Un opérateur + - reentrant : vaut 'n' ou 'o'. Indique si l'opérateur est réentrant ou pas. Un opérateur réentrant peut modifier un concept d'entrée et le produire comme concept de sortie - - repetable : vaut 'n' ou 'o'. Indique si l'opérateur est répetable ou pas. Un opérateur + - repetable : vaut 'n' ou 'o'. Indique si l'opérateur est répetable ou pas. Un opérateur non répétable ne doit apparaitre qu'une fois dans une exécution. C'est du ressort de l'objet gérant le contexte d'exécution de vérifier cette contrainte. - - fr : commentaire associé en francais + - fr : commentaire associé en francais - - ang : commentaire associé en anglais + - ang : commentaire associé en anglais - - docu : clé de documentation associée + - docu : clé de documentation associée - - regles : liste des règles associées + - regles : liste des règles associées - - op_init : cet attribut vaut None ou une fonction. Si cet attribut ne vaut pas None, cette + - op_init : cet attribut vaut None ou une fonction. Si cet attribut ne vaut pas None, cette fonction est exécutée lors des phases d'initialisation de l'étape associée. - - niveau : indique le niveau dans lequel est rangé l'opérateur. Les opérateurs peuvent etre + - niveau : indique le niveau dans lequel est rangé l'opérateur. Les opérateurs peuvent etre rangés par niveau. Ils apparaissent alors exclusivement dans leur niveau de rangement. Si niveau vaut None, l'opérateur est rangé au niveau global. - - entites : dictionnaire dans lequel sont stockés les sous entités de l'opérateur. Il s'agit + - entites : dictionnaire dans lequel sont stockés les sous entités de l'opérateur. Il s'agit des entités de définition pour les mots-clés : FACT, BLOC, SIMP. Cet attribut est initialisé avec args, c'est à dire les arguments d'appel restants. @@ -120,7 +120,7 @@ class PROC(N_ENTITE.ENTITE): def make_objet(self,mc_list='oui'): """ Cette méthode crée l'objet PROC_ETAPE dont la définition est self sans - l'enregistrer ni créer sa sdprod. + l'enregistrer ni créer sa sdprod. Si l'argument mc_list vaut 'oui', elle déclenche en plus la construction des objets MCxxx. """ diff --git a/Noyau/N_PROC_ETAPE.py b/Noyau/N_PROC_ETAPE.py index e15e5e33..1795bd7c 100644 --- a/Noyau/N_PROC_ETAPE.py +++ b/Noyau/N_PROC_ETAPE.py @@ -1,4 +1,4 @@ -#@ MODIF N_PROC_ETAPE Noyau DATE 20/01/2003 AUTEUR DURAND C.DURAND +#@ MODIF N_PROC_ETAPE Noyau DATE 26/09/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG diff --git a/Noyau/N_REGLE.py b/Noyau/N_REGLE.py index 8ec0f33c..e3d6878d 100644 --- a/Noyau/N_REGLE.py +++ b/Noyau/N_REGLE.py @@ -29,12 +29,12 @@ A la creation de l'objet regle on lui passe la liste des noms de mots cles concernes - Exemple:: + Exemple :: - # Création de l'objet règle UNPARMI - r=UNPARMI("INFO","AFFE") - # Vérification de la règle r sur le dictionnaire passé en argument - r.verif({"INFO":v1,"AFFE":v2) + # Création de l'objet règle UNPARMI + r=UNPARMI("INFO","AFFE") + # Vérification de la règle r sur le dictionnaire passé en argument + r.verif({"INFO":v1,"AFFE":v2) """ import types @@ -54,7 +54,7 @@ class REGLE: et le deuxième un entier. L'entier peut valoir 0 ou 1. -- s'il vaut 1, la règle est vérifiée - s'il vaut 0, la règle n'est pas vérifiée et le texte joint contient + s'il vaut 0, la règle n'est pas vérifiée et le texte joint contient un commentaire de la non validité. """ raise "NotImplemented : class REGLE should be derived" diff --git a/Noyau/N_SIMP.py b/Noyau/N_SIMP.py index 13b0ca84..0158a203 100644 --- a/Noyau/N_SIMP.py +++ b/Noyau/N_SIMP.py @@ -33,11 +33,11 @@ class SIMP(N_ENTITE.ENTITE): Cette classe a deux attributs de classe - - class_instance qui indique la classe qui devra etre utilisée + - class_instance qui indique la classe qui devra etre utilisée pour créer l'objet qui servira à controler la conformité d'un mot-clé simple avec sa définition - - label qui indique la nature de l'objet de définition (ici, SIMP) + - label qui indique la nature de l'objet de définition (ici, SIMP) """ class_instance = N_MCSIMP.MCSIMP @@ -50,31 +50,31 @@ class SIMP(N_ENTITE.ENTITE): """ Un mot-clé simple est caractérisé par les attributs suivants : - - type : cet attribut est obligatoire et indique le type de valeur attendue + - type : cet attribut est obligatoire et indique le type de valeur attendue - - fr : + - fr : - - ang : + - ang : - - statut : + - statut : - - into : + - into : - - defaut : + - defaut : - - min + - min - - max + - max - - homo + - homo - - position + - position - - val_min + - val_min - - val_max + - val_max - - docu + - docu """ N_ENTITE.ENTITE.__init__(self,validators) # Initialisation des attributs diff --git a/Noyau/nommage.py b/Noyau/nommage.py index de6edfe0..8494cc8c 100644 --- a/Noyau/nommage.py +++ b/Noyau/nommage.py @@ -94,9 +94,9 @@ def evalnom(text,d): """ Retourne un nom pour le concept resultat identifie par text Pour obtenir ce nom il y a plusieurs possibilites : - 1. text est un identificateur python c est le nom du concept - 2. text est un element d une liste on construit le nom en - evaluant la partie indice dans le contexte de l appelant d + 1-text est un identificateur python c est le nom du concept + 2-text est un element d une liste on construit le nom en + evaluant la partie indice dans le contexte de l appelant d """ l=re.split('([\[\]]+)',text) #print l diff --git a/Validation/V_ENSEMBLE.py b/Validation/V_ENSEMBLE.py index 1f4bc257..86665652 100644 --- a/Validation/V_ENSEMBLE.py +++ b/Validation/V_ENSEMBLE.py @@ -22,7 +22,7 @@ class ENSEMBLE: """ La règle vérifie que si un mot-clé de self.mcs est present - parmi les elements de args tous les autres doivent etre presents. + parmi les elements de args tous les autres doivent etre presents. Ces arguments sont transmis à la règle pour validation sous la forme d'une liste de noms de mots-clés ou d'un dictionnaire dont diff --git a/Validation/V_ETAPE.py b/Validation/V_ETAPE.py index 4e38c5aa..bd08a018 100644 --- a/Validation/V_ETAPE.py +++ b/Validation/V_ETAPE.py @@ -1,4 +1,4 @@ -#@ MODIF V_ETAPE Validation DATE 06/01/2003 AUTEUR ASSIRE A.ASSIRE +#@ MODIF V_ETAPE Validation DATE 26/09/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -147,11 +147,11 @@ class ETAPE(V_MCCOMPO.MCCOMPO): """ Cette méthode met à jour le concept produit en fonction des conditions initiales : - - Il n'y a pas de concept retourné (self.definition.sd_prod == None) + 1- Il n'y a pas de concept retourné (self.definition.sd_prod == None) - - Le concept retourné n existait pas (self.sd == None) + 2- Le concept retourné n existait pas (self.sd == None) - - Le concept retourné existait. On change alors son type ou on le supprime + 3- Le concept retourné existait. On change alors son type ou on le supprime En cas d'erreur (exception) on retourne un indicateur de validité de 0 sinon de 1 """ diff --git a/Validation/V_EXCLUS.py b/Validation/V_EXCLUS.py index 744696ae..7bed078d 100644 --- a/Validation/V_EXCLUS.py +++ b/Validation/V_EXCLUS.py @@ -22,7 +22,7 @@ class EXCLUS: """ La règle vérifie qu'un seul mot-clé de self.mcs est present - parmi les elements de args. + parmi les elements de args. Ces arguments sont transmis à la règle pour validation sous la forme d'une liste de noms de mots-clés ou d'un dictionnaire dont diff --git a/Validation/V_JDC.py b/Validation/V_JDC.py index f288eaae..9d213721 100644 --- a/Validation/V_JDC.py +++ b/Validation/V_JDC.py @@ -1,4 +1,4 @@ -#@ MODIF V_JDC Validation DATE 29/05/2002 AUTEUR DURAND C.DURAND +#@ MODIF V_JDC Validation DATE 26/09/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG diff --git a/Validation/V_MACRO_ETAPE.py b/Validation/V_MACRO_ETAPE.py index 37b168b4..c6c5af43 100644 --- a/Validation/V_MACRO_ETAPE.py +++ b/Validation/V_MACRO_ETAPE.py @@ -1,4 +1,4 @@ -#@ MODIF V_MACRO_ETAPE Validation DATE 06/01/2003 AUTEUR ASSIRE A.ASSIRE +#@ MODIF V_MACRO_ETAPE Validation DATE 26/09/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -99,11 +99,11 @@ class MACRO_ETAPE(V_ETAPE.ETAPE): """ Cette méthode met à jour le concept produit en fonction des conditions initiales : - - Il n'y a pas de concept retourné (self.definition.sd_prod == None) + 1- Il n'y a pas de concept retourné (self.definition.sd_prod == None) - - Le concept retourné n existait pas (self.sd == None) + 2- Le concept retourné n existait pas (self.sd == None) - - Le concept retourné existait. On change alors son type ou on le supprime + 3- Le concept retourné existait. On change alors son type ou on le supprime En cas d'erreur (exception) on retourne un indicateur de validité de 0 sinon de 1 """ diff --git a/Validation/V_MCBLOC.py b/Validation/V_MCBLOC.py index f08a5f26..e134a265 100644 --- a/Validation/V_MCBLOC.py +++ b/Validation/V_MCBLOC.py @@ -1,4 +1,4 @@ -#@ MODIF V_MCBLOC Validation DATE 27/03/2002 AUTEUR DURAND C.DURAND +#@ MODIF V_MCBLOC Validation DATE 26/09/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -35,7 +35,8 @@ import V_MCCOMPO class MCBLOC(V_MCCOMPO.MCCOMPO): """ Cette classe a un attribut de classe : - - txt_nat qui sert pour les comptes-rendus liés à cette classe + + - txt_nat qui sert pour les comptes-rendus liés à cette classe """ txt_nat="Bloc :" diff --git a/Validation/V_MCFACT.py b/Validation/V_MCFACT.py index 6541296b..0a27deb0 100644 --- a/Validation/V_MCFACT.py +++ b/Validation/V_MCFACT.py @@ -1,4 +1,4 @@ -#@ MODIF V_MCFACT Validation DATE 09/09/2003 AUTEUR DURAND C.DURAND +#@ MODIF V_MCFACT Validation DATE 26/09/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -35,7 +35,8 @@ import V_MCCOMPO class MCFACT(V_MCCOMPO.MCCOMPO): """ Cette classe a un attribut de classe : - - txt_nat qui sert pour les comptes-rendus liés à cette classe + + - txt_nat qui sert pour les comptes-rendus liés à cette classe """ txt_nat="Mot cle Facteur :" diff --git a/Validation/V_MCLIST.py b/Validation/V_MCLIST.py index f70067fa..88e2cfd3 100644 --- a/Validation/V_MCLIST.py +++ b/Validation/V_MCLIST.py @@ -37,8 +37,10 @@ from Noyau.N_Exception import AsException class MCList: """ Cette classe a deux attributs de classe : - - CR qui sert à construire l'objet compte-rendu - - txt_nat qui sert pour les comptes-rendus liés à cette classe + + - CR qui sert à construire l'objet compte-rendu + + - txt_nat qui sert pour les comptes-rendus liés à cette classe """ CR=N_CR.CR diff --git a/Validation/V_MCSIMP.py b/Validation/V_MCSIMP.py index 04f8e9e2..11a6c607 100644 --- a/Validation/V_MCSIMP.py +++ b/Validation/V_MCSIMP.py @@ -1,4 +1,4 @@ -#@ MODIF V_MCSIMP Validation DATE 09/09/2003 AUTEUR DURAND C.DURAND +#@ MODIF V_MCSIMP Validation DATE 06/10/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -37,13 +37,13 @@ from Noyau.N_Exception import AsException class MCSIMP: """ COMMENTAIRE CCAR - Cette classe est quasiment identique à la classe originale d'EFICAS - a part quelques changements cosmétiques et des chagements pour la - faire fonctionner de facon plus autonome par rapport à l'environnement - EFICAS + Cette classe est quasiment identique à la classe originale d'EFICAS + a part quelques changements cosmétiques et des chagements pour la + faire fonctionner de facon plus autonome par rapport à l'environnement + EFICAS - A mon avis, il faudrait aller plus loin et réduire les dépendances - amont au strict nécessaire. + A mon avis, il faudrait aller plus loin et réduire les dépendances + amont au strict nécessaire. - Est il indispensable de faire l'évaluation de la valeur dans le contexte du jdc dans cette classe. @@ -63,8 +63,9 @@ class MCSIMP: Cette méthode retourne un indicateur de validité de l'objet de type MCSIMP - - 0 si l'objet est invalide - - 1 si l'objet est valide + - 0 si l'objet est invalide + + - 1 si l'objet est valide Le pramètre cr permet de paramétrer le traitement. Si cr == 'oui' la méthode construit également un comte-rendu de validation @@ -85,21 +86,21 @@ class MCSIMP: self.cr.fatal(string.join(("Mot-clé : ",self.nom," obligatoire non valorisé"))) valid = 0 if v is None: - valid=0 - if cr == 'oui' : - self.cr.fatal("None n'est pas une valeur autorisée") + if cr == 'oui' : + self.cr.fatal("None n'est pas une valeur autorisée") + valid=0 else: - # type,into ... - valid = self.verif_type(val=v,cr=cr)*self.verif_into(cr=cr)*self.verif_card(cr=cr) - # - # On verifie les validateurs s'il y en a - # - if self.definition.validators and not self.definition.validators.verif(self.valeur): - if cr == 'oui' : - self.cr.fatal(string.join(("Mot-clé : ",self.nom,"devrait avoir ",self.definition.validators.info()))) - valid=0 - # fin des validateurs - # + # type,into ... + valid = self.verif_type(val=v,cr=cr)*self.verif_into(cr=cr)*self.verif_card(cr=cr) + # + # On verifie les validateurs s'il y en a + # + if self.definition.validators and not self.definition.validators.verif(self.valeur): + if cr == 'oui' : + self.cr.fatal(string.join(("Mot-clé : ",self.nom,"devrait avoir ",self.definition.validators.info()))) + valid=0 + # fin des validateurs + # self.valid = valid self.state = 'unchanged' # Si la validité du mot clé a changé, on le signale à l'objet parent @@ -115,8 +116,8 @@ class MCSIMP: def verif_card(self,cr='non'): """ un mot-clé simple ne peut etre répété : - la cardinalité ici s'entend par la vérification que le nombre d'arguments de self.valeur - est bien compris entre self.min et self.max dans le cas où il s'agit d'une liste + la cardinalité ici s'entend par la vérification que le nombre d'arguments de self.valeur + est bien compris entre self.min et self.max dans le cas où il s'agit d'une liste """ card = 1 min=self.definition.min @@ -139,13 +140,12 @@ class MCSIMP: def verif_type(self,val=None,cr='non'): """ - FONCTION : + FONCTION : Cette methode verifie que le type de l'argument val est en conformite avec celui qui est declare dans la definition du mot cle simple. Elle a plusieurs modes de fonctionnement liés à la valeur de cr. Si cr vaut 'oui' : elle remplit le compte-rendu self.cr sinon elle ne le remplit pas. - - PARAMETRE DE RETOUR : + PARAMETRE DE RETOUR : Cette méthode retourne une valeur booléenne qui vaut 1 si le type de val est correct ou 0 sinon """ @@ -178,6 +178,7 @@ class MCSIMP: return 0 except: print "problème avec :",self.nom + print 'valeur =',valeur return 0 for type_permis in self.definition.type: if self.compare_type(valeur,type_permis) : return 1 diff --git a/Validation/V_PRESENT_ABSENT.py b/Validation/V_PRESENT_ABSENT.py index 342af00e..84feda6b 100644 --- a/Validation/V_PRESENT_ABSENT.py +++ b/Validation/V_PRESENT_ABSENT.py @@ -22,8 +22,8 @@ class PRESENT_ABSENT: """ La règle vérifie que si le premier mot-clé de self.mcs est present - parmi les elements de args les autres mots clés de self.mcs - doivent etre absents + parmi les elements de args les autres mots clés de self.mcs + doivent etre absents Ces arguments sont transmis à la règle pour validation sous la forme d'une liste de noms de mots-clés ou d'un dictionnaire dont diff --git a/Validation/V_PRESENT_PRESENT.py b/Validation/V_PRESENT_PRESENT.py index 04f85f77..f192e035 100644 --- a/Validation/V_PRESENT_PRESENT.py +++ b/Validation/V_PRESENT_PRESENT.py @@ -22,7 +22,7 @@ class PRESENT_PRESENT: """ La règle vérifie que si le premier mot-clé de self.mcs est present - parmi les elements de args les autres doivent l'etre aussi + parmi les elements de args les autres doivent l'etre aussi Ces arguments sont transmis à la règle pour validation sous la forme d'une liste de noms de mots-clés ou d'un dictionnaire dont diff --git a/Validation/V_PROC_ETAPE.py b/Validation/V_PROC_ETAPE.py index 53f31b47..4953de5f 100644 --- a/Validation/V_PROC_ETAPE.py +++ b/Validation/V_PROC_ETAPE.py @@ -1,4 +1,4 @@ -#@ MODIF V_PROC_ETAPE Validation DATE 27/03/2002 AUTEUR DURAND C.DURAND +#@ MODIF V_PROC_ETAPE Validation DATE 26/09/2003 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG -- 2.39.2