From: Christian Caremoli <> Date: Mon, 4 May 2009 16:50:20 +0000 (+0000) Subject: CCAR: rabattre la version V1_15a4 dans la branche principale X-Git-Tag: V1_0OpenTurns~92 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=7e72a676f0cd6fcb60eb9515ba411fdc6dfabc1a;p=modules%2Feficas.git CCAR: rabattre la version V1_15a4 dans la branche principale --- diff --git a/Aster/Cata/Utilitai/as_timer.py b/Aster/Cata/Utilitai/as_timer.py index 38c4f4d7..3adc3252 100644 --- a/Aster/Cata/Utilitai/as_timer.py +++ b/Aster/Cata/Utilitai/as_timer.py @@ -22,7 +22,7 @@ Definition of ASTER_TIMER class. """ -__revision__ = "$Id: as_timer.py,v 1.2.6.1 2007-10-22 12:23:38 pnoyret Exp $" +__revision__ = "$Id: as_timer.py,v 1.3.4.1 2008-11-13 10:35:09 cchris Exp $" # ----- differ messages translation def _(mesg): diff --git a/Aster/Cata/cataSTA7/cata.py b/Aster/Cata/cataSTA7/cata.py index cc4ccf06..3ee29ff6 100644 --- a/Aster/Cata/cataSTA7/cata.py +++ b/Aster/Cata/cataSTA7/cata.py @@ -35,7 +35,7 @@ except: # __version__="$Name: $" -__Id__="$Id: cata.py,v 1.3.8.6 2007-06-15 13:57:36 cchris Exp $" +__Id__="$Id: cata.py,v 1.4.14.1 2008-11-13 10:35:10 cchris Exp $" # JdC = JDC_CATA(code='ASTER', execmodul=None, diff --git a/Aster/Cata/cataSTA8/cata.py b/Aster/Cata/cataSTA8/cata.py index a506925a..20f6f52c 100755 --- a/Aster/Cata/cataSTA8/cata.py +++ b/Aster/Cata/cataSTA8/cata.py @@ -35,7 +35,7 @@ except: pass __version__="$Name: $" -__Id__="$Id: cata.py,v 1.4.6.1.4.1 2008-10-10 13:28:49 pnoyret Exp $" +__Id__="$Id: cata.py,v 1.5.4.3 2008-12-08 13:50:34 pnoyret Exp $" EnumTypes = (ListType, TupleType) @@ -20103,7 +20103,7 @@ MODI_BASE_MODALE=OPER(nom="MODI_BASE_MODALE",op= 149,sd_prod=mode_meca, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 10/07/2006 AUTEUR LEBOUVIE F.LEBOUVIER +#& MODIF COMMANDE DATE 01/10/2008 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -20195,13 +20195,13 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster, 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'), - PRESENT_PRESENT('GROUP_NO','VECT_NORM'),), GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), VECT_NORM =SIMP(statut='f',typ='R',max=3), - NOEUD =SIMP(statut='f',typ=no), - GROUP_NO =SIMP(statut='f',typ=grno), + b_vect_norm =BLOC(condition = "VECT_NORM != None", + regles=UN_PARMI('NOEUD','GROUP_NO'), + NOEUD =SIMP(statut='f',typ=no), + GROUP_NO =SIMP(statut='f',typ=grno), + ), ), PLAQ_TUBE =FACT(statut='f', DEXT =SIMP(statut='o',typ='R' ), @@ -20227,7 +20227,7 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster, VECT_X =SIMP(statut='o',typ='R',min=2,max=3), VECT_Y =SIMP(statut='f',typ='R',min=2,max=3), ), - ECHELLE =SIMP(statut='f',typ='R',), + ECHELLE =SIMP(statut='f',typ='R',), TRANSLATION =SIMP(statut='f',typ='R',min=2,max=3), ROTATION =FACT(statut='f',max='**', POIN_1 =SIMP(statut='o',typ='R',min=2,max=3), diff --git a/Aster/Cata/cataSTA9/Intranet/__init__.py b/Aster/Cata/cataSTA9/Intranet/__init__.py new file mode 100644 index 00000000..88770065 --- /dev/null +++ b/Aster/Cata/cataSTA9/Intranet/__init__.py @@ -0,0 +1,19 @@ +#@ MODIF __init__ Intranet DATE 18/09/2007 AUTEUR DURAND C.DURAND + +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== diff --git a/Aster/Cata/cataSTA9/Intranet/calc_eolienne.py b/Aster/Cata/cataSTA9/Intranet/calc_eolienne.py new file mode 100644 index 00000000..e565b6cb --- /dev/null +++ b/Aster/Cata/cataSTA9/Intranet/calc_eolienne.py @@ -0,0 +1,1722 @@ +#@ MODIF calc_eolienne Intranet DATE 18/09/2007 AUTEUR DURAND C.DURAND + +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== +# +# LISTE DES FONCTIONS, MACROS et CATALOGUES +# +# MACROS +# +# calc_char_houle +# macr_calc_eolienne +# +# FONCTIONS +# +# mail_eolienne +# eolien_regression +# lect_resu_stream +# donn_boucle_pas_temps +# extr_char_houle +# +# CATALOGUES +# +# CALC_CHAR_HOULE +# MACR_CALC_EOLIENNE +# +#____________________________________________________________________ +# +# On charge les modules necessaires +import os +import Numeric +import re +import math +# +# permet de definir dans le meme fichier les catalogues et les macros +from Cata.cata import * +# +#____________________________________________________________________ +#____________________________________________________________________ +# +#____________________________________________________________________ +#___________________ DEBUT MACRO calc_char_houle ____________________ +# +# +def calc_char_houle_ops(self, INFO, STREAM, IMPRESSION, **args): +# +# 1. args est le dictionnaire des arguments +# args.keys() est la liste des mots-clés +# args.keys()[0] est la premiere valeur de cette liste +# args.keys()[1:] est la liste des valeurs suivantes dans cette liste +# args.keys(mot_cle) représente le contenu de la variable mot_cle dans la macro appelante. + + """ Calcule le chargement du a la houle. """ + +# On charge les modules nécessaires + from Accas import _F + import aster + +#____________________________________________________________________ +# +# 1. Préalables +#____________________________________________________________________ + +# 1.1 ==> La macro compte pour 1 dans l'exécution des commandes + + self.set_icmd(1) + +# 1.2 ==> On importe les définitions des commandes Aster utilisées +# dans la macro + + EXEC_LOGICIEL = self.get_cmd("EXEC_LOGICIEL") + IMPR_TABLE= self.get_cmd("IMPR_TABLE") + DEFI_FICHIER= self.get_cmd("DEFI_FICHIER") + +# 1.3 ==> Le nom des programmes à lancer + +# repertoire_outils = "/home/eolien/ASTER_EOLIEN/" + repertoire_outils = aster.repout() + calc_houle = repertoire_outils + "calc_houle" + +# 1.4 ==> Initialisations + + erreur = 0 + erreur_partiel = [0] + Rep_Calc_ASTER = os.getcwd() + + messages_erreur = { 0 : " Tout va bien.", + 1 : " Impossible de créer le répertoire de travail pour le logiciel de calcul de houle.", + 100 : " Erreur." } + + while not erreur : + +#____________________________________________________________________ +# +# 2. Répertoires et fichiers +#____________________________________________________________________ +# + +# 2.1. ==> Création du répertoire pour l'exécution du logiciel STREAM_FM + + Nom_Rep_local_houle = "tmp_stream" + Rep_Calc_LOGICIEL_local_houle = os.path.join(".",Nom_Rep_local_houle) + Rep_Calc_LOGICIEL_global_houle = os.path.join(Rep_Calc_ASTER,Nom_Rep_local_houle) + + try : + os.mkdir(Rep_Calc_LOGICIEL_global_houle) + except os.error,erreur_partiel : + self.cr.warn("Code d'erreur de mkdir : " + str(erreur_partiel[0]) + " : " + erreur_partiel[1]) + self.cr.fatal("Impossible de créer le répertoire de travail pour le logiciel de calcul de houle : "+Rep_Calc_LOGICIEL_global_houle) + erreur = 1 + break + +# 2.2. ==> On cree un fichier annexe pour transmettre des infos à la procédure de lancement +# de STREAM_FM + + fic_Info_ASTER = os.path.join(Rep_Calc_LOGICIEL_global_houle,"InfoExecASTER") + f_execAster = open(fic_Info_ASTER, "w") + f_execAster.write(str(INFO)+"\n") + f_execAster.close() + +#____________________________________________________________________ +# +# 3. Décodage des arguments de la macro-commande +# et création des fichiers pour STREAM_FM +#____________________________________________________________________ + +# 3.1. ==> Les fichiers pour le logiciel STREAM_FM +# Ils sont créés dans le répertoire d'exécution du logiciel, avec leurs noms officiels + + fic_data_HT = os.path.join(Rep_Calc_LOGICIEL_global_houle,"AMA_HT.par") + fic_data_FM = os.path.join(Rep_Calc_LOGICIEL_global_houle,"AMA_FM.par") + +# 3.2 ==> Construction du fichier 'data_HT' + +# 3.2.1 ==> Ouverture du fichier data_HT dans un répertoire temporaire + + f_menu = open(fic_data_HT, "w") + +# 3.2.2 ==> Lecture et écriture des données nécessaires + + prof = STREAM['PROFONDEUR'] + h_houle = STREAM['H_HOULE'] + peri_houle = STREAM['PERI_HOULE'] + courant_euler = STREAM['COUR_EULERIEN'] + ordre_fonc = STREAM['ORDR_FONC_COURAN'] + + f_menu.write(str(prof)+" <= Profondeur d'eau (m)\n") + f_menu.write(str(h_houle)+" <= Hauteur de houle (crete-a-creux) (m)\n") + f_menu.write(str(peri_houle)+" <= Periode de houle (s)\n") + f_menu.write(str(courant_euler)+" <= Vitesse du courant eulerien (m/s)\n") + f_menu.write(str(ordre_fonc)+" <= ordre de la fonction de courant (m/s)\n") + +# 3.2.3 ==> Fermeture du fichier data_HT + + f_menu.close() + + if INFO >= 2 : + print "===========================\n" + print "Contenu du fichier data_HT :" + fichier = open (fic_data_HT,"r") + les_lignes = fichier.readlines() + fichier.close() + for ligne in les_lignes : + print ligne[:-1] + print "===========================\n" + +# 3.3 ==> Construction du fichier "data_FM" + +# 3.3.1 ==> Ouverture du fichier + + f_FM = open(fic_data_FM, "w") + +# 3.3.2 ==> Lecture et écriture des données nécessaires + + diam = STREAM['DEXT_HAUT_BASE'] + coef_trainee = STREAM['COEF_TRAINEE'] + coef_inertie = STREAM['COEF_INERTIE'] + nb_nive_z = STREAM['NB_POINTS_VERT'] + nb_dt_par_t = STREAM['NB_INTER_PERI'] + + f_FM.write(str(diam)+" <= Diametre du cylindre (m)\n") + f_FM.write(str(coef_trainee)+" <= Coefficient de trainee Cd\n") + f_FM.write(str(coef_inertie)+" <= Coefficient d'inertie Cm\n") + f_FM.write(str(nb_nive_z)+" <= Nbe de points sur la verticale\n") + f_FM.write(str(nb_dt_par_t)+" <= Nbe de pas de temps sur une periode de houle\n") + +# 3.3.3 ==> Fermeture du fichier data_FM + + f_FM.close() + + if INFO >= 2 : + print "===========================\n" + print "Contenu du fichier data_FM :" + fichier = open (fic_data_FM,"r") + les_lignes = fichier.readlines() + fichier.close() + for ligne in les_lignes : + print ligne[:-1] + print "===========================\n" + +# 3.4 ==> Nom du fichier qui contiendra le résultat + + if (IMPRESSION['UNITE'] != None) : + Unit_Fich_Resu = 'fort.'+str(IMPRESSION['UNITE']) + +#____________________________________________________________________ +# +# 4. Ecriture de la commande d"exécution du logiciel STREAM +# +# Remarque : dans la donnée de la version du logiciel STREAM, il faut remplacer +# le _ de la donnée par un ., qui +# est interdit dans la syntaxe du langage de commandes ASTER +# Remarque : il faut remplacer le N majuscule de la donnee par +# un n minuscule, qui est interdit dans la syntaxe du langage +# de commandes ASTER +#____________________________________________________________________ +# + + VERSION="aster" + LOGICIEL = "STREAM" + + EXEC_LOGICIEL ( ARGUMENT = (Rep_Calc_LOGICIEL_global_houle, # nom du repertoire du calcul de houle + LOGICIEL, # nom du logiciel de calcul de houle + VERSION, # version du logiciel de calcul de houle + ), + LOGICIEL = calc_houle + ) + +#____________________________________________________________________ +# +# 5. Lecture du fichier de résultats STREAM_FM +#____________________________________________________________________ +# +# 5.1 ==> Ouverture, lecture et fermeture du fichier "AMA_FM.res" + + if (IMPRESSION['UNITE'] != None) : + fic_resuStream = os.path.join(Rep_Calc_LOGICIEL_global_houle,"AMA_FM.res") + f_resu = open(fic_resuStream, "r") + lignes = f_resu.readlines() + f_resu.close() + + Fic_Tabl_Resu = os.path.join(Rep_Calc_ASTER,Unit_Fich_Resu) + f_resu = open(Fic_Tabl_Resu, "w") + f_resu.writelines(lignes) + f_resu.close() +# +#____________________________________________________________________ +# +# 6. C'est fini ! +#____________________________________________________________________ +# + break + +# 6.1. ==> Arret en cas d'erreur + + if erreur : + if not messages_erreur.has_key(erreur) : + erreur = 100 + self.cr.fatal(messages_erreur[erreur]) + + return + +#____________________________________________________________________ +#____________________ FIN MACRO calc_char_houle _____________________ +# +#____________________________________________________________________ +#___________________ DEBUT FONCTION mail_eolienne ___________________ +# +# +# ===> Creation des fichiers de commandes GIBI +#____________________________________________________________________ +# + +def mail_eolienne(H_TOTALE, H_BASE, H_IMMERGEE, H_MOYEU, H_JONCTION, DECAL_PALES, + DEXT_NACELLE, EPAIS_NACELLE, DEXT_HAUT_BASE, DEXT_BAS_BASE, + EPAIS_HAUT_BASE, EPAIS_BAS_BASE, DEXT_HAUT_FUT, DEXT_BAS_FUT, + EPAIS_HAUT_FUT, EPAIS_BAS_FUT, NB_ELEM_BASE, NB_ELEM_FUT, + NBEL_EPAIS_BASE, NBEL_EPAIS_FUT, NBEL_DCIR_BASE, NBEL_DCIR_FUT, + ANGLE_VENT_AXE_X, + MODELISATION, TYPE_ELEM, NIVE_GIBI, fichier_datg) : + +# +# 1 ==> Reccuperation du repertoire dans lequel s'execute le calcul ASTER +# + Rep_Calc_ASTER = os.getcwd() + +# +# 2 ==> Decoupage des mailles de la base en fonction du niveau d'eau +# + lb = H_BASE / NB_ELEM_BASE + nbi = int(H_IMMERGEE/lb) + hbe = H_BASE - H_IMMERGEE + + # CAS 1 + if ( ((H_IMMERGEE/lb)-nbi) < 0.5 ) : + lbi = H_IMMERGEE/nbi + if (hbe > 0.0) : + nbe = NB_ELEM_BASE - nbi + lbe = hbe/nbe + else : + nbe = 0 + # CAS 2 + if ( ((H_IMMERGEE/lb)-nbi) >= 0.5 ) : + lbi = H_IMMERGEE/(nbi+1) + nbe = NB_ELEM_BASE - (nbi+1) + lbe = hbe/nbe + nbi = nbi + 1 + +# +# 3 ==> Ecriture des donnees necessaires dans le fichier auxiliaire +# + if MODELISATION == 'POUTRE' : + + # 3.1 ==> Ouverture du fichier auxiliaire + + fichier_auxi = os.path.join(Rep_Calc_ASTER,"fichaux") + fdaux = open (fichier_auxi,'w') + + # 3.2 ==> Ecriture des donnees dans le fichier auxiliaire + + j = 0 + + for i in range(nbi) : + j = j+1 + fdaux.write("base"+str(j)+" = baset . "+str(j)+";\n") + if hbe > 0.0 : + for i in range(nbe) : + j = j+1 + fdaux.write("base"+str(j)+" = baset . "+str(j)+";\n") + + for i in range(NB_ELEM_FUT) : + fdaux.write("fut"+str(i+1)+" = futt . "+str(i+1)+";\n") + + fdaux.write("SAUV FORM eolienne;\n") + fdaux.write("FIN;\n") + + # 3.3 ==> Fermeture du fichier auxiliaire + + fdaux.close() + +# +# 4 ==> Ecriture des donnees necessaires dans le fichier de donnees GIBI +# + +# 4.1 ==> Ouverture du fichier de données GIBI + + fdgib = open (fichier_datg,'w') + + +# 4.2 ==> Ecriture des donnees dans le fichier de donnees GIBI + + fdgib.write("*********************************\n") + fdgib.write("** Maillage d'une eolienne en mer\n") + fdgib.write("*********************************\n") + fdgib.write("***********************\n") + fdgib.write("***********************\n") + fdgib.write("** donnees geometriques\n") + fdgib.write("***********************\n") + + fdgib.write("opti nive "+str(NIVE_GIBI)+";\n") + + if MODELISATION == 'POUTRE' : + fdgib.write("modbase = 'poutre';\n") + fdgib.write("modfut = 'poutre';\n") + if MODELISATION == 'COQUE' : + fdgib.write("modbase = 'coque';\n") + fdgib.write("modfut = 'coque';\n") + if MODELISATION == '3D' : + fdgib.write("modbase = '3D';\n") + fdgib.write("modfut = '3D';\n") + if TYPE_ELEM == 'CUB8' : fdgib.write("quad = 'non';\n") + if TYPE_ELEM == 'CU20' : fdgib.write("quad = 'oui';\n") + + fdgib.write("**** hauteur totale du monopode (hors nacelle)\n") + fdgib.write("h_totale = "+str(H_TOTALE)+";\n") + fdgib.write("**** hauteur de la base du monopode\n") + fdgib.write("hb = "+str(H_BASE)+";\n") + fdgib.write("**** hauteur immergee (deduite du calcul par STREAM)\n") + fdgib.write("hbi = "+str(H_IMMERGEE)+";\n") + fdgib.write("**** nombre de mailles immergees de la base\n") + fdgib.write("nbi = "+str(nbi)+";\n") + fdgib.write("**** hauteur emergee\n") + fdgib.write("hbe = "+str(hbe)+";\n") + fdgib.write("**** nombre de mailles emergees de la base\n") + fdgib.write("nbe = "+str(nbe)+";\n") + fdgib.write("**** decoupage vertical\n") + fdgib.write("nb_base = "+str(NB_ELEM_BASE)+";\n") + fdgib.write("nb_fut = "+str(NB_ELEM_FUT)+";\n") + fdgib.write("**** diametre et epaisseur bas du fut\n") + fdgib.write("dex_bfut = "+str(DEXT_BAS_FUT)+";\n") + fdgib.write("ep_bfut = "+str(EPAIS_BAS_FUT)+";\n") + fdgib.write("**** diametre et epaisseur haut du fut\n") + fdgib.write("dex_hfut = "+str(DEXT_HAUT_FUT)+";\n") + fdgib.write("ep_hfut = "+str(EPAIS_HAUT_FUT)+";\n") + fdgib.write("**** diametre et epaisseur bas de la base\n") + fdgib.write("dex_bbas = "+str(DEXT_BAS_BASE)+";\n") + fdgib.write("ep_bbas = "+str(EPAIS_BAS_BASE)+";\n") + fdgib.write("**** diametre et epaisseur haut de la base\n") + fdgib.write("dex_hbas = "+str(DEXT_HAUT_BASE)+";\n") + fdgib.write("ep_hbas = "+str(EPAIS_HAUT_BASE)+";\n") + + if MODELISATION == '3D' or MODELISATION == 'COQUE' : + fdgib.write("**** nombre d'elements sur un demi-cercle\n") + fdgib.write("nbcirfut = "+str(NBEL_DCIR_FUT)+";\n") + fdgib.write("nbcirbas = "+str(NBEL_DCIR_BASE)+";\n") + fdgib.write("**** hauteur de la jonction base/fut\n") + fdgib.write("hbj = "+str(H_JONCTION)+";\n") + if MODELISATION == '3D' : + fdgib.write("**** nombre d'elements dans l'epaisseur\n") + fdgib.write("nbep_fut = "+str(NBEL_EPAIS_FUT)+";\n") + fdgib.write("nbep_bas = "+str(NBEL_EPAIS_BASE)+";\n") + + fdgib.write("**** angle entre la pression du vent et l'axe X (degres)\n") + fdgib.write("alpha = "+str(ANGLE_VENT_AXE_X)+";\n") + fdgib.write("**** decalage pales\n") + fdgib.write("dec0 = "+str(DECAL_PALES)+";\n") + fdgib.write("**** hauteur moyeu\n") + fdgib.write("hp0 = "+str(H_MOYEU)+";\n") + + fdgib.write("opti echo 0;\n") +# loc_datg = "/home/eolien/DATG/" + loc_datg = aster.repdex() + fdgib.write("* \n") + fdgib.write(open(os.path.join(loc_datg, 'calc_eolienne.datg'), 'r').read()) + +# 4.3 ==> Fermeture du fichier de donnees GIBI + + fdgib.close() + +# 5 ==> FIN + + return + +#____________________________________________________________________ +#____________________ FIN FONCTION mail_eolienne ____________________ +# +#____________________________________________________________________ +# +#____________________________________________________________________ +#_________________ DEBUT FONCTION eolien_regression _________________ +# +# +# ===> Regression selon les moindres carres +#____________________________________________________________________ +# +# +def eolien_regression (liste, INFO,) : +# +# +#____________________________________________________________________ +# +# MOINDRES CARRES +#____________________________________________________________________ +# +# Calcul des coefficients teta0, teta1, teta2 et teta3 de +# l'application qui passe au mieux (au sens des moindres carres) +# par les couples (profondeur,force lineique). + + +# 1 ==> Initialisation + + +# 2 ==> Nombre de points calcules par STREAM selon l'axe vertical + + dim = liste.shape[0] + +# Controle : dim == Nb_valeur a voir + +# 3 ==> Definition des polynomes + + global P0, P1, P2, P3 + + def P0(): + return 1 + + def P1(alpha1, x): + return (x-alpha1) + + def P2(alpha1, alpha2, beta2, x): + return (x-alpha2)*(x-alpha1) - beta2 + + def P3(alpha1, alpha2, alpha3, beta2, beta3, x): + return (x-alpha3)*((x-alpha2)*(x-alpha1) - beta2) - beta3*(x-alpha1) + +# 4 ==> Definition de la fonction polynomiale de degre 3 + + def FF3(alpha1, alpha2, alpha3, beta2, beta3, teta0, teta1, teta2, teta3, x): + return teta0*P0() + teta1*P1(alpha1,x) + teta2*P2(alpha1,alpha2,beta2,x) + teta3*P3(alpha1,alpha2,alpha3,beta2,beta3,x) + +# 5 ==> Calcul des coefficients alpha1, alpha2, alpha3, beta2 et beta3 + + numerateur_alpha1 = 0 + denominateur_alpha1 = 0 + alpha1 = 0 + for i in range(dim) : + numerateur_alpha1 = numerateur_alpha1 + liste[[i,0]]*P0()**2 + denominateur_alpha1 = denominateur_alpha1 + P0()**2 + + alpha1 = numerateur_alpha1/denominateur_alpha1 + + numerateur_alpha2 = 0 + denominateur_alpha2 = 0 + alpha2 = 0 + numerateur_beta2 = 0 + denominateur_beta2 = 0 + beta2 = 0 + for i in range(dim) : + numerateur_alpha2 = numerateur_alpha2 + liste[[i,0]]*P1(alpha1,liste[[i,0]])**2 + denominateur_alpha2 = denominateur_alpha2 + P1(alpha1,liste[[i,0]])**2 + numerateur_beta2 = numerateur_beta2 + P1(alpha1,liste[[i,0]])**2 + denominateur_beta2 = denominateur_beta2 + P0()**2 + + alpha2 = numerateur_alpha2/denominateur_alpha2 + beta2 = numerateur_beta2/denominateur_beta2 + + numerateur_alpha3 = 0 + denominateur_alpha3 = 0 + alpha3 = 0 + numerateur_beta3 = 0 + denominateur_beta3 = 0 + beta3 = 0 + for i in range(dim) : + numerateur_alpha3 = numerateur_alpha3 + liste[[i,0]]*P2(alpha1,alpha2,beta2,liste[[i,0]])**2 + denominateur_alpha3 = denominateur_alpha3 + P2(alpha1,alpha2,beta2,liste[[i,0]])**2 + numerateur_beta3 = numerateur_beta3 + P2(alpha1,alpha2,beta2,liste[[i,0]])**2 + denominateur_beta3 = denominateur_beta3 + P1(alpha1,liste[[i,0]])**2 + + alpha3 = numerateur_alpha3/denominateur_alpha3 + beta3 = numerateur_beta3/denominateur_beta3 + +# 6 ==> Calcul des estimateurs cherches : teta0, teta1, teta2, teta3 + + numerateur_teta0 = 0 + denominateur_teta0 = 0 + teta0 = 0 + for i in range(dim) : + numerateur_teta0 = numerateur_teta0 + liste[[i,1]]*P0() + denominateur_teta0 = denominateur_teta0 + P0()**2 + + teta0 = numerateur_teta0/denominateur_teta0 + + numerateur_teta1 = 0 + denominateur_teta1 = 0 + teta1 = 0 + for i in range(dim) : + numerateur_teta1 = numerateur_teta1 + liste[[i,1]]*P1(alpha1,liste[[i,0]]) + denominateur_teta1 = denominateur_teta1 + P1(alpha1,liste[[i,0]])**2 + + teta1 = numerateur_teta1/denominateur_teta1 + + numerateur_teta2 = 0 + denominateur_teta2 = 0 + teta2 = 0 + for i in range(dim) : + numerateur_teta2 = numerateur_teta2 + liste[[i,1]]*P2(alpha1,alpha2,beta2,liste[[i,0]]) + denominateur_teta2 = denominateur_teta2 + P2(alpha1,alpha2,beta2,liste[[i,0]])**2 + + teta2 = numerateur_teta2/denominateur_teta2 + + numerateur_teta3 = 0 + denominateur_teta3 = 0 + teta3 = 0 + for i in range(dim) : + numerateur_teta3 = numerateur_teta3 + liste[[i,1]]*P3(alpha1,alpha2,alpha3,beta2,beta3,liste[[i,0]]) + denominateur_teta3 = denominateur_teta3 + P3(alpha1,alpha2,alpha3,beta2,beta3,liste[[i,0]])**2 + + teta3 = numerateur_teta3/denominateur_teta3 + +# 7 ==> Impression de certains resultats si INFO == 2 + + if (INFO == 2) : + print " " + print " RESULTATS " + print " " + print " teta0 = ", teta0 + print " teta1 = ", teta1 + print " teta2 = ", teta2 + print " teta3 = ", teta3 + print " " + + print " ===> VERIFICATION INTERPOLATION\n" + print " No point - profondeur - valeur STREAM - valeur par moindres carres \n" + for i in range(dim) : + print ' %3d %12.4f %12.4f %12.4f' % (i+1,liste[[i,0]],liste[[i,1]],FF3(alpha1, alpha2, alpha3, beta2, beta3, teta0, teta1, teta2, teta3,liste[[i,0]])) + + return (teta0,teta1,teta2,teta3,alpha1,alpha2,alpha3,beta2,beta3) + +#____________________________________________________________________ +#_________________ FIN FONCTION eolien_regression ___________________ +# +#____________________________________________________________________ +# +#____________________________________________________________________ +#_________________ DEBUT FONCTION lect_resu_stream __________________ +# +# +# ===> Lecture du fichier de resultats STREAM_FM +#____________________________________________________________________ +# + +def lect_resu_stream(INFO) : + +# 1 ==> Ouverture, lecture et fermeture du fichier "AMA_FM.res" + + Rep_Calc_ASTER = os.getcwd() + Nom_Rep_local_houle = "tmp_stream" + Rep_Calc_LOGICIEL_local_houle = os.path.join(".",Nom_Rep_local_houle) + Rep_Calc_LOGICIEL_global_houle = os.path.join(Rep_Calc_ASTER,Nom_Rep_local_houle) + + fic_resuStream = os.path.join(Rep_Calc_LOGICIEL_global_houle,"AMA_FM.res") + f_resu = open(fic_resuStream, "r") + lignes = f_resu.readlines() + f_resu.close() + +# 2 ==> Lecture du nombre de points (valeurs de forces lineiques). +# Lecture du nombre par lequel la periode a ete decoupee +# ATENTION ==> le nombre de pas de temps est egal a ce nombre plus un. + + compt_temps = 0 + compt_valeur = 0 + dict_temps = {} + + for i in range(len(lignes)) : + ligne = lignes[i].split() + print" ligne = ",ligne + if ligne[0] == "/PERIODE" and ligne[2] == "HOULE.................T........:" : + periode_houle = float(ligne[len(ligne)-2]) + + if INFO == 2 : + print " Periode de houle = ",periode_houle + + if ligne[0] == "/NB" and ligne[2] == "POINTS" : + Nb_valeur = int(ligne[len(ligne)-1]) + + if INFO == 2 : + print " Nb_valeur = ",Nb_valeur + + if ligne[0] == "/NB" and ligne[4] == "TEMPS" : + Nb_pas_temps = int(ligne[len(ligne)-1]) + + if INFO == 2 : + print " Nb_pas_temps = ",Nb_pas_temps + break + + return(periode_houle,Nb_valeur,Nb_pas_temps,lignes) + +#____________________________________________________________________ +#__________________ FIN FONCTION lect_resu_stream ___________________ +# +#____________________________________________________________________ +# +#____________________________________________________________________ +#_______________ DEBUT FONCTION donn_boucle_pas_temps _______________ +# +# +# ===> Preparation donnees necessaires a la boucle sur les pas de temps +# et verification du nombre de pas de temps +#____________________________________________________________________ +# + +def donn_boucle_pas_temps(lignes,Nb_pas_temps) : + +# 1 ==> Construction du dictionnaire contenant : +# pas_de_temps : numeros de ligne du fichier resu_STREAM_FM + + compt_temps = 0 + dict_temps = {} + + for i in range(len(lignes)) : + ligne = lignes[i].split() + if len(ligne) != 0 : + if ligne[0] == "#TITRE" and ligne[1] == "TEMPS" : + compt_temps = compt_temps + 1 + dict_temps["TEMPS_"+str(compt_temps)] = i+1 + +# 2 ==> Controle de l'egalite : compt_temps == Nb_pas_temps+1 +# et arret en cas d'erreur. + + if compt_temps != (Nb_pas_temps+1) : + print"\n IL Y A UN PROBLEME DANS DE NOMBRE DE PAS DE TEMPS.\n" + + return(dict_temps) +# +#____________________________________________________________________ +#________________ FIN FONCTION donn_boucle_pas_temps ________________ +# +#____________________________________________________________________ +# +#____________________________________________________________________ +#__________________ DEBUT FONCTION extr_char_houle __________________ +# +# +# ===> Extraction des couples (profondeur,force lineique) +# du fichier resu_STREAM_FM au pas de temps courant et +# remplissage de la liste de travail. +#____________________________________________________________________ +# +##################### +# VALEUR TEST +# +test = 'NON' +# Nb_pas_temps = 0 +##################### + +def extr_char_houle(k,dict_temps,Nb_valeur,lignes) : + + liste = Numeric.zeros((Nb_valeur,2), Numeric.Float) + + nume_ligne_temps = dict_temps["TEMPS_"+str(k)] + range_depart = int(nume_ligne_temps) + 2 + range_arrive = int(nume_ligne_temps) + Nb_valeur + 3 + for l in range(range_depart, range_arrive) : + ligne = lignes[l].split() + if (len(ligne) != 0) : + Flag_Val=re.match(r'^[-]?([0-9]+\.?[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?$',ligne[0]) + if (Flag_Val != None) : + liste[[(l-range_depart),0]] = float(ligne[0]) + liste[[(l-range_depart),1]] = float(ligne[1]) + + return(range_depart,range_arrive,liste) + +#____________________________________________________________________ +#___________________ FIN FONCTION extr_char_houle ___________________ +# +# _____________________________ +# _______________ +# _____________________________ +# +#____________________________________________________________________ +#__________________ DEBUT MACRO macr_calc_eolienne __________________ +# +# +# ===> MACRO COMMANDE MACR_CALC_EOLIENNE +# +#____________________________________________________________________ +# +# SCRIPT PYTHON +# +def macr_calc_eolienne_ops(self, INFO, MONOPODE, EXEC_MAILLAGE, AFFE_MATERIAU, CHARGEMENT, + IMPRESSION, MODELISATION, NOM_MAIL_REF, TYPE_ELEM, FATIGUE, **args) : + + """ Calcule la structure de l'eolienne en mer. """ + +# On charge les modules nécessaires + from Accas import _F + import aster +# import os + +#____________________________________________________________________ +# +# 1. Préalables +#____________________________________________________________________ +# +# 1.1 ==> La macro compte pour 1 dans l'exécution des commandes + + self.set_icmd(1) + erreur = 0 + +# 1.2 ==> On importe les définitions des commandes Aster utilisées +# dans la macro + + affemateriau = AFFE_MATERIAU +# impression = IMPRESSION + PRE_GIBI = self.get_cmd("PRE_GIBI") + EXEC_LOGICIEL = self.get_cmd("EXEC_LOGICIEL") + LIRE_MAILLAGE = self.get_cmd("LIRE_MAILLAGE") + DEFI_GROUP = self.get_cmd("DEFI_GROUP") + CREA_MAILLAGE = self.get_cmd("CREA_MAILLAGE") + MODI_MAILLAGE = self.get_cmd("MODI_MAILLAGE") + AFFE_CARA_ELEM = self.get_cmd("AFFE_CARA_ELEM") + AFFE_MODELE = self.get_cmd("AFFE_MODELE") + AFFE_MATERIAU = self.get_cmd("AFFE_MATERIAU") + FORMULE = self.get_cmd("FORMULE") + AFFE_CHAR_MECA_F= self.get_cmd("AFFE_CHAR_MECA_F") + AFFE_CHAR_MECA= self.get_cmd("AFFE_CHAR_MECA") + DEFI_LIST_REEL= self.get_cmd("DEFI_LIST_REEL") + STAT_NON_LINE= self.get_cmd("STAT_NON_LINE") + MECA_STATIQUE= self.get_cmd("MECA_STATIQUE") + CREA_CHAMP= self.get_cmd("CREA_CHAMP") + PROJ_CHAMP= self.get_cmd("PROJ_CHAMP") + CREA_RESU= self.get_cmd("CREA_RESU") + CALC_ELEM= self.get_cmd("CALC_ELEM") +# +# IMPR_CO= self.get_cmd("IMPR_CO") +# + IMPR_RESU= self.get_cmd("IMPR_RESU") + CALC_NO= self.get_cmd("CALC_NO") + CALC_FATIGUE= self.get_cmd("CALC_FATIGUE") + DETRUIRE= self.get_cmd("DETRUIRE") + DEFI_FICHIER= self.get_cmd("DEFI_FICHIER") + +# 1.3 ==> Lecture des donnees + + H_TOTALE = MONOPODE['H_TOTALE'] + H_BASE = MONOPODE['H_BASE'] + H_MOYEU = MONOPODE['H_MOYEU'] + DECAL_PALES = MONOPODE['DECAL_PALES'] + DEXT_HAUT_BASE = MONOPODE['DEXT_HAUT_BASE'] + DEXT_BAS_BASE = MONOPODE['DEXT_BAS_BASE'] + EPAIS_HAUT_BASE = MONOPODE['EPAIS_HAUT_BASE'] + EPAIS_BAS_BASE = MONOPODE['EPAIS_BAS_BASE'] + DEXT_HAUT_FUT = MONOPODE['DEXT_HAUT_FUT'] + DEXT_BAS_FUT = MONOPODE['DEXT_BAS_FUT'] + EPAIS_HAUT_FUT = MONOPODE['EPAIS_HAUT_FUT'] + EPAIS_BAS_FUT = MONOPODE['EPAIS_BAS_FUT'] + NB_ELEM_BASE = MONOPODE['NB_ELEM_BASE'] + NB_ELEM_FUT = MONOPODE['NB_ELEM_FUT'] + if (MODELISATION == '3D' or MODELISATION == 'COQUE') : + H_JONCTION = MONOPODE['H_JONCTION'] + DEXT_NACELLE = MONOPODE['DEXT_NACELLE'] + EPAIS_NACELLE = MONOPODE['EPAIS_NACELLE'] + NBEL_EPAIS_BASE = MONOPODE['NBEL_EPAIS_BASE'] + NBEL_EPAIS_FUT = MONOPODE['NBEL_EPAIS_FUT'] + else : + H_JONCTION = None + DEXT_NACELLE = None + EPAIS_NACELLE = None + NBEL_EPAIS_BASE = None + NBEL_EPAIS_FUT = None + + if (MODELISATION == '3D') : + NBEL_DCIR_BASE = MONOPODE['NBEL_DCIR_BASE'] + NBEL_DCIR_FUT = MONOPODE['NBEL_DCIR_FUT'] + else : + NBEL_DCIR_BASE = None + NBEL_DCIR_FUT = None + + ANGLE_VENT_AXE_X = CHARGEMENT['ANGLE_VENT_AXE_X'] + + LOGICIEL = EXEC_MAILLAGE['LOGICIEL'] + UNITE_DATG = EXEC_MAILLAGE['UNITE_DATG'] + UNITE_MGIB = EXEC_MAILLAGE['UNITE_MGIB'] + NIVE_GIBI = EXEC_MAILLAGE['NIVE_GIBI'] + +# 1.4 ==> Creation du repertoire pour l'execution du logiciel GIBI + + erreur_partiel = [0] + Rep_Calc_ASTER = os.getcwd() + + Nom_Rep_local_mail = "tmp_dgib" + Rep_Calc_LOGICIEL_local_mail = os.path.join(".",Nom_Rep_local_mail) + Rep_Calc_LOGICIEL_global_mail = os.path.join(Rep_Calc_ASTER,Nom_Rep_local_mail) + + try : + os.mkdir(Rep_Calc_LOGICIEL_global_mail) + except os.error,erreur_partiel : + self.cr.warn("Code d'erreur de mkdir : " + str(erreur_partiel[0]) + " : " + erreur_partiel[1]) + self.cr.fatal("Impossible de creer le repertoire de travail pour le logiciel de maillage : "+Rep_Calc_LOGICIEL_global_mail) + + aux_datg = 'fort.'+str(UNITE_DATG) + fichier_datg = os.path.join(Rep_Calc_LOGICIEL_global_mail,aux_datg) + + aux_mgib = 'fort.'+str(UNITE_MGIB) + fichier_mgib = os.path.join(Rep_Calc_ASTER,aux_mgib) + + repertoire_outils = aster.repout() + if (LOGICIEL == 'GIBI2000') : logi_mail = repertoire_outils+'gibi2000' + if (LOGICIEL == 'GIBI98') : logi_mail = repertoire_outils+'gibi98' + +# 1.5 ==> Construction du maillage et du modele de reference + + if (MODELISATION == '3D') and (FATIGUE != None) : + + H_IMMERGEE = MONOPODE['H_BASE'] + + mail_eolienne(H_TOTALE, H_BASE, H_IMMERGEE, H_MOYEU, H_JONCTION, DECAL_PALES, + DEXT_NACELLE, EPAIS_NACELLE, DEXT_HAUT_BASE, DEXT_BAS_BASE, + EPAIS_HAUT_BASE, EPAIS_BAS_BASE, DEXT_HAUT_FUT, DEXT_BAS_FUT, + EPAIS_HAUT_FUT, EPAIS_BAS_FUT, NB_ELEM_BASE, NB_ELEM_FUT, + NBEL_EPAIS_BASE, NBEL_EPAIS_FUT, NBEL_DCIR_BASE, NBEL_DCIR_FUT, + ANGLE_VENT_AXE_X, + MODELISATION, TYPE_ELEM, NIVE_GIBI, fichier_datg) + + EXEC_LOGICIEL( + LOGICIEL=logi_mail, + ARGUMENT=(fichier_datg, # fichier de donnees GIBI + fichier_mgib, # fichier resultats format GIBI + ) + ) + + PRE_GIBI() + + if NOM_MAIL_REF!=None : self.DeclareOut('mail_ref',NOM_MAIL_REF) + mail_ref = LIRE_MAILLAGE() + +# debut test +# IMPR_CO(CO=mail_ref,) +# fin test + + MOREF = AFFE_MODELE( MAILLAGE=mail_ref, + AFFE=(_F(GROUP_MA = ('MONOPODE'), + PHENOMENE = 'MECANIQUE', + MODELISATION = '3D',),),); + +# 1.6 ==> Lecture du fichier de resultats STREAM_FM + + (periode_houle,Nb_valeur,Nb_pas_temps,lignes) = lect_resu_stream(INFO) + +# 1.7 ==> declaration de tableaux pour les concepts Aster + + if (MODELISATION == 'COQUE') : + MA2 = [None] * (Nb_pas_temps+1) # pour la modelisation COQUE + + MA = [None] * (Nb_pas_temps+1) # pour les modelisations POUTRE et 3D + __MO = [None] * (Nb_pas_temps+1) + CARA = [None] * (Nb_pas_temps+1) + __affmat = [None] * (Nb_pas_temps+1) + +# 1.8 ==> Construction du dictionnaire contenant : +# pas_de_temps : numeros de ligne du fichier resu_STREAM_FM + + dict_temps = donn_boucle_pas_temps(lignes,Nb_pas_temps) + +#____________________________________________________________________ +# +##################### +# VALEUR TEST +# + test = 'NON' +# Nb_pas_temps = 0 +##################### +#____________________________________________________________________ +# +# 2. ==> BOUCLE SUR LES PAS DE TEMPS +# Dans cette boucle, a chaque pas de temps nous produisons : +# 1. un maillage en fonction de la hauteur d'eau ; +# 2. un chargement correspondant a la hauteur d'eau et a la modelisation ; +# 3. un calcul elastique lineaire avec MECA_STATIQUE ; +# 4. un fichier resultat qui est stocke dans un repertoire .repe ; +# 5. dans le cas ou un calcul en fatigue est demande nous projetons +# le champ de contrainte calcule aux noeuds sur un maillage de reference. +# + + for j in range(Nb_pas_temps+1) : + + k = j + 1 + +# 2.1 ==> Extraction des couples (profondeur,force lineique) +# du fichier resu_STREAM_FM au pas de temps courant et +# remplissage de la liste de travail. + + (range_depart,range_arrive,liste) = extr_char_houle(k,dict_temps,Nb_valeur,lignes) + +# 2.2 ==> Extraction de la hauteur d'eau + + H_IMMERGEE = liste[[(range_arrive-range_depart-2),0]] + if INFO == 2 : + print " ==> Numero d'ordre = ", j + print " ==> hauteur_eau = ", H_IMMERGEE + +##################### +# VALEUR TEST +# +# hauteur_eau = 30. +##################### + print "\n liste = \n", liste + print" " + +# 2.3 ==> Calcul des coefficients de la regression de maniere a +# construire un chargement continu. + + (teta0,teta1,teta2,teta3,alpha1,alpha2,alpha3,beta2,beta3) = eolien_regression (liste, INFO) + + print " " + print " RESULTATS " + print " " + print " teta0 = ", teta0 + print " teta1 = ", teta1 + print " teta2 = ", teta2 + print " teta3 = ", teta3 + print " " + +# 2.4 ==> Creation du maillage pour la hauteur d'eau (H_IMMERGEE) courante + + mail_eolienne(H_TOTALE, H_BASE, H_IMMERGEE, H_MOYEU, H_JONCTION, DECAL_PALES, + DEXT_NACELLE, EPAIS_NACELLE, DEXT_HAUT_BASE, DEXT_BAS_BASE, + EPAIS_HAUT_BASE, EPAIS_BAS_BASE, DEXT_HAUT_FUT, DEXT_BAS_FUT, + EPAIS_HAUT_FUT, EPAIS_BAS_FUT, NB_ELEM_BASE, NB_ELEM_FUT, + NBEL_EPAIS_BASE, NBEL_EPAIS_FUT, NBEL_DCIR_BASE, NBEL_DCIR_FUT, + ANGLE_VENT_AXE_X, + MODELISATION, TYPE_ELEM, NIVE_GIBI, fichier_datg) + +# 2.5 ==> Lancement de GIBI + EXEC_LOGICIEL( + LOGICIEL = logi_mail, + ARGUMENT = (fichier_datg, # fichier de donnees GIBI + fichier_mgib, # fichier resultats format GIBI + ) + ) + +# 2.6 ==> Lecture du maillage et definition des groupes + + PRE_GIBI() + + MA[j] = LIRE_MAILLAGE() + + MA[j]=DEFI_GROUP( reuse = MA[j], + MAILLAGE = MA[j], + CREA_GROUP_NO = _F( TOUT_GROUP_MA='OUI',),); + +# debut test +# IMPR_CO(CO=MA[j],) +# fin test + +# 2.7 ==> Modelisation POUTRE + + if MODELISATION == 'POUTRE' : + + __MO[j]=AFFE_MODELE(MAILLAGE=MA[j], + AFFE=_F(GROUP_MA='EOLIENNE',PHENOMENE='MECANIQUE',MODELISATION='POU_D_T',),); + + motscle={} + motscle['POUTRE']=[] + for i in range(NB_ELEM_FUT) : + nom = 'FUT'+str(i+1) + incr = (DEXT_BAS_FUT - DEXT_HAUT_FUT)/(2.0*NB_ELEM_FUT) + r1 = (DEXT_BAS_FUT/2.0) - (i*incr) + r2 = r1 - incr + motscle['POUTRE'].append(_F(GROUP_MA=nom,SECTION='CERCLE',CARA=('R1','R2','EP1','EP2',),VALE=(r1,r2,EPAIS_BAS_FUT,EPAIS_HAUT_FUT,),VARI_SECT='HOMOTHETIQUE',), ) + + for i in range(NB_ELEM_BASE) : + nom = 'BASE'+str(i+1) + incr = (DEXT_BAS_BASE - DEXT_HAUT_BASE)/(2.0*NB_ELEM_BASE) + r1 = (DEXT_BAS_BASE/2.0) - (i*incr) + r2 = r1 - incr + motscle['POUTRE'].append(_F(GROUP_MA=nom,SECTION='CERCLE',CARA=('R1','R2','EP1','EP2',),VALE=(r1,r2,EPAIS_BAS_BASE,EPAIS_HAUT_BASE,),VARI_SECT='HOMOTHETIQUE',), ) + + CARA[j]=AFFE_CARA_ELEM( MODELE = __MO[j], + **motscle ); + +# 2.8 ==> Modelisation COQUE + + if MODELISATION == 'COQUE' : + + MA2[j] = CREA_MAILLAGE( MAILLAGE=MA[j], + MODI_MAILLE=( _F( OPTION = 'QUAD8_9', + GROUP_MA = ('PARTEM','PARTIM',),), + _F( OPTION = 'TRIA6_7', + GROUP_MA = ('JONCTION',),),), + ); + + __MO[j] = AFFE_MODELE( MAILLAGE=MA2[j], + AFFE=( _F( GROUP_MA = ('PARTEM','PARTIM','JONCTION','CHAUTE'), + PHENOMENE = 'MECANIQUE', + MODELISATION = 'COQUE_3D',), + _F( GROUP_MA = 'NACELLE', + PHENOMENE = 'MECANIQUE', + MODELISATION = 'POU_D_E',),), + ); + + + MA2[j] = MODI_MAILLAGE( reuse = MA2[j], + MAILLAGE = MA2[j], + ORIE_NORM_COQUE = _F( + GROUP_MA = ('PARTEM','PARTIM','JONCTION'),),); + + CARA[j] = AFFE_CARA_ELEM( MODELE=__MO[j], + POUTRE=( _F(GROUP_MA = 'NACELLE', + SECTION = 'CERCLE', + CARA = ('R','EP',), + VALE = (dex_nacelle/2.,ep_nacelle,), ), + ), + COQUE=( _F( GROUP_MA = ('PARTEM','PARTIM','CHAUTE'), + EPAIS = ep_b_fut, + ANGL_REP = (0.0,90.0,), ), + + _F( GROUP_MA = ('JONCTION'), + EPAIS = h_jonction, ), + ), + ); + +# 2.9 ==> Modelisation 3D + + if MODELISATION == '3D' : + + __MO[j] = AFFE_MODELE( MAILLAGE=MA[j], + AFFE=(_F( GROUP_MA = ('BASE','FUT','JONCTION','CHAUTE','SI1','SE1'), + PHENOMENE = 'MECANIQUE', + MODELISATION = '3D',), + _F( GROUP_MA ='NACELLE', + PHENOMENE ='MECANIQUE', + MODELISATION ='POU_D_E',),), + ); + + MA[j] = MODI_MAILLAGE( reuse = MA[j], + MAILLAGE = MA[j], + ORIE_PEAU_3D = _F( + GROUP_MA = ('SE1','SI1','CHAUTE'),), + ); + + CARA[j] = AFFE_CARA_ELEM( MODELE =__MO[j], + POUTRE =( + _F( GROUP_MA = 'NACELLE', + SECTION = 'CERCLE', + CARA = ('R','EP',), + VALE = (DEXT_NACELLE/2.0,EPAIS_NACELLE,), ), + ), + ); + +# 2.10 ==> Affectation du materiau + + motscles={} + motscles['AFFE_MATERIAU']=[] + for mat in affemateriau : + if mat['TOUT'] == None : + # Creation de mots-cles pour les AFFE_CHAR_MECA + motscles['AFFE_MATERIAU'].append(_F( GROUP_MA = mat['GROUP_MA'], + MATER = mat['MATER'], + TEMP_REF = mat['TEMP_REF'],) ) + else : + # Creation de mots-cles pour les AFFE_CHAR_MECA + motscles['AFFE_MATERIAU'].append(_F( TOUT = 'OUI', + MATER = mat['MATER'], + TEMP_REF = mat['TEMP_REF'],) ) + if MODELISATION == 'COQUE' : + __affmat[j] = AFFE_MATERIAU( MAILLAGE = MA2[j], + MODELE = __MO[j], + AFFE = motscles['AFFE_MATERIAU'], + ) + else : + __affmat[j] = AFFE_MATERIAU( MAILLAGE = MA[j], + MODELE = __MO[j], + AFFE = motscles['AFFE_MATERIAU'], + ) + +# 2.11 ==> Chargement et conditions aux limites + + RAUMER = 1027.42 # masse volumique de l'eau de mer (kg/m3) + l_elem_stream = 0.3 # longueur des elements de STREAM_FM (m) + + if test == 'OUI': + # FC3 poutre + if MODELISATION == 'POUTRE' : + FC3 = FORMULE(NOM_PARA=('X','Y','Z'),VALE=' -(exp((Z+231.21)/20.187))/0.3') + else : + # FC3 coque et 3D + FC3 = FORMULE(NOM_PARA=('X','Y','Z'),VALE='''- ( + (3.E-5-(1.E4*Z))+((-6.E-8*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))+2.E-5*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8))) + -0.0021*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))+0.0224*(atan(Y/(X+1.E-8)))+0.9328)* + (0.5*'''+str(RAUMER)+'''*1.6**2)))''') + else : + if MODELISATION == 'POUTRE' : + FC3 = FORMULE(NOM_PARA=('X','Y','Z'),VALE=''' -(''' + +str(teta0)+'''+(''' + +str(teta1)+''')*(Z-('''+str(alpha1)+'''))+(''' + +str(teta2)+''')*((Z-('''+str(alpha2)+'''))*(Z-('''+str(alpha1)+'''))-('''+str(beta2)+'''))+(''' + +str(teta3)+''')*( (Z-('''+str(alpha3)+'''))*((Z-('''+str(alpha2)+'''))*(Z-('''+str(alpha1)+'''))-(''' + +str(beta2)+'''))-('''+str(beta3)+''')*(Z-('''+str(alpha1)+'''))))/'''+str(l_elem_stream)) + else : + r_bas = (DEXT_HAUT_BASE + DEXT_BAS_FUT)/4.0 # rayon moyen de la base + deux_pi_r_bas = 2.0*math.pi*r_bas # rayon moyen de la base multiplie par 2*pi + int_dp_etoil = -4.83893 # valeur de l integrale de la fonction de repartition de pression + + FC3 = FORMULE(NOM_PARA=('X','Y','Z'),VALE=''' -( + (('''+str(H_BASE)+'''-Z)*1.0E+4)+( + ((('''+str(teta0)+'''+''' + +str(teta1)+'''*(Z-'''+str(alpha1)+''')+''' + +str(teta2)+'''*((Z-'''+str(alpha2)+''')*(Z-'''+str(alpha1)+''')-'''+str(beta2)+''')+''' + +str(teta3)+'''*( (Z-'''+str(alpha3)+''')*((Z-'''+str(alpha2)+''')*(Z-'''+str(alpha1)+''')-''' + +str(beta2)+''')-'''+str(beta3)+'''*(Z-'''+str(alpha1)+''')))/'''+str(l_elem_stream)+''')-''' + +str(deux_pi_r_bas)+'''*(('''+str(H_BASE)+'''-Z)*1.0E+4))* + ((-6.E-8*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))+2.E-5*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8))) + -0.0021*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))+0.0224*(atan(Y/(X+1.E-8)))+0.9328))/('''+str(r_bas)+'''*'''+str(int_dp_etoil)+''')))''') + + if CHARGEMENT['VENT'] == 'OUI' : + FV0 = CHARGEMENT['FORCE_VENT_FUT'] + else : + FV0 = FORMULE(NOM_PARA=('X','Y','Z'),VALE='0.0*Z') + + if MODELISATION == 'POUTRE' : + CH=AFFE_CHAR_MECA_F(MODELE=__MO[j], + FORCE_POUTRE=(_F(GROUP_MA='PARTIM',FX=FC3,), + _F(GROUP_MA='PARTEM',FX=FV0,),),) + if MODELISATION == 'COQUE' : + CH=AFFE_CHAR_MECA_F(MODELE=__MO[j], + FORCE_COQUE=(_F(GROUP_MA='SI1',PRES=FC3,), + _F(GROUP_MA='SE1',PRES=FV0,),),); + + if MODELISATION == '3D' : + CH=AFFE_CHAR_MECA_F(MODELE=__MO[j], + PRES_REP=(_F(GROUP_MA='SI1',PRES=FC3,), + _F(GROUP_MA='SE1',PRES=FV0,),),); + + # force due au poids du rotor decale de d1 (N) + F2 = CHARGEMENT['FORCE_POIDS_ROTOR'] + + # force due au poids de la nacelle (N) + F3 = CHARGEMENT['FORCE_POIDS_NACELLE'] + + # force totale en z sur le sommet + FCZ = F2+F3 + + # force du à l'effort du vent sur les pales + FRU = CHARGEMENT['FORCE_VENT_PALES'] + # moment resistant + MRU = CHARGEMENT['MOMENT_RESISTANT'] + + # force et moment dus au vent sur le rotor suivant le repère global + ALPHAR = CHARGEMENT['ANGLE_VENT_AXE_X']*(math.pi)/180.0 + + F1X = FRU*math.cos(ALPHAR) + F1Y = FRU*math.sin(ALPHAR) + M1X = MRU*math.cos(ALPHAR) + M1Y = MRU*math.sin(ALPHAR) + + MCY = M1Y-(MONOPODE['DECAL_PALES']*F2)+(MONOPODE['H_MOYEU']*FRU) + + if MODELISATION == 'POUTRE' : + LIMIT=AFFE_CHAR_MECA( MODELE = __MO[j], + DDL_IMPO = _F( GROUP_NO='B_BASE', + DX=0.0,DY=0.0,DZ=0.0, + DRX=0.0,DRY=0.0,DRZ=0.0,), + FORCE_NODALE = _F( GROUP_NO='H_FUT', + FX=F1X, + FY=F1Y, + FZ=FCZ, + MX=M1X, + MY=MCY, + MZ=0.0,),) + + if MODELISATION == 'COQUE' : + LIMIT=AFFE_CHAR_MECA(MODELE=__MO[j], + DDL_IMPO=_F(GROUP_NO='CBASI', + DX=0.0,DY=0.0,DZ=0.0, + DRX=0.0,DRY=0.0,DRZ=0.0,), + + LIAISON_ELEM=_F(OPTION='COQ_POU', + CARA_ELEM = CARA[j], + AXE_POUTRE=(0.,0.,1.,), + GROUP_MA_1='CHAUTE', + GROUP_NO_2='H_FUT',), + + FORCE_NODALE=(_F(GROUP_NO='CHP', + FX=F1X,FY=F1Y,FZ=F2, + MX=M1X,MY=M1Y,MZ=0.0,), + + _F(GROUP_NO='CHP0',FZ=F3,), + ),) + + if MODELISATION == '3D' : + LIMIT=AFFE_CHAR_MECA(MODELE=__MO[j], + DDL_IMPO=_F(GROUP_NO='CBASI', + DX=0.0,DY=0.0,DZ=0.0,), + + LIAISON_ELEM=_F(OPTION='3D_POU', + CARA_ELEM = CARA[j], + AXE_POUTRE=(0.,0.,1.,), + GROUP_MA_1='CHAUTE', + GROUP_NO_2='H_FUT',), + + FORCE_NODALE=(_F(GROUP_NO='CHP', + FX=F1X,FY=F1Y,FZ=F2, + MX=M1X,MY=M1Y,MZ=0.0,), + + _F(GROUP_NO='CHP0',FZ=F3,), + ),) + + POIDS=AFFE_CHAR_MECA( MODELE=__MO[j], + PESANTEUR=(9.81,0.0,0.0,-1.0,),) + +# 2.12 ==> Realisation du calcul + + if MODELISATION == 'POUTRE' : + + TEMPS=DEFI_LIST_REEL(DEBUT=0.0, + INTERVALLE=_F(JUSQU_A=1.0, + PAS=1.0,),) + + RESU=STAT_NON_LINE(MODELE=__MO[j], + CHAM_MATER=__affmat[j], + CARA_ELEM=CARA[j], + EXCIT=(_F(CHARGE=POIDS,), + _F(CHARGE=CH,), + _F(CHARGE=LIMIT,),), + COMP_INCR=_F(RELATION='ELAS', + GROUP_MA='EOLIENNE',), + INCREMENT=_F(LIST_INST=TEMPS, + NUME_INST_FIN=1,),) + + RESU=CALC_ELEM( reuse =RESU, + RESULTAT=RESU, + OPTION=('SIEF_ELNO_ELGA','SIGM_ELNO_SIEF','SIPO_ELNO_SIEF',),) + + if MODELISATION == 'COQUE' : + RESU=MECA_STATIQUE( MODELE=__MO[j], + CHAM_MATER=__affmat[j], + CARA_ELEM=CARA[j], + EXCIT=(_F(CHARGE=POIDS,), + _F(CHARGE=CH,), + _F(CHARGE=LIMIT,),), + NIVE_COUCHE='MOY', + ); + RESU=CALC_ELEM( reuse =RESU, + RESULTAT=RESU, + OPTION=('SIGM_ELNO_DEPL','EQUI_ELNO_SIGM',),) + + RESU = CALC_NO( reuse =RESU, + RESULTAT=RESU, + OPTION=('SIGM_NOEU_DEPL','EQUI_NOEU_SIGM',),); + + if MODELISATION == '3D' : + RESU=MECA_STATIQUE( MODELE=__MO[j], + CHAM_MATER=__affmat[j], + CARA_ELEM=CARA[j], + EXCIT=(_F(CHARGE=POIDS,), + _F(CHARGE=CH,), + _F(CHARGE=LIMIT,),), + ); + RESU=CALC_ELEM( reuse =RESU, + RESULTAT=RESU, + REPE_COQUE=_F(NIVE_COUCHE='MOY',), + OPTION=('SIGM_ELNO_DEPL','EQUI_ELNO_SIGM',)); + + RESU = CALC_NO( reuse =RESU, + RESULTAT=RESU, + OPTION=('SIGM_NOEU_DEPL','EQUI_NOEU_SIGM',),); + +# 2.13 ==> Preparation du modele de reference si modelisation 3D calcul de la fatigue + + delta = periode_houle/Nb_pas_temps + inst = -periode_houle/2.0 + j*delta + if (MODELISATION == '3D') and (FATIGUE != None) : + + if (k == 1) : + CHAMREF = AFFE_MATERIAU( MAILLAGE = mail_ref, + MODELE = MOREF, + AFFE = motscles['AFFE_MATERIAU'],) + + RESPRO = PROJ_CHAMP( METHODE = 'ELEM', + NOM_CHAM = 'SIGM_NOEU_DEPL', + RESULTAT = RESU, + MODELE_1 = __MO[j], + MODELE_2 = MOREF, + VIS_A_VIS=( + _F( GROUP_MA_2='MONOPODE', + GROUP_MA_1='MONOPODE' ), + ), + ) + + SIG_PRO = CREA_CHAMP( TYPE_CHAM = 'NOEU_SIEF_R', + OPERATION = 'EXTR', + RESULTAT = RESPRO , + NOM_CHAM = 'SIGM_NOEU_DEPL', + NUME_ORDRE = 1, + ) + + if (k==1) : + RESREF = CREA_RESU( + OPERATION = 'AFFE', + TYPE_RESU = 'EVOL_ELAS', + NOM_CHAM = 'SIGM_NOEU_DEPL', + AFFE = _F( CHAM_GD = SIG_PRO, + INST = (inst), ), + ) + else : + RESREF = CREA_RESU( reuse = RESREF, + OPERATION = 'AFFE', + TYPE_RESU = 'EVOL_ELAS', + NOM_CHAM = 'SIGM_NOEU_DEPL', + AFFE = _F( CHAM_GD = SIG_PRO, + INST = (inst), ), + ) + +# 2.14 ==> Impression des resultats + + if MODELISATION == 'POUTRE' : + fich1='poutre_t='+str(inst)+'.resu' + fich2='poutre_t='+str(inst)+'.cast' + fich3='poutre_t='+str(inst)+'.ensi' + fich4='poutre_t='+str(inst)+'.unv' + if MODELISATION == 'COQUE' : + fich1='coque_t='+str(inst)+'.resu' + fich2='coque_t='+str(inst)+'.cast' + fich3='coque_t='+str(inst)+'.ensi' + fich4='coque_t='+str(inst)+'.unv' + if MODELISATION == '3D' : + fich1='3D_t='+str(inst)+'.resu' + fich2='3D_t='+str(inst)+'.cast' + fich3='3D_t='+str(inst)+'.ensi' + fich4='3D_t='+str(inst)+'.unv' + + fich1b = './REPE_OUT/'+fich1 + fich2b = './REPE_OUT/'+fich2 + fich3b = './REPE_OUT/'+fich3 + fich4b = './REPE_OUT/'+fich4 + + if IMPRESSION != None : + motscles={} + motscles['IMPRESSION']=[] + # Creation de mots-cles pour les IMPR_RESU + for impr in IMPRESSION : + if impr['FORMAT']=='RESULTAT': + UNIT_1B=DEFI_FICHIER(FICHIER=fich1b) + unitr = UNIT_1B + if impr['FORMAT']=='CASTEM': + UNIT_2B=DEFI_FICHIER(FICHIER=fich2b) + unitr = UNIT_2B + if impr['FORMAT']=='ENSIGHT': + UNIT_3B=DEFI_FICHIER(FICHIER=fich3b) + unitr = UNIT_3B + if impr['FORMAT']=='IDEAS': + UNIT_4B=DEFI_FICHIER(FICHIER=fich4b) + unitr = UNIT_4B + if MODELISATION == '3D': + motscles['IMPRESSION'].append(_F(MAILLAGE=MA[j],RESULTAT=RESU, + NOM_CHAM=('DEPL','SIGM_ELNO_DEPL','EQUI_ELNO_SIGM',),) ) + if MODELISATION == 'COQUE': + motscles['IMPRESSION'].append(_F(MAILLAGE=MA2[j],RESULTAT=RESU, + NOM_CHAM=('DEPL','SIGM_ELNO_DEPL','EQUI_ELNO_SIGM',),) ) + if MODELISATION == 'POUTRE': + motscles['IMPRESSION'].append(_F(MAILLAGE=MA[j],RESULTAT=RESU, + NOM_CHAM=('DEPL','SIGM_ELNO_SIEF','SIPO_ELNO_SIEF',),) ) + + IMPR_RESU(FORMAT=impr['FORMAT'],UNITE=unitr, + RESU=motscles['IMPRESSION'],) + + for impr in IMPRESSION : + if impr['FORMAT']=='RESULTAT': + DEFI_FICHIER(ACTION='LIBERER',FICHIER=fich1b) + DETRUIRE(CONCEPT=_F( NOM = UNIT_1B)) + if impr['FORMAT']=='CASTEM': + DEFI_FICHIER(ACTION='LIBERER',FICHIER=fich2b) + DETRUIRE(CONCEPT=_F( NOM = UNIT_2B)) + if impr['FORMAT']=='ENSIGHT': + DEFI_FICHIER(ACTION='LIBERER',FICHIER=fich3b) + DETRUIRE(CONCEPT=_F( NOM = UNIT_3B)) + if impr['FORMAT']=='IDEAS': + DEFI_FICHIER(ACTION='LIBERER',FICHIER=fich4b) + DETRUIRE(CONCEPT=_F( NOM = UNIT_4B)) + + if (MODELISATION == '3D') and (FATIGUE != None) : + DETRUIRE(CONCEPT=_F( NOM = SIG_PRO)) + DETRUIRE(CONCEPT=_F( NOM = RESPRO)) + if MODELISATION == 'POUTRE' : + DETRUIRE(CONCEPT=_F( NOM = TEMPS)) + + DETRUIRE(CONCEPT=_F( NOM = FC3)) + DETRUIRE(CONCEPT=_F( NOM = CH)) + DETRUIRE(CONCEPT=_F( NOM = LIMIT)) + DETRUIRE(CONCEPT=_F( NOM = POIDS)) + DETRUIRE(CONCEPT=_F( NOM = RESU)) +# +#____________________________________________________________________ +# +# 3. Calcul de fatigue. +# On calcule la fatigue si la modelisation est 3D et si le mot clef +# fatigue est present. +#____________________________________________________________________ +# +# 3.1 ==> Calcul de la fatigue +# + if (MODELISATION == '3D') and (FATIGUE != None) : + + self.DeclareOut('CHFATI',self.sd) + CHFATI = CALC_FATIGUE ( + TYPE_CALCUL = 'FATIGUE_MULTI', + TYPE_CHARGE = 'PERIODIQUE', + OPTION = 'DOMA_NOEUD', + RESULTAT = RESREF, + CHAM_MATER = CHAMREF, + GROUP_MA = ('BASE','FUT'), + MAILLAGE = mail_ref, + CRITERE=FATIGUE['CRITERE'], + METHODE='CERCLE_EXACT', + INFO = 2, ) + +#____________________________________________________________________ +# +# 3.2 ==> Impression des resultats de fatigue +# + if IMPRESSION != None : + motscles={} + motscles['IMPRESSION']=[] + + motscles['IMPRESSION'].append(_F(MAILLAGE=mail_ref,CHAM_GD=CHFATI,) ) + + IMPR_RESU( FORMAT=impr['FORMAT'], + MODELE = MOREF, + RESU=motscles['IMPRESSION'],) + +#____________________________________________________________________ +# +# 4. C'est fini ! +#____________________________________________________________________ +# + if erreur : + if not messages_erreur.has_key(erreur) : + erreur = 100 + self.cr.fatal(messages_erreur[erreur]) + + return +# +#____________________________________________________________________ +#____________________________________________________________________ +# +# CATALOGUES DES MACRO-COMMANDES +#____________________________________________________________________ +#____________________________________________________________________ +# +# ________________________________________ +# +#____________________________________________________________________ +#____________________________________________________________________ +# +# CATALOGUE DE LA MACRO COMMANDE CALC_CHAR_HOULE +#____________________________________________________________________ +#____________________________________________________________________ +# + +CALC_CHAR_HOULE=MACRO( nom="CALC_CHAR_HOULE",op=calc_char_houle_ops, + fr="Calcul le chargement du a la houle.", + ang=".",reentrant='n', + docu="Ux.xx.xx-a", + + STREAM =FACT(statut='o',max=1, + PROFONDEUR =SIMP(statut='o',typ='R'), + H_HOULE =SIMP(statut='o',typ='R'), + PERI_HOULE =SIMP(statut='o',typ='R'), + COUR_EULERIEN =SIMP(statut='o',typ='R'), + COEF_TRAINEE =SIMP(statut='o',typ='R'), + COEF_INERTIE =SIMP(statut='o',typ='R'), + ORDR_FONC_COURAN =SIMP(statut='o',typ='I'), + NB_POINTS_VERT =SIMP(statut='o',typ='I'), + NB_INTER_PERI =SIMP(statut='o',typ='I'), + DEXT_HAUT_BASE =SIMP(statut='o',typ='R'), + ), + + IMPRESSION =FACT(statut='f', + UNITE =SIMP(statut='o',typ='I'), + ), + + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + +); + +# +#____________________________________________________________________ +#____________________________________________________________________ +# +# CATALOGUE DE LA MACRO COMMANDE MACR_CALC_EOLIENNE +#____________________________________________________________________ +#____________________________________________________________________ +# + +def macr_calc_eolienne_prod(self,NOM_MAIL_REF,**args): + if NOM_MAIL_REF != None : self.type_sdprod(NOM_MAIL_REF,maillage_sdaster) + return cham_no_sdaster + + +MACR_CALC_EOLIENNE=MACRO(nom="MACR_CALC_EOLIENNE",op=macr_calc_eolienne_ops, + sd_prod=macr_calc_eolienne_prod, + fr="Calcul d une eolienne en mer.", + ang=".",reentrant='n', + docu="U2.09.04-a", + + EXEC_MAILLAGE =FACT(statut='o', + LOGICIEL =SIMP(statut='o',typ='TXM',defaut="GIBI2000",into=("GIBI98","GIBI2000") ), + UNITE_DATG =SIMP(statut='f',typ='I',defaut=70), + UNITE_MGIB =SIMP(statut='f',typ='I',defaut=19), + NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,4,5,6,7,8,9,10,11)), + ), + + MODELISATION =SIMP(statut='o',typ='TXM', into=("POUTRE","COQUE","3D") ), + NOM_MAIL_REF =SIMP(statut='f',typ=(CO,maillage_sdaster)), + + TYPE_ELEM =SIMP(statut='f',typ='TXM',defaut="CUB8",into=("CUB8","CU20") ), + + b_model_3D =BLOC(condition = "MODELISATION == '3D'", + + MONOPODE =FACT(statut='o',max=1, + + H_TOTALE =SIMP(statut='o',typ='R' ), + H_BASE =SIMP(statut='o',typ='R' ), + H_MOYEU =SIMP(statut='o',typ='R' ), + H_JONCTION =SIMP(statut='o',typ='R' ), + DECAL_PALES =SIMP(statut='o',typ='R' ), + DEXT_NACELLE =SIMP(statut='o',typ='R' ), + EPAIS_NACELLE =SIMP(statut='o',typ='R' ), + DEXT_HAUT_BASE =SIMP(statut='o',typ='R' ), + DEXT_BAS_BASE =SIMP(statut='f',typ='R' ), + EPAIS_HAUT_BASE =SIMP(statut='o',typ='R' ), + EPAIS_BAS_BASE =SIMP(statut='f',typ='R' ), + DEXT_HAUT_FUT =SIMP(statut='o',typ='R' ), + DEXT_BAS_FUT =SIMP(statut='f',typ='R' ), + EPAIS_HAUT_FUT =SIMP(statut='o',typ='R' ), + EPAIS_BAS_FUT =SIMP(statut='f',typ='R' ), + NB_ELEM_BASE =SIMP(statut='f',typ='I',defaut=30), + NB_ELEM_FUT =SIMP(statut='f',typ='I',defaut=70), + NBEL_EPAIS_BASE =SIMP(statut='f',typ='I',defaut=3), + NBEL_EPAIS_FUT =SIMP(statut='f',typ='I',defaut=3), + NBEL_DCIR_BASE =SIMP(statut='f',typ='I',defaut=15), + NBEL_DCIR_FUT =SIMP(statut='f',typ='I',defaut=15), + ), + ), + + b_model_coque =BLOC(condition = "MODELISATION == 'COQUE' ", + + MONOPODE =FACT(statut='o',max=1, + + H_TOTALE =SIMP(statut='o',typ='R' ), + H_BASE =SIMP(statut='o',typ='R' ), + H_MOYEU =SIMP(statut='o',typ='R' ), + H_JONCTION =SIMP(statut='o',typ='R' ), + DECAL_PALES =SIMP(statut='o',typ='R' ), + DEXT_NACELLE =SIMP(statut='o',typ='R' ), + EPAIS_NACELLE =SIMP(statut='o',typ='R' ), + DEXT_HAUT_BASE =SIMP(statut='o',typ='R' ), + DEXT_BAS_BASE =SIMP(statut='f',typ='R' ), + EPAIS_HAUT_BASE =SIMP(statut='o',typ='R' ), + EPAIS_BAS_BASE =SIMP(statut='f',typ='R' ), + DEXT_HAUT_FUT =SIMP(statut='o',typ='R' ), + DEXT_BAS_FUT =SIMP(statut='f',typ='R' ), + EPAIS_HAUT_FUT =SIMP(statut='o',typ='R' ), + EPAIS_BAS_FUT =SIMP(statut='f',typ='R' ), + NB_ELEM_BASE =SIMP(statut='f',typ='I',defaut=30), + NB_ELEM_FUT =SIMP(statut='f',typ='I',defaut=70), + NBEL_DCIR_BASE =SIMP(statut='f',typ='I',defaut=15), + NBEL_DCIR_FUT =SIMP(statut='f',typ='I',defaut=15), + ), + ), + + b_model_poutre =BLOC(condition = "MODELISATION == 'POUTRE' ", + + MONOPODE =FACT(statut='o',max=1, + + H_TOTALE =SIMP(statut='o',typ='R' ), + H_BASE =SIMP(statut='o',typ='R' ), + H_MOYEU =SIMP(statut='o',typ='R' ), + DECAL_PALES =SIMP(statut='o',typ='R' ), + DEXT_HAUT_BASE =SIMP(statut='o',typ='R' ), + DEXT_BAS_BASE =SIMP(statut='f',typ='R' ), + EPAIS_HAUT_BASE =SIMP(statut='o',typ='R' ), + EPAIS_BAS_BASE =SIMP(statut='f',typ='R' ), + DEXT_HAUT_FUT =SIMP(statut='o',typ='R' ), + DEXT_BAS_FUT =SIMP(statut='f',typ='R' ), + EPAIS_HAUT_FUT =SIMP(statut='o',typ='R' ), + EPAIS_BAS_FUT =SIMP(statut='f',typ='R' ), + NB_ELEM_BASE =SIMP(statut='f',typ='I',defaut=30), + NB_ELEM_FUT =SIMP(statut='f',typ='I',defaut=70), + ), + ), + + AFFE_MATERIAU =FACT(statut='o',max=3, + regles=(UN_PARMI('TOUT','GROUP_MA'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ='TXM',into=("BASE","FUT") ), + MATER =SIMP(statut='o',typ=mater_sdaster ), + TEMP_REF =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ), + + CHARGEMENT =FACT(statut='o', + FORCE_POIDS_ROTOR =SIMP(statut='o',typ='R' ), + FORCE_POIDS_NACELLE =SIMP(statut='o',typ='R' ), + FORCE_VENT_PALES =SIMP(statut='o',typ='R' ), + ANGLE_VENT_AXE_X =SIMP(statut='o',typ='R' ), + MOMENT_RESISTANT =SIMP(statut='o',typ='R' ), + FORCE_VENT_FUT =SIMP(statut='o',typ=(fonction_sdaster,formule) ), + VENT =SIMP(statut='o',typ='TXM',into=("OUI","NON") ), + HOULE =SIMP(statut='o',typ='TXM',into=("OUI","NON") ), + ), + + FATIGUE =FACT(statut='f', + CRITERE =SIMP(statut='f',typ='TXM',defaut="DANG_VAN_MODI_AC",into=("MATAKE","DANG_VAN_MODI_AC") ), + ), + + SOLVEUR =FACT(statut='d', + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ), + b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", + RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), + ), + b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT", + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ), + ), + b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ", + fr="Paramètres relatifs à la non inversibilité de la matrice à factorise", + NPREC =SIMP(statut='f',typ='I',defaut= 8 ), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué", + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ), + NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), + NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), + ), + SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + ), + + IMPRESSION =FACT(statut='f', + FORMAT =SIMP(statut='f',typ='TXM',defaut="RESULTAT", + into=("RESULTAT","CASTEM","IDEAS","ENSIGHT")), + + b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas", + VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)), + ), + + b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem", + NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)), + ), + + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + ), + + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + +); diff --git a/Aster/Cata/cataSTA9/Intranet/macr_cabri_calc_cata.py b/Aster/Cata/cataSTA9/Intranet/macr_cabri_calc_cata.py new file mode 100644 index 00000000..8cddc463 --- /dev/null +++ b/Aster/Cata/cataSTA9/Intranet/macr_cabri_calc_cata.py @@ -0,0 +1,190 @@ +#@ MODIF macr_cabri_calc_cata Intranet DATE 28/01/2008 AUTEUR PELLET J.PELLET +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== + +from Intranet.macr_cabri_calc_ops import macr_cabri_calc_ops +from Cata.cata import * + +def macr_cabri_calc_prod(self,MODELE_THER,MODELE_MECA,CHAM_MATER, + CHAR_THER,CHAR_MECA,RESU_THER,**args): + if MODELE_THER != None: + self.type_sdprod(MODELE_THER,modele_sdaster) + if MODELE_MECA != None: + self.type_sdprod(MODELE_MECA,modele_sdaster) + if RESU_THER != None: + self.type_sdprod(RESU_THER,evol_ther) + if CHAM_MATER != None: + self.type_sdprod(CHAM_MATER,cham_mater) + if CHAR_THER != None: + for m in CHAR_THER: + self.type_sdprod(m['CHARGE'],char_ther) + if CHAR_MECA != None: + for m in CHAR_MECA: + self.type_sdprod(m['CHARGE'],char_meca) + return evol_noli + + +MACR_CABRI_CALC=MACRO(nom="MACR_CABRI_CALC", + op=macr_cabri_calc_ops, + sd_prod=macr_cabri_calc_prod, + fr="Calcul thermo-mécanique d'une jonction boulonnée de tuyauterie", + reentrant='n', + UIinfo={"groupes":("Outils métier",)}, + MAILLAGE = SIMP(statut='o',typ=maillage_sdaster,), + AFFE_MATERIAU = FACT(statut='o',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA',),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA = SIMP(statut='f',typ='TXM',into=( + "BRIDE", + "GOUJON", + "ROND", + "ECROU", + "JOINT",) ), + MATER = SIMP(statut='o',typ=mater_sdaster), + TEMP_REF = SIMP(statut='d',typ='R',defaut= 25. ), + ), + CHAM_MATER = SIMP(statut = 'f',typ=CO,), + MODELE_THER= SIMP(statut = 'f',typ=CO,), + + DEFI_CHAR_THER = FACT(statut ='d', + TEMP_INIT = SIMP(statut='d',typ='R',defaut= 25.,), + COEF_H_FLUI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),), + TEMP_EXT_FLUI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),), + COEF_H_AIR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),), + TEMP_EXT_AIR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + ), + + CHAR_THER = FACT(statut = 'f',max=4, + CHARGE = SIMP(statut='o',typ=CO), + TYPE = SIMP(statut='o',typ='TXM', + into=("BRIDE_FLUIDE","BRIDE_AIR","ECROU_GOUJON", + "BRIDE_JOINT"),) + ), + + RESU_THER = SIMP(statut = 'f',typ=CO,), + + + MODELE_MECA= SIMP(statut = 'f',typ=CO,), + + DEFI_CHAR_MECA = FACT(statut='o', + PRETENS = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),), + PRES_REP = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),), + EFFE_FOND = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),), + ), + + CHAR_MECA = FACT(statut = 'f',max=11, + CHARGE = SIMP(statut='o',typ=CO), + TYPE = SIMP(statut='o',typ='TXM', + into=("BLOC_BAS_GOUJ","BLOC_BAS_JOINT", + "BLOC_LAT_ALES","BLOC_LAT_NALES", + "PLAN_TUBE", + "PRES_FLU","EFFET_FOND", + "CONT_JOINT", + "DEFO_THER", + "SERR_ECROU_1","SERR_ECROU_2",),) + ), + + RELATION = SIMP(statut='f',typ='TXM', + into=('VMIS_ISOT_TRAC','ELAS','ELAS_VMIS_TRAC',),), + + SOLVEUR = FACT(statut='d', + METHODE = SIMP(statut='d',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT",) ), + b_mult_front = BLOC(condition = "METHODE == 'MULT_FRONT' ", + fr="Paramètres de la méthode multi frontale", + RENUM = SIMP(statut='d',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), + NPREC = SIMP(statut='d',typ='I',defaut=8), + STOP_SINGULIER = SIMP(statut='d',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + ), + INCREMENT = FACT(statut='f', + regles=(EXCLUS('NUME_INST_INIT','INST_INIT'), + EXCLUS('NUME_INST_FIN','INST_FIN'),), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE", + into=("CHRONOLOGIQUE",) ), + NUME_INST_INIT =SIMP(statut='f',typ='I'), + INST_INIT =SIMP(statut='f',typ='R'), + NUME_INST_FIN =SIMP(statut='f',typ='I'), + INST_FIN =SIMP(statut='f',typ='R'), + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ), + # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS + SUBD_METHODE =SIMP( statut='f',typ='TXM', + into =("AUCUNE","UNIFORME","EXTRAPOLE"), + defaut="AUCUNE", + fr="Méthode de subdivision des pas de temps en cas de non-convergence" + ), + b_subd_unif=BLOC(condition = "SUBD_METHODE == 'UNIFORME'", + regles=(AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),), + SUBD_COEF_PAS_1=SIMP(statut='f',typ='R',defaut=1.0,val_min=0.0, + fr="Coefficient multiplicateur de la 1ère subdivision"), + SUBD_PAS =SIMP(statut='f',typ='I',defaut=4,val_min=2, + fr="Nombre de subdivision d'un pas de temps"), + SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2, + fr="Nombre maximum de niveau de subdivision d'un pas de temps"), + SUBD_PAS_MINI=SIMP(statut='f',typ='R',val_min=0.0, + fr="Pas de temps en dessous duquel on ne subdivise plus"), + ), + b_subd_extr=BLOC(condition = "SUBD_METHODE == 'EXTRAPOLE'", + regles=(AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),), + SUBD_OPTION =SIMP(statut='f',typ='TXM', + into =("IGNORE_PREMIERES","GARDE_DERNIERES",), + defaut="IGNORE_PREMIERES", + fr="Technique d'extrapolation : les 1ere itérations sont ignorées ou les dernières sont gardées"), + SUBD_ITER_IGNO =SIMP(statut='c',typ='I',defaut=3,val_min=0, + fr="Les n premières itérations sont ignorées pour l'extrapolation"), + SUBD_ITER_FIN =SIMP(statut='c',typ='I',defaut=8,val_min=3, + fr="Seules les n dernières itérations sont prises pour l'extrapolation"), + SUBD_PAS =SIMP(statut='c',typ='I',defaut=4,val_min=2, + fr="Nombre de subdivision d'un pas de temps en cas divergence"), + SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2, + fr="Nombre maximum de niveau de subdivision d'un pas de temps"), + SUBD_PAS_MINI=SIMP(statut='f',typ='R',val_min=0.0, + fr="Pas de temps en dessous duquel on ne subdivise plus"), + SUBD_ITER_PLUS =SIMP(statut='c',typ='I',defaut=50,val_min=20, + fr="% itération autorisée en plus"), + ), + # FIN DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS + OPTI_LIST_INST =SIMP(statut='f',typ='TXM',into=("INCR_MAXI",),), + NOM_CHAM =SIMP(statut='f',typ='TXM',), + NOM_CMP =SIMP(statut='f',typ='TXM',), + VALE =SIMP(statut='f',typ='R'), + ), + NEWTON =FACT(statut='d', + REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ), + PREDICTION =SIMP(statut='f',typ='TXM',into=("TANGENTE","ELASTIQUE","EXTRAPOL") ), + MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ), + PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0), + REAC_ITER =SIMP(statut='f',typ='I',defaut=0), + EVOL_NOLI =SIMP(statut='f',typ=evol_noli), + ), + RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE", + into=("IMPLICITE",)), + CONVERGENCE =FACT(statut='d', + regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA'),), + SIGM_REFE =SIMP(statut='f',typ='R'), + EPSI_REFE =SIMP(statut='f',typ='R'), + FLUX_THER_REFE =SIMP(statut='f',typ='R'), + RESI_REFE_RELA =SIMP(statut='f',typ='R'), + RESI_GLOB_MAXI =SIMP(statut='f',typ='R'), + RESI_GLOB_RELA =SIMP(statut='f',typ='R'), + ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10), + ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25), + ), + ); diff --git a/Aster/Cata/cataSTA9/Intranet/macr_cabri_calc_ops.py b/Aster/Cata/cataSTA9/Intranet/macr_cabri_calc_ops.py new file mode 100644 index 00000000..81d8ea32 --- /dev/null +++ b/Aster/Cata/cataSTA9/Intranet/macr_cabri_calc_ops.py @@ -0,0 +1,555 @@ +#@ MODIF macr_cabri_calc_ops Intranet DATE 28/01/2008 AUTEUR PELLET J.PELLET +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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 macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER, + CHAR_MECA,RESU_THER,RESO_INTE, + AFFE_MATERIAU,DEFI_CHAR_THER,DEFI_CHAR_MECA,RELATION,SOLVEUR,CONVERGENCE,NEWTON, + INCREMENT,CHAM_MATER,**args): + """ + Ecriture de la macro MACR_CABRI_CALC + """ + + ################################################################# + ########## PREPARATION MACRO + ################################################################# + + from Accas import _F + + ier =0 + + # On met certains mots-clefs dans des variables locales pour les proteger + affemateriau = AFFE_MATERIAU + mail = MAILLAGE + resointe = RESO_INTE + + # On importe les definitions des commandes a utiliser dans la macro + # Le nom de la variable doit etre obligatoirement le nom de la commande + DEFI_GROUP = self.get_cmd('DEFI_GROUP') + AFFE_MATERIAU = self.get_cmd('AFFE_MATERIAU') + AFFE_MODELE = self.get_cmd('AFFE_MODELE') + MODI_MAILLAGE = self.get_cmd('MODI_MAILLAGE') + AFFE_CHAR_THER_F = self.get_cmd('AFFE_CHAR_THER_F') + AFFE_CHAR_THER = self.get_cmd('AFFE_CHAR_THER') + AFFE_CHAR_MECA_F = self.get_cmd('AFFE_CHAR_MECA_F') + AFFE_CHAR_MECA = self.get_cmd('AFFE_CHAR_MECA') + DEFI_FONCTION = self.get_cmd('DEFI_FONCTION') + DEFI_LIST_REEL = self.get_cmd('DEFI_LIST_REEL') + THER_LINEAIRE = self.get_cmd('THER_LINEAIRE') + STAT_NON_LINE = self.get_cmd('STAT_NON_LINE') + + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + + # Le concept sortant (de type evol_noli) est nomme 'resumeca' dans + # le contexte de la macro + self.DeclareOut('resumeca',self.sd) + self.DeclareOut('mail',MAILLAGE) + + ################################################################# + ########## PREPARATION DES MODELES + ################################################################# + + # Definition des groupes + mail=DEFI_GROUP(reuse =mail,MAILLAGE=mail, + CREA_GROUP_NO=( + _F(GROUP_MA='M_GOU',NOM='N_M_GOU',), + _F(GROUP_MA='M_JOI',NOM='N_M_JOI',), + _F(GROUP_MA='SCBJ',NOM='N_SCBJ',), + _F(GROUP_MA='SCJB',NOM='N_SCJB',), + _F(GROUP_MA='M_L_AA',NOM='N_M_L_AA',), + _F(GROUP_MA='SCEG',NOM='N_SCEG',), + _F(GROUP_MA='SCGE',NOM='N_SCGE',),),) + + # Creation du modele thermique + if MODELE_THER != None: + self.DeclareOut('modther',MODELE_THER) + + modther=AFFE_MODELE(MAILLAGE=mail, + AFFE=_F(GROUP_MA=('VTOT','M_GOU','M_TUB','M_JOI','SCBJ','SCJB', + 'M_L_AA','M_INT','M_L_SA','M_EXT','SCEG','SCGE',), + PHENOMENE='THERMIQUE', + MODELISATION='3D_DIAG',), + ); + + # Creation du modele mecanique + if MODELE_MECA != None: + self.DeclareOut('modmeca',MODELE_MECA) + + modmeca = AFFE_MODELE(MAILLAGE=mail, + AFFE=_F(GROUP_MA=('VTOT','M_GOU','M_TUB','M_JOI','SCBJ','SCJB', + 'M_L_AA','M_L_SA','SCEG','SCGE','M_INT','M_EXT',), + PHENOMENE='MECANIQUE', + MODELISATION='3D',), + ); + + # Orientation des mailles + mail=MODI_MAILLAGE(reuse =mail, + MAILLAGE=mail, + ORIE_PEAU_3D=(_F(GROUP_MA=('M_INT','M_TUB',),), + _F(GROUP_MA=('M_L_AA','M_JOI','M_L_SA',),),), + ); + + + + # Affectation des materiaux (thermique) + motscles={} + motscles['AFFE']=[] + for mat in affemateriau: + if mat['TOUT'] == None: + # Creation de mots-cles pour les AFFE_CHAR_MECA + motscles['AFFE'].append(_F(GROUP_MA=mat['GROUP_MA'], + MATER = mat['MATER'])) + else: + # Creation de mots-cles pour les AFFE_CHAR_MECA + motscles['AFFE'].append(_F(TOUT='OUI', + MATER = mat['MATER'])) + + __cham = AFFE_MATERIAU(MAILLAGE=mail, + MODELE=modther, + AFFE=motscles['AFFE'], + ) + + ################################################################# + ########## CONDITIONS AUX LIMITES THERMIQUES + ################################################################# + # Recuperation des parametres thermiques + + if DEFI_CHAR_THER != None: + temp_ini = DEFI_CHAR_THER['TEMP_INIT'] + if DEFI_CHAR_THER['COEF_H_FLUI']!=None: + coef_int = DEFI_CHAR_THER['COEF_H_FLUI'] + else: + coef_int = DEFI_FONCTION(NOM_PARA='INST', + VALE=(0.0,0.016, + 7200.0,0.016,), + PROL_DROITE='CONSTANT', + PROL_GAUCHE='CONSTANT',); + if DEFI_CHAR_THER['TEMP_EXT_FLUI']!=None: + temp_int = DEFI_CHAR_THER['TEMP_EXT_FLUI'] + else: + temp_int = DEFI_FONCTION(NOM_PARA='INST', + VALE=(0.0,temp_ini,1.0,temp_ini,11.0,60.0, + 600.0,60.0,610.0,280.0,1800.0,280.0,7200.0,280.0,), + PROL_DROITE='CONSTANT', + PROL_GAUCHE='CONSTANT',); + if DEFI_CHAR_THER['COEF_H_AIR']!=None: + coef_ext = DEFI_CHAR_THER['COEF_H_AIR'] + else: + coef_ext = DEFI_FONCTION(NOM_PARA='INST', + VALE=(0.0,1e-05,7200.0,1e-05,), + PROL_DROITE='CONSTANT', + PROL_GAUCHE='CONSTANT',); + + if DEFI_CHAR_THER['TEMP_EXT_AIR']!=None: + temp_ext = DEFI_CHAR_THER['TEMP_EXT_AIR'] + else: + temp_ext = DEFI_FONCTION(NOM_PARA='INST', + VALE=(0.0,20.0,7200.0,20.0,), + PROL_DROITE='CONSTANT', + PROL_GAUCHE='CONSTANT',); + if DEFI_CHAR_THER['LIST_INST']!=None: + transi1 = DEFI_CHAR_THER['LIST_INST'] + else: + transi1 = DEFI_LIST_REEL(DEBUT=0.0, + INTERVALLE=(_F(JUSQU_A=1.0, + NOMBRE=1,), + _F(JUSQU_A=11.0, + NOMBRE=10,), + _F(JUSQU_A=600.0, + NOMBRE=10,), + _F(JUSQU_A=610.0, + NOMBRE=30,), + _F(JUSQU_A=1800.0, + NOMBRE=30,), + _F(JUSQU_A=7200.0, + NOMBRE=10,),),); + else: + temp_ini = DEFI_CHAR_THER['TEMP_INIT'] + coef_int = DEFI_FONCTION(NOM_PARA='INST', + VALE=(0.0,0.016, + 7200.0,0.016,), + PROL_DROITE='CONSTANT', + PROL_GAUCHE='CONSTANT',); + temp_int = DEFI_FONCTION(NOM_PARA='INST', + VALE=(0.0,temp_ini,1.0,temp_ini,11.0,60.0, + 600.0,60.0,610.0,280.0,1800.0,280.0,7200.0,280.0,), + PROL_DROITE='CONSTANT', + PROL_GAUCHE='CONSTANT',); + coef_ext = DEFI_FONCTION(NOM_PARA='INST', + VALE=(0.0,1e-05,7200.0,1e-05,), + PROL_DROITE='CONSTANT', + PROL_GAUCHE='CONSTANT',); + temp_ext = DEFI_FONCTION(NOM_PARA='INST', + VALE=(0.0,20.0,7200.0,20.0,), + PROL_DROITE='CONSTANT', + PROL_GAUCHE='CONSTANT',); + transi1 = DEFI_LIST_REEL(DEBUT=0.0, + INTERVALLE=(_F(JUSQU_A=1.0, + NOMBRE=1,), + _F(JUSQU_A=11.0, + NOMBRE=10,), + _F(JUSQU_A=600.0, + NOMBRE=10,), + _F(JUSQU_A=610.0, + NOMBRE=30,), + _F(JUSQU_A=1800.0, + NOMBRE=30,), + _F(JUSQU_A=7200.0, + NOMBRE=10,),),); + # Que sauver ? + if CHAR_THER != None: + for m in CHAR_THER: + if m['TYPE']=="BRIDE_FLUIDE": + self.DeclareOut('cl_th1',m['CHARGE']) + if m['TYPE']=="BRIDE_AIR": + self.DeclareOut('cl_th2',m['CHARGE']) + if m['TYPE']=="ECROU_GOUJON": + self.DeclareOut('cl_th3',m['CHARGE']) + if m['TYPE']=="BRIDE_JOINT": + self.DeclareOut('cl_th4',m['CHARGE']) + + # Echanges thermiques internes entre le fluide et la bride + cl_th1=AFFE_CHAR_THER_F(MODELE=modther, + ECHANGE=_F(GROUP_MA = 'M_INT', + COEF_H = coef_int, + TEMP_EXT = temp_int,),); + + # Echanges thermiques externes entre bride et air ambiant + cl_th2=AFFE_CHAR_THER_F(MODELE=modther, + ECHANGE=_F(GROUP_MA='M_EXT', + COEF_H=coef_ext, + TEMP_EXT=temp_ext,),); + + # Echanges thermiques entre ecrou et goujon + cl_th3=AFFE_CHAR_THER(MODELE=modther, + LIAISON_GROUP=_F(GROUP_NO_1='N_SCEG', + GROUP_NO_2='N_SCGE', + DDL_1='TEMP', + COEF_MULT_1=1.0, + DDL_2='TEMP', + COEF_MULT_2=-1.0, + COEF_IMPO=0.0,),); + + # Echanges thermiques entre bride et joint + cl_th4=AFFE_CHAR_THER(MODELE=modther, + LIAISON_GROUP=_F(GROUP_NO_1='N_SCBJ', + GROUP_NO_2='N_SCJB', + DDL_1='TEMP', + COEF_MULT_1=1.0, + DDL_2='TEMP', + COEF_MULT_2=-1.0, + COEF_IMPO=0.0,),); + + + + ################################################################# + ########## CALCUL THERMIQUE + ################################################################# + if RESU_THER != None: + self.DeclareOut('resuther',RESU_THER) + + resuther=THER_LINEAIRE(MODELE=modther, + CHAM_MATER=__cham, + EXCIT=(_F(CHARGE=cl_th1,), + _F(CHARGE=cl_th2,), + _F(CHARGE=cl_th3,), + _F(CHARGE=cl_th4,),), + INCREMENT=_F(LIST_INST=transi1,), + ETAT_INIT=_F(VALE=temp_ini,), + TITRE='CABRI THERMIQUE &DATE &HEURE',); + + # Affectation des materiaux (mécanique) + if CHAM_MATER != None: + self.DeclareOut('_chamt',CHAM_MATER) + motscles={} + motscles['AFFE']=[] + motscles['AFFE_VARC']=[] + for mat in affemateriau: + if mat['TOUT'] == None: + # Creation de mots-cles pour les AFFE_CHAR_MECA + motscles['AFFE'].append(_F(GROUP_MA=mat['GROUP_MA'], + MATER = mat['MATER'],) ) + motscles['AFFE_VARC'].append(_F(NOM_VARC='TEMP',GROUP_MA=mat['GROUP_MA'], + EVOL=resuther,NOM_CHAM='TEMP', + VALE_REF = mat['TEMP_REF'],)) + else: + # Creation de mots-cles pour les AFFE_CHAR_MECA + motscles['AFFE'].append(_F(TOUT='OUI', + MATER = mat['MATER']) ) + motscles['AFFE_VARC'].append(_F(NOM_VARC='TEMP',TOUT='OUI', + EVOL=resuther,NOM_CHAM='TEMP', + VALE_REF = mat['TEMP_REF'],)) + + _chamt = AFFE_MATERIAU(MAILLAGE=mail, + MODELE=modther, + AFFE=motscles['AFFE'], + AFFE_VARC=motscles['AFFE_VARC'], + ) + + ################################################################# + ########## CONDITIONS AUX LIMITES MECANIQUES + ################################################################# + # Recuperation des parametres mecaniques + if DEFI_CHAR_MECA != None: + if DEFI_CHAR_MECA['PRETENS']!=None: + f_pret = DEFI_CHAR_MECA['PRETENS'] + else: + f_pret=DEFI_FONCTION(NOM_PARA='INST', + VALE=(0.0,0.0,1.0,-0.02,), + PROL_DROITE='CONSTANT', + PROL_GAUCHE='CONSTANT',); + if DEFI_CHAR_MECA['PRES_REP']!=None: + pre_int = DEFI_CHAR_MECA['PRES_REP'] + else: + pre_int = DEFI_FONCTION(NOM_PARA='INST', + VALE=(0.0,0.0,1.0,0.0,11.0,16.0,), + PROL_DROITE='CONSTANT', + PROL_GAUCHE='CONSTANT',); + if DEFI_CHAR_MECA['EFFE_FOND']!=None: + eff_fond = DEFI_CHAR_MECA['EFFE_FOND'] + else: + eff_fond=DEFI_FONCTION(NOM_PARA='INST', + VALE=(0.0,-0.0,1.0,-0.0,11.0,-20.607059,), + PROL_DROITE='CONSTANT', + PROL_GAUCHE='CONSTANT',); + else: + f_pret=DEFI_FONCTION(NOM_PARA='INST', + VALE=(0.0,0.0,1.0,-0.02,), + PROL_DROITE='CONSTANT', + PROL_GAUCHE='CONSTANT',); + + pre_int = DEFI_FONCTION(NOM_PARA='INST', + VALE=(0.0,0.0,1.0,0.0,11.0,16.0,), + PROL_DROITE='CONSTANT', + PROL_GAUCHE='CONSTANT',); + + eff_fond=DEFI_FONCTION(NOM_PARA='INST', + VALE=(0.0,-0.0,1.0,-0.0,11.0,-20.607059,), + PROL_DROITE='CONSTANT', + PROL_GAUCHE='CONSTANT',); + # Que sauver ? + if CHAR_MECA != None: + for m in CHAR_MECA: + if m['TYPE']=="BLOC_BAS_GOUJ": + self.DeclareOut('cl_me1',m['CHARGE']) + if m['TYPE']=="BLOC_BAS_JOINT": + self.DeclareOut('cl_me2',m['CHARGE']) + if m['TYPE']=="BLOC_LAT_ALES": + self.DeclareOut('cl_me3',m['CHARGE']) + if m['TYPE']=="BLOC_LAT_NALES": + self.DeclareOut('cl_me4',m['CHARGE']) + if m['TYPE']=="PLAN_TUBE": + self.DeclareOut('cl_me5',m['CHARGE']) + if m['TYPE']=="PRES_FLU": + self.DeclareOut('cl_me6',m['CHARGE']) + if m['TYPE']=="EFFET_FOND": + self.DeclareOut('cl_me7',m['CHARGE']) + if m['TYPE']=="CONT_JOINT": + self.DeclareOut('cl_me8',m['CHARGE']) + if m['TYPE']=="SERR_ECROU_1": + self.DeclareOut('cl_me10',m['CHARGE']) + if m['TYPE']=="SERR_ECROU_2": + self.DeclareOut('cl_me11',m['CHARGE']) + + + # Blocage bas du goujon + cl_me1=AFFE_CHAR_MECA(MODELE=modmeca, + DDL_IMPO=_F(GROUP_NO='N_M_GOU', + DZ=0.0,), + INFO=2,); + # Blocage bas du joint + cl_me2=AFFE_CHAR_MECA(MODELE=modmeca, + DDL_IMPO=_F(GROUP_NO='N_M_JOI', + DZ=0.0,), + INFO=2,); + + # Blocage lateral, face laterale avec alesage + cl_me3=AFFE_CHAR_MECA(MODELE=modmeca, + DDL_IMPO=_F(GROUP_NO='N_M_L_AA', + DY=0.0,), + INFO=2,); + + # Face laterale sans alesage + cl_me4=AFFE_CHAR_MECA(MODELE=modmeca, + FACE_IMPO=_F(GROUP_MA='M_L_SA', + DNOR=0.0,), + INFO=2,); + + # Condition de planeite de la face de coupe du tube + cl_me5=AFFE_CHAR_MECA(MODELE=modmeca, + LIAISON_UNIF=_F(GROUP_MA='M_TUB', + DDL='DZ',), + INFO=2,); + # Pression due au fluide + cl_me6=AFFE_CHAR_MECA_F(MODELE=modmeca, + PRES_REP=_F(GROUP_MA='M_INT', + PRES=pre_int,), + INFO=2,); + + # Effet de fond + cl_me7=AFFE_CHAR_MECA_F(MODELE=modmeca, + PRES_REP=_F(GROUP_MA='M_TUB', + PRES=eff_fond,), + INFO=2,); + + # Contact zone de joint + cl_me8=AFFE_CHAR_MECA(MODELE=modmeca, + CONTACT=_F(GROUP_MA_MAIT='SCBJ', + GROUP_MA_ESCL='SCJB',), + INFO=2,); + + # Serrage ecrou/goujon (pre-tensionnement) + cl_me10=AFFE_CHAR_MECA_F(MODELE=modmeca, + LIAISON_GROUP=_F(GROUP_NO_1='N_SCEG', + GROUP_NO_2='N_SCGE', + DDL_1='DZ', + COEF_MULT_1=1.0, + DDL_2='DZ', + COEF_MULT_2=-1.0, + COEF_IMPO=f_pret,), + INFO=2,); + + cl_me11=AFFE_CHAR_MECA(MODELE=modmeca, + LIAISON_GROUP=_F(GROUP_NO_1='N_SCEG', + GROUP_NO_2='N_SCGE', + DDL_1='DX', + COEF_MULT_1=1.0, + DDL_2='DX', + COEF_MULT_2=-1.0, + COEF_IMPO=0.0,), + INFO=2,); + + + ################################################################# + ########## CALCUL MECANIQUE + ################################################################# + # Options de convergence + solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste) + + # Elimination des valeurs "None" + for i in solveur.keys(): + if solveur[i]==None : del solveur[i] + + + transi2 = DEFI_LIST_REEL(DEBUT=0.0, + INTERVALLE=(_F(JUSQU_A=1.0, + NOMBRE=2,), + _F(JUSQU_A=11.0, + NOMBRE=20,), + _F(JUSQU_A=600.0, + NOMBRE=20,), + _F(JUSQU_A=610.0, + NOMBRE=20,), + _F(JUSQU_A=1800.0, + NOMBRE=20,), + _F(JUSQU_A=7200.0, + NOMBRE=20,),),); + + # Options d'incrementation + if INCREMENT != None: + if INCREMENT['LIST_INST'] != None: + listinst = INCREMENT['LIST_INST'] + else: + listinst = transi2 + + increment=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste) + + # Elimination des valeurs "None" + for i in increment.keys(): + if increment[i]==None : del increment[i] + + increment['LIST_INST'] = listinst + + else: + listinst = transi2 + increment =_F( + LIST_INST = listinst, + ), + + # Options de Newton + newton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste) + # Elimination des valeurs "None" + for i in newton.keys(): + if newton[i]==None : del newton[i] + + # Options de convergence + convergence=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste) + # Elimination des valeurs "None" + for i in convergence.keys(): + if convergence[i]==None : del convergence[i] + + # Options de comportement + # Type incremental (=1) ou elastique (=0) + comp_incr = 0 + if RELATION: + relation=RELATION + if relation == 'VMIS_ISOT_TRAC': + comp_incr = 1 + else: + comp_incr = 0 + else: + relation = 'ELAS' + comp_incr = 0 + + + # Parametres du calcul + if comp_incr == 1: + resumeca=STAT_NON_LINE(MODELE=modmeca, + CHAM_MATER=_chamt, + EXCIT=(_F(CHARGE=cl_me1,), + _F(CHARGE=cl_me2,), + _F(CHARGE=cl_me3,), + _F(CHARGE=cl_me4,), + _F(CHARGE=cl_me5,), + _F(CHARGE=cl_me6,), + _F(CHARGE=cl_me7,), + _F(CHARGE=cl_me8,), + _F(CHARGE=cl_me10,), + _F(CHARGE=cl_me11,), + ), + SOLVEUR = solveur, + COMP_INCR =_F(RELATION=relation,RESO_INTE=resointe), + NEWTON = newton, + INCREMENT = increment, + CONVERGENCE = convergence, + TITRE='CABRI THERMOM\xe9CANIQUE &DATE &HEURE',); + else: + resumeca=STAT_NON_LINE(MODELE=modmeca, + CHAM_MATER=_chamt, + EXCIT=(_F(CHARGE=cl_me1,), + _F(CHARGE=cl_me2,), + _F(CHARGE=cl_me3,), + _F(CHARGE=cl_me4,), + _F(CHARGE=cl_me5,), + _F(CHARGE=cl_me6,), + _F(CHARGE=cl_me7,), + _F(CHARGE=cl_me8,), + _F(CHARGE=cl_me10,), + _F(CHARGE=cl_me11,), + ), + SOLVEUR = solveur, + COMP_ELAS =_F(RELATION=relation,RESO_INTE=resointe), + NEWTON = newton, + INCREMENT = increment, + CONVERGENCE = convergence, + TITRE='CABRI THERMOM\xe9CANIQUE &DATE &HEURE',); + + return ier diff --git a/Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_cata.py b/Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_cata.py new file mode 100644 index 00000000..6af1e04c --- /dev/null +++ b/Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_cata.py @@ -0,0 +1,92 @@ +#@ MODIF macr_cabri_mail_cata Intranet DATE 28/01/2008 AUTEUR PELLET J.PELLET +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== + +from Intranet.macr_cabri_mail_ops import macr_cabri_mail_ops +from Cata.cata import * + +MACR_CABRI_MAIL=MACRO(nom="MACR_CABRI_MAIL", + op=macr_cabri_mail_ops, + sd_prod=maillage_sdaster, + fr="maillage d'une jonction boulonnée de tuyauterie", + reentrant='n', + UIinfo={"groupes":("Outils métier",)}, + EXEC_MAILLAGE = FACT(statut='o', + LOGICIEL = SIMP(statut = 'o',typ='TXM',into=("GIBI2000",),), + UNITE_DATG = SIMP(statut = 'f',typ='I',defaut=70,), + UNITE_MGIB = SIMP(statut = 'f',typ='I',defaut=19,), + NIVE_GIBI = SIMP(statut = 'f',typ='I',defaut=10, + into = (3,4,5,6,7,8,9,10,11), + ), + ), + RAFF_MAILLAGE = FACT(statut = 'd', + NB_RADIAL = SIMP(statut = 'f',typ='I',defaut=2,), + NB_CIRCONF = SIMP(statut = 'f',typ='I',defaut=3,), + NB_VERTICAL = SIMP(statut = 'f',typ='I',defaut=6,), + NB_ALESAGE = SIMP(statut = 'f',typ='I',defaut=5,), + ), + VERI_MAIL = FACT(statut='d', + VERIF = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + APLAT = SIMP(statut='f',typ='R',defaut= 1.0E-3 ), + ), + GEOM_BRID = FACT(statut = 'o', + NORME = SIMP(statut = 'o',typ='TXM',into=("OUI","NON"),), + b_bride_iso = BLOC(condition = "NORME == 'OUI'", + TYPE = SIMP(statut='o',typ='TXM', + into=('A','AA','B','B1','C','D','D1','E','F', + 'FF','G','GG','H','H1','I','J','J1', + 'K','L','L1','M','N','O','P','S','T','W'), + ), + ), + b_bride_niso = BLOC(condition = "NORME == 'NON'", + TUBU_D_EXT = SIMP(statut='o',typ='R',), + TUBU_H = SIMP(statut='o',typ='R',), + BRID_D_EXT = SIMP(statut='o',typ='R',), + BRID_D_INT = SIMP(statut='o',typ='R',), + BRID_H = SIMP(statut='o',typ='R',), + BRID_D_CONGE = SIMP(statut='o',typ='R',), + BRID_R_CONGE = SIMP(statut='o',typ='R',), + BRID_D_EPAUL = SIMP(statut='o',typ='R',), + BRID_H_EPAUL = SIMP(statut='o',typ='R',), + BRID_D_ALESAG = SIMP(statut='o',typ='R',), + BRID_P_ALESAG = SIMP(statut='o',typ='R',), + BRID_H_ALESAG = SIMP(statut='o',typ='R',), + GOUJ_N_GOUJON = SIMP(statut='o',typ='I',), + GOUJ_D_GOUJON = SIMP(statut='o',typ='R',), + GOUJ_E_FILET = SIMP(statut='o',typ='R',), + GOUJ_D_RONDEL = SIMP(statut='o',typ='R',), + GOUJ_E_RONDEL = SIMP(statut='o',typ='R',), + GOUJ_D_ECROU = SIMP(statut='o',typ='R',), + GOUJ_E_ECROU = SIMP(statut='o',typ='R',), + ETAN_E_JOINT = SIMP(statut='o',typ='R',), + ), + ), + IMPRESSION = FACT(statut='d', + UNITE = SIMP(statut='f',typ='I'), + FORMAT = SIMP(statut='f',typ='TXM',defaut="ASTER", + into=("ASTER","CASTEM","IDEAS"), + ), + b_impr_castem = BLOC(condition = "FORMAT == 'CASTEM'", + NIVE_GIBI = SIMP(statut='f',typ='I',defaut=10,into=(3,10),), + ), + b_impr_ideas = BLOC(condition = "FORMAT == 'IDEAS'", + VERSION = SIMP(statut='f',typ='I',defaut=5,into=(4,5),), + ), + ), + ); diff --git a/Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_dat.py b/Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_dat.py new file mode 100644 index 00000000..751f4165 --- /dev/null +++ b/Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_dat.py @@ -0,0 +1,628 @@ +#@ MODIF macr_cabri_mail_dat Intranet DATE 28/01/2008 AUTEUR PELLET J.PELLET +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== + +# Données pour les brides standards + + + +# Pour ajouter une bride x: +# Définir un dico_bride_x comme ci-dessous puis ajoutez-le à dico_bride_std + +# dictionnaire pour la description des variables +dico_var_geo = {'nbgouj':'Nombre de goujons de la jonction boulonnée (GOUJ_N_GOUJON)', + 'dint':'Diamètre intérieur de la bride (BRID_D_INT)', + 'dex1':'Diamétre extérieur de la conduite (TUBU_D_EXT)', + 'dex2':'Position (diamètre) du congé de la bride (BRID_D_CONGE)', + 'dex3':'Diamètre de l''épaulement de la bride au niveau de l''interface d''étanchéité (BRID_D_EPAUL)', + 'dtrou':'Position des alésages de la bride permettant l''introduction des goujons (BRID_P_ALESAG)', + 'dext':'Diamètre extérieur de la bride (BRID_D_EXT)', + 'dt':'Diamètre des alésages de la bride permettant l''introduction des goujons (BRID_D_ALESAG)', + 'drd':'Diamètre de la rondelle (GOUJ_D_RONDEL)', + 'dg':'Diamètre des goujons de la jonction boulonnée (GOUJ_D_GOUJON)', + 'dec':'Diamètre de l''écrou (GOUJ_D_ECROU)', + 'rcong':'Rayon du congé de la bride (BRID_R_CONGE)', + 'he':'Epaisseur de la rondelle (GOUJ_E_RONDEL)', + 'e':'Epaisseur de l''écrou (GOUJ_E_ECROU)', + 'hc1':'Hauteur de la bride (BRID_H)', + 'hcg1':'Hauteur de conduite (TUBU_H)', + 'hb':'Hauteur de l''épaulement de la bride au niveau de l''interface d''étanchéité (BRID_H_EPAUL)', + 'htrou':'Hauteur des alésages de la bride permettant l''introduction des goujons (BRID_H_ALESAG)', + 'pf':'Profondeur (épaisseur) des filets des goujons (GOUJ_E_FILET)', + 'j':'Epaisseur du joint au niveau de l''interface d''étanchéité (ETAN_E_JOINT)'} + +dico_var_msh = {'nrad':'Nombre d''éléments radiaux (NBR_RAD)', + 'ncir':'Nombre d''éléments circonférentiels (NBR_CIR)', + 'nver':'Nombre d''éléments verticaux (NBR_VER)', + 'nsect':'Nombre d''éléments de l''alésage (NBR_ALE)', + 'temps':'Temps d''analyse'} + +# dictionnaires des brides standards +dico_bride_A = {'nbgouj': 4, + 'dint': 15.76, + 'dex1': 21.3, + 'dex2': 38., + 'dex3': 48., + 'dtrou': 67., + 'dext': 95., + 'dt': 14., + 'drd': 25., + 'dg': 12., + 'dec': 18., + 'rcong': 3., + 'he': 12., + 'e': 2.5, + 'hc1': 46.5, + 'hcg1': 20, + 'hb': 1.5, + 'htrou': 20., + 'pf': 1.5, + 'j': 2} + +dico_bride_AA = {'nbgouj': 32, + 'dint': 336.5, + 'dex1': 355.6, + 'dex2': 395., + 'dex3': 415., + 'dtrou': 460., + 'dext': 515., + 'dt': 22., + 'drd': 36., + 'dg': 20., + 'dec': 30., + 'rcong': 5., + 'he': 20., + 'e': 3., + 'hc1': 115., + 'hcg1': 115./2., + 'hb': 3., + 'htrou': 47., + 'pf': 2.2, + 'j': 2} + +dico_bride_B = {'nbgouj': 4, + 'dint': 26.64, + 'dex1': 33.4, + 'dex2': 53., + 'dex3': 63., + 'dtrou': 88., + 'dext': 123., + 'dt': 16., + 'drd': 27., + 'dg': 14., + 'dec': 21., + 'rcong': 4., + 'he': 14., + 'e': 2.5, + 'hc1': 59., + 'hcg1': 59./2., + 'hb': 1.5, + 'htrou': 27.5, + 'pf': 1.7, + 'j': 2} +dico_bride_B1 = {'nbgouj': 4, + 'dint': 24.3, + 'dex1': 33.4, + 'dex2': 53., + 'dex3': 63., + 'dtrou': 88., + 'dext': 123., + 'dt': 16., + 'drd': 27., + 'dg': 14., + 'dec': 21., + 'rcong': 4., + 'he': 14., + 'e': 2.5, + 'hc1': 59., + 'hcg1': 59./2., + 'hb': 1.5, + 'htrou': 27.5, + 'pf': 1.7, + 'j': 2} +dico_bride_C = {'nbgouj': 8, + 'dint': 52.48, + 'dex1': 60.3, + 'dex2': 84., + 'dex3': 100., + 'dtrou': 127., + 'dext': 165., + 'dt': 18., + 'drd': 30, + 'dg': 16., + 'dec': 24., + 'rcong': 4., + 'he': 16., + 'e': 3, + 'hc1': 70., + 'hcg1': 70./2., + 'hb': 1.5, + 'htrou': 21., + 'pf': 1.7, + 'j': 2} +dico_bride_D = {'nbgouj': 8, + 'dint': 42.9, + 'dex1': 60.3, + 'dex2': 84., + 'dex3': 100., + 'dtrou': 127., + 'dext': 165., + 'dt': 18., + 'drd': 30, + 'dg': 16., + 'dec': 24., + 'rcong': 5., + 'he': 16., + 'e': 3., + 'hc1': 87.6, + 'hcg1': 87.6/2., + 'hb': 1.5, + 'htrou': 38.5, + 'pf': 1.7, + 'j': 2} +dico_bride_D1 = {'nbgouj': 8, + 'dint': 49.22, + 'dex1': 60.3, + 'dex2': 84., + 'dex3': 100., + 'dtrou': 127., + 'dext': 165., + 'dt': 18., + 'drd': 30, + 'dg': 16., + 'dec': 24., + 'rcong': 5., + 'he': 16., + 'e': 3., + 'hc1': 87.6, + 'hcg1': 87.6/2., + 'hb': 1.5, + 'htrou': 38.5, + 'pf': 1.7, + 'j': 2} +dico_bride_E = {'nbgouj': 8, + 'dint': 83.1, + 'dex1': 88.9, + 'dex2': 117.5, + 'dex3': 135., + 'dtrou': 165., + 'dext': 209., + 'dt': 18., + 'drd': 30., + 'dg': 16., + 'dec': 24., + 'rcong': 5., + 'he': 16., + 'e': 3., + 'hc1': 80., + 'hcg1': 80./2., + 'hb': 2., + 'htrou': 27., + 'pf': 1.7, + 'j': 2} +dico_bride_F = {'nbgouj': 8, + 'dint': 73.66, + 'dex1': 88.9, + 'dex2': 117.5, + 'dex3': 135., + 'dtrou': 165., + 'dext': 209., + 'dt': 18., + 'drd': 30., + 'dg': 16., + 'dec': 24., + 'rcong': 5., + 'he': 16., + 'e': 3., + 'hc1': 89., + 'hcg1': 89./2., + 'hb': 2., + 'htrou': 36., + 'pf': 1.7, + 'j': 2} +dico_bride_FF = {'nbgouj': 32, + 'dint': 396.99, + 'dex1': 406.4, + 'dex2': 440., + 'dex3': 455., + 'dtrou': 485., + 'dext': 535., + 'dt': 18., + 'drd': 30., + 'dg': 16., + 'dec': 24., + 'rcong': 5., + 'he': 16., + 'e': 3., + 'hc1': 99., + 'hcg1': 99./2., + 'hb': 3., + 'htrou': 40., + 'pf': 1.7, + 'j': 2} +dico_bride_G = {'nbgouj': 12, + 'dint': 66.7, + 'dex1': 88.9, + 'dex2': 117.5, + 'dex3': 135., + 'dtrou': 165., + 'dext': 209., + 'dt': 18., + 'drd': 30., + 'dg': 16., + 'dec': 24., + 'rcong': 5., + 'he': 16., + 'e': 3., + 'hc1': 98., + 'hcg1': 98./2., + 'hb': 2., + 'htrou': 45., + 'pf': 1.7, + 'j': 2} +dico_bride_GG = {'nbgouj': 36, + 'dint': 381., + 'dex1': 406.4, + 'dex2': 445., + 'dex3': 460., + 'dtrou': 495., + 'dext': 545., + 'dt': 22., + 'drd': 36, + 'dg': 20., + 'dec': 30., + 'rcong': 5., + 'he': 20., + 'e': 3., + 'hc1': 129., + 'hcg1': 129./2., + 'hb': 3., + 'htrou': 63., + 'pf': 2.2, + 'j': 2} +dico_bride_H = {'nbgouj': 12, + 'dint': 108.2, + 'dex1': 114.3, + 'dex2': 146., + 'dex3': 157., + 'dtrou': 190., + 'dext': 225., + 'dt': 18., + 'drd': 30., + 'dg': 16., + 'dec': 24., + 'rcong': 5., + 'he': 16., + 'e': 3., + 'hc1': 89., + 'hcg1': 89./2., + 'hb': 2., + 'htrou': 33., + 'pf': 1.7, + 'j': 2} +dico_bride_H1 = {'nbgouj': 12, + 'dint': 102.6, + 'dex1': 114.3, + 'dex2': 146., + 'dex3': 157., + 'dtrou': 190., + 'dext': 225., + 'dt': 18., + 'drd': 30., + 'dg': 16., + 'dec': 24., + 'rcong': 5., + 'he': 16., + 'e': 3., + 'hc1': 89., + 'hcg1': 89./2., + 'hb': 2., + 'htrou': 33., + 'pf': 1.7, + 'j': 2} +dico_bride_I = {'nbgouj': 18, + 'dint': 92.1, + 'dex1': 114.3, + 'dex2': 146., + 'dex3': 160., + 'dtrou': 200., + 'dext': 255., + 'dt': 20., + 'drd': 32., + 'dg': 18., + 'dec': 27., + 'rcong': 5., + 'he': 18., + 'e': 3., + 'hc1': 99., + 'hcg1': 99./2., + 'hb': 2., + 'htrou': 43., + 'pf': 2.2, + 'j': 2} +dico_bride_J = {'nbgouj': 18, + 'dint': 87.34, + 'dex1': 114.3, + 'dex2': 146., + 'dex3': 160., + 'dtrou': 200., + 'dext': 255., + 'dt': 20., + 'drd': 32., + 'dg': 18., + 'dec': 27., + 'rcong': 5., + 'he': 18., + 'e': 3., + 'hc1': 111., + 'hcg1': 111./2., + 'hb': 2., + 'htrou': 55., + 'pf': 2.2, + 'j': 2} +dico_bride_J1 = {'nbgouj': 18, + 'dint': 87.3, + 'dex1': 114.3, + 'dex2': 146., + 'dex3': 160., + 'dtrou': 200., + 'dext': 255., + 'dt': 22., + 'drd': 36., + 'dg': 20., + 'dec': 30., + 'rcong': 5., + 'he': 20., + 'e': 3., + 'hc1': 111., + 'hcg1': 111./2., + 'hb': 2., + 'htrou': 55., + 'pf': 2.2, + 'j': 2} +dico_bride_K = {'nbgouj': 8, + 'dint': 161.5, + 'dex1': 168.3, + 'dex2': 192., + 'dex3': 210., + 'dtrou': 235., + 'dext': 280., + 'dt': 18., + 'drd': 30., + 'dg': 16., + 'dec': 24., + 'rcong': 5., + 'he': 16., + 'e': 3., + 'hc1': 84., + 'hcg1': 84./2., + 'hb': 2., + 'htrou': 28., + 'pf': 1.7, + 'j': 2} +dico_bride_L = {'nbgouj': 16, + 'dint': 154.8, + 'dex1': 168.3, + 'dex2': 206., + 'dex3': 220., + 'dtrou': 255., + 'dext': 317., + 'dt': 18., + 'drd': 30., + 'dg': 16., + 'dec': 24., + 'rcong': 5., + 'he': 16., + 'e': 3., + 'hc1': 96., + 'hcg1': 96./2., + 'hb': 2., + 'htrou': 40., + 'pf': 1.7, + 'j': 2} +dico_bride_L1 = {'nbgouj': 16, + 'dint': 154.8, + 'dex1': 168.3, + 'dex2': 206., + 'dex3': 220., + 'dtrou': 255., + 'dext': 317., + 'dt': 20., + 'drd': 32., + 'dg': 18., + 'dec': 27., + 'rcong': 5., + 'he': 18., + 'e': 3., + 'hc1': 96., + 'hcg1': 96./2., + 'hb': 2., + 'htrou': 40., + 'pf': 2.2, + 'j': 2} +dico_bride_M = {'nbgouj': 16, + 'dint': 139.7, + 'dex1': 168.3, + 'dex2': 206., + 'dex3': 220., + 'dtrou': 250., + 'dext': 290., + 'dt': 24., + 'drd': 40., + 'dg': 22., + 'dec': 32., + 'rcong': 5., + 'he': 22., + 'e': 3., + 'hc1': 135., + 'hcg1': 135./2., + 'hb': 3., + 'htrou': 62., + 'pf': 2.2, + 'j': 2} +dico_bride_N = {'nbgouj': 12, + 'dint': 131.9, + 'dex1': 168.3, + 'dex2': 220., + 'dex3': 240., + 'dtrou': 290., + 'dext': 365., + 'dt': 30., + 'drd': 48., + 'dg': 27., + 'dec': 41., + 'rcong': 5., + 'he': 27., + 'e': 4., + 'hc1': 148., + 'hcg1': 148./2., + 'hb': 3., + 'htrou': 75., + 'pf': 2.6, + 'j': 2} +dico_bride_O = {'nbgouj': 12, + 'dint': 211.58, + 'dex1': 219.1, + 'dex2': 248., + 'dex3': 260., + 'dtrou': 292., + 'dext': 335., + 'dt': 20., + 'drd': 32., + 'dg': 18., + 'dec': 27., + 'rcong': 5., + 'he': 18., + 'e': 3., + 'hc1': 87., + 'hcg1': 87./2., + 'hb': 3., + 'htrou': 30., + 'pf': 2.2, + 'j': 2} +dico_bride_P = {'nbgouj': 16, + 'dint': 202.74, + 'dex1': 219.1, + 'dex2': 248., + 'dex3': 260., + 'dtrou': 292., + 'dext': 335., + 'dt': 20., + 'drd': 32, + 'dg': 18., + 'dec': 27., + 'rcong': 5., + 'he': 18., + 'e': 3., + 'hc1': 99., + 'hcg1': 99./2., + 'hb': 3., + 'htrou': 42., + 'pf': 2.2, + 'j': 2} +dico_bride_S = {'nbgouj': 16, + 'dint': 264.62, + 'dex1': 273., + 'dex2': 305., + 'dex3': 315., + 'dtrou': 350., + 'dext': 390., + 'dt': 18., + 'drd': 30., + 'dg': 16., + 'dec': 24., + 'rcong': 5., + 'he': 16., + 'e': 3., + 'hc1': 89., + 'hcg1': 89./2., + 'hb': 3., + 'htrou': 32., + 'pf': 1.7, + 'j': 2} +dico_bride_T = {'nbgouj': 16, + 'dint': 254.56, + 'dex1': 273., + 'dex2': 320., + 'dex3': 340., + 'dtrou': 385., + 'dext': 444., + 'dt': 27., + 'drd': 45., + 'dg': 24., + 'dec': 36., + 'rcong': 5., + 'he': 24., + 'e': 4., + 'hc1': 128., + 'hcg1': 128./2., + 'hb': 3., + 'htrou': 55., + 'pf': 2.6, + 'j': 2} +dico_bride_W = {'nbgouj': 28, + 'dint': 314.76, + 'dex1': 323.9, + 'dex2': 360., + 'dex3': 385., + 'dtrou': 415., + 'dext': 460., + 'dt': 18., + 'drd': 30., + 'dg': 16., + 'dec': 24., + 'rcong': 5., + 'he': 16., + 'e': 3., + 'hc1': 96., + 'hcg1': 96./2., + 'hb': 3., + 'htrou': 37., + 'pf': 1.7, + 'j': 2} + + +# dictionnaire pour faire le lien entre l'option de bride et les valeurs normalisées +dico_bride_std = {'AA':dico_bride_AA, + 'A':dico_bride_A, + 'B':dico_bride_B, + 'B1':dico_bride_B1, + 'C':dico_bride_C, + 'D':dico_bride_D, + 'D1':dico_bride_D1, + 'E':dico_bride_E, + 'F':dico_bride_F, + 'FF':dico_bride_FF, + 'G':dico_bride_G, + 'GG':dico_bride_GG, + 'H':dico_bride_H, + 'H1':dico_bride_H1, + 'I':dico_bride_I, + 'J':dico_bride_J, + 'J1':dico_bride_J1, + 'K':dico_bride_K, + 'L':dico_bride_L, + 'L1':dico_bride_L1, + 'M':dico_bride_M, + 'N':dico_bride_N, + 'O':dico_bride_O, + 'P':dico_bride_P, + 'S':dico_bride_S, + 'T':dico_bride_T, + 'W':dico_bride_W} diff --git a/Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_ops.py b/Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_ops.py new file mode 100644 index 00000000..f122a995 --- /dev/null +++ b/Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_ops.py @@ -0,0 +1,459 @@ +#@ MODIF macr_cabri_mail_ops Intranet DATE 28/01/2008 AUTEUR PELLET J.PELLET +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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 os + +def macr_cabri_mail_ops(self,EXEC_MAILLAGE,RAFF_MAILLAGE,VERI_MAIL,GEOM_BRID, + IMPRESSION,**args): + """ + Ecriture de la macro MACR_CABRI_MAIL + """ + import types + from Accas import _F + + ier=0 + + # On importe les definitions des commandes a utiliser dans la macro + # Le nom de la variable doit etre obligatoirement le nom de la commande + EXEC_LOGICIEL = self.get_cmd('EXEC_LOGICIEL') + LIRE_MAILLAGE = self.get_cmd('LIRE_MAILLAGE') + PRE_GIBI = self.get_cmd('PRE_GIBI') + IMPR_RESU = self.get_cmd('IMPR_RESU') + + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + + # Le concept sortant (de type mail) est nommé 'nomres' dans + # le contexte de la macro + + self.DeclareOut('nomres',self.sd) + + # Chemin de Gibi + import aster + loc_gibi=aster.repout() + gibi2000=loc_gibi+'gibi' + + # Unité pour le fichier maillage produit (format GIBI) + unite_mgib = EXEC_MAILLAGE['UNITE_MGIB'] + # Unité pour le fichier de commandes GIBI + unite_datg = EXEC_MAILLAGE['UNITE_DATG'] + # Niveau gibi + niveau_gibi = EXEC_MAILLAGE['NIVE_GIBI'] + + # Verif mail + ver_apla = VERI_MAIL['APLAT'] + ver_veri = VERI_MAIL['VERIF'] + + # Impression + if IMPRESSION['UNITE']!=None: + imp_unit = IMPRESSION['UNITE'] + imp_unitF = 1 + else: + imp_unitF = 0 + if IMPRESSION['FORMAT']!=None: + imp_form = IMPRESSION['FORMAT'] + imp_formF = 1 + else: + imp_formF = 0 +# if IMPRESSION['FICHIER']!=None: +# imp_fich = IMPRESSION['FICHIER'] +# imp_fichF = 1 +# else: +# imp_fichF = 0 + + # Maillage + nrad = RAFF_MAILLAGE['NB_RADIAL'] + ncir = RAFF_MAILLAGE['NB_CIRCONF'] + nver = RAFF_MAILLAGE['NB_VERTICAL'] + nsect = RAFF_MAILLAGE['NB_ALESAGE'] + temps = 5. + + maillage = {'nrad': nrad, + 'ncir': ncir, + 'nver': nver, + 'nsect': nsect, + 'temps' : temps,} + + # Création du fichier datg + + if GEOM_BRID['NORME'] == 'OUI': + # Bride standard + type_bride = GEOM_BRID['TYPE'] + ### Ecriture du fichier GIBI principal (dgib) - Bride STANDARD + write_file_dgib_STD(unite_mgib,unite_datg,maillage,type_bride) + else: + # Bride quelconque + geo_bride_qqe = {'nbgouj': GEOM_BRID['GOUJ_N_GOUJON'], + 'dint': GEOM_BRID['BRID_D_INT'], + 'dex1': GEOM_BRID['TUBU_D_EXT'], + 'dex2': GEOM_BRID['BRID_D_CONGE'], + 'dex3': GEOM_BRID['BRID_D_EPAUL'], + 'dtrou': GEOM_BRID['BRID_P_ALESAG'], + 'dext': GEOM_BRID['BRID_D_EXT'], + 'dt': GEOM_BRID['BRID_D_ALESAG'], + 'drd': GEOM_BRID['GOUJ_D_RONDEL'], + 'dg': GEOM_BRID['GOUJ_D_GOUJON'], + 'dec': GEOM_BRID['GOUJ_D_ECROU'], + 'rcong': GEOM_BRID['BRID_R_CONGE'], + 'he': GEOM_BRID['GOUJ_E_ECROU'], + 'e': GEOM_BRID['GOUJ_E_RONDEL'], + 'hc1': GEOM_BRID['BRID_H'], + 'hcg1': GEOM_BRID['TUBU_H'], + 'hb': GEOM_BRID['BRID_H_EPAUL'], + 'htrou': GEOM_BRID['BRID_H_ALESAG'], + 'pf': GEOM_BRID['GOUJ_E_FILET'], + 'j': GEOM_BRID['ETAN_E_JOINT']} + ### Ecriture du fichier GIBI principal (dgib) - Bride QUELCONQUE + write_file_dgib_QQE(unite_mgib,unite_datg,maillage,geo_bride_qqe) + + fichier_datg = 'fort.'+str(unite_datg) + fichier_mgib = 'fort.'+str(unite_mgib) + + # Lancement de GIBI + EXEC_LOGICIEL( + LOGICIEL=gibi2000, + ARGUMENT=(fichier_datg, fichier_mgib), + ) + # Lecture du maillage GIBI dans ASTER + PRE_GIBI( + UNITE_GIBI = unite_mgib, + ) + + nomres = LIRE_MAILLAGE(VERI_MAIL=_F(APLAT = ver_apla, + VERIF = ver_veri ),) + +# if (imp_fichF == 1): +# print imp_fich + if (imp_formF == 1): + print imp_form + if (imp_unitF == 1): + print imp_unit + # Impression du fichier maillage + if (imp_formF == 1): + if (imp_form == 'CASTEM'): + imp_ngib = IMPRESSION['NIVE_GIBI'] + IMPR_RESU( RESU = _F(MAILLAGE=nomres, ), + FORMAT = 'CASTEM', NIVE_GIBI = imp_ngib ) + if (imp_form == 'IDEAS'): + imp_nver = IMPRESSION['VERSION'] + IMPR_RESU(RESU = _F(MAILLAGE=nomres,), + FORMAT = 'IDEAS', VERSION = imp_nver ) + + return ier + + +############################################################################################## +# Liste des fonctions +############################################################################################## + +############# +## EXTERNES (appelables depuis l'extérieur) +############# + +### Ecriture du fichier GIBI principal (dgib) - Bride STANDARD +# null = write_file_dgib_STD(unite_mgib,unite_datg,msh_bride,geo_bride) + +### Ecriture du fichier GIBI principal (dgib) - Bride QUELCONQUE +# null = write_file_dgib_QQE(unite_mgib,unite_datg,msh_bride,geo_bride) + +### Imprime tout le catalogue des brides standards disponibles dans un fichier texte +# null = print_bride_std(nom_fichier) + +### Catalogue complet des brides standards disponibles +# txt = bride_std() + +############# +## INTERNES (réservées au travail interne) +############# + +### Génération du nom du fichier pour le fichier maillage résultant (format GIBI) +# NomFichier(txt) = name_file_mgib(unite_mgib): + +### Génération du nom du fichier pour le fichier générant le maillage (commandes GIBI) +# NomFichier(txt) = name_file_datg(unite_datg): + +### Récupère un fichier texte DATG +# Txt = text_datg(fichier_datg): + +### Génération du texte pour les variables +# Txt = para_text(dico_var,var): + + + +#============================================================================================= +# Importation des modules Python +#============================================================================================= + +from Intranet.macr_cabri_mail_dat import dico_var_geo,dico_var_msh,dico_bride_std + +#============================================================================================= +# Fonctions principales +#============================================================================================= +# Ecriture du fichier GIBI principal (dgib) - Bride STANDARD +def write_file_dgib_STD(unite_mgib,unite_datg,msh_bride,geo_bride): + + # Nom du fichier maillage produit par GIBI + nomFichierMGIB = name_file_mgib(unite_mgib) + + # Nom du fichier de commandes pour GIBI + nomFichierDATG = name_file_datg(unite_datg) + + # Ouverture du fichier d'entrée de commandes + fdgib=open(nomFichierDATG,'w') + + # En-tete + text = "**************************************************************\n" + text = text + "* Fichier GIBI pour le maillage d'une bride \n" + text = text + "**************************************************************\n" + text = text + "\n" + text = text + "* Ce fichier a été généré automatiquement par la macro ASTER MACR_CABRI_MAIL \n" + text = text + "* Ne pas modifier\n" + text = text + "\n" + text = text + "**************************************************************\n" + text = text + "* Type bride: Bride standard \n" + text = text + "**************************************************************\n" + text = text + "titre '"+"Bride standard"+"';\n" + text = text + "** Type bride standard: "+geo_bride+"\n" + + text = text + "\n" + text = text + "nomfich = CHAINE \n" + if len(nomFichierMGIB)>72: + raise Exception, 'Nom de fichier trop long (limité à 72 caractères ' \ + 'pour GIBI) :\n',nomFichierMGIB + elif len(nomFichierMGIB)<=69: + text = text + "'"+nomFichierMGIB+"';\n" + else: + text = text + "'"+nomFichierMGIB[:69]+"'\n" \ + + "'"+nomFichierMGIB[69:]+"';\n" + text = text + "opti dime 3 elem cub8 SAUV FORM nomfich;\n" + text = text + "dens 1;\n" + text = text + "\n" + fdgib.write(text) + + # Procédures internes supplémentaires + text = "**************************************************************\n" + text = text + "* Procédures supplémentaires \n" + text = text + "**************************************************************\n" + text = text + text_datg_pro() + fdgib.write(text) + + # Début de procédure de création du maillage + text = "**************************************************************\n" + text = text + "**************************************************************\n" + text = text + "********* Début de procédure de création du maillage *********\n" + text = text + "**************************************************************\n" + text = text + "**************************************************************\n" + text = text + "\n debproc constru;\n" + fdgib.write(text) + + # Paramètres géométriques + car_bride = dico_bride_std[geo_bride] + text = "**************************************************************\n" + text = text + "* Paramètres géométriques \n" + text = text + "**************************************************************\n" + text = text + para_text(dico_var_geo,car_bride) + fdgib.write(text) + + # Paramètres du maillage + text = "**************************************************************\n" + text = text + "* Paramètres physiques \n" + text = text + "**************************************************************\n" + text = text + para_text(dico_var_msh,msh_bride) + fdgib.write(text) + + # Algorithme du maillage + text = "**************************************************************\n" + text = text + "* Algorithme de maillage \n" + text = text + "**************************************************************\n" + text = text + text_datg_std() + fdgib.write(text) + + # Fermeture du fichier maillage + fdgib.close() + + +# Ecriture du fichier GIBI principal (dgib) - Bride QUELCONQUE +def write_file_dgib_QQE(unite_mgib,unite_datg,msh_bride,geo_bride): + + # Nom du fichier maillage produit par GIBI + nomFichierMGIB = name_file_mgib(unite_mgib) + + # Nom du fichier de commandes pour GIBI + nomFichierDATG = name_file_datg(unite_datg) + + # Ouverture du fichier d'entree de commandes + fdgib=open(nomFichierDATG,'w') + + # En-tete + text = "**************************************************************\n" + text = text + "* Fichier GIBI pour le maillage d'une bride \n" + text = text + "**************************************************************\n" + text = text + "\n" + text = text + "* Ce fichier a été généré automatiquement par la macro ASTER MACR_CABRI_MAIL \n" + text = text + "* Ne pas modifier\n" + text = text + "\n" + text = text + "**************************************************************\n" + text = text + "* Type bride: Bride quelconque\n" + text = text + "**************************************************************\n" + text = text + "titre '"+"Bride Quelconque"+"';\n" + text = text + "\n" + text = text + "nomfich = CHAINE \n" + if len(nomFichierMGIB)>72: + raise Exception, 'Nom de fichier trop long (limité à 72 caractères ' \ + 'pour GIBI) :\n',nomFichierMGIB + elif len(nomFichierMGIB)<=69: + text = text + "'"+nomFichierMGIB+"';\n" + else: + text = text + "'"+nomFichierMGIB[:69]+"'\n" \ + + "'"+nomFichierMGIB[69:]+"';\n" + text = text + "opti dime 3 elem cub8 SAUV FORM nomfich;\n" + text = text + "dens 1;\n" + text = text + "\n" + fdgib.write(text) + + # Procédures internes supplémentaires + text = "**************************************************************\n" + text = text + "* Procédures supplémentaires \n" + text = text + "**************************************************************\n" + text = text + text_datg_pro() + fdgib.write(text) + + # Début de procédure de création du maillage + text = "**************************************************************\n" + text = text + "**************************************************************\n" + text = text + "********* Début de procédure de création du maillage *********\n" + text = text + "**************************************************************\n" + text = text + "**************************************************************\n" + text = text + "\n debproc constru;\n" + fdgib.write(text) + + # Paramètres géométriques + text = "**************************************************************\n" + text = text + "* Paramètres géométriques \n" + text = text + "**************************************************************\n" + text = text + para_text(dico_var_geo,geo_bride) + fdgib.write(text) + + # Paramètres du maillage + text = "**************************************************************\n" + text = text + "* Paramètres physiques \n" + text = text + "**************************************************************\n" + text = text + para_text(dico_var_msh,msh_bride) + fdgib.write(text) + + # Algorithme du maillage + text = "**************************************************************\n" + text = text + "* Algorithme de maillage \n" + text = text + "**************************************************************\n" + text = text + text_datg_qqe() + fdgib.write(text) + + # Fermeture du fichier maillage + fdgib.close() + +# Génération du nom du fichier pour le fichier maillage résultant (format GIBI) +def name_file_mgib(unite_mgib): + cur_dir = os.getcwd() + nomFichier = cur_dir+'/fort.'+str(unite_mgib) + return nomFichier + + +# Génération du nom du fichier pour le fichier générant le maillage (commandes GIBI) +def name_file_datg(unite_datg): + cur_dir = os.getcwd() + nomFichier = cur_dir+'/fort.'+str(unite_datg) + return nomFichier + +# Récupère un fichier texte DATG: texte GIBI pour procédures +def text_datg_pro(): + import aster + loc_datg = aster.repdex() + datg_bridePro = loc_datg+"macr_cabri_mail_proc.datg" + fproc=open(datg_bridePro,'r') + procText = fproc.read() + fproc.close() + + return procText + +# Récupère un fichier texte DATG: texte GIBI pour bride quelconque +def text_datg_qqe(): + import aster + loc_datg = aster.repdex() + datg_brideQqe = loc_datg+"macr_cabri_mail_qqe.datg" + fproc=open(datg_brideQqe,'r') + procText = fproc.read() + fproc.close() + + return procText + +# Récupère un fichier texte DATG: texte GIBI pour bride standard +def text_datg_std(): + import aster + loc_datg = aster.repdex() + datg_brideStd = loc_datg+"macr_cabri_mail_std.datg" + fproc=open(datg_brideStd,'r') + procText = fproc.read() + fproc.close() + + return procText + +# Génération du texte pour les variables +def para_text(dico_var,var): + text = '\n' + for nom_var in var.keys(): + text = text+"* "+dico_var[nom_var]+"\n" + text = text+nom_var+" = "+`var[nom_var]`+";\n" + return text + +#============================================================================================= +# Accès au catalogue des brides standards +# (les brides standards sont décrites dans le fichier Data_Brides.py) +#============================================================================================= + + + +# Imprime tout le catalogue des brides standards disponibles dans un fichier texte +def print_bride_std(nom_fichier): + text = bride_std() + # Ouverture du fichier + finfo=open(nom_fichier,'w') + # Ecriture des infos + finfo.write(text) + # Fermeture du fichier + finfo.close() + +# Catalogue complet des brides standards disponibles +def bride_std(): + # Ligne d'info + text = "Liste des brides standards avec leurs dimensions\n" + # Première ligne + text = text+"\t" + for nom_variable in dico_var_geo.keys(): + text = text + nom_variable+"\t\t" + text = text + "\n" + # Lignes suivantes + for nom_bride in dico_bride_std.keys(): + bride = dico_bride_std[nom_bride] + text = text + nom_bride + '\t' + for nom_var in dico_var_geo.keys(): + chaine = "%f" % (bride[nom_var]) + text = text+chaine+"\t" + text = text + "\n" + return text diff --git a/Aster/Cata/cataSTA9/Intranet/macro_bascule_schema_ops.py b/Aster/Cata/cataSTA9/Intranet/macro_bascule_schema_ops.py new file mode 100644 index 00000000..8f763edd --- /dev/null +++ b/Aster/Cata/cataSTA9/Intranet/macro_bascule_schema_ops.py @@ -0,0 +1,296 @@ +#@ MODIF macro_bascule_schema_ops Intranet DATE 17/12/2007 AUTEUR GREFFET N.GREFFET +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== + +def macro_bascule_schema_ops (self,MODE,MATE,CARA, + INCR_I,INCR_E, + SCH_TEMPS_I,SCH_TEMPS_E,SCH_TEMPS_EQ, + C_INCR_I,C_INCR_E, + EXC_T,NEWT,INIT,TP_BAS,SCH_INI,EQUILIBRAGE,**args): + ier=0 + import copy + import aster + import string + import types + from Accas import _F + from Noyau.N_utils import AsType + from Utilitai.Utmess import UTMESS + # On importe les definitions des commandes a utiliser dans la macro + DYNA_NON_LINE =self.get_cmd('DYNA_NON_LINE') + CREA_CHAMP =self.get_cmd('CREA_CHAMP') + DEFI_LIST_REEL =self.get_cmd('DEFI_LIST_REEL') + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + # Le concept sortant (de type evol_noli) est nommé + # 'nomres' dans le contexte de la macro + self.DeclareOut('nomres',self.sd) + # + # + dexct=[] + for j in EXC_T : + dexct.append(j.cree_dict_valeurs(j.mc_liste)) + for i in dexct[-1].keys(): + if dexct[-1][i]==None : del dexct[-1][i] + # + dComp_incri=[] + for j in C_INCR_I : + dComp_incri.append(j.cree_dict_valeurs(j.mc_liste)) + for i in dComp_incri[-1].keys(): + if dComp_incri[-1][i]==None : del dComp_incri[-1][i] + # + dComp_incre=[] + for j in C_INCR_E : + dComp_incre.append(j.cree_dict_valeurs(j.mc_liste)) + for i in dComp_incre[-1].keys(): + if dComp_incre[-1][i]==None : del dComp_incre[-1][i] + # + dincri=[] + for j in INCR_I : + dincri.append(j.cree_dict_valeurs(j.mc_liste)) + for i in dincri[-1].keys(): + if dincri[-1][i]==None : del dincri[-1][i] + # + dincre=[] + for j in INCR_E : + dincre.append(j.cree_dict_valeurs(j.mc_liste)) + for i in dincre[-1].keys(): + if dincre[-1][i]==None : del dincre[-1][i] + # + dschi=[] + for j in SCH_TEMPS_I : + dschi.append(j.cree_dict_valeurs(j.mc_liste)) + for i in dschi[-1].keys(): + if dschi[-1][i]==None : del dschi[-1][i] + # + dsche=[] + for j in SCH_TEMPS_I : + dsche.append(j.cree_dict_valeurs(j.mc_liste)) + for i in dsche[-1].keys(): + if dsche[-1][i]==None : del dsche[-1][i] + # + dscheq=[] + for j in SCH_TEMPS_I : + dscheq.append(j.cree_dict_valeurs(j.mc_liste)) + for i in dscheq[-1].keys(): + if dscheq[-1][i]==None : del dscheq[-1][i] + # + dnew=[] + for j in NEWT : + dnew.append(j.cree_dict_valeurs(j.mc_liste)) + for i in dnew[-1].keys(): + if dnew[-1][i]==None : del dnew[-1][i] + # + dini=[] + for j in INIT : + dini.append(j.cree_dict_valeurs(j.mc_liste)) + for i in dini[-1].keys(): + if dini[-1][i]==None : del dini[-1][i] + # + dequi=[] + for j in EQUILIBRAGE : + dequi.append(j.cree_dict_valeurs(j.mc_liste)) + for i in dequi[-1].keys(): + if dequi[-1][i]==None : del dequi[-1][i] + # + __L0 = TP_BAS['VALE'] + dincri1=copy.copy(dincri) + dincri1[-1]['INST_FIN']= __L0[0] + # + __dtimp=dequi[-1]['DT_IMP'] + __dtexp=dequi[-1]['DT_EXP'] + # + __dim=(-1)*len(dComp_incri) + __lis=range(0,__dim,-1) + __non_lin='NON' + for i in __lis : + if (dComp_incri[i]['RELATION']!='DIS_CHOC' and dComp_incri[i]['RELATION']!='ELAS'): + __non_lin='OUI' + break + # + # + if SCH_INI=='IMPLICITE': + dincri1=copy.copy(dincri) + dincri1[-1]['INST_FIN']= __L0[0] + nomres=DYNA_NON_LINE(MODELE =MODE, + CHAM_MATER =MATE, + CARA_ELEM =CARA, + EXCIT =dexct, + COMP_INCR =dComp_incri, + INCREMENT =dincri1, + SCHEMA_TEMPS=dschi, + NEWTON=dnew, + ETAT_INIT=dini, ) + __prc = 'IMPLICITE' + # + if SCH_INI=='EXPLICITE': + dincre1=copy.copy(dincre) + dincre1[-1]['INST_FIN']= __L0[0] + nomres=DYNA_NON_LINE(MODELE =MODE, + CHAM_MATER =MATE, + MASS_DIAG='OUI', + CARA_ELEM =CARA, + EXCIT =dexct, + COMP_INCR =dComp_incre, + INCREMENT =dincre1, + SCHEMA_TEMPS=dsche, + NEWTON=dnew, + ETAT_INIT=dini, ) + + __prc = 'EXPLICITE' + + # + __nb=len(__L0) + j = 1 + while 1: + # + if __prc=='IMPLICITE' : + __Ue=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, + TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='DEPL', INST=__L0[j-1],) + # + __Ve=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, + TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='VITE', INST=__L0[j-1],) + # + __Ae=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, + TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='ACCE', INST=__L0[j-1],) + # + __Ce=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, + TYPE_CHAM='ELGA_SIEF_R', NOM_CHAM='SIEF_ELGA', INST=__L0[j-1],) + # + __Vae=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, + TYPE_CHAM='ELGA_VARI_R', NOM_CHAM='VARI_ELGA', INST=__L0[j-1],) + dincre1=copy.copy(dincre) + dincre1[-1]['INST_FIN'] = __L0[j] + dincre1[-1]['INST_INIT']= __L0[j-1] + nomres=DYNA_NON_LINE(reuse=nomres, + MODELE=MODE, + MASS_DIAG='OUI', + CHAM_MATER=MATE, + CARA_ELEM=CARA, + EXCIT=dexct, + ETAT_INIT=_F(DEPL=__Ue, VITE=__Ve, ACCE=__Ae, + SIGM=__Ce, VARI=__Vae,), + COMP_INCR=dComp_incre, + INCREMENT=dincre1, + SCHEMA_TEMPS=dsche, + NEWTON=dnew,) + # + __prc='EXPLICITE' + j = j + 1 + bool = (j!=(__nb)) + if (not bool): break + # + if __prc=='EXPLICITE' : + # calcul sur la zone de recouvrement + print('calcul d''une solution explicite stabilisée') + __U1=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, + TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='DEPL', INST=__L0[j-1],) + # + __V1=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, + TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='VITE', INST=__L0[j-1],) + # + __A1=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, + TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='ACCE', INST=__L0[j-1],) + # + __C1=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, + TYPE_CHAM='ELGA_SIEF_R', NOM_CHAM='SIEF_ELGA', INST=__L0[j-1],) + # + __Va1=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, + TYPE_CHAM='ELGA_VARI_R', NOM_CHAM='VARI_ELGA', INST=__L0[j-1],) + # + __lrec=DEFI_LIST_REEL(DEBUT=__L0[j-1], + INTERVALLE=_F(JUSQU_A=(__L0[j-1])+(10*(__dtexp)), + PAS=__dtexp),) + __u_rec=DYNA_NON_LINE(MODELE=MODE, + CHAM_MATER=MATE, + MASS_DIAG='OUI', + CARA_ELEM=CARA, + EXCIT=dexct, + ETAT_INIT=_F(DEPL=__U1, VITE=__V1, ACCE=__A1, + SIGM=__C1, VARI=__Va1,), + COMP_INCR=dComp_incre, + INCREMENT=_F(LIST_INST=__lrec, + INST_INIT=__L0[j-1], + INST_FIN=(__L0[j-1])+(10*(__dtexp))), + SCHEMA_TEMPS=dscheq, + NEWTON=dnew,) + # + __Ui =CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=__u_rec, + TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='DEPL', INST=(__L0[j-1])+(10*(__dtexp)),) + # + __Vi =CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=__u_rec, + TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='VITE', INST=(__L0[j-1])+(10*(__dtexp)),) + # + __Ai =CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=__u_rec, + TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='ACCE', INST=(__L0[j-1])+(10*(__dtexp)),) + # + # equilibrage du premier pas implicite + print('equilibrage du pas explicite stabilisée') + dincri1=copy.copy(dincri) + dincri1[-1]['INST_FIN'] = ((__L0[j-1])+(10*(__dtexp))) + dincri1[-1]['INST_INIT']= (__L0[j-1]) + nomres=DYNA_NON_LINE(reuse=nomres, + MODELE=MODE, + CHAM_MATER=MATE, + CARA_ELEM=CARA, + EXCIT=dexct, + ETAT_INIT=_F(DEPL=__Ui, VITE=__Vi, ACCE=__Ai, + SIGM=__C1, VARI=__Va1,), + COMP_INCR=dComp_incri, + INCREMENT=dincri1, + SCHEMA_TEMPS=dschi, + NEWTON=dnew,) + # + __Ui =CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, + TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='DEPL', INST=(__L0[j-1])+(10*(__dtexp)),) + # + __Vi =CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, + TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='VITE', INST=(__L0[j-1])+(10*(__dtexp)),) + # + __Ai =CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, + TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='ACCE', INST=(__L0[j-1])+(10*(__dtexp)),) + # + __Ci =CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, + TYPE_CHAM='ELGA_SIEF_R', NOM_CHAM='SIEF_ELGA', INST=(__L0[j-1])+(10*(__dtexp)),) + # + __Vai=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, + TYPE_CHAM='ELGA_VARI_R', NOM_CHAM='VARI_ELGA', INST=(__L0[j-1])+(10*(__dtexp)),) + # + print('calcul implicite après équilibrage') + dincri1=copy.copy(dincri) + dincri1[-1]['INST_FIN'] = __L0[j] + dincri1[-1]['INST_INIT']= ((__L0[j-1])+(10*(__dtexp))) + nomres=DYNA_NON_LINE(reuse=nomres, + MODELE=MODE, + CHAM_MATER=MATE, + CARA_ELEM=CARA, + EXCIT=dexct, + ETAT_INIT=_F(DEPL=__Ui, VITE=__Vi, ACCE=__Ai, + SIGM=__Ci, VARI=__Vai, + ), + COMP_INCR=dComp_incri, + INCREMENT=dincri1, + SCHEMA_TEMPS=dschi, + NEWTON=dnew,) + # + __prc='IMPLICITE' + j = j + 1 + bool = (j!=(__nb)) + if (not bool): break + # + return ier diff --git a/Aster/Cata/cataSTA9/Macro/Sensibilite.py b/Aster/Cata/cataSTA9/Macro/Sensibilite.py deleted file mode 100644 index abd3f873..00000000 --- a/Aster/Cata/cataSTA9/Macro/Sensibilite.py +++ /dev/null @@ -1,226 +0,0 @@ -#@ MODIF Sensibilite Macro DATE 19/11/2007 AUTEUR COURTOIS M.COURTOIS -# -*- coding: iso-8859-1 -*- -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. -# ====================================================================== - -""" -Module traite de la gestion des concepts sensibles : - - classe permettant de stocker les noms des concepts et leurs dérivées - - corps de la macro MEMO_NOM_SENSI -""" - -# protection pour eficas -try: - import aster - from Utilitai.Utmess import UTMESS -except: - pass - -_VIDE_ = '????????' - -#------------------------------------------------------------------------------- -def _force_list(obj): - """Impose le type list.""" - if obj is not None and not type(obj) in (list, tuple): - obj = (obj,) - return obj - - -#------------------------------------------------------------------------------- -class MEMORISATION_SENSIBILITE: - """Classe pour la mémorisation des concepts sensibles et leurs dérivées. - """ - def __init__(self, debug=False): - """Initialisation de la structure - """ - self._debug = debug - # dictionnaire de correspondance : ('nom concept', 'nom parasensi') : 'nom compose' - self._corr = {} - # idem que _corr mais, pour les commandes principales, on stocke sd elle-meme - self._cosd = {} - self._nsnp = {} # l'inverse - # dictionnaire donnant les 3 tuples de mots-clés, valeurs, mots-clés facteurs - self._mcle = {} - - - def key(self, nosimp, nopase): - """Retourne la clé d'accès aux dictionnaires - """ - if not type(nosimp) in (str, unicode) or not type(nopase) in (str, unicode) or \ - len(nosimp.strip()) > 8 or len(nopase.strip()) > 8: - UTMESS('F', 'SENSIBILITE_57', valk=(nosimp, nopase)) - return nosimp.strip(), nopase.strip() - - - def set(self, nosimp, nopase, nocomp=None, limocl=None, livale=None, limofa=None, - verbose=False): - """On renseigne la structure de mémorisation : CHOIX='E' - """ - key = self.key(nosimp, nopase) - if self._corr.has_key(key): - UTMESS('F', 'SENSIBILITE_90', valk=(nosimp, nopase)) - limocl = _force_list(limocl) or () - livale = _force_list(livale) or () - limofa = _force_list(limofa) or () - if not (len(limocl) == len(livale) == len(limofa)): - UTMESS('F', 'SENSIBILITE_97') - - if nocomp is None: - nocomp = aster.get_nom_concept_unique('S') - # on ne conserve que le nom (au moins pour le moment) - if type(nocomp) != str: - sd = nocomp - nocomp = nocomp.nom - else: - sd = None - self._corr[key] = nocomp - self._cosd[nocomp] = sd - self._nsnp[nocomp] = key - self._mcle[key] = (limocl, livale, limofa) - - if verbose or self._debug: - UTMESS('I', 'SENSIBILITE_58', valk=(nosimp, nopase, nocomp)) - if len(limocl) != 0: - UTMESS('I', 'SENSIBILITE_59', valk=(str(limocl), str(livale), str(limofa))) - - - def get_nocomp(self, nosimp, nopase): - """On récupère le nom composé associé à un nom simple. - """ - key = self.key(nosimp, nopase) - nocomp = self._corr.get(key, _VIDE_) - if self._debug: - print ' memo_sensi.get_nocomp' - print ' nosimp, nopase = "%s", "%s"' % (nosimp, nopase) - print ' nom composé = "%s"' % nocomp - return nocomp - - - def get_nsnp(self, nocomp): - """On récupère le nom du concept et le parasensi associé au nom composé fourni. - """ - key = self._nsnp.get(nocomp, (_VIDE_, _VIDE_)) - if self._debug: - print ' memo_sensi.get_nsnp' - print ' nom composé = "%s"' % nocomp - print ' nosimp, nopase = "%s", "%s"' % key - return nocomp - - - def get_mcle(self, nosimp, nopase): - """On récupère les mots-clés associés à un couple ('nom concept', 'nom parasensi') - """ - key = self.key(nosimp, nopase) - tup3 = self._mcle.get(key, ((), (), ()) ) - if self._debug: - print tup3 - print ' memo_sensi.get_mcle nbmocl =',len(tup3[0]) - print ' nosimp, nopase = "%s", "%s"' % (nosimp, nopase) - print ' mots-clés = ', tup3 - return tup3 - - - def psinfo(self, nosimp): - """Pendant de l'ex-routine psnosd : retour selon le type de `nosimp`. - """ - # est-ce une structure dérivée ? - if nosimp in self._nsnp.keys(): - t_couples = self._nsnp[nosimp] - ideriv = 1 - else: - t_couples = self.get_deriv(nosimp) - ideriv = 0 - # on met le tuple des couples à plat : un tuple de longueur double - l_res = [] - for coupl in t_couples: - l_res.extend(coupl) - t_res = tuple(l_res) - if self._debug: - print ' memo_sensi.psinfo' - print ' nosimp = "%s"' % nosimp - print ' ideriv = ', ideriv - print ' result = ', t_res - return ideriv, t_res - - - def get_deriv(self, nosimp): - """On récupère la liste des couples ('nom composé', 'nom parasensi') associé à - un nom simple. - """ - res = [] - # liste des clés d'accès concernant `nosimp`. - l_key = [(ns, np) for ns, np in self._corr.keys() if ns == nosimp.strip()] - for ns, np in l_key: - res.append((self._corr[ns, np], np)) - return tuple(res) - - - def get_nom_sd_princ(self): - """Retourne la liste des noms des sd dérivées produites par les commandes principales. - """ - return tuple(self._cosd.keys()) - - - def delete(self, nosimp, nopase): - """On récupère les mots-clés associés à un couple ('nom concept', 'nom parasensi') - """ - key = self.key(nosimp, nopase) - nocomp = self.get_nocomp(nosimp, nopase) - if nocomp != _VIDE_: - del self._corr[key] - del self._cosd[nocomp] - del self._mcle[key] - del self._nsnp[nocomp] - - -#------------------------------------------------------------------------------- -#------------------------------------------------------------------------------- -def memo_nom_sensi_ops(self, NOM, **args): - """Macro MEMO_NOM_SENSI. - Transitoire : l'appel aux méthodes de MEMORISATION_SENSIBILITE devraient - à terme etre fait directement sans introduire de commandes MEMO_NOM_SENSI. - - Faut-il traiter les mots-clés NOM_ZERO et NOM_UN ? - Il me semble que NOM_COMPOSE est toujours présent : obligatoire - """ - import aster - - ier=0 - # La macro compte pour 1 dans la numerotation des commandes - self.set_icmd(1) - - dNOM = NOM[0].cree_dict_valeurs(NOM[0].mc_liste) - - nosimp = dNOM['NOM_SD'] - nopase = dNOM['PARA_SENSI'].nom - nocomp = dNOM['NOM_COMPOSE'] - - self.jdc.memo_sensi.set(nosimp, nopase, nocomp, - dNOM['MOT_CLE'], dNOM['VALEUR'], dNOM['MOT_FACT'], - verbose=True) - - # s'il faut déclarer le concept dérivé dans le jdc - if dNOM['TYPE_SD_DERIV']: - self.DeclareOut('nocomp', dNOM['NOM_COMPOSE']) - # enregistrement dans le tableau des concepts jeveux - icmdt = aster.co_register_jev(dNOM['NOM_COMPOSE'].nom, dNOM['TYPE_SD_DERIV'].upper(), 'MEMO_NOM_SENSI') - - return ier - - - diff --git a/Aster/Cata/cataSTA9/Macro/calc_essai_ops.py b/Aster/Cata/cataSTA9/Macro/calc_essai_ops.py new file mode 100644 index 00000000..7fdadf8d --- /dev/null +++ b/Aster/Cata/cataSTA9/Macro/calc_essai_ops.py @@ -0,0 +1,274 @@ +#@ MODIF calc_essai_ops Macro DATE 21/10/2008 AUTEUR NISTOR I.NISTOR +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== + +## \package calc_essai_ops Implémentation de la macro CALC_ESSAI +# +# Ce module contient la partie controle de la macro CALC_ESSAI +# l'implémetation de cette macro se trouve dans les modules +# meidee_help, meidee_mac, meidee_massamor, meidee_turbulent +# on utilise aussi une librairie de support +# pour la gestion de l'interface graphique dans meidee_iface + + +def calc_essai_ops( self, + INTERACTIF = None, + UNITE_FIMEN = None, + UNITE_RESU = None, + EXPANSION = None, + MEIDEE_FLUDELA = None, + MEIDEE_TURBULENT = None, + IDENTIFICATION = None, + MODIFSTRUCT = None, + GROUP_NO_CAPTEURS = None, + GROUP_NO_EXTERIEUR = None, + RESU_FLUDELA = None, + RESU_TURBULENT = None, + RESU_IDENTIFICATION = None, + RESU_MODIFSTRU = None, + **args): + import aster + from Meidee.meidee_cata import MeideeObjects + ier = 0 + + prev = aster.onFatalError() + aster.onFatalError("EXCEPTION") + + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + + + # gestion des concepts sortants de la macro, declares a priori + table = [] + table_fonction = [] + + if not RESU_MODIFSTRU: + out_modifstru = {} + else: + out_modifstru = RESU_MODIFSTRU[0] # max=1 dans le capy + + + if not RESU_IDENTIFICATION: + RESU_IDENTIFICATION = [] + else: + for res in RESU_IDENTIFICATION: + table_fonction.append(res['TABLE']) + out_identification = {"DeclareOut" : self.DeclareOut, + "TypeTables" : 'TABLE_FONCTION', + "ComptTable" : 0, + "TablesOut" : table_fonction} + + if not RESU_FLUDELA: + RESU_FLUDELA = [] + else: + for res in RESU_FLUDELA: + table.append(res['TABLE']) + out_fludela = {"DeclareOut" : self.DeclareOut, + "TypeTables" : 'TABLE', + "ComptTable" : 0, + "TablesOut" : table} + + if not RESU_TURBULENT: + RESU_TURBULENT = [] + else: + for res in RESU_TURBULENT: + table.append(res['FONCTION']) + out_meideeturb = {"DeclareOut" : self.DeclareOut, + "FoncOut" : table} + + + # Mode interactif : ouverture d'une fenetre Tk + if INTERACTIF == "OUI": + create_interactive_window(self, + UNITE_FIMEN, + UNITE_RESU, + out_fludela, + out_meideeturb, + out_identification, + out_modifstru) + else: + from Meidee.meidee_calcul import MessageBox + from Meidee.meidee_test import TestMeidee + mess = MessageBox(UNITE_RESU) + mess.disp_mess("Mode non intéractif") + + objects = MeideeObjects(self, mess) + + # importation des concepts aster existants de la memoire jeveux + TestMeidee(self, + mess, + out_fludela, + out_meideeturb, + out_identification, + out_modifstru, + objects, + EXPANSION, + MEIDEE_FLUDELA, + MEIDEE_TURBULENT, + IDENTIFICATION, + MODIFSTRUCT, + GROUP_NO_CAPTEURS, + GROUP_NO_EXTERIEUR + ) + + mess.close_file() + aster.onFatalError(prev) + return ier + + + +def create_tab_mess_widgets(tk, UNITE_RESU): + """Construits les objects table et boîte à messages.""" + try: + from Pmw import PanedWidget + except ImportError: + PanedWidget = None + + from Meidee.meidee_iface import MessageBoxInteractif, TabbedWindow + + if PanedWidget: + pw = PanedWidget(tk, orient='vertical', + hull_borderwidth = 1, + hull_relief = 'sunken', + ) + tabsw = pw.add("main", min=.1, max=.9) + msgw = pw.add("msg", min=.1, max=.2) + pw.grid(sticky='nsew') + tabsw.rowconfigure(0, weight=1) + tabsw.columnconfigure(0, weight=1) + msgw.rowconfigure(0, weight=1) + msgw.columnconfigure(0, weight=1) + else: + tabsw = tk + msgw = tk + tk.rowconfigure(1, weight=3) + tk.rowconfigure(1, weight=1) + + tabs = TabbedWindow(tabsw, ["Expansion de modeles", + "Modification structurale", + "MEIDEE mono-modal fludela", + "MEIDEE mono-modal turbulent", + "Identification de chargement", + "Parametres de visualisation"]) + + tabs.grid(row=0, column=0, sticky='nsew') + # pack(side='top',expand=1,fill='both') + + # ecriture des message dans un fichier message + mess = MessageBoxInteractif(msgw, UNITE_RESU) + if PanedWidget: + mess.grid(row=0, column=0, sticky='nsew') + #mess.pack(side='top',expand=1,fill='both') + else: + mess.grid(row=1, column=0, sticky='nsew') + #mess.pack(side='top',expand=1,fill='both') + + return tabs, mess + +def get_fimen_files(UNITE_FIMEN, FIMEN=None): + """Fichiers fimen éventuels associés aux unités logiques en entrée""" + # XXX FIMEN is not defined (should it be included in the macro) + from Utilitai.UniteAster import UniteAster + fichiers_fimen = [] + print "FIMEN:", UNITE_FIMEN + + if UNITE_FIMEN: + if type(FIMEN)==int: + UNITE_FIMEN= [ UNITE_FIMEN ] + for unit in UNITE_FIMEN: + UL = UniteAster() + fichiers_fimen.append( (unit, UL.Nom(unit)) ) + + return fichiers_fimen + + +class FermetureCallback: + """Opérations à appliquer lors de la fermeture de la + fenêtre Tk. + """ + + def __init__(self, main_tk, turbulent): + self.main_tk = main_tk + self.turbulent = turbulent + + def apply(self): + """Enlève les fichiers temporaires de Xmgrace""" + if self.turbulent.param_visu.logiciel_courbes is not None: + self.turbulent.param_visu.logiciel_courbes.fermer() + self.main_tk.quit() + + +def create_interactive_window(macro, + UNITE_FIMEN, + UNITE_RESU, + out_fludela, + out_meideeturb, + out_identification, + out_modifstru): + """Construit la fenêtre interactive comprenant une table pour + les 4 domaines de Meidee.""" + from Tkinter import Tk + + from Meidee.meidee_cata import MeideeObjects + from Meidee.meidee_correlation import InterfaceCorrelation + from Meidee.meidee_modifstruct import InterfaceModifStruct + from Meidee.meidee_fludela import InterfaceFludela, InterfaceTurbMonomod + from Meidee.meidee_turbulent import InterfaceTurbulent + from Meidee.meidee_parametres import InterfaceParametres + + # fenetre principale + tk = Tk() + tk.rowconfigure(0, weight=1) + tk.columnconfigure(0,weight=1) + + tabs, mess = create_tab_mess_widgets(tk, UNITE_RESU) + main = tabs.root() + + # importation des concepts aster de la memoire jeveux + objects = MeideeObjects(macro, mess) + tabs.set_objects(objects) + + param_visu = InterfaceParametres(main, mess) + + iface = InterfaceCorrelation(main, objects, macro, mess, param_visu) + imodifstruct = InterfaceModifStruct(main, objects, macro, + mess, out_modifstru, param_visu) + fludelamonomod = InterfaceFludela(main, objects, + get_fimen_files(UNITE_FIMEN), mess, out_fludela, param_visu) + turbmonomod = InterfaceTurbMonomod(main, objects,get_fimen_files(UNITE_FIMEN) ,mess, out_meideeturb, param_visu) + turbulent = InterfaceTurbulent(main, objects, mess, out_identification, param_visu) + + tabs.set_tab("Expansion de modeles", iface.main) + tabs.set_tab("Modification structurale", imodifstruct.main) + tabs.set_tab("MEIDEE mono-modal fludela", fludelamonomod ) + tabs.set_tab("MEIDEE mono-modal turbulent", turbmonomod ) + tabs.set_tab("Identification de chargement", turbulent) + tabs.set_tab("Parametres de visualisation", param_visu) + + #tabs.set_current_tab("Modifstruct") + tabs.set_current_tab("Expansion de modeles") + + tk.protocol("WM_DELETE_WINDOW", FermetureCallback(tk, turbulent).apply) + + try: + tk.mainloop() + except : + print "MEIDEE : *ERREUR*" + + diff --git a/Aster/Cata/cataSTA9/Macro/calc_europlexus_ops.py b/Aster/Cata/cataSTA9/Macro/calc_europlexus_ops.py new file mode 100644 index 00000000..6b3a4a82 --- /dev/null +++ b/Aster/Cata/cataSTA9/Macro/calc_europlexus_ops.py @@ -0,0 +1,2407 @@ +#@ MODIF calc_europlexus_ops Macro DATE 24/11/2008 AUTEUR ASSIRE A.ASSIRE +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== +# RESPONSABLE ASSIRE A.ASSIRE + +#----------------------------------------------------------------------- +#----------------------------- Importation des modules ---------------- +#----------------------------------------------------------------------- +debug = False +dryrun = False + +import types,string +import os +import Numeric as N +import math +import copy +import sets + +# Protection pour Eficas +try: + import aster + from Accas import _F + from Utilitai.partition import MAIL_PY +except: + pass + +#----------------------------- Precision ------------------------------- +tst = 1.0E-10 + +#----------------------------------------------------------------------- +#----------------------------- Fonctions de calcul vectoriel ----------- +#----------------------------------------------------------------------- + +def norme(u) : + return N.sqrt(N.dot(u,u)) + +def vecteurs_egaux(v1,v2): + diff = v1-v2 + #print 'v1',v1 + #print 'v2',v2 + for v in diff: + if abs(v) > tst : return False + return True + +#----------------------------------------------------------------------- +#----------------------------- Operateur de la Macro-commande ---------- +#----------------------------------------------------------------------- + + +def calc_europlexus_ops(self,MODELE,CARA_ELEM,CHAM_MATER,EXCIT,FONC_PARASOL=None, + DIME=None,OBSERVATION=None,ARCHIVAGE=None,COURBE=None, + CALCUL=None,DOMAINES=None,INTERFACES=None,INFO=1,**args): + +# import aster +# from Accas import _F + + ier=0 + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + + # On importe les definitions des commandes a utiliser dans la macro + # Le nom de la variable doit etre obligatoirement le nom de la commande + + global _F,INFO_EXEC_ASTER,DETRUIRE,IMPR_RESU,DEFI_FICHIER,LIRE_RESU,CREA_MAILLAGE + global DEFI_GROUP,LIRE_MAILLAGE,CREA_TABLE,IMPR_TABLE,AFFE_MODELE,EXEC_LOGICIEL + global LIRE_CHAMP,CREA_CHAMP,CREA_RESU,FORMULE + + INFO_EXEC_ASTER = self.get_cmd('INFO_EXEC_ASTER') + DETRUIRE = self.get_cmd('DETRUIRE') + IMPR_RESU = self.get_cmd('IMPR_RESU') + DEFI_FICHIER = self.get_cmd('DEFI_FICHIER') + LIRE_RESU = self.get_cmd('LIRE_RESU') + CREA_MAILLAGE = self.get_cmd('CREA_MAILLAGE') + DEFI_GROUP = self.get_cmd('DEFI_GROUP') + LIRE_MAILLAGE = self.get_cmd('LIRE_MAILLAGE') + CREA_TABLE = self.get_cmd('CREA_TABLE') + IMPR_TABLE = self.get_cmd('IMPR_TABLE') + AFFE_MODELE = self.get_cmd('AFFE_MODELE') + EXEC_LOGICIEL = self.get_cmd('EXEC_LOGICIEL') + LIRE_CHAMP = self.get_cmd('LIRE_CHAMP') + CREA_CHAMP = self.get_cmd('CREA_CHAMP') + CREA_RESU = self.get_cmd('CREA_RESU') + FORMULE = self.get_cmd('FORMULE') + + # Pour la gestion des Exceptions + prev_onFatalError = aster.onFatalError() + aster.onFatalError('EXCEPTION') + + + # Pour masquer certaines alarmes + from Utilitai.Utmess import UTMESS, MasquerAlarme, RetablirAlarme + MasquerAlarme('MED_1') + + # Ligne de commande d'Europlexus + if args.has_key('LOGICIEL'): EXEC = args['LOGICIEL'] + else: EXEC = '/home/europlex/EPXD/EUROPLEXUS_GESTION/runepx_d' + if debug: print 'args_keys : %s'%args.keys() + if args.has_key('PAS_NBRE_COURBE') : + if debug: print 'PAS NBRE COURBE = ok (%s)'%args['PAS_NBRE_COURBE'] + else : + if debug: print 'PAS NBRE COURBE = nook' + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + + # classs Europlexus permettant de faire le chainage avec le Code_Aster + EPX = EUROPLEXUS(MODELE,CARA_ELEM,CHAM_MATER,FONC_PARASOL,EXCIT,DIME, +# AA ECRITURE,CALCUL,REPE='REPE_OUT',EXEC=EXEC) + OBSERVATION,ARCHIVAGE,COURBE,CALCUL,DOMAINES,INTERFACES, + REPE='REPE_OUT',EXEC=EXEC, INFO=INFO, args=args) + + # Eriture du fichier de commande Europlexus + EPX.ecrire_fichier() + + # Si dryrun alors on ne lance pas le calcul Europlexus + if dryrun: return ier + + # Lancement du calcul Europlexus + EPX.lancer_calcul() + + # Recuperer le resulat Europlexus a l'aide d'un concept aster de type evol_noli + fichier_med = 'auto' + fichier_pun = 'auto' +# if debug : +# fichier_med='fort.81' +# fichier_pun ='fort.85' + + self.DeclareOut('resu',self.sd) # Le concept sortant (de type evol_noli) est nomme 'resu' + global resu # pour que le nom du concept prenne celui defini par l'utilisateur + EPX.get_resu(fichier_med=fichier_med) + + #Recuperer les concepts table + if COURBE is not None: + global table + # icourbe = 0 + # for fonc in COURBE['TABLE'] : + # icourbe += 1 + self.DeclareOut('table',args['TABLE_COURBE']) + EPX.get_table() + # EPX.get_table(icourbe=icourbe,fichier=fichier_pun) + + + # Pour la gestion des Exceptions + aster.onFatalError(prev_onFatalError) + + # Pour la gestion des alarmes + RetablirAlarme('MED_1') + + return ier + +#----------------------------------------------------------------------- +#----------------------------- class EUROPLEXUS ------------------------ +#----------------------------------------------------------------------- + +class EUROPLEXUS: +# AA def __init__(self,MODELE,CARA_ELEM,CHAM_MATER,FONC_PARASOL,EXCIT,DIME,ECRITURE,CALCUL,REPE,EXEC,**args): + def __init__(self,MODELE,CARA_ELEM,CHAM_MATER,FONC_PARASOL,EXCIT,DIME,OBSERVATION,ARCHIVAGE,COURBE,CALCUL,DOMAINES,INTERFACES,REPE,EXEC,INFO,args): + + if debug: print 'args_key %s'%args.keys() + # Mettre toutes les entrees en attributs + self.DIME = DIME + self.MODELE = MODELE + self.CARA_ELEM = CARA_ELEM + self.CHAM_MATER = CHAM_MATER + self.FONC_PARASOL = FONC_PARASOL + self.EXCIT = EXCIT +# self.ECRITURE = ECRITURE + self.OBSERVATION = OBSERVATION + self.ARCHIVAGE = ARCHIVAGE + self.COURBE = COURBE + self.CALCUL = CALCUL + self.DOMAINES = DOMAINES + self.INTERFACES = INTERFACES + self.INFO = INFO + + # Repertoire de calcul Europlexus + self.REPE = REPE + # Commande d'execution de Europlexus + self.EXEC = EXEC + + if args.has_key('UNITE_COURBE'): self.UNITE_COURBE = args['UNITE_COURBE'] + else: self.UNITE_COURBE = None + + if args.has_key('PAS_INST_COURBE'): self.PAS_INST_COURBE = args['PAS_INST_COURBE'] + else: self.PAS_INST_COURBE = None + + if args.has_key('PAS_NBRE_COURBE'): self.PAS_NBRE_COURBE = args['PAS_NBRE_COURBE'] + else: self.PAS_NBRE_COURBE = None + + if args.has_key('TABLE_COURBE'): self.TABLE_COURBE = args['TABLE_COURBE'] + else: self.TABLE_COURBE = None + # Dictionnaire contenant le texte associé au fichier de commande Europlexus + self.epx = {} + + if debug: print 'pas nbre courbe = %s'%self.PAS_NBRE_COURBE + + # Concept pour un nouveau maillage si on utilise RIGI_PARASOL ou + # si on regroupe separement les mailles tria3 et quad4 + self.NEW_MA = None + + # Nom des fichiers de Europlexus (commande et sorties) + self.nom_fichiers = {'COMMANDE' : 'commandes.epx', + 'MAILLAGE' : 'maillage_epx', + 'ALIT' : 'champ.alit', + 'MED' : 'champ.e2m', + 'PUN' : 'courbes.pun', + } + + # Chemin du repertoire courant ou le calcul Aster est lance + self.pwd = os.getcwd() + os.sep + + + +#----------------------------------------------------------------------- + def get_unite_libre(self,): + + _UL=INFO_EXEC_ASTER(LISTE_INFO='UNITE_LIBRE') + unite=_UL['UNITE_LIBRE',1] + DETRUIRE(CONCEPT=(_F(NOM=_UL),), INFO=1) + return(unite) + + +#----------------------------------------------------------------------- + def reupere_structure(self,concept,mot_cle=None): + + try : structure = concept.etape.valeur + except : UTMESS('F','PLEXUS_1') + + if mot_cle : + if structure.has_key(mot_cle) : return structure[mot_cle] + else : return None + return structure +#----------------------------------------------------------------------- + def get_motcle(self,fact,mot_cle,code_mess='F'): + try : + out = fact[mot_cle] + except : + out = None + if not out is None : return out + if not code_mess is None and code_mess: UTMESS(code_mess,'PLEXUS_2',valk=mot_cle) + return None + +#----------------------------------------------------------------------- + def get_group_ma(self,fact): + group_ma = self.get_motcle(fact,'GROUP_MA',code_mess='F') + if types.TypeType(group_ma) == types.StringType : group_ma = (group_ma,) + # elif types.TypeType(group_ma) == types.ListType : group_ma = tupel(group_ma) + return group_ma + +#----------------------------------------------------------------------- + def get_group_ma_f(self,fact): + group_ma = self.get_motcle(fact,'GROUP_MA',None) + if types.TypeType(group_ma) == types.StringType : group_ma = (group_ma,) + # elif types.TypeType(group_ma) == types.ListType : group_ma = tupel(group_ma) + if not group_ma : group_ma=[] + return group_ma + +#----------------------------------------------------------------------- + def setlist(self,fact): + #print 'types.TypeType(fact)',types.TypeType(fact) + if fact is None : return fact + if not types.TypeType(fact) in [types.ListType,types.TupleType] : fact= [fact] + return fact + +#----------------------------------------------------------------------- + def lire_fichier(self,fichier,): + fd = open(fichier,'r') + lignes = fd.readlines() + fd.close() + valeurs = [] + commentaires = ['#','%','$','*'] + for ll in lignes: + add = 1 + for comment in commentaires : + if string.find(ll,comment) != -1 : add = 0;break + if add : + data = [val for val in ll.split(None)] + valeurs.append(data) + return valeurs + +#----------------------------------------------------------------------- + def fichier2dic(self,fichier): + valeurs = self.lire_fichier(fichier) + dic = {} + mot_cle = None + for ll in valeurs: + if len(ll) > 1 : + for mot in ll : + try : + val = float(mot) + if not mot_cle is None : dic[mot_cle].append(val) + except : + mot_cle = mot + dic[mot_cle] = [] + + return dic + +#----------------------------------------------------------------------- + def lire_pun(self,fichier): + if debug: print 'lire_pun : fichier = %s'%fichier + data = self.lire_fichier(fichier) + icourbe = 0 + courbes = {} + for ligne in data: + if debug: print 'lire_pun : %s'%ligne + if ligne[0] in ('VALEURS','VALUES'): + icourbe += 1; + nb = int(ligne[1]) + courbes[icourbe] = [] + else: + ligne_vale = [float(val) for val in ligne] + courbes[icourbe].append(ligne_vale) + for courbe in courbes : + courbes[courbe]=N.transpose(N.array(courbes[courbe])) + return courbes + +#----------------------------------------------------------------------- + def export_DEBUT(self): + + epx = self.epx + + # Cle identifiant + MODULE = 'DEBUT' + + # Entete de la commande Europlexus courante + epx[MODULE] = ['*--FICHIER CREE PAR CALC_EUROPLEXUS/Code_Aster'] + + # Texte declarant le debut + epx[MODULE].append('TITRE') + epx[MODULE].append('ECHO') + options = 'TRID NONL' +# AA champ_fact = self.ECRITURE['CHAMP'] + champ_fact = self.ARCHIVAGE + if champ_fact is not None : options += ' MEDE' + epx[MODULE].append(options) + epx[MODULE].append('\n') + +#----------------------------------------------------------------------- + def export_MAILLAGE(self,format='CASTEM'): + + epx = self.epx + + # Cle identifiant + MODULE = 'MAILLAGE' + + # Entete de la commande Europlexus courante + epx[MODULE] = ['*--LECTURE MAILLAGE'] + + # Recuperer la concept maillage modifie ou initial + if self.NEW_MA is None : + concept_maillage = self.reupere_structure(self.MODELE,'MAILLAGE') + else : + concept_maillage = copy.copy(self.NEW_MA) + + # Ecrire le maillage, qui peut etre a ete enrichi avec des commandes Aster, sous le format souhaite (MED ou CASTEM) + unite = self.get_unite_libre() + + # Extensions des formats de maillage + extension = {'CASTEM' : '.mgib', 'MED':'.med'} + + # donner un nom au fichier de maillage parce que le fort.unite peut etre ecrase par d'autre operation d'ecriture + nom_fichier = self.REPE + os.sep + self.nom_fichiers['MAILLAGE'] + extension[format] + DEFI_FICHIER(UNITE=unite,FICHIER=nom_fichier,ACTION='ASSOCIER') + IMPR_RESU(UNITE=unite, + FORMAT=format, + RESU = _F(MAILLAGE=concept_maillage) + ) + DEFI_FICHIER(UNITE=unite,ACTION='LIBERER'); + + # Ecriture de la commande Europlexus associee + fichier_maillage = self.pwd + nom_fichier + + #epx[MODULE].append('OPNF FORMAT 9') + epx[MODULE].append('%s '%format) + epx[MODULE].append("'%s' TOUT" %fichier_maillage) + #epx[MODULE].append('CASTEM 9 TOUT') + + epx[MODULE].append('\n') + +#----------------------------------------------------------------------- + def export_DIME(self,): + epx = self.epx + + # Cle identifiant + MODULE = 'DIME' + + # Entete de la commande Europlexus courante + epx[MODULE] = ['*--DIMENSIONNEMENT'] + epx[MODULE].append('\n') + + # Test si des parametres de dime seront introuduites à l'aide d'un fichier externe + try : unite_dime = self.DIME['UNITE_DIME'] + except : unite_dime = None + + # Recuperer le dictionnaire issu du fichier associe à UNITE_DIME (s'il existe) + if unite_dime is not None : + fort = 'fort.%i' %unite_dime + dic_fichier = self.fichier2dic(fort) + else: + dic_fichier = {} + + # mettre a jour les cles definis dans le fichier par celles qui sont + # definies directement sous le mot-cle facteur DIME + cles = ['Q4GS', 'FORCE', 'PT6L', 'ZONE', 'POUT', + 'ECRO', 'APPU', 'BLOQ', 'PRESS', 'PMAT', + 'FTAB', 'DKT3', 'DEPL', 'FNOM', 'TABLE', + 'LIAI', 'MTTI', 'PT1L','NEPE'] + + for cle in cles: + try: + if self.DIME[cle] is not None : + dic_fichier[cle] = self.DIME[cle] + except : pass + + # Imprimer les mot-cles et leurs dans epx + epx[MODULE].append('DIME') + for cle in dic_fichier: + vale = dic_fichier[cle] + st = 5*' ' + cle + for v in vale: + st += ' %i' %v + epx[MODULE].append(st) + epx[MODULE].append('TERM') + + epx[MODULE].append('\n') + +#----------------------------------------------------------------------- + def export_MODELE(self): + + epx = self.epx + + # Cle identifiant + MODULE = 'MODELE' + + epx[MODULE] = ['*--DEFINITION DE LA GEOMETRIE'] + + # Entete de la commande Europlexus courante + epx[MODULE].append('GEOMETRIE') + + # Recuperer la structure sous le mot_cle facteur AFFE de AFFE_MODELE + affe_modele = self.reupere_structure(self.MODELE,'AFFE') + affe_modele = self.setlist(affe_modele) + + + # Correspondance de modelisation aster/europlexus + dic_modele = {'DKT':'DKT3','DKTG':'Q4GS','POU_D_E':'POUT'} + + # Correspondance de modelisation europlexus/aster + dic_modele_epx = {} + for cle in dic_modele.keys(): + dic_modele_epx[dic_modele[cle]] = cle + + # initialisation du dictioannaire qui contient les group_ma en fonction de la modelisation + dic_gma = {} + for cle in dic_modele.values(): + dic_gma[cle] = [] + + for affe in affe_modele: + modelisation = affe['MODELISATION'] + phenomene = affe['PHENOMENE'] + if phenomene == 'MECANIQUE' and modelisation in dic_modele.keys(): + if affe.has_key('GROUP_MA') : + group_ma = self.get_group_ma(affe) + dic_gma[dic_modele[modelisation]].extend(group_ma) + else : + UTMESS('F','PLEXUS_3') + + # Regrouper separement les mailles tria3 et quad4 de la modilisation DKT (s'il y a lieu) + # parce que leurs modilisations dans europlexus sont differentes: + # tria3 : DKT3 + # quad4 : Q4GS + + # Initialisation du dictionnaire contenant les elements du modele de type TRIA3 et QUAD4 + nom_groups= {'TRIA3':[],'QUAD4':[]} + + if len(dic_gma['DKT3']) > 0: + concept_maillage = self.reupere_structure(self.MODELE,'MAILLAGE') + class_dkt = DKT(MAILLAGE=concept_maillage,) + nom_groups = class_dkt.aster2epx(groups=dic_gma['DKT3']) + if debug: print 'nom_groups = %s'%nom_groups + # mettre a jour les groups de chaque modelisation + dic_gma['DKT3'] = nom_groups['TRIA3'] + dic_gma['Q4GS'].extend(nom_groups['QUAD4']) + + + # liste comportant les modelisations definis dans le module GEOMETRIE + # cette liste va servir à determiner les indices des champs stockes dans le fichier med (get_resu) + self.modelisations = [] + # Ecriture sous format europlexus + for modelisation in dic_gma.keys() : + len_groups = len(dic_gma[modelisation]) + if len_groups > 0 : + self.modelisations.append(modelisation) + epx[MODULE].append(5*' ' + modelisation + 2*' ' + dic_gma[modelisation][0]) + if len_groups > 1 : + for ig in range(1,len_groups) : + group_ma = dic_gma[modelisation][ig] + epx[MODULE].append((len(modelisation)+5+2)*' ' + group_ma) + + + + # Mettre a jour le modele dans le cas ou le maillage a ete modifie pour la seperation de TRIA3 et QUAD4 + # ce modele va etre utilise dans la lecture du fichier med (get_resu) + if len(nom_groups['QUAD4']) == 0 : + self.NEW_MODELE = copy.copy(self.MODELE) + else : + affe_model = [] + for modelisation in self.modelisations : + affe_model.append({'GROUP_MA':dic_gma[modelisation], + 'MODELISATION': dic_modele_epx[modelisation], + 'PHENOMENE':'MECANIQUE' }) + + __MO = AFFE_MODELE(MAILLAGE = concept_maillage, + AFFE = affe_model, + ); + + self.NEW_MODELE = copy.copy(__MO); + + # Utiliser dans Ecriture des elements et points du fichier med + self.dic_gma = dic_gma + # Il y a une suite dans RIGI_PARSOL + + #epx[MODULE].append('TERM') + #epx[MODULE].append('\n') + + + #----------------------------------------------------------------------- + def export_CARA_ELEM(self): + + epx = self.epx + + # Cle identifiant + MODULE = 'CARA_ELEM' + + # Recuperer la structure du concept sorti de AFFE_CARA_ELEM + cara_elem_struc = self.reupere_structure(self.CARA_ELEM) + + epx[MODULE] = ['*--CARACTERISTIQUES DES ELEMENTS DE STRUCTURE'] + + # Entete de la commande Europlexus courante + epx[MODULE].append('COMPLEMENT') + + # Dictionnaire conteant les donnees associees aux differents elements de structure + dic_elem = {} + for cle in ['DISCRET','COQUE','POUTRE','RIGI_PARASOL']: + if cara_elem_struc.has_key(cle): + fact = cara_elem_struc[cle] + if fact : + dic_elem[cle] = self.setlist(fact) + + # traduire les masses concentrees si elles existent + cle = 'DISCRET' + self.discretParasol = {} + if dic_elem.has_key(cle): + epx[MODULE].append('\n') + epx[MODULE].append('*--MASSES AJOUTEES') + for elem in dic_elem[cle]: + if elem['CARA'] == 'M_T_D_N' : + group_ma = self.get_group_ma(elem) + vale = elem['VALE'] + epx[MODULE].append('MASSE 123456 %g' %vale) + epx[MODULE].append(7*' ' + 'LECT') + for group in group_ma: + epx[MODULE].append(11*' '+group) + epx[MODULE].append(7*' ' + 'TERM') + if elem['CARA'] == 'K_TR_D_N' : + group_ma = self.get_group_ma(elem) + vale = elem['VALE'] + for gma in group_ma : + self.discretParasol[gma] = vale + + # traduire les elements coques s'ils existent + cle = 'COQUE' + self.dicOrthotropie={} + self.listEpais=[] + self.listEpais2=[] + if dic_elem.has_key(cle): + epx[MODULE].append('\n') + epx[MODULE].append('*--ELEMENTS COQUES') + for elem in dic_elem[cle]: +# print elem + group_ma = self.get_group_ma(elem) + epais = elem['EPAIS'] + if self.ARCHIVAGE['CONT_GENER'] == 'OUI' : + self.listEpais.append({'VALE' : epais, 'GROUP_MA' : group_ma, 'NOM_CMP' : 'X21'}) + self.listEpais2.append({'VALE' : epais**2/6., 'GROUP_MA' : group_ma, 'NOM_CMP' : 'X22'}) + else : + self.listEpais.append({'VALE' : 1., 'GROUP_MA' : group_ma, 'NOM_CMP' : 'X21'}) + self.listEpais2.append({'VALE' : 1., 'GROUP_MA' : group_ma, 'NOM_CMP' : 'X22'}) + st = 'EPAIS %g ' %epais + #ajouter les group_ma qui ont ete affecte par ces caracteristiques + epx[MODULE].append(st+'LECT') + for group in group_ma: + epx[MODULE].append((len(st)+4)*' '+group) + epx[MODULE].append((len(st))*' '+'TERM') + if elem.has_key('VECTEUR'): +# AA if elem['VECTEUR'] : + for group in group_ma : + self.dicOrthotropie[group] = elem['VECTEUR'] + + # traduire les elements poutres s'ils existent + cle = 'POUTRE' + if dic_elem.has_key(cle): + concept_maillage = self.reupere_structure(self.MODELE,'MAILLAGE') + #class permettant de calculer et verifier les vecteurs de poutre dans Europlexus + class_poutre = POUTRE(MAILLAGE=concept_maillage,CARA_ELEM=self.CARA_ELEM) + epx[MODULE].append('\n') + epx[MODULE].append('*--ELEMENTS POUTRES') + for elem in dic_elem[cle]: + group_ma = self.get_group_ma(elem) + vecteurs = class_poutre.getvecteurs(group_ma,verif='non') + vect_y = vecteurs[group_ma[0]] + type_section = elem['SECTION'] + st = 'GEOP %s ' %type_section + if type_section == 'RECTANGLE' : + # Correspondance de caracteristique de poutre aster/europlexus + dic_corresp = {'HY':'AY','HZ':'AZ'} + epx[MODULE].append(st) + # ajouter le vecteur definisant l'orientation de la section + epx[MODULE].append(len(st)*' ' + 'VX %g' %vect_y[0]) + epx[MODULE].append(len(st)*' ' + 'VY %g' %vect_y[1]) + epx[MODULE].append(len(st)*' ' + 'VZ %g' %vect_y[2]) + # ajouter les caracteristiques de la poutre + cara = elem['CARA'] + vale = elem['VALE'] + for icar in range(len(cara)): + car = cara[icar] + val = vale[icar] + car_epx = dic_corresp[car] + epx[MODULE].append(len(st)*' ' + '%s %g' %(car_epx,val)) + # ajouter les group_ma qui ont ete affecte par ces caracteristiques + epx[MODULE].append(5*' '+'LECT') + for group in group_ma: + epx[MODULE].append(len(st)*' '+group) + epx[MODULE].append(5*' '+'TERM') + else : + UTMESS('A','PLEXUS_4',valk=type_section) + + epx[MODULE].append('\n') + +#----------------------------------------------------------------------- + def export_RIGI_PARASOL(self): + + epx = self.epx + + # Cle identifiant + MODULE = 'RIGI_PARASOL' + concept_maillage = self.reupere_structure(self.MODELE,'MAILLAGE') + self.MApyt = MAIL_PY() + self.MApyt.FromAster(concept_maillage) + + # Recuperer la structure du concept sorti de AFFE_CARA_ELEM + cara_elem_struc = self.reupere_structure(self.CARA_ELEM) + + # Recuperer la structure RIGI_PARASOL si elles existe + list_rigi_parasol = None + if cara_elem_struc.has_key('RIGI_PARASOL'): + fact = cara_elem_struc['RIGI_PARASOL'] + if fact :list_rigi_parasol = self.setlist(fact) + + # Traduction des fonctions definies dans FONC_PARASOL + #dic_fonc_parasol = self.get_FONC_PARASOL(list_rigi_parasol) + dic_fonc_parasol = self.get_FONC_PARASOL() + epx[MODULE] = ['*--SUPPORT ELASTIQUE'] + + # si l'utilisateur a lui meme fourni des GROUP_MA de discrets : on commence par la + gmaParasol=self.get_group_ma_f(self.FONC_PARASOL) + group_union = '' + for gma in gmaParasol : + if gma not in self.discretParasol : + if debug: print gma + if debug: print self.discretParasol.keys() + raise 'Discret non defini' + vale = self.discretParasol[gma] + epx[MODULE].append('SUPPORT') + epx[MODULE].append(6*' '+'KX %g KY %g KZ %g'%(vale[0],vale[1],vale[2])) + epx[MODULE].append(6*' '+'KRX %g KRY %g KRZ %g'%(vale[3],vale[4],vale[5])) + for cle_fonc_parasol in dic_fonc_parasol.keys() : + epx[MODULE].append(6*' ' + '%s %i' %(cle_fonc_parasol,dic_fonc_parasol[cle_fonc_parasol]) ) + epx[MODULE].append(6*' '+'LECT %s TERM'%gma) + group_union += '%s '%gma + if len(gmaParasol) > 0 : + epx['MODELE'].append(5*' ' + 'APPU ' + group_union) + + # concept_maillage = self.reupere_structure(self.MODELE,'MAILLAGE') + # DEFI_GROUP(reuse = concept_maillage, + # MAILLAGE = concept_maillage, + # CREA_GROUP_NO = _F(GROUP_MA = gmaParasol), + # ); + + + + # traduire les rigi_parasol + if list_rigi_parasol : + # changement de module parce que les supports issus de RIGI_PARASOL doivent etre imprimes apres les materiaux + # fichiers_parasol = [] + # cles_oblig = ['UNITE_EUROPLEXUS','GROUP_MA_POI1'] + # for elem in list_rigi_parasol: + # elem_cara = elem['CARA'] + # if elem_cara == 'K_TR_D_N': + # for cle_test in cles_oblig: + # if not elem.has_key(cle_test): + # pass + # unite = elem['UNITE_EUROPLEXUS'] + # fichier = 'fort.%i' %unite + # if fichier not in fichiers_parasol : fichiers_parasol.append(fichier) + # else : + # pass + # Lecture des valeurs de rigidites generees par aster a partir des rigidites globales definis dans PARA_RIGISOL + # ressorts = [] + # for fichier in fichiers_parasol : + # ressorts.extend(self.lire_fichier(fichier)) + ressorts = self.CARA_ELEM.toEPX() + # Creer un maillage qui, pour chaque noeud de l'interface utilisee dans rigi_parsol, asscocie un group_ma asscie + # parce que on n'a pas les memes numeros des noeuds dans Europlexus + crea_poi1 = [] + dic_gma = {} + igr = -1 + # Liste des group_ma associes au noeuds ou le RIGI_PARSOL a ete applique + groups_parasol = [] + + for noeud in ressorts.keys() : + # noeud = ressor[0] + if not dic_gma.has_key(noeud): + igr += 1 + group_ma = 'SUP%i' %igr + dic_gma[noeud] = group_ma + groups_parasol.append(group_ma) + crea_poi1.append(_F(NOEUD=noeud,NOM_GROUP_MA=group_ma)) + + # ATTENTION : a deplacer + # crea_maillage a faire de facon centraliser pour RIGI_PARASOL et le POST-TRAITEMENT ailleurs + courbe_fact = self.COURBE + if courbe_fact is None: courbe_fact = [] + lnoeuds=sets.Set([]) + lmailles=sets.Set([]) + dicma=[] + for courbe in courbe_fact : + if courbe['GROUP_NO'] != None : + noeuds = courbe['GROUP_NO'] + if type(noeuds) == tuple : + for el in noeuds : + lnoeuds.add(el) + else : + lnoeuds.add(noeuds) + if courbe['GROUP_MA'] != None : + mailles = courbe['GROUP_MA'] + if type(mailles) == tuple : + for el in mailles : + lmailles.add(el) + else : + lmailles.add(mailles) + for maille in lmailles : + dicma.append({'NOM' : maille, 'MAILLE' : maille}) + + for no in lnoeuds : + if not self.MApyt.gno.has_key(no) : + crea_poi1.append(_F(NOEUD=no,NOM_GROUP_MA=no)) + + __NEW = CREA_MAILLAGE(MAILLAGE=concept_maillage, + CREA_POI1 = crea_poi1, + ); + self.NEW_MA = copy.copy(__NEW) + + # Ecriture sous format europlexus + # Indices des composantes + indices_comps = {'KX':1,'KY':2,'KZ':3,'KRX':4,'KRY':5,'KRZ':6} + for noeud in ressorts : + valeurs = ressorts[noeud] + epx[MODULE].append('SUPPORT') + # ecriture des composantes et de leurs valeurs associees + for comp in indices_comps.keys(): + if debug: print len(valeurs),indices_comps[comp]-1 + vale = valeurs[indices_comps[comp]-1] + epx[MODULE].append(3*' ' + '%s %s' %(comp,vale)) + # caracteristiques des translations et des rotations + for cle_fonc_parasol in dic_fonc_parasol.keys() : + epx[MODULE].append(3*' ' + '%s %i' %(cle_fonc_parasol,dic_fonc_parasol[cle_fonc_parasol]) ) + + # ecriture du group_ma associe + # noeud = ressor[0] + group_ma = dic_gma[noeud] + epx[MODULE].append(3*' ' + 'LECT %s TERM' %group_ma) + + epx[MODULE].append('\n') + + group_union = 'PARASOL' + dicma.append({'NOM' : group_union, 'UNION' : groups_parasol}) + __NEW = DEFI_GROUP(reuse = __NEW, + MAILLAGE = __NEW, + CREA_GROUP_MA = dicma + ) + + # Mettre a jour le module modele qd les ressots existent + epx['MODELE'].append(5*' ' + 'APPU ' + group_union) + # Fermer le module modele dans tous les cas + self.multidomaine = 0 + listInterfaces = self.INTERFACES + self.gmaInterfaces=[] + if listInterfaces : + i=0 + self.multidomaine = 1 + for interface in listInterfaces : + Lgma1 = self.setlist(interface['GROUP_MA_1']) + Lgma2 = self.setlist(interface['GROUP_MA_2']) + self.gmaInterfaces.extend(Lgma1) + self.gmaInterfaces.extend(Lgma2) + for gma in Lgma1 : + if i==0 : + epx['MODELE'].append(5*' ' + 'CL3L' + 2*' ' + gma) + else : + epx['MODELE'].append(11*' ' + gma) + for gma in Lgma2 : + epx['MODELE'].append(11*' ' + gma) + i+=1 + epx['MODELE'].append('TERM') + epx['MODELE'].append('\n') + + if self.gmaInterfaces : + epx['CHAM_MATER'].append('FANTOME 0. LECT') + for gma in self.gmaInterfaces : + epx['CHAM_MATER'].append(15*' '+'%s'%gma) + epx['CHAM_MATER'].append(' TERM') + epx['CHAM_MATER'].append('\n') + + + # DEFINITION REPERES ORTHOTROPIE QUI DOIT ETRE APRES LES SUPPORTS + for gma in self.gmaGLRC : + if gma not in self.dicOrthotropie : + raise "Erreur : %s non affecte par un repere d'orthotropie : ajouter le mot-cle 'VECTEUR' dans AFFE_CARA_ELEM"%gma + vale = self.dicOrthotropie[gma] + epx[MODULE].append('COMP ORTS %g %g %g'%(vale[0],vale[1],vale[2])) + epx[MODULE].append(3*' '+'LECT') + epx[MODULE].append(7*' '+'%s'%gma) + epx[MODULE].append(3*' '+'TERM') + + epx[MODULE].append('\n') + +#----------------------------------------------------------------------- + def get_FONC_PARASOL(self,list_rigi_parasol=None) : + + epx = self.epx + + MODULE = 'FONC_PARASOL' + if list_rigi_parasol is not None : + if self.FONC_PARASOL is None : UTMESS('F','PLEXUS_12') + # else : return None + + epx[MODULE] = ['*--DEFINITIONS DES FONCTIONS'] + + # Entete de la commande europlexus + epx[MODULE].append('FONC') + + # Cles de FONC_PARASOL dans l'ordre + cles = ['NFKT','NFKR'] + # Dictionnaire faisant la correspondance entre la fonction et son numero europlexus + dic_fonc = {} + try : + ifonc = self.ifonc + if debug: print 'self.ifonc = %s'%ifonc + except : + self.ifonc=0 + ifonc = self.ifonc + if debug: print 'ifonc = %s'%ifonc + if epx.has_key('FONC_MATER') : + epx[MODULE].extend(epx['FONC_MATER']) + for cle in cles: + ifonc += 1 + dic_fonc[cle] = ifonc + fonction = self.get_motcle(self.FONC_PARASOL,cle,code_mess='A') + (temps,valeurs) = fonction.Valeurs() + # imprimer les valeurs de la table + epx[MODULE].append(5*' ' +'NOPA %i TABLE %i' %(ifonc,len(temps)) ) + for ival in range(len(temps)): + epx[MODULE].append(17*' ' +'%g %g' %(temps[ival],valeurs[ival])) + self.ifonc = ifonc + self.dic_fonc = dic_fonc + epx[MODULE].append('\n') + return dic_fonc + +#----------------------------------------------------------------------- + def export_CHAM_MATER(self): + + epx = self.epx + + # CLe identifiant + MODULE = 'CHAM_MATER' + + epx[MODULE] = ['*--DEFINITION DES MATERIAUX'] + + # Entete de la commande Europlexus courante + epx[MODULE].append('MATERIAUX') + + # Recuperer la structure sous le mot_cle facteur AFFE de AFFE_MATER + affe_mater = self.reupere_structure(self.CHAM_MATER,'AFFE') + affe_mater = self.setlist(affe_mater) + + # Dictionnaire stoquant les caracteristiques mecaniques et les group_ma associe a chaque materiau + dic_mater = {} + typMat = {} + # GLRC impose de définir l'orientation : on stocke dans gmaGLRC les GMA dont il faudra retrouver l'orientation dans MODI_MAILLAGE/ORIE_NORM_COQUE + self.gmaGLRC = [] + epx['FONC_MATER'] = [] + ref_fonc=[] + for affe in affe_mater : + # Recuperer le concept du materiau defini par DEFI_MATERIAU + concept_mater = affe['MATER'] + # Recuperer le nom du materiau + nom_mater = concept_mater.get_name() + # Recuperer le group_ma concerne + group_ma = self.get_group_ma(affe) + if debug: print 'type(group_ma) = %s'%type(group_ma) + if not dic_mater.has_key(nom_mater): + dic_mater[nom_mater] = {'GROUP_MA':[]} + # Recuperer les caracteristiques elastiques du materiau + elas = self.reupere_structure(concept_mater,'ELAS') + if elas : + typMat[nom_mater] = 'ELAS' + for car in ['E','RHO','NU']: + dic_mater[nom_mater][car] = elas[car] + for car in ['AMOR_ALPHA','AMOR_BETA'] : + if elas.has_key(car) : + dic_mater[nom_mater][car] = elas[car] + else : + dic_mater[nom_mater][car] = None + beton = self.reupere_structure(concept_mater,'BETON') + if beton : + typMat[nom_mater] = 'GLRC' + self.gmaGLRC.extend(group_ma) + dic_mater[nom_mater]['LINER']=[] + dic_mater[nom_mater]['NAPPE']=[] + materBeton = beton['MATER'] + elasBeton = self.reupere_structure(materBeton,'ELAS') + dic_mater[nom_mater]['BETON']={} + for car in ['E','RHO','NU']: + dic_mater[nom_mater]['BETON'][car] = self.get_motcle(elasBeton,car) + for car in ['AMOR_ALPHA','AMOR_BETA']: + dic_mater[nom_mater]['BETON'][car] = self.get_motcle(elasBeton,car,None) + ecroBeton = self.reupere_structure(materBeton,'BETON_ECRO_LINE') + for car in ['SYT','SYC']: + dic_mater[nom_mater]['BETON'][car] = self.get_motcle(ecroBeton,car,None) + for car in ['EPAIS','GAMMA','QP1','QP2','C1N1','C1N2','C1N3','C2N1','C2N2','C2N3','C1M1','C1M2','C1M3','C2M1','C2M2','C2M3'] : + dic_mater[nom_mater]['BETON'][car] = self.get_motcle(beton,car) + for car in ['OMT','EAT','BT1','BT2'] : + dic_mater[nom_mater]['BETON'][car] = self.get_motcle(beton,car,None) + for car in ['MP1X','MP1Y','MP2X','MP2Y'] : + car_temp = self.get_motcle(beton,car,None) + if debug: print 'type(car_temp) = %s'%type(car_temp) + dic_mater[nom_mater]['BETON'][car] = None + if car_temp : + if type(car_temp) == float : + dic_mater[nom_mater]['BETON'][car] = car_temp + else : + if debug: print dir(car_temp) + try : + ifonc = self.ifonc + except : + self.ifonc=0 + ifonc = self.ifonc + ifonc += 1 + val = car_temp.Valeurs() + x = val[:len(val):2] + y = val[1:len(val):2] + # imprimer les valeurs de la table + epx['FONC_MATER'].append(5*' ' +'%i LSQU 2 TABLE %i' %(ifonc,len(x)) ) + for ival in range(len(x)): + epx['FONC_MATER'].append(17*' ' +'%g %g' %(x[ival],y[ival])) + dic_mater[nom_mater]['BETON'][car] = 'FONC %i'%ifonc + self.ifonc=ifonc + + + cable = self.reupere_structure(concept_mater,'CABLE_PREC') + if cable : + materCable = cable['MATER'] + elasCable = self.reupere_structure(materCable,'ELAS') + ecroCable = self.reupere_structure(materCable,'ECRO_LINE') + dic_mater[nom_mater]['CABLE']={} + for car in ['E','NU']: + dic_mater[nom_mater]['CABLE'][car] = elasCable[car] + for car in ['SY']: + dic_mater[nom_mater]['CABLE'][car] = ecroCable[car] + for car in ['OMX','OMY','RX','RY','PREX','PREY'] : + dic_mater[nom_mater]['CABLE'][car] = cable[car] + Lnappes = self.setlist(self.reupere_structure(concept_mater,'NAPPE')) + if Lnappes : + for nappe in Lnappes : + dic_tmp = {} + materNappe = nappe['MATER'] + elasNappe = self.reupere_structure(materNappe,'ELAS') + ecroNappe = self.reupere_structure(materNappe,'ECRO_LINE') + for car in ['E','NU']: + dic_tmp[car] = elasNappe[car] + for car in ['SY']: + if ecroNappe : + dic_tmp[car] = ecroNappe[car] + else : + dic_tmp[car] = None + for car in ['OMX','OMY','RX','RY'] : + dic_tmp[car] = nappe[car] + for car in ['FS',] : + if nappe.has_key(car) : + dic_tmp[car] = nappe[car] + else : + dic_tmp[car] = None + dic_mater[nom_mater]['NAPPE'].append(dic_tmp) + Lliners = self.setlist(self.reupere_structure(concept_mater,'LINER')) + if Lliners : + for liner in Lliners : + dic_tmp = {} + materLiner = liner['MATER'] + elasLiner = self.reupere_structure(materLiner,'ELAS') + ecroLiner = self.reupere_structure(materLiner,'ECRO_LINE') + for car in ['E','NU']: + dic_tmp[car] = elasLiner[car] + for car in ['SY']: + dic_tmp[car] = ecroLiner[car] + for car in ['OML','RLR'] : + dic_tmp[car] = liner[car] + dic_mater[nom_mater]['LINER'].append(dic_tmp) + + + if debug: print 'MATER = %s \n type = %s \n dic = %s'%(nom_mater,typMat, dic_mater[nom_mater]) + dic_mater[nom_mater]['GROUP_MA'].extend(group_ma) + + # if gmaGLRC : + # concept_maillage = self.reupere_structure(self.MODELE,'MAILLAGE') + # if debug: print 'ETAPES MAILLAGES' + # if debug: print dir(concept_maillage) + # if debug: print concept_maillage.executed + # if debug: print concept_maillage.etape + # if debug: print dir(concept_maillage.etape) + # if debug: print concept_maillage.etape.get_liste_etapes() + # if debug: print concept_maillage.etape.valeur + + + # Impression au format Europlexus + + for nom_mater in dic_mater.keys(): + epx[MODULE].append('*--MATERIAU %s' %nom_mater) + # mot cle indicant qu'il s'agit des caracteristiques lineaires du materiau + if typMat[nom_mater] == 'ELAS' : + dic_corresp = {'E':'YOUNG','NU':'NU','RHO':'RO'} + dic_corresp2 ={'AMOR_ALPHA':'KRAY','AMOR_BETA':'MRAY'} + epx[MODULE].append('LINE') + for car_aster in dic_corresp.keys(): + vale = dic_mater[nom_mater][car_aster] + car_epx = dic_corresp[car_aster] + if vale is not None : + epx[MODULE].append('%s %g' %(car_epx,vale)) + for car_aster in dic_corresp2.keys(): + vale = dic_mater[nom_mater][car_aster] + car_epx = dic_corresp2[car_aster] + if vale is not None : + epx[MODULE].append('%s %g' %(car_epx,vale)) + else : #GLRC + dic_corres1 = {'RHO':'RO','EPAIS':'H','E':'EB','NU':'NUB'} + dic_corresNapp = {'E' : 'EA','SY':'FY','OMX':'OMX','OMY':'OMY','RX':'RX','RY':'RY','FS':'FS'} + dic_corresPrec = {'E' : 'EA','SY':'FY','OMX':'OMX','OMY':'OMY','RX':'RX','RY':'RY'} + dic_corresLinr = {'E' : 'EA','SY':'FY','OML':'OMLR','NU':'NULR','RLR':'RLR'} + dic_corres2 = {'OMT' : 'OMT','EAT':'EAT','BT1':'BT1','BT2':'BT2','SYT' : 'FT','GAMMA':'GAMM','QP1':'QP1','QP2':'QP2','C1N1':'C1N1','C1N2':'C1N2','C1N3':'C1N3','C2N1':'C2N1','C2N2':'C2N2','C2N3':'C2N3','C1M1':'C1M1','C1M2':'C1M2','C1M3':'C1M3','C2M1':'C2M1','C2M2':'C2M2','C2M3':'C2M3','SYC':'FC'} + dic_corres2b = {'MP1X':'MP1X','MP2X':'MP2X','MP1Y':'MP1Y','MP2Y':'MP2Y',} + dic_corres3 = {'PREX' : 'PREX', 'PREY' : 'PREY'} + dic_corres4 = {'AMOR_ALPHA':'KRAY','AMOR_BETA':'MRAY'} + epx[MODULE].append('GLRC DAMA') + for car_aster in dic_corres1.keys(): + vale = dic_mater[nom_mater]['BETON'][car_aster] + car_epx = dic_corres1[car_aster] + if vale is not None : + epx[MODULE].append('%s %g' %(car_epx,vale)) + nlit = len(dic_mater[nom_mater]['NAPPE'])+len(dic_mater[nom_mater]['LINER']) + if dic_mater[nom_mater].has_key('CABLE') : + nlit+=1 + if nlit : + epx[MODULE].append('%s %g' %('NLIT',nlit)) + for nappe in dic_mater[nom_mater]['NAPPE'] : + epx[MODULE].append('NAPP') + for car_aster in dic_corresNapp.keys(): + if nappe.has_key(car_aster) : + vale = nappe[car_aster] + car_epx = dic_corresNapp[car_aster] + if vale is not None: + epx[MODULE].append('%s %g' %(car_epx,vale)) + if dic_mater[nom_mater].has_key('CABLE') : + epx[MODULE].append('PREC') + for car_aster in dic_corresPrec.keys(): + vale = dic_mater[nom_mater]['CABLE'][car_aster] + car_epx = dic_corresPrec[car_aster] + if vale is not None : + epx[MODULE].append('%s %g' %(car_epx,vale)) + for liner in dic_mater[nom_mater]['LINER'] : + epx[MODULE].append('LINR') + for car_aster in dic_corresLinr.keys(): + vale = liner[car_aster] + car_epx = dic_corresLinr[car_aster] + if vale is not None : + epx[MODULE].append('%s %g' %(car_epx,vale)) + for car_aster in dic_corres2.keys(): + vale = dic_mater[nom_mater]['BETON'][car_aster] + car_epx = dic_corres2[car_aster] + if vale is not None : + if type(vale) == float : + epx[MODULE].append('%s %g' %(car_epx,vale)) + else : + epx[MODULE].append('%s %s' %(car_epx,vale)) + for car_aster in dic_corres2b.keys(): + vale = dic_mater[nom_mater]['BETON'][car_aster] + car_epx = dic_corres2b[car_aster] + if vale is not None : + if type(vale) == float : + epx[MODULE].append('%s %g' %(car_epx,vale)) + else : + epx[MODULE].append('%s %s' %(car_epx,vale)) + if dic_mater[nom_mater].has_key('CABLE') : + for car_aster in dic_corres3.keys(): + vale = dic_mater[nom_mater]['CABLE'][car_aster] + car_epx = dic_corres3[car_aster] + if vale is not None : + epx[MODULE].append('%s %g' %(car_epx,vale)) + for car_aster in dic_corres4.keys(): + vale = dic_mater[nom_mater]['BETON'][car_aster] + car_epx = dic_corres4[car_aster] + if vale is not None : + epx[MODULE].append('%s %g' %(car_epx,vale)) + + # ajouter les group_ma qui ont ete affecte par ces caracteristiques + epx[MODULE].append(3*' '+'LECT') + for group in dic_mater[nom_mater]['GROUP_MA']: + epx[MODULE].append(7*' '+group) + epx[MODULE].append(3*' '+'TERM') + + + return epx + +#----------------------------------------------------------------------- + def export_EXCIT(self): + + epx = self.epx + + # CLe identifiant + MODULE = 'EXCIT' + + epx[MODULE] = ['*--DEFINITION DES CHARGEMENTS et DES CONDITIONS AUX LIMITES'] + + # Entete de la commande Europlexus courante + #epx[MODULE].append('CHARGEMENT') + + excit_list = self.setlist(self.EXCIT) + + # Traduction de ddl_impo + dic_ddl_impo = {'DX':1,'DY':2,'DZ':3,'DRZ':4,'DRY':5,'DRZ':6} + + # Initialisation des variables decrivant le chargement et les conditions de blocage + CHARGEMENT = [] + LIAISON = [] + + for excit in excit_list: + concept_charge = excit['CHARGE'] + pres_rep_list = self.reupere_structure(concept_charge,'PRES_REP') + ddl_impo_list = self.reupere_structure(concept_charge,'DDL_IMPO') + pres_rep_list = self.setlist(pres_rep_list) + ddl_impo_list = self.setlist(ddl_impo_list) + # PRES_REP + if pres_rep_list : + if len(CHARGEMENT) == 0 : CHARGEMENT = ['CHARGEMENT'] + fonction = self.get_motcle(excit,'FONC_MULT',code_mess='A') + if fonction is None: + UTMESS('F','PLEXUS_7') + (temps,valeurs) = fonction.Valeurs() + for pres_rep in pres_rep_list : + pression = pres_rep['PRES'] + group_ma = self.get_group_ma(pres_rep) + + CHARGEMENT.append(2*' ' + '1 FACTO 2') + CHARGEMENT.append(6*' ' +'PRESS COQU %g' %pression) + # ajouter les group_ma qui ont ete affecte par ces caracteristiques + CHARGEMENT.append(6*' '+'LECT') + for group in group_ma: + CHARGEMENT.append(10*' '+group) + CHARGEMENT.append(6*' '+'TERM') + # imprimer les valeurs de la table + CHARGEMENT.append(6*' ' +'TABLE %i' %len(temps)) + for ival in range(len(temps)): + CHARGEMENT.append(10*' ' +'%g %g' %(temps[ival],valeurs[ival])) + # DDL_IMPO + #if debug: print 'ddl_impo_list',ddl_impo_list + if ddl_impo_list : + #UTMESS('A','PLEXUS_8') + if len(LIAISON) == 0 : LIAISON = ['LIAISON'] + for ddl_impo in ddl_impo_list: + blocage = '' + for cle in dic_ddl_impo.keys() : + vale = self.get_motcle(ddl_impo,cle,code_mess='None') + if vale is not None: + if vale != 0 : UTMESS('F','PLEXUS_13') + else : + blocage += `dic_ddl_impo[cle]` + # recupere les entites geometriques + for entite in ['GROUP_MA','GROUP_NO'] : + group_ma = self.get_motcle(ddl_impo,entite,code_mess='None') + if group_ma is not None : + group_ma = self.setlist(group_ma);break + LIAISON.append(' '*2 + 'BLOQ %s' %blocage) + # ajouter les group_ma qui ont ete affecte par ces caracteristiques + LIAISON.append(6*' '+'LECT') + for group in group_ma: + LIAISON.append(10*' '+group) + LIAISON.append(6*' '+'TERM') + + if not ddl_impo_list and not pres_rep_list : + UTMESS('F','PLEXUS_9') + + # Transmettre les commandes a la liste global epx + for var in [CHARGEMENT,LIAISON] : + if len(var) > 0 : + epx[MODULE].append('\n') + for ligne in var : epx[MODULE].append(ligne) + + epx[MODULE].append('\n') + +#----------------------------------------------------------------------- + def Correspondance_champ(self): + + # Dictionnaire de passage de champs Aster --> Europlexus + dic_champ = {'DEPL':'DEPLACEMENT','VITE':'VITESSE','ACCE':'ACCELERATION', + 'SIEF_ELGA':'CONT','EPSI_ELGA':'EPST','VARI_ELGA':'ECRO'} + + # Dictionnaire de passage de composantes Aster --> Europlexus + dic_cmp = {} + for cham in ['DEPL','VITE','ACCE'] : + dic_cmp[cham] = {'DX' : 1,'DY':2,'DZ':3,'DRX':4,'DRY':5,'DRZ':6} + + dic_cmp['SIEF_ELGA'] = {'SIXX':1,'SIYY':2,'SIZZ':3,'SIXY':4,'SIXZ':5,'SIYZ':6,'NXX':1,'NYY':2,'NXY':3,'MXX':4,'MYY':5,'MXY':6,'QX':7,'QY':8} + dic_cmp['VARI_ELGA'] = {} + for ii in range(1,25): + dic_cmp['VARI_ELGA']['V%i'%ii] = ii + + self.dic_champ = dic_champ + self.dic_cmp = dic_cmp + + +#----------------------------------------------------------------------- + def export_ECRITURE(self): + + epx = self.epx + + self.Correspondance_champ() + + # CLe identifiant + MODULE = 'ECRITURE' + + dcles_freq = {'FREQ':'PAS_NBRE', 'TFREQ':'PAS_INST'} + + def get_freq(fact): + for cle_freq in dcles_freq.keys(): +# AA vale_freq = self.get_motcle(fact,cle_freq,code_mess=None) + vale_freq = self.get_motcle(fact,dcles_freq[cle_freq],code_mess=None) + if vale_freq is not None : break + return cle_freq,vale_freq + + def get_freq2() : + if self.PAS_NBRE_COURBE : + return 'FREQ',self.PAS_NBRE_COURBE + elif self.PAS_INST_COURBE : + return 'TFREQ',self.PAS_INST_COURBE + else : + raise 'Erreur programmation' + + + def string2list(var) : + if types.TypeType(var) == types.StringType : var = (var,) + return var + + + epx[MODULE] = ['*--ECRITURES DES RESULTATS'] + epx[MODULE] = ['opti K2GP'] + # Entete de la commande Europlexus courante + epx[MODULE].append('ECRITURE') + + + # Traitement du mot-cle facteur OBSERVATION (EPX = LISTING) +# AA listing_fact = self.ECRITURE['LISTING'] + listing_fact = self.OBSERVATION + nom_cham = string2list(listing_fact['NOM_CHAM']) + + cle_freq_listing, vale_freq_listing = get_freq(listing_fact) +# AA cles_entite = ['POINTS','ELEMEMTS'] + dcles_entite = {'POINT':'GROUP_NO', 'ELEM':'GROUP_MA'} +# AA dcles_tout = {'POINTS':'TOUT_GROUP_NO', 'ELEMEMTS':'GROUP_MA'} + cles_entite = dcles_entite.keys() + + # Ecriture format Europlexus + + # Ecriture LISTING + st = 2*' ' + for cham_aster in nom_cham: + cham_epx = self.dic_champ[cham_aster] + st += '%s ' % cham_epx + st += ' %s %g' % (cle_freq_listing,vale_freq_listing) + st += ' NOPO NOEL' + epx[MODULE].append(st) + for cle in cles_entite: +# AA for cle in cles_entite : +# AA entite_geo = self.get_motcle(listing_fact ,cle, code_mess=None) +# AA entite_geo = string2list(entite_geo) + + entite_geo = string2list(listing_fact[dcles_entite[cle]]) + # if listing_fact['TOUT_%s' % dcles_entite[cle]] == 'OUI': epx[MODULE].append(2*' ' +'%s TOUS ' % cle) + # elif entite_geo is None: epx[MODULE].append(2*' ' +'NO%s' % cle) + # else: + # epx[MODULE].append(2*' ' +'%s LECT' %cle) + # for group in entite_geo : + # epx[MODULE].append(6*' '+group) + # epx[MODULE].append(2*' '+'TERM') + +# if entite_geo is None : +# epx[MODULE].append(2*' ' +'NO%s' %cle) +# elif entite_geo[0] == 'TOUS' : +# epx[MODULE].append(2*' ' +'%s TOUS ' %cle) +# else : +# epx[MODULE].append(2*' ' +'%s LECT' %cle) +# for group in entite_geo : +# epx[MODULE].append(6*' '+group) +# epx[MODULE].append(2*' '+'TERM') +# + + # Ecriture FICHIER ALICE UTILISE par le mot-cle facteur COURBE +# AA courbe_fact = self.ECRITURE['COURBE'] + courbe_fact = self.COURBE + if courbe_fact is not None : + + # dcourbe=[] + # for j in courbe_fact: + # dcourbe.append(j.cree_dict_valeurs(j.mc_liste)) + # for i in dcourbe[-1].keys(): + # if dcourbe[-1][i]==None : del dcourbe[-1][i] + + # if debug: print 'dcourbe=', dcourbe + + cle_freq, vale_freq = get_freq2() + fichier_alit = self.pwd + self.REPE + os.sep + self.nom_fichiers['ALIT'] + epx[MODULE].append(2*' ' + "FICH ALIT 11 %s %g" %(cle_freq,vale_freq)) + + # Liste les noeuds a postraiter + lnoeuds=sets.Set([]) + lmailles=sets.Set([]) + for courbe in courbe_fact : + if courbe['GROUP_NO'] != None : + noeuds = courbe['GROUP_NO'] + if debug: print type(noeuds) + # liste de noeud ou un seul noeud ? + if type(noeuds) == tuple : + for el in noeuds : + lnoeuds.add(el) + else : + lnoeuds.add(noeuds) + elif courbe['GROUP_MA'] != None : + mailles = courbe['GROUP_MA'] + if debug: print type(mailles) + # liste de mailles ou une seule maille ? + if type(mailles ) == tuple : + for el in mailles : + lmailles.add(el) + else : + lmailles.add(mailles) + else : + raise 'Erreur ni noeud ni maille' + # sys.exit() + # tables = self.get_motcle(courbe_fact,'TABLE',code_mess='F') + # tables = self.setlist(tables) + + # icourbe = 0 + # for table in tables: + # icourbe += 1 + # noeud = table['NOEUD'] + # list_noeuds.append(noeud) + # Ecriture la liste des noeuds sous format epx + if lnoeuds : + epx[MODULE].append(4*' ' +'POINTS') + epx[MODULE].append(6*' ' +'LECT ') + for noeud in lnoeuds : + epx[MODULE].append(8*' '+noeud) + epx[MODULE].append(6*' '+'TERM') + if lmailles : + epx[MODULE].append(4*' ' +'ELEM') + epx[MODULE].append(6*' ' +'LECT ') + for maille in lmailles : + epx[MODULE].append(8*' '+maille) + epx[MODULE].append(6*' '+'TERM') + + + # Pas besoin d'elements + # epx[MODULE].append(4*' ' + 'NOELEMENTS') + + # Ecriture fichier MED representant les champs aux noeuds et aux points de gauss + # Traitement du mot-cle facteur ARCHIVAGE +# # Traitement du mot-cle facteur CHAMP +# champ_fact = self.ECRITURE['CHAMP'] + champ_fact = self.ARCHIVAGE + if champ_fact is not None : + cle_freq_champ,vale_freq_champ = get_freq(champ_fact) + epx[MODULE].append(2*' ' + 'FICHIER MED') + # chemin complet du fichier med + fichier_med = self.pwd + self.REPE + os.sep + self.nom_fichiers['MED'] + epx[MODULE].append(2*' ' + "'%s'" %fichier_med) + cle_freq,vale_freq = get_freq(champ_fact) + epx[MODULE].append(2*' ' + ' %s %g' %(cle_freq_champ,vale_freq_champ)) + + # groupes de mailles du modele + entite_geo={} + entite_geo['ELEM'] = [] + for model in ['DKT3','Q4GS'] : + if model in self.modelisations : + entite_geo['ELEM'].extend(self.dic_gma[model]) + entite_geo['POINT'] = [] + for model in ['DKT3','Q4GS','POUT'] : + if model in self.modelisations : + entite_geo['POINT'].extend(self.dic_gma[model]) + for cle in cles_entite : + epx[MODULE].append(2*' ' +'%s LECT' %cle) + for group in entite_geo[cle] : + epx[MODULE].append(6*' '+group) + epx[MODULE].append(2*' '+'TERM') + + # Une ligne de saut + epx[MODULE].append('\n') + +#----------------------------------------------------------------------- + + def export_POST_COURBE(self): + + # Suite de postraitement permettant d'ecrire des fichiers ASCII + # des grandeurs demandees + + # Tester si le mot_cle facteur COURBE a ete renseigne +# AA courbe_fact = self.ECRITURE['COURBE'] + courbe_fact = self.COURBE + if courbe_fact is None : return + + epx = self.epx + + # Cle identifiant + MODULE = 'POST_COURBE' + + # Ecriture fort Europlexus + # Entete de la commande courante + epx[MODULE] = ['SUITE\n'] + # epx[MODULE].append("'TITRE'") +# unite_alit = self.get_motcle(courbe_fact,'UNITE_ALIT',code_mess=None) +# if debug: print 'unite_alit=', unite_alit + if self.UNITE_COURBE: fichier_courbes = os.path.join(self.pwd, 'fort.%s' % str(self.UNITE_COURBE)) + else: fichier_courbes = self.pwd + self.REPE + os.sep + self.nom_fichiers['PUN'] + fichier_alit = self.pwd + self.REPE + os.sep + self.nom_fichiers['ALIT'] + epx[MODULE].append("RESULTAT ALICE TEMPS 11") + epx[MODULE].append("OPNF FORMAT 17 '%s'" %fichier_courbes) + epx[MODULE].append("SORTIES GRAPHIQUES") + # epx[MODULE].append("PERFO '%s'"%fichier_courbes) + epx[MODULE].append("AXTEMPS 1. 'TEMPS(s)'") + + # recuperer le mot-cle facteur COURBE +# AA courbe_fact = self.ECRITURE['COURBE'] + courbe_fact = self.COURBE + # recuperer les mot_cle TABLE + # tables = self.get_motcle(courbe_fact,'TABLE',code_mess='F') + #tables = self.setlist(tables) + + # Dictionnaire decrivant les legendes des abscisses et ordodonnees des courbes imprimees + # et utilisee dans get_tables + self.legend_courbes = {} + entites_courbe = ['GROUP_NO','GROUP_MA'] + entite_EPX={'GROUP_NO' : 'NOEUD', 'GROUP_MA' : 'ELEM'} + icourbe = 0 + # for table in tables: + lnoeuds = [] + for table in courbe_fact : + for entite_type in entites_courbe : + try : entite = table[entite_type] + except : entite = None + if entite is not None : + cham_aster = table['NOM_CHAM'] + cmp_aster = table['NOM_CMP'] + cham_epx = self.dic_champ[cham_aster] + cmp_epx = self.dic_cmp[cham_aster][cmp_aster] + # ylabel = cham_aster + '_' + cmp_aster + ylabel = cmp_aster + if type(entite) is not tuple : entite = [entite,] + for el in entite : + icourbe+=1 + label = ylabel + '_%s'%el + if entite_type == 'MAILLE' : + label = label+'_%s'%table['NUM_GAUSS'] + st = "COURBE %i '%s' %s COMP %i "% (icourbe,label,cham_epx,cmp_epx) + if entite_type == 'MAILLE' : + st=st+"GAUSS %i "%table['NUM_GAUSS'] + st=st+"%s LECT %s TERM"%(entite_EPX[entite_type],el) + if debug: print 'st = %s'%st + epx[MODULE].append(st) + # epx[MODULE].append("LIST %i AXES 1. '%s'" % (icourbe,ylabel)) + st = "LIST %s AXES 1. '%s'" % (icourbe,label) + if debug: print 'st = %s'%st + epx[MODULE].append(st) + self.legend_courbes[icourbe] = ['TEMPS',label] + + + + # Une ligne de saut + epx[MODULE].append('\n') + +#----------------------------------------------------------------------- + def export_CALCUL(self): + + epx = self.epx + + # CLe identifiant + MODULE = 'CALCUL' + + # Entete de la commande Europlexus courante + epx[MODULE] = ['*--OPTION DE CALCUL'] + epx[MODULE].append('') + type_discr = self.CALCUL['TYPE_DISCRETISATION'] + + epx[MODULE].append('OPTION PAS %s' %type_discr) + + if type_discr == 'AUTO': + cstab = self.CALCUL['CSTAB'] + epx[MODULE].append(7*' ' + 'CSTAB %s' %cstab) + + listInterfaces = self.INTERFACES + listDomaines = self.DOMAINES + domaineInterfaces = {} + if listDomaines : + epx[MODULE].append('\n') + epx[MODULE].append('*--DEFINITION DES SOUS DOMAINES') + epx[MODULE].append('') + epx[MODULE].append('STRUCTURE %s'%len(listDomaines)) + for interface in listInterfaces : + Lgma1 = self.setlist(interface['GROUP_MA_1']) + Lgma2 = self.setlist(interface['GROUP_MA_2']) + idS1 = interface['IDENT_DOMAINE_1'] + idS2 = interface['IDENT_DOMAINE_2'] + if not domaineInterfaces.has_key(idS1) : + domaineInterfaces[idS1]= [] + if not domaineInterfaces.has_key(idS2) : + domaineInterfaces[idS2]= [] + domaineInterfaces[idS1].extend(Lgma1) + domaineInterfaces[idS2].extend(Lgma2) + else : + listDomaines = [] + for domaine in listDomaines : + Lgma = self.setlist(domaine['GROUP_MA']) + id = domaine['IDENTIFIANT'] + epx[MODULE].append(3*' '+'DOMA LECT') + for gma in Lgma : + epx[MODULE].append(12*' '+gma) + for gma in domaineInterfaces[id] : + epx[MODULE].append(12*' '+gma) + epx[MODULE].append(8*' '+'TERM') + epx[MODULE].append(8*' '+'IDENTIFIANT %s\n'%id) + + + if listInterfaces : + epx[MODULE].append('') + epx[MODULE].append('INTERFACE %s'%len(listInterfaces)) + else : + listInterfaces = [] + for interface in listInterfaces : + Lgma1 = self.setlist(interface['GROUP_MA_1']) + Lgma2 = self.setlist(interface['GROUP_MA_2']) + idS1 = interface['IDENT_DOMAINE_1'] + idS2 = interface['IDENT_DOMAINE_2'] + tole = interface['TOLE'] + epx[MODULE].append(3*' '+'MORTAR TOLE %g'%tole) + epx[MODULE].append(7*' '+'DOMA %s LECT'%idS1) + for gma in Lgma1 : + epx[MODULE].append(13*' '+gma) + epx[MODULE].append(10*' '+'TERM') + epx[MODULE].append(7*' '+'DOMA %s LECT'%idS2) + for gma in Lgma2 : + epx[MODULE].append(13*' '+gma) + epx[MODULE].append(10*' '+'TERM') + + epx[MODULE].append('\n') + epx[MODULE].append('*--LANCEMENT DE CALCUL') + epx[MODULE].append('') + calcul = 'CALCUL' +# AAA cles = ['INST_INIT','PASFIX','INST_FIN','DTMAX'] + cles = ['INST_INIT','PASFIX','INST_FIN'] + dcles = {'INST_INIT':'TINI', 'PASFIX':'PASFIX', 'INST_FIN':'TFIN'} + for cle in dcles.keys(): + try : calcul += ' %s %g' %(dcles[cle], self.CALCUL[cle]) + except : pass + # Doit etre mis en entier + try : calcul += ' %s %d' %('NMAX',self.CALCUL['NMAX']) + except : pass + epx[MODULE].append(calcul) + epx[MODULE].append('\n') + #epx[MODULE].append('FIN') + + +#----------------------------------------------------------------------- + def ecrire_fichier(self,): + + fichier = self.REPE + os.sep + self.nom_fichiers['COMMANDE'] + + # ordre des modules de definition du modele EPX + modules = ['DEBUT','MAILLAGE','DIME','MODELE','CARA_ELEM','FONC_PARASOL','CHAM_MATER','RIGI_PARASOL','EXCIT','ECRITURE','CALCUL','POST_COURBE'] + + #les modules MODELE et RIGI_PARASOL doivent etre executes avant MAILLAGE + # car le maillage peut etre modifie dans ces modules + modules_exe = [] + modules_exe.extend(modules) + modules_exe.remove('MAILLAGE') + modules_exe.append('MAILLAGE') + + # Excecution des differentes modules + for module in modules_exe: + fct = 'export_%s' %module + if hasattr(self,fct) : + eval('self.'+fct+'()') + else : + print 'module %s pas encore developpe' %fct + + # Ecriture du fichier texte contenant toutes les commandes Europlexus + fd = open(fichier,'w') + for module in modules : + if self.epx.has_key(module) : + for ll in self.epx[module]: + if debug: print 'EPX : %s'%ll + fd.write('%s\n'%ll) + # Fin du fichier de commandes epx + fd.write('FIN') + fd.close() + +#----------------------------------------------------------------------- + def get_table(self,icourbe=1,fichier='auto') : + + global table + + if not hasattr(self,'courbes'): + if fichier == 'auto' : fichier = self.pwd + self.REPE + os.sep + self.nom_fichiers['PUN'] + if not os.path.isfile(fichier) : return + self.courbes = self.lire_pun(fichier=fichier) + + if not os.path.isfile(fichier) : return + if debug: print self.courbes,type(self.courbes) + nc = 0 + para_ordonnee = [] + dico = [] + for icourbe in self.courbes : + valeurs = self.courbes[icourbe] + if debug: print 'icourbe = %s ; valeurs = %s'%(icourbe, valeurs) + if nc == 0 : + para_abscisse = self.legend_courbes[icourbe][0] + vale_abscisse = valeurs[0,:].tolist() + assert (len(para_abscisse)<17) + dico.append({'TYPE_K':'K16','LISTE_R' : vale_abscisse , 'PARA' : para_abscisse}) + para_ordonnee = self.legend_courbes[icourbe][1] + vale_ordonnee = valeurs[1,:].tolist() + assert (len(para_ordonnee)<17) + dico.append({'TYPE_K':'K16','LISTE_R' : vale_ordonnee , 'PARA' : para_ordonnee}) + nc=1 + else : + if ((self.legend_courbes[icourbe][0] == para_abscisse) and (vale_abscisse == valeurs[0,:].tolist())) : + para_ordonnee = self.legend_courbes[icourbe][1] + vale_ordonnee = valeurs[1,:].tolist() + assert (len(para_ordonnee)<17) + dico.append({'TYPE_K':'K16','LISTE_R' : vale_ordonnee , 'PARA' : para_ordonnee}) + else : + raise 'Table non compatible' + + table = CREA_TABLE( LISTE =dico + ); + + if 0 : + unite = self.get_unite_libre() + unite = 90 + DEFI_FICHIER(UNITE=unite,ACTION='ASSOCIER'); + + IMPR_TABLE(UNITE = unite, + FORMAT = 'XMGRACE', + TABLE = table, + LEGENDE_X = para_abscisse, + LEGENDE_Y = para_ordonnee, + LEGENDE = 'test' + ); + + os.system('xmgrace fort.%i' %unite) + + DEFI_FICHIER(UNITE=unite,ACTION='LIBERER'); + + +#----------------------------------------------------------------------- + def get_resu(self,fichier_med='auto'): + + # Rendre global le resu pour qu'il soit accepte dans self.DeclareOut + global resu + + if fichier_med == 'auto' : fichier_med = self.REPE + os.sep + self.nom_fichiers['MED'] + + if debug: print fichier_med + if not os.path.isfile(fichier_med) : + print "Pas de fichier MED !" + return + + # Format med des champs depl, vite et acce + format_med =[_F(NOM_CHAM_MED='CHAMP___DEPLACEMENT___001', + NOM_CMP=('DX','DY','DZ','DRX','DRY','DRZ'), + NOM_CMP_MED=('UX','UY','UZ','RX','RY','RZ'), + NOM_CHAM ='DEPL' ), + _F(NOM_CHAM_MED='CHAMP___VITESSE___001', + NOM_CMP=('DX','DY','DZ','DRX','DRY','DRZ'), + NOM_CMP_MED=('VX','VY','VZ','RX','RY','RZ'), + NOM_CHAM ='VITE' ), + _F(NOM_CHAM_MED='CHAMP___ACCELERATION___001', + NOM_CMP=('DX','DY','DZ','DRX','DRY','DRZ'), + NOM_CMP_MED=('GX','GY','GZ','RX','RY','RZ'), + NOM_CHAM ='ACCE' ), + ] + + # Dicionnaire permettant de faire la correspondance des champs aux pts de gauss entre le med de europlexus et aster + dic_cmp_gauss = {} + + dic_cmp_gauss['CONTRAINTE'] = {'DKT3': {'NOM_CMP' : ('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ'), + 'NOM_CMP_MED' : ('SIG1','SIG2','SIG3','SIG4','SIG5','SIG6',),}, + 'Q4GS': {'NOM_CMP' : ('NXX','NYY','NXY','MXX','MYY','MXY','QX','QY'), + 'NOM_CMP_MED' : ('SIG1','SIG2','SIG3','SIG4','SIG5','SIG6','SIG7','SIG8'),}, + 'POUT' : {} + + } + + dic_cmp_gauss['DEFORMATION'] = {'DKT3': {'NOM_CMP' : ('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ'), + 'NOM_CMP_MED' : ('EPS1','EPS2','EPS3','EPS4','EPS5','EPS6',),}, + 'Q4GS': {'NOM_CMP' : ('EXX','EYY','EXY','KXX','KYY','KXY','GAX','GAY'), + 'NOM_CMP_MED' : ('EPS1','EPS2','EPS3','EPS4','EPS5','EPS6','EPS7','EPS8'),}, + 'POUT' : {} + + } + + dic_cmp_gauss['ECROUISSAGE'] = {'DKT3': {'NOM_CMP' : ('V1','V2'), + 'NOM_CMP_MED' : ('VAR8','VAR9'),}, + 'Q4GS' : {'NOM_CMP' : ('V1','V2'), + 'NOM_CMP_MED' : ('VAR8','VAR9'),}, + 'POUT' : {} + + } + + # Dictionnaire permettant de traduire le champ epx en med au nom asscie dans aster +# AA epx2aster = {'CONTRAINTE':'SIEF_ELGA','ECROUISSAGE':'VARI_ELGA'} + epx2aster = {'CONTRAINTE':'SIEF_ELGA','DEFORMATION':'EPSI_ELGA_DEPL','ECROUISSAGE':'VARI_ELGA'} + +# AA : desactive pour le moment +# # Enrichir la liste format_med par les champs aux pts de gauss +# imode = 0 +# if debug: print 'self.modelisations',self.modelisations +# for modelisation in self.modelisations : +# #if modelisation in ['Q4GS','DKT3'] : +# imode += 1 +# numero = string.replace('%3.i' %imode,' ','0') +# for champ in dic_cmp_gauss.keys(): +# if len(dic_cmp_gauss[champ][modelisation]) > 0 : +# nom_cham_med = 'CHAMP___'+ champ + (13-len(champ))*'_' + numero +# nom_cham = epx2aster[champ] +# nom_cmp = dic_cmp_gauss[champ][modelisation]['NOM_CMP'] +# nom_cmp_med = dic_cmp_gauss[champ][modelisation]['NOM_CMP_MED'] +# # ajouer a la list format_med +# format_med.append(_F(NOM_CHAM_MED=nom_cham_med,NOM_CMP=nom_cmp, +# NOM_CMP_MED=nom_cmp_med,NOM_CHAM=nom_cham) +# ) + + # Lire le fichier med avec les options choisies dans la liste format_med + unite = self.get_unite_libre() + DEFI_FICHIER(UNITE=unite,ACTION='LIBERER'); + fort = 'fort.%i' %unite + if os.path.isfile(fort) : os.remove(fort) + + os.symlink(fichier_med,fort) + + # Regeneration des mots-cles EXCIT passés en argument de la macro + dExcit=[] + for j in self.EXCIT : + dExcit.append(j.cree_dict_valeurs(j.mc_liste)) + for i in dExcit[-1].keys(): + if dExcit[-1][i]==None : del dExcit[-1][i] + resu = LIRE_RESU(TYPE_RESU='EVOL_NOLI', +# VERI_ELGA='NON', + FORMAT='MED', + MODELE=self.NEW_MODELE, + FORMAT_MED=format_med, + UNITE=unite, + CHAM_MATER=self.CHAM_MATER, + CARA_ELEM=self.CARA_ELEM, + TOUT_ORDRE='OUI', + EXCIT=dExcit, + INFO=self.INFO, + ); + + __EPN = CREA_CHAMP( + INFO = self.INFO, + TYPE_CHAM = 'ELGA_NEUT_R', + OPERATION = 'AFFE', + MODELE = self.NEW_MODELE, + PROL_ZERO = 'OUI', + AFFE = self.listEpais, + ) + __EPN2 = CREA_CHAMP( + INFO = self.INFO, + TYPE_CHAM = 'ELGA_NEUT_R', + OPERATION = 'AFFE', + MODELE = self.NEW_MODELE, + PROL_ZERO = 'OUI', + AFFE = self.listEpais2, + ) + __UNN = CREA_CHAMP( + INFO = self.INFO, + TYPE_CHAM = 'ELGA_NEUT_R', + OPERATION = 'AFFE', + MODELE = self.NEW_MODELE, + PROL_ZERO = 'OUI', + AFFE = _F(VALE=(1.,1.), TOUT='OUI', NOM_CMP=('X21','X22')), + ) + __FONC1 = FORMULE(VALE='X1*X21',NOM_PARA=('X1','X21')) + __FONC2 = FORMULE(VALE='X2*X21',NOM_PARA=('X2','X21')) + __FONC3 = FORMULE(VALE='X3*X21',NOM_PARA=('X3','X21')) + __FONC4 = FORMULE(VALE='X4*X22',NOM_PARA=('X4','X22')) + __FONC5 = FORMULE(VALE='X5*X22',NOM_PARA=('X5','X22')) + __FONC6 = FORMULE(VALE='X6*X22',NOM_PARA=('X6','X22')) + __FONC7 = FORMULE(VALE='X7*X21',NOM_PARA=('X7','X21')) + __FONC8 = FORMULE(VALE='X8*X21',NOM_PARA=('X8','X21')) + __FONC11 = FORMULE(VALE='X11*X21',NOM_PARA=('X11','X21')) + __FONC12 = FORMULE(VALE='X12*X21',NOM_PARA=('X12','X21')) + __FONC13 = FORMULE(VALE='X13*X21',NOM_PARA=('X13','X21')) + __FONC14 = FORMULE(VALE='X14*X22',NOM_PARA=('X14','X22')) + __FONC15 = FORMULE(VALE='X15*X22',NOM_PARA=('X15','X22')) + __FONC16 = FORMULE(VALE='X16*X22',NOM_PARA=('X16','X22')) + __FONC17 = FORMULE(VALE='X17*X21',NOM_PARA=('X17','X21')) + __FONC18 = FORMULE(VALE='X18*X21',NOM_PARA=('X18','X21')) + + __FONCC = CREA_CHAMP( + INFO = self.INFO, + TYPE_CHAM = 'ELGA_NEUT_F', + OPERATION = 'AFFE', + MODELE = self.NEW_MODELE, + PROL_ZERO = 'OUI', + AFFE = _F( + TOUT = 'OUI', + NOM_CMP = ('X1','X2','X3','X4','X5','X6','X7','X8','X11','X12','X13','X14','X15','X16','X17','X18'), + VALE_F = (__FONC1,__FONC2,__FONC3,__FONC4,__FONC5,__FONC6,__FONC7,__FONC8,__FONC11,__FONC12,__FONC13, + __FONC14,__FONC15,__FONC16,__FONC17,__FONC18)), + ) + __FONCC2 = CREA_CHAMP( + INFO = self.INFO, + TYPE_CHAM = 'ELGA_NEUT_F', + OPERATION = 'AFFE', + MODELE = self.NEW_MODELE, + PROL_ZERO = 'OUI', + AFFE = _F( + TOUT = 'OUI', + NOM_CMP = ('X1','X2'), + VALE_F = (__FONC1,__FONC2)), + ) + listEffg = [] + i=0 + listType=[] + __SIG11 = [None]*10 + __SIG21 = [None]*10 + + # Pour masquer certaines alarmes + from Utilitai.Utmess import MasquerAlarme, RetablirAlarme + MasquerAlarme('MED_83') + MasquerAlarme('MED_98') + + while 1: + # index=1 + # pas = self.ARCHIVAGE['PAS_NBRE'] + # dicDetr=[] + # if 'Q4GS' in self.modelisations : + err = 0 + try : + __SIG11[i] = LIRE_CHAMP( + INFO = self.INFO, + TYPE_CHAM = 'ELGA_SIEF_R', + UNITE = 99, + NUME_PT = 0, + MODELE = self.NEW_MODELE, + MAILLAGE = self.reupere_structure(self.MODELE,'MAILLAGE'), + PROL_ZERO = 'OUI', + NOM_MED = 'CHAMP___CONTRAINTE___00%d'%(i+1), + NOM_CMP = dic_cmp_gauss['CONTRAINTE']['Q4GS']['NOM_CMP'], + NOM_CMP_MED = dic_cmp_gauss['CONTRAINTE']['Q4GS']['NOM_CMP_MED']) + # dicDetr.append({'NOM' : __SIG11}) + DETRUIRE(CONCEPT=_F(NOM = __SIG11[i]), INFO=1) + listType.append('Q4GS') + # index=2 + except : + err+=1 + try : + __SIG21[i] = LIRE_CHAMP( + INFO = self.INFO, + TYPE_CHAM = 'ELGA_SIEF_R', + UNITE = 99, + NUME_PT = 0, + MODELE = self.NEW_MODELE, + MAILLAGE = self.reupere_structure(self.MODELE,'MAILLAGE'), + PROL_ZERO = 'OUI', + NOM_MED = 'CHAMP___CONTRAINTE___00%d'%(i+1), + NOM_CMP = dic_cmp_gauss['CONTRAINTE']['DKT3']['NOM_CMP'], + NOM_CMP_MED = dic_cmp_gauss['CONTRAINTE']['DKT3']['NOM_CMP_MED']), + DETRUIRE(CONCEPT=_F(NOM = __SIG21[i]), INFO=1) + if len(listType) 1 : + # break + # DETRUIRE(CONCEPT=dicDetr) + # i+=1 + + # Pour la gestion des alarmes + RetablirAlarme('MED_83') + RetablirAlarme('MED_98') + + + nbChamp = i + itot=len(resu.LIST_PARA()['INST']) + __EFFG=[None]*itot + # __EPSG=[None]*itot + __ECRG=[None]*itot + __SIG1 = [None]*nbChamp + __SIG2 = [None]*nbChamp + for i in xrange(itot) : + dicAffe=[] + dicAffe2=[] + dicAffe3=[] + index=1 + pas = self.ARCHIVAGE['PAS_NBRE'] + dicAsse = [{'TOUT' : 'OUI', 'CHAM_GD' : __EPN, 'NOM_CMP' : 'X21', 'NOM_CMP_RESU' : 'X21'}] + dicAsse.append({'TOUT' : 'OUI', 'CHAM_GD' : __EPN2, 'NOM_CMP' : 'X22', 'NOM_CMP_RESU' : 'X22', 'CUMUL' : 'OUI','COEF_R':1.}) + dicAsse2 = [{'TOUT' : 'OUI', 'CHAM_GD' : __UNN, 'NOM_CMP' : 'X21', 'NOM_CMP_RESU' : 'X21'}] + dicAsse2.append({'TOUT' : 'OUI', 'CHAM_GD' : __UNN, 'NOM_CMP' : 'X22', 'NOM_CMP_RESU' : 'X22', 'CUMUL' : 'OUI','COEF_R':1.}) + dicAsse3 = [{'TOUT' : 'OUI', 'CHAM_GD' : __UNN, 'NOM_CMP' : 'X21', 'NOM_CMP_RESU' : 'X21'}] + dicAsse3.append({'TOUT' : 'OUI', 'CHAM_GD' : __UNN, 'NOM_CMP' : 'X22', 'NOM_CMP_RESU' : 'X22', 'CUMUL' : 'OUI','COEF_R':1.}) + dicDetr=[] + # if 'Q4GS' in self.modelisations : + for j in xrange(nbChamp) : + if listType[j] == 'Q4GS' : + __SIG1[j] = LIRE_CHAMP( + INFO = self.INFO, + TYPE_CHAM = 'ELGA_SIEF_R', + UNITE = 99, + NUME_PT = resu.LIST_PARA()['NUME_ORDRE'][i], + MODELE = self.NEW_MODELE, + MAILLAGE = self.reupere_structure(self.MODELE,'MAILLAGE'), + PROL_ZERO = 'OUI', + NOM_MED = 'CHAMP___CONTRAINTE___00%d'%(j+1), + NOM_CMP = dic_cmp_gauss['CONTRAINTE']['Q4GS']['NOM_CMP'], + NOM_CMP_MED = dic_cmp_gauss['CONTRAINTE']['Q4GS']['NOM_CMP_MED'], + ) + # __EPS1 = LIRE_CHAMP( + # INFO = self.INFO, + # TYPE_CHAM = 'ELGA_EPSI_R', + # UNITE = 99, + # NUME_PT = resu.LIST_PARA()['NUME_ORDRE'][i], + # MODELE = self.NEW_MODELE, + # MAILLAGE = self.reupere_structure(self.MODELE,'MAILLAGE'), + # PROL_ZERO = 'OUI', + # NOM_MED = 'CHAMP___DEFORM_TOT___001', + # NOM_CMP = dic_cmp_gauss['DEFORMATION']['Q4GS']['NOM_CMP'], + # NOM_CMP_MED = dic_cmp_gauss['DEFORMATION']['Q4GS']['NOM_CMP_MED']) +# __ECR1 = LIRE_CHAMP( +# INFO = self.INFO, +# TYPE_CHAM = 'ELGA_VARI_R', +# UNITE = 99, +# NUME_PT = resu.LIST_PARA()['NUME_ORDRE'][i], +# MODELE = self.NEW_MODELE, +# MAILLAGE = self.reupere_structure(self.MODELE,'MAILLAGE'), +# PROL_ZERO = 'OUI', +# NOM_MED = 'CHAMP___ECROUISSAGE__001', +# NOM_CMP = dic_cmp_gauss['ECROUISSAGE']['Q4GS']['NOM_CMP'], +# NOM_CMP_MED = dic_cmp_gauss['ECROUISSAGE']['Q4GS']['NOM_CMP_MED']) + dicDetr.append({'NOM' : __SIG1[j]}) + dicAsse.append({'TOUT' : 'OUI', 'CHAM_GD' : __SIG1[j], 'NOM_CMP' : tuple(dic_cmp_gauss['CONTRAINTE']['Q4GS']['NOM_CMP']), + 'NOM_CMP_RESU' : ('X1','X2','X3','X4','X5','X6','X7','X8'), 'CUMUL' : 'OUI','COEF_R':1.}) + # dicAsse2.append({'TOUT' : 'OUI', 'CHAM_GD' : __EPS1, 'NOM_CMP' : tuple(dic_cmp_gauss['DEFORMATION']['Q4GS']['NOM_CMP']), + # 'NOM_CMP_RESU' : ('X1','X2','X3','X4','X5','X6','X7','X8'), 'CUMUL' : 'OUI','COEF_R':1.}) +# dicAsse3.append({'TOUT' : 'OUI', 'CHAM_GD' : __ECR1, 'NOM_CMP' : tuple(dic_cmp_gauss['ECROUISSAGE']['Q4GS']['NOM_CMP']), +# 'NOM_CMP_RESU' : ('X1','X2'), 'CUMUL' : 'OUI','COEF_R':1.}) + else : + __SIG2[j] = LIRE_CHAMP( + INFO = self.INFO, + TYPE_CHAM = 'ELGA_SIEF_R', + UNITE = 99, + NUME_PT = resu.LIST_PARA()['NUME_ORDRE'][i], + MODELE = self.NEW_MODELE, + MAILLAGE = self.reupere_structure(self.MODELE,'MAILLAGE'), + PROL_ZERO = 'OUI', + NOM_MED = 'CHAMP___CONTRAINTE___00%d'%(j+1), + NOM_CMP = dic_cmp_gauss['CONTRAINTE']['DKT3']['NOM_CMP'], + NOM_CMP_MED = dic_cmp_gauss['CONTRAINTE']['DKT3']['NOM_CMP_MED'], + ) + # __EPS2 = LIRE_CHAMP( + # INFO = self.INFO, + # TYPE_CHAM = 'ELGA_EPSI_R', + # UNITE = 99, + # NUME_PT = resu.LIST_PARA()['NUME_ORDRE'][i], + # MODELE = self.NEW_MODELE, + # MAILLAGE = self.reupere_structure(self.MODELE,'MAILLAGE'), + # PROL_ZERO = 'OUI', + # NOM_MED = 'CHAMP___DEFORM_TOT___00%d'%index, + # NOM_CMP = dic_cmp_gauss['DEFORMATION']['DKT3']['NOM_CMP'], + # NOM_CMP_MED = dic_cmp_gauss['DEFORMATION']['DKT3']['NOM_CMP_MED']), +# __ECR2 = LIRE_CHAMP( +# INFO = self.INFO, +# TYPE_CHAM = 'ELGA_VARI_R', +# UNITE = 99, +# NUME_PT = resu.LIST_PARA()['NUME_ORDRE'][i], +# MODELE = self.NEW_MODELE, +# MAILLAGE = self.reupere_structure(self.MODELE,'MAILLAGE'), +# PROL_ZERO = 'OUI', +# NOM_MED = 'CHAMP___ECROUISSAGE__00%d'%index, +# NOM_CMP = dic_cmp_gauss['ECROUISSAGE']['Q4GS']['NOM_CMP'], +# NOM_CMP_MED = dic_cmp_gauss['ECROUISSAGE']['Q4GS']['NOM_CMP_MED']) + dicAsse.append({'TOUT' : 'OUI', 'CHAM_GD' : __SIG2[j], 'NOM_CMP' : tuple(dic_cmp_gauss['CONTRAINTE']['DKT3']['NOM_CMP']), + 'NOM_CMP_RESU' : ('X11','X12','X13','X14','X15','X16'), 'CUMUL' : 'OUI','COEF_R':1.}) + # dicAsse2.append({'TOUT' : 'OUI', 'CHAM_GD' : __EPS2, 'NOM_CMP' : tuple(dic_cmp_gauss['DEFORMATION']['DKT3']['NOM_CMP']), + # 'NOM_CMP_RESU' : ('X11','X12','X13','X14','X15','X16'), 'CUMUL' : 'OUI','COEF_R':1.}) +# dicAsse3.append({'TOUT' : 'OUI', 'CHAM_GD' : __ECR2, 'NOM_CMP' : tuple(dic_cmp_gauss['ECROUISSAGE']['DKT3']['NOM_CMP']), +# 'NOM_CMP_RESU' : ('X11','X12'), 'CUMUL' : 'OUI','COEF_R':1.}) + dicDetr.append({'NOM' : __SIG2[j]}) + # dicDetr.append({'NOM' : __EPS2}) +# dicDetr.append({'NOM' : __ECR2}) + # dicDetr.append({'NOM' : __EPS1}) +# dicDetr.append({'NOM' : __ECR1}) + # if 'DKT3' in self.modelisations: + + __SIGN = CREA_CHAMP( + INFO = self.INFO, + TYPE_CHAM = 'ELGA_NEUT_R', + OPERATION = 'ASSE', + PROL_ZERO = 'OUI', + MODELE = self.NEW_MODELE, + ASSE = dicAsse, + ) + # __EPSN = CREA_CHAMP( + # INFO = self.INFO, + # TYPE_CHAM = 'ELGA_NEUT_R', + # OPERATION = 'ASSE', + # PROL_ZERO = 'OUI', + # MODELE = self.NEW_MODELE, + # ASSE = dicAsse2) +# __ECRN = CREA_CHAMP( +# INFO = self.INFO, +# TYPE_CHAM = 'ELGA_NEUT_R', +# OPERATION = 'ASSE', +# PROL_ZERO = 'OUI', +# MODELE = self.NEW_MODELE, +# ASSE = dicAsse3) + dicDetr.append({'NOM' : __SIGN}) + # dicDetr.append({'NOM' : __EPSN}) +# dicDetr.append({'NOM' : __ECRN}) + __EFFGN = CREA_CHAMP( + INFO = self.INFO, + TYPE_CHAM = 'ELGA_NEUT_R', + OPERATION = 'EVAL', + CHAM_F = __FONCC, + CHAM_PARA = (__SIGN), + ) + # __EPSGN = CREA_CHAMP( + # INFO = self.INFO, + # TYPE_CHAM = 'ELGA_NEUT_R', + # OPERATION = 'EVAL', + # CHAM_F = __FONCC, + # CHAM_PARA = (__EPSN)) +# __ECRGN = CREA_CHAMP( +# INFO = self.INFO, +# TYPE_CHAM = 'ELGA_NEUT_R', +# OPERATION = 'EVAL', +# CHAM_F = __FONCC2, +# CHAM_PARA = (__ECRN)) + dicDetr.append({'NOM' : __EFFGN}) + # dicDetr.append({'NOM' : __EPSGN}) +# dicDetr.append({'NOM' : __ECRGN}) + __EFFG[i] = CREA_CHAMP( + INFO = self.INFO, + TYPE_CHAM = 'ELGA_SIEF_R', + OPERATION = 'ASSE', + PROL_ZERO = 'OUI', + MODELE = self.NEW_MODELE, + ASSE = _F( + TOUT = 'OUI', + CHAM_GD = __EFFGN, + NOM_CMP = ('X1','X2','X3','X4','X5','X6','X7','X8')+('X11','X12','X13','X14','X15','X16'), + NOM_CMP_RESU = tuple(dic_cmp_gauss['CONTRAINTE']['Q4GS']['NOM_CMP']+dic_cmp_gauss['CONTRAINTE']['DKT3']['NOM_CMP'])), + ) + # __EPSG[i] = CREA_CHAMP( + # INFO = self.INFO, + # TYPE_CHAM = 'ELGA_EPSI_R', + # OPERATION = 'ASSE', + # PROL_ZERO = 'OUI', + # MODELE = self.NEW_MODELE, + # ASSE = _F( + # TOUT = 'OUI', + # CHAM_GD = __EPSGN, + # NOM_CMP = ('X1','X2','X3','X4','X5','X6','X7','X8')+('X11','X12','X13','X14','X15','X16'), + # NOM_CMP_RESU = tuple(dic_cmp_gauss['DEFORMATION']['Q4GS']['NOM_CMP']+dic_cmp_gauss['DEFORMATION']['DKT3']['NOM_CMP']))) +# __ECRG[i] = CREA_CHAMP( +# INFO = self.INFO, +# TYPE_CHAM = 'ELGA_VARI_R', +# OPERATION = 'ASSE', +# PROL_ZERO = 'OUI', +# MODELE = self.NEW_MODELE, +# ASSE = _F( +# TOUT = 'OUI', +# CHAM_GD = __ECRGN, +# NOM_CMP = ('X1','X2'), +# NOM_CMP_RESU = tuple(dic_cmp_gauss['ECROUISSAGE']['Q4GS']['NOM_CMP']))) + dicAffe.append({'CHAM_GD' : __EFFG[i], 'MODELE' : self.NEW_MODELE,'CHAM_MATER' : self.CHAM_MATER,'INST': resu.LIST_PARA()['INST'][i]}) + # dicAffe2.append({'CHAM_GD' : __EPSG[i], 'MODELE' : self.NEW_MODELE,'CHAM_MATER' : self.CHAM_MATER,'INST': resu.LIST_PARA()['INST'][i]}) +# dicAffe3.append({'CHAM_GD' : __ECRG[i], 'MODELE' : self.NEW_MODELE,'CHAM_MATER' : self.CHAM_MATER,'INST': resu.LIST_PARA()['INST'][i]}) + DETRUIRE(CONCEPT=dicDetr, INFO=1) + resu = CREA_RESU(reuse=resu, + OPERATION = 'AFFE', + TYPE_RESU = 'EVOL_NOLI', + NOM_CHAM = 'SIEF_ELGA', + AFFE = dicAffe, + ) + # resu = CREA_RESU(reuse=resu, + # OPERATION = 'AFFE', + # TYPE_RESU = 'EVOL_NOLI', + # NOM_CHAM = 'EPSI_ELGA_DEPL', + # AFFE = dicAffe2) + resu = CREA_RESU(reuse=resu, + OPERATION = 'AFFE', + TYPE_RESU = 'EVOL_NOLI', + NOM_CHAM = 'VARI_ELGA', + AFFE = dicAffe3, + ) + + DEFI_FICHIER(UNITE=unite,ACTION='LIBERER'); + + os.remove(fort) + +#----------------------------------------------------------------------- + def lancer_calcul(self,fichier_med='auto'): + + fichier_epx = self.nom_fichiers['COMMANDE'] + EXEC_LOGICIEL(LOGICIEL='cd %s ; %s %s ; iret=$? ; cd %s ; exit $iret' % (self.pwd + self.REPE, self.EXEC, fichier_epx, self.pwd), + INFO=2) + + +#------------------------------------------------------------------------ +#----------------------------- FIN class EUROPLEXUS --------------------- +#------------------------------------------------------------------------ + + +#------------------------------------------------------------------------ +#----------------------------- class POUTRE ----------------------------- +#------------------------------------------------------------------------ + +class POUTRE: + def __init__(self,MAILLAGE,CARA_ELEM): + + # recuperer les infos du maillage sous format python + self.MApyt = MAIL_PY() + self.MApyt.FromAster(MAILLAGE) + self.CARA_ELEM = CARA_ELEM + # un dictionnaire stockant tous orientations definis dans AFF_CARA_ELEM + self.dic_gma = self.orientation_cara_elem() + +#------------------------------------------------------------------------ + def getvecteurs(self,groupes_poutres,verif='non'): + vecteurs = {} + ig = 0 + message = 0 + for gr in groupes_poutres : + ig += 1 + if not self.dic_gma.has_key(gr): self.dic_gma[gr] = {'ANGL_VRIL':0.0} + vecteurs[gr] = self.get_vecty_group_ma(gr) + if verif == 'oui': + if ig > 1 : + if not vecteurs_egaux(vecteurs[gr],vect_old) : message = 1 + vect_old = vecteurs[gr] + + if message : UTMESS('F','PLEXUS_10',valk=groupes_poutres) + + return vecteurs + +#------------------------------------------------------------------------ + def orientation_cara_elem(self,): + + dic_gma = {} + etapes = self.CARA_ELEM.etape.valeur + + if not etapes.has_key('ORIENTATION') : return dic_gma + + orientation = etapes['ORIENTATION'] + try : + test = orientation [0] + except : + orientation = [orientation] + + for ll in orientation : + cara = ll['CARA'] + if cara in ['ANGL_VRIL','ANGL_NAUT','VECT_Y'] : + if ll.has_key('GROUP_MA') : + group_ma = ll['GROUP_MA'] + if types.TypeType(group_ma) == types.StringType : group_ma = (group_ma,) + a = ll['VALE'] + for gr in group_ma: + if not dic_gma.has_key(gr): dic_gma[gr] = {} + dic_gma[gr][cara] = a + + for gr in dic_gma.keys() : + if not dic_gma[gr].has_key('VECT_Y'): + if not dic_gma[gr].has_key('ANGL_VRIL') : dic_gma[gr]['ANGL_VRIL'] = 0.0 + if dic_gma[gr].has_key('ANGL_NAUT'): + if len(dic_gma[gr]['ANGL_NAUT']) == 2 : + dic_gma[gr]['ANGL_NAUT'] = list(dic_gma[gr]['ANGL_NAUT']) + [dic_gma[gr]['ANGL_VRIL']] + + return(dic_gma) + +#------------------------------------------------------------------------ + def get_vecty_group_ma(self,group_ma): + + #if debug: print '*'*10 + #if debug: print 'Test de group_ma',group_ma + #if debug: print '*'*10 + + message = 0 + + if self.dic_gma[group_ma].has_key('VECT_Y') : return self.dic_gma[group_ma]['VECT_Y'] + + if not self.dic_gma[group_ma].has_key('ANGL_NAUT'):calcul_angle = 1 + else: calcul_angle = 0 + + mailles = self.MApyt.gma[string.rstrip(group_ma)] + + for imaille in range(len(mailles)): + maille = mailles[imaille] + if calcul_angle: + alpha,beta = self.calcul_angles_naut(maille) + angl = [alpha,beta,self.dic_gma[group_ma]['ANGL_VRIL']] + else: + angl = self.dic_gma[group_ma]['ANGL_NAUT'] + + vect_y = self.angle2vecty(angl) + if imaille > 1 : + if not vecteurs_egaux(vect_y0,vect_y) : message = 1 + vect_y0 = vect_y + + self.dic_gma[group_ma]['VECT_Y'] = vect_y + + if message : + #if debug: print 'group_ma',group_ma + UTMESS('F','PLEXUS_11',valk=group_ma) + + return vect_y + +#------------------------------------------------------------------------ + def angle2vecty(self,angl): + #transformer en rd + for iangl in range(len(angl)): + angl[iangl] = N.pi*angl[iangl]/180. + + cosa = math.cos( angl[0] ) + sina = math.sin( angl[0] ) + cosb = math.cos( angl[1] ) + sinb = math.sin( angl[1] ) + cosg = math.cos( angl[2] ) + sing = math.sin( angl[2] ) + vect = [ sing*sinb*cosa - cosg*sina , cosg*cosa + sing*sinb*sina , sing*cosb ] + for ii in range(len(vect)): + if abs(vect[ii]) <= tst : vect[ii] = 0.0 + vect = N.array(vect) + vect = vect/norme(vect) + return vect + +#------------------------------------------------------------------------ + def get_coor_nodes_maille(self,maille): + node1,node2 = self.MApyt.co[maille] + coor1 = self.MApyt.cn[node1] + coor2 = self.MApyt.cn[node2] + return [coor1,coor2] + +#------------------------------------------------------------------------ + def calcul_angles_naut(self,maille): + + # Angles directeurs d'une poutre (nautiques) + + a,b = self.get_coor_nodes_maille(maille) + + gx = [ b[0]-a[0] , b[1]-a[1] , b[2]-a[2] ] + + if( (abs(gx[1]) < tst) and (abs(gx[0]) <= tst) ): + alpha = 0.0 + else: + alpha = math.atan2(gx[1],gx[0]) + + p = math.sqrt( gx[0]*gx[0] + gx[1]*gx[1] ) + if( (abs(gx[2]) < tst ) and (abs(p) <=tst) ): + beta = 0.0 + else: + beta = -math.atan2(gx[2],p) + + # alpha et Beta en degre + alpha = alpha*180./math.pi + beta = beta*180./math.pi + + return alpha,beta + +#------------------------------------------------------------------------ +#----------------------------- FIN class POUTRE ------------------------- +#------------------------------------------------------------------------ + + +#------------------------------------------------------------------------ +#----------------------------- class DKT -------------------------------- +#------------------------------------------------------------------------ + +class DKT: + + def __init__(self,MAILLAGE): + + self.MAILLAGE = MAILLAGE + # recuperer les infos du maillage sous format python + self.MApyt = MAIL_PY() + self.MApyt.FromAster(MAILLAGE) + + def aster2epx(self,groups): + + # initialisations du dic contenant les mailles de tria3 et quad4 + dic_groups = {} + for cle in ['TRIA3','QUAD4']: + dic_groups[cle] = [] + # placer les mailles dans le champ associe + for gr in groups: + mailles = self.MApyt.gma[string.rstrip(gr)] + for maille in mailles: + code_maille = self.MApyt.tm[maille] + type_maille = self.MApyt.nom[code_maille] + maille_initiale = string.rstrip(self.MApyt.correspondance_mailles[maille]) + if not maille_initiale in dic_groups[type_maille] : + dic_groups[type_maille].append(maille_initiale) + + # creer le mot-cle facteur permettant de creer les groupes de mailles associes au TRIA3 et QUAD4 + crea_group_ma = [] + # dictionnair contenant les noms des groups qui vont etre creer au besoin + nom_groups = {} + for cle in dic_groups.keys() : + if len(dic_groups[cle]) > 0 : + crea_group_ma.append({'MAILLE':dic_groups[cle],'NOM':cle}) + nom_groups[cle] = [cle] + else: + nom_groups[cle] = [] + # ce n'est pas necessaire de creer les group_ma si on n'a pas de quad4 + if len(dic_groups['QUAD4']) >0: + + #global DEFI_GROUP + + DEFI_GROUP(reuse = self.MAILLAGE, + MAILLAGE = self.MAILLAGE, + CREA_GROUP_MA = crea_group_ma, + ); + + else : + # on affecte au TRIA les groupes deja fournis en argument + nom_groups['TRIA3'] = groups + + return nom_groups + +#------------------------------------------------------------------------ +#----------------------------- FIN class DKT ---------------------------- +#------------------------------------------------------------------------ diff --git a/Aster/Cata/cataSTA9/Macro/calc_modal_ops.py b/Aster/Cata/cataSTA9/Macro/calc_modal_ops.py new file mode 100644 index 00000000..c462a3b6 --- /dev/null +++ b/Aster/Cata/cataSTA9/Macro/calc_modal_ops.py @@ -0,0 +1,162 @@ +#@ MODIF calc_modal_ops Macro DATE 14/10/2008 AUTEUR NISTOR I.NISTOR + +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== +#-*- coding: iso-8859-1 -*- + + +def calc_modal_ops(self,MODELE,CHAM_MATER,CARA_ELEM,AMORTISEMENT, + SOLVEUR,CHARGE,INST,METHODE,CALC_FREQ, MODE_RIGIDE, + VERI_MODE,INFO,**args): + """ + Ecriture de la macro CALC_MODAL + """ + from Accas import _F + ier=0 + from Utilitai.Utmess import UTMESS + + # On importe les definitions des commandes a utiliser dans la macro + # Le nom de la variable doit etre obligatoirement le nom de la commande + CALC_MATR_ELEM=self.get_cmd('CALC_MATR_ELEM') + NUME_DDL =self.get_cmd('NUME_DDL') + ASSE_MATRICE =self.get_cmd('ASSE_MATRICE') + MODE_ITER_SIMULT =self.get_cmd('MODE_ITER_SIMULT') + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + + + # on defini la liste des mots cle pour les appels aux CALC_MATR_ELEM + motsclece={} + if CHARGE != None: motsclece['CHARGE'] =CHARGE + if CHAM_MATER != None: motsclece['CHAM_MATER'] =CHAM_MATER + if CARA_ELEM != None: motsclece['CARA_ELEM'] =CARA_ELEM + if INST != None: motsclece['INST'] =INST + + #c'est avec le mot cle AMORTISEMENT qu'on decide si on calcule la matrice C + # d'amortisement + + + _a=CALC_MATR_ELEM(MODELE=MODELE, OPTION='RIGI_MECA', **motsclece) + _b=CALC_MATR_ELEM(MODELE=MODELE, OPTION='MASS_MECA', **motsclece) + if AMORTISEMENT=='OUI': + _c=CALC_MATR_ELEM(MODELE=MODELE, OPTION='AMOR_MECA', + RIGI_MECA=_a, MASS_MECA=_b,**motsclece) + + #on produit en local le concept NUME_DDL, il n'est pas visible pour l'utilisateur + + # Les mots cles simples sous SOLVEUR sont par defaut MULT_FRONT/METIS + methode=SOLVEUR['METHODE'] + renum=SOLVEUR['RENUM'] + + _num=NUME_DDL(MATR_RIGI=_a,METHODE=methode,RENUM=renum,INFO=INFO) + + #assemblages des matrices + _rigas=ASSE_MATRICE(MATR_ELEM=_a,NUME_DDL=_num) + _masas=ASSE_MATRICE(MATR_ELEM=_b,NUME_DDL=_num) + if AMORTISEMENT=='OUI': + _amoras=ASSE_MATRICE(MATR_ELEM=_c,NUME_DDL=_num) + + #lancement du calcul des modes propres + # on defini la liste des mots cle pour l'appel au MODE_ITER_SIMULT + + motscit={} + motscfa={} + + if METHODE=='TRI_DIAG': + if args.has_key('NMAX_ITER_ORTHO'): + motscit['NMAX_ITER_ORTHO'] =args['NMAX_ITER_ORTHO'] + if args.has_key('PREC_ORTHO'): + motscit['PREC_ORTHO'] =args['PREC_ORTHO'] + if args.has_key('PREC_LANCZOS'): + motscit['PREC_LANCZOS'] =args['PREC_LANCZOS'] + if args.has_key('MAX_ITER_QR'): + motscit['NMAX_ITER_QR'] =args['NMAX_ITER_QR'] + elif METHODE=='JACOBI': + if args.has_key('NMAX_ITER_BATHE'): + motscit['NMAX_ITER_BATHE'] =args['NMAX_ITER_BATHE'] + if args.has_key('PREC_BATHE'): + motscit['PREC_BATHE'] =args['PREC_BATHE'] + if args.has_key('NMAX_ITER_JACOBI'): + motscit['NMAX_ITER_JACOBI']=args['NMAX_ITER_JACOBI'] + if args.has_key('PREC_JACOBI'): + motscit['PREC_JACOBI'] =args['PREC_JACOBI'] + elif METHODE=='SORENSEN': + if args.has_key('NMAX_ITER_SOREN'): + motscit['NMAX_ITER_SOREN'] =args['NMAX_ITER_SOREN'] + if args.has_key('PARA_ORTHO_SOREN'): + motscit['PARA_ORTHO_SOREN']=args['PARA_ORTHO_SOREN'] + if args.has_key('PREC_SOREN'): + motscit['PREC_SOREN'] =args['PREC_SOREN'] + elif METHODE=='QZ': + if args.has_key('TYPE_QZ'): + motscit['TYPE_QZ'] =args['TYPE_QZ'] + + if CALC_FREQ['DIM_SOUS_ESPACE']: motscfa['DIM_SOUS_ESPACE']=CALC_FREQ['DIM_SOUS_ESPACE'] + if CALC_FREQ['COEF_DIM_ESPACE']: motscfa['COEF_DIM_ESPACE']=CALC_FREQ['COEF_DIM_ESPACE'] + + if CALC_FREQ['OPTION']=='PLUS_PETITE': + motscfa['NMAX_FREQ']=CALC_FREQ['NMAX_FREQ'] + + if CALC_FREQ['OPTION']=='CENTRE': + motscfa['FREQ']=CALC_FREQ['FREQ'] + if CALC_FREQ['AMOR_REDUIT']: motscfa['AMOR_REDUIT']=CALC_FREQ['AMOR_REDUIT'] + motscfa['NMAX_FREQ']=CALC_FREQ['NMAX_FREQ'] + + if CALC_FREQ['OPTION']=='BANDE': + motscfa['FREQ']=CALC_FREQ['FREQ'] + + motscit['CALC_FREQ'] = _F(OPTION =CALC_FREQ['OPTION'], + SEUIL_FREQ =CALC_FREQ['SEUIL_FREQ'], + NPREC_SOLVEUR =CALC_FREQ['NPREC_SOLVEUR'], + NMAX_ITER_SHIFT =CALC_FREQ['NMAX_ITER_SHIFT'], + PREC_SHIFT =CALC_FREQ['PREC_SHIFT'], + APPROCHE =CALC_FREQ['APPROCHE'], + **motscfa) + + motscit['VERI_MODE'] = _F(STOP_ERREUR=VERI_MODE['STOP_ERREUR'], + SEUIL =VERI_MODE['SEUIL'], + STURM =VERI_MODE['STURM'], + PREC_SHIFT =VERI_MODE['PREC_SHIFT']) + + motscit['STOP_FREQ_VIDE'] = CALC_FREQ['STOP_FREQ_VIDE'] + + + if MODE_RIGIDE=='OUI': + mode_rigi='MODE_RIGIDE' + elif MODE_RIGIDE=='NON': + mode_rigi='SANS' + + self.DeclareOut('modes',self.sd) + + if AMORTISEMENT=='NON': + modes=MODE_ITER_SIMULT(MATR_A =_rigas, + MATR_B =_masas, + METHODE =METHODE, + OPTION =mode_rigi, + INFO =INFO, + **motscit) + elif AMORTISEMENT=='OUI': + modes=MODE_ITER_SIMULT(MATR_A =_rigas, + MATR_B =_masas, + MATR_C =_amoras, + METHODE =METHODE, + OPTION =mode_rigi, + INFO =INFO, + **motscit) + + return ier diff --git a/Aster/Cata/cataSTA9/Macro/calc_spec_ops.py b/Aster/Cata/cataSTA9/Macro/calc_spec_ops.py new file mode 100644 index 00000000..a6d669f0 --- /dev/null +++ b/Aster/Cata/cataSTA9/Macro/calc_spec_ops.py @@ -0,0 +1,419 @@ +#@ MODIF calc_spec_ops Macro DATE 21/10/2008 AUTEUR CORUS M.CORUS + +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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 copy +import types +from SD.sd_fonction import sd_fonction + +# ----------------------------------------------------------------------------- +class FonctionError(Exception): pass +class ParametreError(FonctionError): pass # probleme de NOM_PARA +class InterpolationError(FonctionError): pass +class ProlongementError(FonctionError): pass + +# ----------------------------------------------------------------------------- + + +def calc_spec_ops(self,TAB_ECHANT,ECHANT,INTERSPE,TRANSFERT,TITRE,INFO,**args): +# ------------------------------------------------------------------ +# Calcul d'une matrice interspectrale +# a partir de fonctions reelles + + import aster + from types import ListType, TupleType + EnumTypes = (ListType, TupleType) + from Accas import _F + from Utilitai.Utmess import UTMESS + import Numeric + import FFT + + commande='CALC_SPEC' + + ier = 0 + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + + # Le concept sortant (de type table_sdaster ou derive) est tab + self.DeclareOut('tabout', self.sd) + + # On importe les definitions des commandes a utiliser dans la macro + # Le nom de la variable doit etre obligatoirement le nom de la commande + CREA_TABLE = self.get_cmd('CREA_TABLE') + CALC_TABLE = self.get_cmd('CALC_TABLE') + DEFI_FONCTION = self.get_cmd('DEFI_FONCTION') + +#--- Verifications sur les entrees --# + + if (ECHANT==None and TAB_ECHANT==None) : + raise FonctionError, 'Vous devez specifier des fonctions en entree' + + if TAB_ECHANT==None : TAB_ECHANT=[] + if ECHANT==None : ECHANT=[] + if INTERSPE==None : INTERSPE=[] + if TRANSFERT==None : TRANSFERT=[] + if len(TAB_ECHANT)*len(ECHANT) !=0 : + raise FonctionError, 'Vous pouvez specifier une table_fonction ou' + ' une liste de fonctions en entree, mais pas les deux' + if len(TRANSFERT)*len(INTERSPE) !=0 : + raise FonctionError, 'Vous ne pouvez specifier qu' +"'"+'un type de calcul par appel' + + + +#-- Recuperation des entrees --# + + l_f=[] + l_t=[] + l_G=[] + l_H=[] +# for occ in TAB_ECHANT : +# l_t.append(('TAB_ECHANT',occ)) + if TAB_ECHANT: #MC + l_t = TAB_ECHANT.List_F()[0] + + for occ in ECHANT : + l_f.append(('ECHANT',occ)) + for occ in INTERSPE : + l_G.append(('INTERSPE',occ)) + for occ in TRANSFERT : + l_H.append(('TRANSFERT',occ)) + + +# Pour dimensionner les fenetres : +# Cas ECHANT : on recupere simplement la premiere fonction +# Cas_TAB_ECHANT : on recupere toutes les fonctions + + if len(l_f) >0 : + vale_sig=l_f[0][1]['FONCTION'].Valeurs(); + l_ech=len(vale_sig[0]) + dt=vale_sig[0][1]-vale_sig[0][0] + else : + #tab_ast=l_t[0][1]['NOM_TAB']; + tab_ast=l_t['NOM_TAB'] #MC + tab_py=tab_ast.EXTR_TABLE(); + + nom_fonc= tab_py['FONCTION'].values()['FONCTION'] + fonc_py = [sd_fonction(fonc) for fonc in nom_fonc] + temp=fonc_py[0].VALE.get(); + dt=temp[1]-temp[0]; + + l_ech_temp=l_t['LONGUEUR_ECH']; + recouvr_temp=l_t['RECOUVREMENT']; + l_ech_t=[l_ech_temp[0]['DUREE'] , l_ech_temp[0]['POURCENT'],l_ech_temp[0]['NB_PTS'] ]; + recouvr_t=[recouvr_temp[0]['DUREE'] , recouvr_temp[0]['POURCENT'],recouvr_temp[0]['NB_PTS'] ]; + if l_ech_t.count(None)==3 : l_ech=len(temp)/2; + if recouvr_t.count(None)==3 : recouvr=0; + if l_ech_t.count(None)<2 : + raise FonctionError, 'Vous ne pouvez utiliser qu'+"'"+ 'un mot clef pour definir la longueur des echantillons' + if recouvr_t.count(None)<2 : + raise FonctionError, 'Vous ne pouvez utiliser qu'+"'"+'un mot clef pour definir la longueur de recouvrement des echantillons' + for i1 in range(3) : + if l_ech_t[i1] !=None : + if i1 == 0 : + l_ech=int(Numeric.floor(l_ech_t[i1]/dt)); + elif i1 == 1 : + l_ech=int(Numeric.floor((len(temp)/2)*l_ech_t[i1]*0.01)); + elif i1 == 2 : + l_ech=int(Numeric.floor(l_ech_t[i1])) + if l_ech > len(temp)/2 : + raise FonctionError, 'Vous devez specifier une longueur d'+"'"+'echantillon inferieure a la longueur totale de l'+"'"+'acquisition' + for i1 in range(3) : + if recouvr_t[i1] !=None : + if i1 == 0 : + recouvr=int(Numeric.floor(recouvr_t[i1]/dt)); + elif i1 == 1 : + recouvr=int(Numeric.floor((l_ech)*recouvr_t[i1]*0.01)); + elif i1 == 2 : + recouvr=int(Numeric.floor(recouvr_t[i1])) + if recouvr > l_ech : + raise FonctionError, 'La longueur de recouvrement ne peut exceder la longueur ' + +#-- Recuperation des fenetres + + for occ in l_G+l_H : + if occ[1]['FENETRE'] == 'RECT' : + fene=[1.]*l_ech + elif occ[1]['FENETRE'] == 'HAMM' : + fene=[0.54-0.46*Numeric.cos(2*Numeric.pi*i1/(l_ech-1)) for i1 in range(l_ech)] + elif occ[1]['FENETRE'] == 'HANN' : + fene=[0.5-0.5*Numeric.cos(2*Numeric.pi*i1/(l_ech-1)) for i1 in range(l_ech)] + elif occ[1]['FENETRE'] == 'EXPO' : + para=occ[1]['DEFI_FENE'] + if len(para) != 2 : + raise FonctionError, 'Erreur de taille dans DEFI_FENE : ' + 'la fenetre exponentielle est definie par exactement deux valeurs' + fene=[1.]*int(para[0]-1)+[Numeric.exp(para[1]*(i1-int(para[0]-1))*dt) for i1 in range(int(para[0]-1),l_ech)] + elif occ[1]['FENETRE'] == 'PART' : + fene=occ[1]['DEFI_FENE'] + if len(fene) != l_ech : + raise FonctionError, 'Erreur de taille dans DEFI_FENE : ' + 'La fenetre doit etre definie avec le meme nombre de points que les echantillons' + + if len(TRANSFERT)+len(INTERSPE) == 0 : #-- on ne rentre rien : interspectre par defaut - fenetre rectangulaire + fene=[1.]*l_ech + INTERSPE=1.; + + +#-- Recuperation des signaux --# +#-- Verifications et transformations de Fourier --# +#-- Entrees sous formes de table --# + + tmp=[]; + lt=[]; + frq=[]; + fft=[]; + df=[]; + num_ord=[]; + num_mes=[]; + + + if TAB_ECHANT : # Cas TAB_ECHANT + num_mes_temp= tab_py['NUME_MES'].values()['NUME_MES'] + max_mes=Numeric.maximum.reduce(num_mes_temp); + num_ord_temp= tab_py['NUME_ORDRE_I'].values()['NUME_ORDRE_I'] + long_fonc=[len(fonc_py[i1].VALE.get()) for i1 in range(len(fonc_py))] + + N_fen=int(Numeric.floor((Numeric.minimum.reduce(long_fonc)/2-l_ech)/(l_ech-recouvr))+1) + + sig=[]; + dt=[]; + for i1 in range(len(fonc_py)) : + vale=fonc_py[i1].VALE.get(); + temp=(list(vale[0:int(len(vale)/2)])); + sig.append(list(vale[int(len(vale)/2):])); + test_pas=Numeric.subtract(temp[1:],temp[0:-1]) + crit=test_pas.tolist(); + crit.sort(); + dt.append(crit[-1]); + if abs((crit[-1]-crit[0])/crit[-1]) > 1.e-5 : + raise FonctionError, 'L'+"'"+'echantillonage doit etre fait a pas constant' + + for j1 in range(N_fen) : + for i1 in range(len(fonc_py)) : + fft.append(FFT.fft(Numeric.multiply(sig[i1][j1*(l_ech-recouvr):(j1*(l_ech-recouvr)+l_ech)],fene))) + if j1 == 0 : df.append(1./(dt[i1])/l_ech); + num_mes.append(num_mes_temp[i1]+max_mes*j1); + num_ord.append(num_ord_temp[i1]); + + test_df=Numeric.subtract(df[1:],df[0:-1]) + test_df=test_df.tolist(); + test_df.sort(); + if abs(test_df[-1]) > 1.e-5 : + raise FonctionError, 'Toutes les fonctions doivent etre definies ' + 'avec la meme frequence d'+"'"+'echantillonage' + + frq = [df[-1]*i1 for i1 in range(l_ech)] + + +#-- Recuperation des signaux --# +#-- Verifications et transformations de Fourier --# +#-- Entrees sous formes de fonction --# + + if ECHANT: + for occ in l_f : + vale_sig=occ[1]['FONCTION'].Valeurs(); + #-- pour les tests ulterieurs --# + lt.append(len(vale_sig[0])) + if len(vale_sig[0]) != len(vale_sig[1]) : + raise FonctionError, 'Les vecteurs associes au temps '+'et aux echantillons doivent etre de meme longueur' + num_mes.append(occ[1]['NUME_MES']) + num_ord.append(occ[1]['NUME_ORDRE_I']) + + tmp.append(vale_sig[0]) + test_pas=Numeric.subtract(vale_sig[0][1:],vale_sig[0][0:-1]) + crit=test_pas.tolist(); + crit.sort(); + if abs((crit[-1]-crit[0])/crit[-1]) > 1.e-5 : + raise FonctionError, 'L'+"'"+'echantillonage doit etre fait a pas constant' + fft.append(FFT.fft(Numeric.multiply(vale_sig[1],fene))) + df.append(1./(crit[-1])/len(vale_sig[0])); + + + #-- Verification des longueurs --# + + test_long=Numeric.subtract(lt[1:],lt[0:-1]) + test_long=test_long.tolist(); + test_long.sort(); + if (test_long[-1]-test_long[0]) != 0 : + raise FonctionError, 'Toutes les fonctions doivent etre definies avec le meme nombre de points' + + + test_df=Numeric.subtract(df[1:],df[0:-1]) + test_df=test_df.tolist(); + test_df.sort(); + if abs(test_df[-1]) > 1.e-5 : + raise FonctionError, 'Toutes les fonctions doivent etre definies '+'avec la meme frequence d'+"'"+'echantillonage' + + frq = [df[-1]*i1 for i1 in range(lt[-1])] + + +#-- index des numeros d'ordre pour le moyennage + + uu=[]; + vv=[]; + uu=uu+num_ord; + vv=vv+num_ord; + uu.sort(); + ind_ord=[]; + list_ord=[]; + while len(uu) > 0 : + list_ord.append(uu[0]) + tt=[]; + for i1 in range(uu.count(uu[0])) : + tt.append(vv.index(uu[0])) + vv[tt[-1]]=0 + ind_ord.append(tt) + uu=uu[int(uu.count(uu[0])):] + +#-- Calcul de la matrice inter spectrale + + if len(INTERSPE) != 0 : + dimh = (len(list_ord)*(len(list_ord)+1))/2 + l_fc=[]; + nume_i1=[] + nume_j1=[] + + for i1 in range(len(list_ord)) : + for j1 in range(i1,len(list_ord)) : + #-- on ne calcule les spectres que pour des numeros de mesures correspondants + #-- Ca n'a a priori pas de sens de calculer l'interspectre entre deux signaux acquis a des instants differents + #-- Par contre, on peut moyenner deux interspectres obtenus a des instants differents, sous reserve + #-- de stationnarite et d'ergodicite du signal + mes_i1=[num_mes[k1] for k1 in ind_ord[i1]] + mes_j1=[num_mes[k1] for k1 in ind_ord[j1]] + ind_mes=[]; + #-- recuperation des indices des fft a prendre en compte pour l'interspectre + for k1 in range(len(mes_i1)) : + if mes_i1[k1] in mes_j1 : + ind_mes.append([ind_ord[i1][k1],ind_ord[j1][mes_j1.index(mes_i1[k1])]]) + + #-- Calcul des interspectres + dsp=[0.j]*l_ech; + if len(ind_mes) > 0 : + for l1 in range(len(ind_mes)) : + dsp_t=Numeric.multiply(Numeric.conjugate(fft[ind_mes[l1][0]]),fft[ind_mes[l1][1]]) + dsp_t=Numeric.divide(dsp_t,l_ech*len(ind_mes)) + dsp=Numeric.add(dsp,dsp_t) + dsp=dsp.tolist(); + dsp_r=[]; + + for k1 in range(int(Numeric.floor(l_ech/2))) : + dsp_r=dsp_r+[frq[k1],dsp[k1].real,dsp[k1].imag] + + _fonc = DEFI_FONCTION(NOM_PARA='FREQ',VALE_C=dsp_r,); + l_fc.append(_fonc.nom) + nume_i1.append(list_ord[i1]) + nume_j1.append(list_ord[j1]) + + mcfact=[] + mcfact.append(_F(PARA='NOM_CHAM' ,LISTE_K='DSP' )) + mcfact.append(_F(PARA='OPTION' ,LISTE_K='TOUT' )) + mcfact.append(_F(PARA='DIMENSION' ,LISTE_I=(dimh,) )) + mcfact.append(_F(PARA='NUME_ORDRE_I',LISTE_I=nume_i1 )) + mcfact.append(_F(PARA='NUME_ORDRE_J',LISTE_I=nume_j1 )) + mcfact.append(_F(PARA='FONCTION_C' ,LISTE_K=l_fc )) + self.DeclareOut('tab_inte',self.sd) + tab_inte=CREA_TABLE(LISTE=mcfact, + TITRE='', + TYPE_TABLE='TABLE_FONCTION') + + +#-- Calcul des transferts + + if len(TRANSFERT) != 0 : + + l_fc=[]; + nume_i1=[] + nume_j1=[] + + #-- test sur les entrees pour les references --# + if type(l_H[0][1]['REFER'])==int : + refer=[]; + refer.append(l_H[0][1]['REFER']) + elif type(l_H[0][1]['REFER'])==tuple : + refer=list(l_H[0][1]['REFER']) + + ind_refer=[]; + dimh = len(refer)*(len(list_ord)-len(refer)) + for k1 in range(len(refer)) : + for l1 in range(len(list_ord)) : + if refer[k1] == list_ord[l1] : ind_refer.append(l1); + + #-- H1 : interspectre / autospectre + #-- H2 : autospectre / interspectre + #-- CO : coherence entre H1 et H2. + + if l_H[0][1]['ESTIM']!='HV' : + for i1 in range(len(refer)) : + for j1 in range(len(list_ord)) : + if refer[i1] != list_ord[j1] : + mes_i1=[num_mes[k1] for k1 in ind_ord[ind_refer[i1]]] #-- mesures des efforts + mes_j1=[num_mes[k1] for k1 in ind_ord[j1]] #-- mesures des reponses + ind_mes=[]; + #-- recuperation des indices des mesures a predre en compte pour les spectres + for k1 in range(len(mes_i1)) : + if mes_i1[k1] in mes_j1 : + ind_mes.append([ind_ord[i1][k1],ind_ord[j1][mes_j1.index(mes_i1[k1])]]) + + #-- Calcul des FRF + Guu=[0.j]*l_ech; + Gyy=[0.j]*l_ech; + Gyu=[0.j]*l_ech; + if len(ind_mes) > 0 : + for l1 in range(len(ind_mes)) : + Guu_t=Numeric.multiply(Numeric.conjugate(fft[ind_mes[l1][0]]),fft[ind_mes[l1][0]]) + Guu=Numeric.add(Guu,Guu_t) + Gyu_t=Numeric.multiply(Numeric.conjugate(fft[ind_mes[l1][1]]),fft[ind_mes[l1][0]]) + Gyu=Numeric.add(Gyu,Gyu_t) + Gyy_t=Numeric.multiply(Numeric.conjugate(fft[ind_mes[l1][1]]),fft[ind_mes[l1][1]]) + Gyy=Numeric.add(Gyy,Gyy_t) + + if l_H[0][1]['ESTIM']=='H1' : + frf=Numeric.divide(Numeric.conjugate(Gyu),Guu); + nom_frf='FRF-H1'; + elif l_H[0][1]['ESTIM']=='H2' : + frf=Numeric.divide(Gyy,Gyu); + nom_frf='FRF-H2'; + elif l_H[0][1]['ESTIM']=='CO' : + H1=Numeric.divide(Numeric.conjugate(Gyu),Guu); + H2=Numeric.divide(Gyy,Gyu); + frf=Numeric.divide(H1,H2); + nom_frf='FRF-COH'; + + frf=frf.tolist(); + frf_r=[]; + + for k1 in range(int(Numeric.floor(l_ech/2))) : + frf_r=frf_r+[frq[k1],frf[k1].real,frf[k1].imag] + + _fonc = DEFI_FONCTION(NOM_PARA='FREQ',VALE_C=frf_r,); + l_fc.append(_fonc.nom) + nume_i1.append(refer[i1]) + nume_j1.append(list_ord[j1]) + + #-- On remplit la table_fonction avec tout ce qui va bien + + mcfact=[] + mcfact.append(_F(PARA='NOM_CHAM' ,LISTE_K=nom_frf )) + mcfact.append(_F(PARA='OPTION' ,LISTE_K='TOUT' )) + mcfact.append(_F(PARA='DIMENSION' ,LISTE_I=(dimh,) )) + mcfact.append(_F(PARA='NUME_ORDRE_I',LISTE_I=nume_i1 )) + mcfact.append(_F(PARA='NUME_ORDRE_J',LISTE_I=nume_j1 )) + mcfact.append(_F(PARA='FONCTION_C' ,LISTE_K=l_fc )) + self.DeclareOut('tab_inte',self.sd) + tab_inte=CREA_TABLE(LISTE=mcfact, + TITRE='', + TYPE_TABLE='TABLE_FONCTION') + diff --git a/Aster/Cata/cataSTA9/Macro/creation_donnees_homard.py b/Aster/Cata/cataSTA9/Macro/creation_donnees_homard.py index 115448c8..b3e19a1e 100644 --- a/Aster/Cata/cataSTA9/Macro/creation_donnees_homard.py +++ b/Aster/Cata/cataSTA9/Macro/creation_donnees_homard.py @@ -1,4 +1,4 @@ -#@ MODIF creation_donnees_homard Macro DATE 11/12/2007 AUTEUR GNICOLAS G.NICOLAS +#@ MODIF creation_donnees_homard Macro DATE 06/10/2008 AUTEUR GNICOLAS G.NICOLAS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -21,7 +21,7 @@ """ Cette classe crée le fichier de configuration permettant de lancer HOMARD depuis Code_Aster. """ -__revision__ = "V1.3" +__revision__ = "V1.4" __all__ = [ ] import os @@ -181,8 +181,8 @@ class creation_donnees_homard: # 5. Les entrées/sorties au format HOMARD # if self.mode_homard == "ADAP" : - self.fic_homard_niter = "M_" + self.str_niter + ".hom" - self.fic_homard_niterp1 = "M_" + self.str_niterp1 + ".hom" + self.fic_homard_niter = "M_" + self.str_niter + ".hom.med" + self.fic_homard_niterp1 = "M_" + self.str_niterp1 + ".hom.med" else : self.fic_homard_niter = None self.fic_homard_niterp1 = None @@ -367,7 +367,7 @@ class creation_donnees_homard: # # 3. Les fichiers externes # - self.ecrire_ligne_configuration_0("Les fichiers au format MED") + self.ecrire_ligne_configuration_0("Les fichiers de Code_Aster, au format MED") self.ecrire_ligne_configuration_2("CCNoMN__", self.CCNoMN__) self.ecrire_ligne_configuration_2("CCMaiN__", self.dico_configuration["Fichier_ASTER_vers_HOMARD"]) if self.mode_homard == "ADAP" : @@ -379,7 +379,7 @@ class creation_donnees_homard: # # 4. Les fichiers HOMARD # - self.ecrire_ligne_configuration_0("Les fichiers au format HOMARD") + self.ecrire_ligne_configuration_0("Les fichiers de HOMARD, au format MED") if self.mode_homard == "ADAP" : self.ecrire_ligne_configuration_3("HOMaiN__", "M_"+self.str_niter , self.fic_homard_niter ) self.ecrire_ligne_configuration_3("HOMaiNP1", "M_"+self.str_niterp1, self.fic_homard_niterp1) diff --git a/Aster/Cata/cataSTA9/Macro/dyna_iss_vari_ops.py b/Aster/Cata/cataSTA9/Macro/dyna_iss_vari_ops.py index 9ab71c5c..670e4fa4 100644 --- a/Aster/Cata/cataSTA9/Macro/dyna_iss_vari_ops.py +++ b/Aster/Cata/cataSTA9/Macro/dyna_iss_vari_ops.py @@ -1,4 +1,4 @@ -#@ MODIF dyna_iss_vari_ops Macro DATE 21/04/2008 AUTEUR ZENTNER I.ZENTNER +#@ MODIF dyna_iss_vari_ops Macro DATE 05/09/2008 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== diff --git a/Aster/Cata/cataSTA9/Macro/exec_logiciel_ops.py b/Aster/Cata/cataSTA9/Macro/exec_logiciel_ops.py index ad19d219..964c2600 100644 --- a/Aster/Cata/cataSTA9/Macro/exec_logiciel_ops.py +++ b/Aster/Cata/cataSTA9/Macro/exec_logiciel_ops.py @@ -1,4 +1,4 @@ -#@ MODIF exec_logiciel_ops Macro DATE 19/05/2008 AUTEUR COURTOIS M.COURTOIS +#@ MODIF exec_logiciel_ops Macro DATE 21/10/2008 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -18,6 +18,8 @@ # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + import os.path import traceback import shutil @@ -112,14 +114,22 @@ def exec_logiciel_ops(self, LOGICIEL, ARGUMENT, MAILLAGE, CODE_RETOUR_MAXI, INFO if mode_lancement == CMD_EXTERNE: scmd = cmd % d_para comment = "Lancement de la commande :\n%s" % scmd - iret, output = ExecCommand(scmd, - alt_comment=comment) - # écrire l'output dans le .mess si demandé - if INFO == 2: - aster.affiche('MESSAGE', output) + iret, output, error = ExecCommand(scmd, alt_comment=comment, verbose=False, + capturestderr=True, separated_stderr=True) + erreur = iret > CODE_RETOUR_MAXI + + # output + if INFO > 0 or erreur: + UTMESS('I', 'EXECLOGICIEL0_11', vali=(iret, CODE_RETOUR_MAXI)) + UTMESS('I', 'EXECLOGICIEL0_9', valk=output) + + # en cas d'erreur, on dump tout dans le .resu + .erre + if INFO == 2 or erreur: + UTMESS('I', 'EXECLOGICIEL0_8', valk=scmd, print_as='E') + UTMESS('I', 'EXECLOGICIEL0_10', valk=error, print_as='E') - if CODE_RETOUR_MAXI >= 0 and iret > CODE_RETOUR_MAXI: - UTMESS('F', 'EXECLOGICIEL0_3', vali=[CODE_RETOUR_MAXI,iret]) + if erreur: + UTMESS('F', 'EXECLOGICIEL0_3', vali=[CODE_RETOUR_MAXI, iret]) #---------------------------------------------- # 3b. Exécution d'un fichier Python diff --git a/Aster/Cata/cataSTA9/Macro/macr_adap_mail_ops.py b/Aster/Cata/cataSTA9/Macro/macr_adap_mail_ops.py index 276e72b6..14874e19 100644 --- a/Aster/Cata/cataSTA9/Macro/macr_adap_mail_ops.py +++ b/Aster/Cata/cataSTA9/Macro/macr_adap_mail_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macr_adap_mail_ops Macro DATE 11/12/2007 AUTEUR GNICOLAS G.NICOLAS +#@ MODIF macr_adap_mail_ops Macro DATE 24/11/2008 AUTEUR GNICOLAS G.NICOLAS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -32,57 +32,65 @@ def macr_adap_mail_ops ( self, """ # # 1. args est le dictionnaire des arguments -# args.keys() est la liste des mots-clés +# args.keys() est la liste des mots-cles # args.keys()[0] est la premiere valeur de cette liste # args.keys()[1:] est la liste des valeurs suivantes dans cette liste -# args.keys(mot_cle) représente le contenu de la variable mot_cle dans la macro appelante. +# args.keys(mot_cle) represente le contenu de la variable mot_cle dans la macro appelante. # ### print args ### print args.keys() ### if len (args.keys())>0 : print args.keys()[0] ### print args["MAILLAGE"] # -# 2. Les caractéristiques d'un passage sont conservées dans un dictionnaire. Il y a autant de -# dictionnaires que de sollicitations pour une série d'adaptation. L'ensemble de ces dictionnaires -# est conservé dans la liste Liste_Passages. Cette liste est nécessairement globale pour pouvoir -# la retrouver à chaque nouveau passage. +# 2. Les caracteristiques d'un passage sont conservees dans un dictionnaire. Il y a autant de +# dictionnaires que de sollicitations pour une serie d'adaptation. L'ensemble de ces dictionnaires +# est conserve dans la liste Liste_Passages. Cette liste est necessairement globale pour pouvoir +# la retrouver e 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_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é +# dico["Maillage_0"] = o ; string ; nom du concept du maillage initial de la serie d'adaptation +# dico["Maillage_NP1"] = o ; string ; nom du concept du dernier maillage adapte +# dico["Rep_Calc_HOMARD_global"] = o ; string ; Nom global du repertoire de calcul pour HOMARD +# dico["Rep_Calc_HOMARD_local"] = o ; string ; Nom local du repertoire de calcul pour HOMARD +# depuis le repertoire de calcul pour ASTER +# dico["niter"] = o ; entier ; numero d'iteration +# +# 3. Les caracteristiques d'un maillage sont conservees dans un dictionnaire. Il y a autant de +# dictionnaires que de maillages manipules. L'ensemble de ces dictionnaires est conserve # dans la liste liste_maillages. # Description du dictionnaire de maillages : # dico["Type_Maillage"] = o ; string ; "MAILLAGE_N", "MAILLAGE_NP1", "MAILLAGE_NP1_ANNEXE" ou "MAILLAGE_FRONTIERE" -# dico["Nom_ASTER"] = o ; concept ASTER associé +# dico["Nom_ASTER"] = o ; concept ASTER associe # dico["Action"] = o ; string ; "A_ecrire" ou "A_lire" # dico["NOM_MED"] = o ; string ; Nom MED du maillage # -# 4. Les caractéristiques d'un champ sont conservées dans un dictionnaire. Il y a autant de -# dictionnaires que de champs manipulés. L'ensemble de ces dictionnaires est conservé +# 4. Les caracteristiques d'un champ sont conservees dans un dictionnaire. Il y a autant de +# dictionnaires que de champs manipules. L'ensemble de ces dictionnaires est conserve # dans la liste liste_champs. # Description du dictionnaire de champs : # dico["Type_Champ"] = o ; string ; "INDICATEUR" ou "CHAMP_MAJ" -# dico["RESULTAT"] = f ; concept ASTER du résutat associé +# dico["RESULTAT"] = f ; concept ASTER du resutat associe # dico["NOM_CHAM"] = f ; string ; Nom ASTER du champ -# dico["CHAM_GD"] = f ; concept ASTER du champ de grandeur associée +# dico["CHAM_GD"] = f ; concept ASTER du champ de grandeur associee # dico["COMPOSANTE"] = f ; string ; Nom ASTER de la composante (dans le cas de l'indicateur) -# dico["NUME_ORDRE"] = f ; entier ; Numéro d'ordre du champ +# dico["NUME_ORDRE"] = f ; entier ; Numero d'ordre du champ # dico["INST"] = f ; entier ; Instant du champ -# dico["PRECISION"] = f ; entier ; Précision sur l'instant du champ -# dico["CRITERE"] = f ; entier ; Critère de précision sur l'instant du champ -# dico["CHAM_MAJ"] = f ; string ; Nom ASTER du champ interpolé sur le nouveau maillage +# dico["PRECISION"] = f ; entier ; Precision sur l'instant du champ +# dico["CRITERE"] = f ; entier ; Critere de precision sur l'instant du champ +# dico["CHAM_MAJ"] = f ; string ; Nom ASTER du champ interpole sur le nouveau maillage # dico["NOM_MED"] = o ; string ; Nom MED du champ -# dico["SENSIBILITE"] = f ; string ; Nom du paramètre sensible associé +# dico["SENSIBILITE"] = f ; string ; Nom du parametre sensible associe +# +# 5. Signification de INFO +# INFO = 1 : aucun message +# INFO = 2 : les messages des commandes annexes (DEFI_FICHIER, IMPR_RESU, LIRE_MAILLAGE, LIRE_CHAMP) +# INFO = 3 : aucun message pour les commandes annexes +# 1er niveau de message pour l'execution de HOMARD +# INFO = 4 : aucun message pour les commandes annexes +# 2nd niveau de message pour l'execution de HOMARD # from Accas import _F from Macro import creation_donnees_homard - from Utilitai.Utmess import UTMESS + from Utilitai.Utmess import UTMESS, MasquerAlarme, RetablirAlarme import aster import string import os @@ -91,14 +99,14 @@ def macr_adap_mail_ops ( self, global Liste_Passages # #==================================================================== -# 1. Préalables +# 1. Prealables #==================================================================== # # 1.1. ==> La macro compte pour 1 dans la numerotation des commandes # self.set_icmd(1) # -# 1.2. ==> Numéro du passage dans cette macro +# 1.2. ==> Numero du passage dans cette macro # try : self.jdc.indice_macro_homard = self.jdc.indice_macro_homard + 1 @@ -116,7 +124,7 @@ def macr_adap_mail_ops ( self, LIRE_MAILLAGE = self.get_cmd("LIRE_MAILLAGE") LIRE_CHAMP = self.get_cmd("LIRE_CHAMP") # -# 1.4. ==> Le nom du programme HOMARD à lancer +# 1.4. ==> Le nom du programme HOMARD e lancer # repertoire_outils = aster.repout() homard = repertoire_outils + "homard" @@ -132,11 +140,18 @@ def macr_adap_mail_ops ( self, dico_indi = {} # LISTE_ADAPTATION_LIBRE = ("RAFF_DERA" , "RAFFINEMENT" , "DERAFFINEMENT") +# + if ( INFO == 2 ) : + infomail = "OUI" + infocomm = 2 + else : + infomail = "NON" + infocomm = 1 # #==================================================================== -# 2. Décodage des arguments de la macro-commande +# 2. Decodage des arguments de la macro-commande #==================================================================== -# 2.1. ==> Données de pilotage de l'adaptation +# 2.1. ==> Donnees de pilotage de l'adaptation # if ( self.nom == "MACR_ADAP_MAIL" ) : # @@ -162,7 +177,7 @@ def macr_adap_mail_ops ( self, #gn print "dico = ",dico liste_maillages.append(dico) # -# 2.1.2. ==> L'éventuel indicateur d'erreur +# 2.1.2. ==> L'eventuel indicateur d'erreur # #gn print "\n.. Debut de 2.1.2" #gn print "args = ", args @@ -203,7 +218,7 @@ def macr_adap_mail_ops ( self, dico_indi = dico ### print dico # -# 2.1.3. ==> Les champs à mettre à jour +# 2.1.3. ==> Les champs e mettre e jour # #gn print "\n.. Debut de 2.1.3." # @@ -277,7 +292,7 @@ def macr_adap_mail_ops ( self, # ### print liste_zones # -# 2.2. ==> Données de pilotage de l'information +# 2.2. ==> Donnees de pilotage de l'information # else : # @@ -289,7 +304,7 @@ def macr_adap_mail_ops ( self, dico["Action"] = "A_ecrire" liste_maillages.append(dico) # -# 2.3. ==> Suivi de frontière +# 2.3. ==> Suivi de frontiere # #gn print "\n.. Debut de 2.3." # @@ -301,8 +316,8 @@ def macr_adap_mail_ops ( self, dico["Action"] = "A_ecrire" liste_maillages.append(dico) # -# 2.4. ==> Le numéro de version de HOMARD -# Remarque : dans la donnée de la version de HOMARD, il faut remplacer +# 2.4. ==> Le numero de version de HOMARD +# Remarque : dans la donnee de la version de HOMARD, il faut remplacer # le _ de la donnee par un ., qui est interdit dans la # syntaxe du langage de commandes ASTER # Remarque : il faut remplacer le N majuscule de la donnee par @@ -322,14 +337,14 @@ def macr_adap_mail_ops ( self, #gn print ".... version_perso = ", version_perso # #==================================================================== -# 3. Préparation du lancement des commandes +# 3. Preparation du lancement des commandes #==================================================================== # # 3.1. ==> . Elaboration des noms MED des concepts de maillage -# . Memorisation des noms ASTER du maillage en entrée et en sortie (sous forme string) +# . Memorisation des noms ASTER du maillage en entree et en sortie (sous forme string) # -# On crée une nouvelle liste des dictionnaires décrivant les maillages -# et à la fin on écrase l'ancienne liste par cette nouvelle. +# On cree une nouvelle liste des dictionnaires decrivant les maillages +# et e la fin on ecrase l'ancienne liste par cette nouvelle. # #gn print "\n.. Debut de 3.1." # @@ -349,12 +364,12 @@ def macr_adap_mail_ops ( self, #gn print "\ndico apres = ",dico liste_maillages = l_aux # -# 3.2. ==> Recherche du numéro d'itération et du répertoire de travail +# 3.2. ==> Recherche du numero d'iteration et du repertoire de travail # -# 3.2.1. ==> Par défaut : -# . le numéro d'itération est nul -# . le nom du répertoire de lancement de HOMARD est construit sur le nom -# du maillage en entrée et le numéro de passage dans la fonction +# 3.2.1. ==> Par defaut : +# . le numero d'iteration est nul +# . le nom du repertoire de lancement de HOMARD est construit sur le nom +# du maillage en entree et le numero de passage dans la fonction # #gn print "\.. Debut de 3.2.1." # @@ -365,17 +380,17 @@ def macr_adap_mail_ops ( self, ### print "Rep_Calc_HOMARD_local = ", Rep_Calc_HOMARD_local ### print "Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global # -# 3.2.2. ==> En adaptation : il faut repartir du répertoire de l'itération précédente +# 3.2.2. ==> En adaptation : il faut repartir du repertoire de l'iteration precedente # #gn print "\.. Debut de 3.2.2." # if ( mode_homard == "ADAP" ) : # -# 3.2.2.1. ==> On recherche si dans les passages déjà effectués, il en existe un -# dont le maillage d'arrivée était l'actuel maillage d'entrée. Si c'est +# 3.2.2.1. ==> On recherche si dans les passages deje effectues, il en existe un +# dont le maillage d'arrivee etait l'actuel maillage d'entree. Si c'est # le cas, cela veut dire que l'adaptation en cours est la suite d'une -# précédente. On doit donc utiliser le meme répertoire. Le numéro -# d'itération est celui de l'adaptation précédente augmenté de 1. +# precedente. On doit donc utiliser le meme repertoire. Le numero +# d'iteration est celui de l'adaptation precedente augmente de 1. # #gn print "\.. Debut de 3.2.2.1." # @@ -415,7 +430,7 @@ def macr_adap_mail_ops ( self, # ### print "niter = ", niter, ", Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global # -# 3.2.3. Création du répertoire pour homard +# 3.2.3. Creation du repertoire pour homard # attention : on ne fait cette creation qu'une seule fois par cas # d'adaptation ou d'information # @@ -435,21 +450,16 @@ def macr_adap_mail_ops ( self, # #gn print "\.. Debut de 4." # -# On doit écrire : le maillage, +# On doit ecrire : le maillage, # le champ d'indicateur d'erreur -# les champs à convertir +# les champs e convertir # Remarque : on met tout dans le meme fichier # -# Chacune de ces écritures est optionnelle selon le contexte. -# - if ( INFO > 1 ) : - infomail = "OUI" - else : - infomail = "NON" +# Chacune de ces ecritures est optionnelle selon le contexte. # -# 4.1. ==> Noms des fichiers d'ASTER vers HOMARD et éventuellement de HOMARD vers ASTER -# Remarque : aujourd'hui, les écritures ou les lectures au format MED se font obligatoirement sur -# un fichier de nom fort.n, placé dans le répertoire de calcul +# 4.1. ==> Noms des fichiers d'ASTER vers HOMARD et eventuellement de HOMARD vers ASTER +# Remarque : aujourd'hui, les ecritures ou les lectures au format MED se font obligatoirement sur +# un fichier de nom fort.n, place dans le repertoire de calcul ## # 4.1.1. ==> D'ASTER vers HOMARD # @@ -464,20 +474,20 @@ def macr_adap_mail_ops ( self, fichier_homard_vers_aster = os.path.join(Rep_Calc_ASTER,"fort." + str(unite_fichier_homard_vers_aster)) ### print "fichier_homard_vers_aster = ",fichier_homard_vers_aster # -# 4.2. La définition du fichier de ASTER vers HOMARD +# 4.2. La definition du fichier de ASTER vers HOMARD # DEFI_FICHIER ( ACTION= "ASSOCIER", UNITE = unite_fichier_aster_vers_homard, TYPE = "LIBRE", - INFO = INFO ) + INFO = infocomm ) # # 4.3. Le(s) maillage(s) -# Le maillage de calcul et l'éventuel maillage de la frontiere sont écrits +# Le maillage de calcul et l'eventuel maillage de la frontiere sont ecrits # dans le meme fichier MED -# En fait, on pourrait s'en passer au dela de la 1ère itération -# car HOMARD a mémorisé. Mais dès que l'on écrit un champ, -# les conventions MED imposent la présence du maillage dans le fichier. -# Donc on va toujours écrire. +# En fait, on pourrait s'en passer au dela de la 1ere iteration +# car HOMARD a memorise. Mais des que l'on ecrit un champ, +# les conventions MED imposent la presence du maillage dans le fichier. +# Donc on va toujours ecrire. # for dico in liste_maillages : if ( dico["Action"] == "A_ecrire" ) : @@ -487,32 +497,32 @@ def macr_adap_mail_ops ( self, motscfa["RESU"] = _F( INFO_MAILLAGE=infomail, **motscsi ) # - IMPR_RESU ( INFO = INFO, + IMPR_RESU ( INFO = infocomm, FORMAT ='MED', UNITE = unite_fichier_aster_vers_homard, **motscfa ) # # 4.4. Le(s) champ(s) -# Attention : il se peut que l'on demande la mise à jour du champ qui a servi comme +# Attention : il se peut que l'on demande la mise e jour du champ qui a servi comme # indicateur d'erreur. Si c'est le cas, il ne faut pas demander son # impression sinon il y a plantage d'IMPR_RESU qui ne sait pas substituer -# deux champs. D'ailleurs, c'est plus économique ainsi ! +# deux champs. D'ailleurs, c'est plus economique ainsi ! # Remarque : pour l'adaptation, on ne demande a priori qu'une composante du champ d'indicateur. -# s'il y a demande de mise à jour, toutes les composantes sont concernées. Il faut +# s'il y a demande de mise e jour, toutes les composantes sont concernees. Il faut # donc dans ce cas imprimer le champ total. # dico["Type_Champ"] = o ; string ; "INDICATEUR" ou "CHAMP_MAJ" -# dico["RESULTAT"] = f ; concept ASTER du résutat associé +# dico["RESULTAT"] = f ; concept ASTER du resutat associe # dico["NOM_CHAM"] = f ; string ; Nom ASTER du champ -# dico["CHAM_GD"] = f ; concept ASTER du champ de grandeur associée +# dico["CHAM_GD"] = f ; concept ASTER du champ de grandeur associee # dico["COMPOSANTE"] = f ; string ; Nom ASTER de la composante (dans le cas de l'indicateur) -# dico["NUME_ORDRE"] = f ; entier ; Numéro d'ordre du champ +# dico["NUME_ORDRE"] = f ; entier ; Numero d'ordre du champ # dico["INST"] = f ; entier ; Instant du champ -# dico["PRECISION"] = f ; entier ; Précision sur l'instant du champ -# dico["CRITERE"] = f ; entier ; Critère de précision sur l'instant du champ -# dico["CHAM_MAJ"] = f ; string ; Nom ASTER du champ interpolé sur le nouveau maillage +# dico["PRECISION"] = f ; entier ; Precision sur l'instant du champ +# dico["CRITERE"] = f ; entier ; Critere de precision sur l'instant du champ +# dico["CHAM_MAJ"] = f ; string ; Nom ASTER du champ interpole sur le nouveau maillage # dico["NOM_MED"] = o ; string ; Nom MED du champ -# dico["SENSIBILITE"] = f ; string ; Nom du paramètre sensible associé +# dico["SENSIBILITE"] = f ; string ; Nom du parametre sensible associe # -# 4.4.1. Recherche d'un doublon éventuel sur le champ d'indicateur d'erreur +# 4.4.1. Recherche d'un doublon eventuel sur le champ d'indicateur d'erreur # #gn print "dico_indi = ",dico_indi if len(dico_indi) > 0 : @@ -530,10 +540,10 @@ def macr_adap_mail_ops ( self, liste_champs_imprime = [] for dico in liste_champs : ### print "\n.... dico = ",dico -# Pour un champ à mettre à jour, on a toujours impression +# Pour un champ e mettre e jour, on a toujours impression if ( dico["Type_Champ"] == "CHAMP_MAJ" ) : liste_champs_imprime.append(dico) -# Si le champ d'indicateur n'a toujours pas été repéré comme champ à mettre à jour : +# Si le champ d'indicateur n'a toujours pas ete repere comme champ e mettre e jour : if not indic_est_deja_imprime : # Est-ce le meme champ ? on_a_le_champ = 1 @@ -559,9 +569,9 @@ def macr_adap_mail_ops ( self, else : on_a_le_champ = 0 break -# Si oui, est-ce au meme moment ? (remarque : si rien n'est désigné, c'est qu'il n'y a qu'un -# seul instant ... donc c'est le meme ! En revanche, on ne sait pas comparer une donnée -# en numéro d'ordre et une donnée en instant. On croise les doigts.) +# Si oui, est-ce au meme moment ? (remarque : si rien n'est designe, c'est qu'il n'y a qu'un +# seul instant ... donc c'est le meme ! En revanche, on ne sait pas comparer une donnee +# en numero d'ordre et une donnee en instant. On croise les doigts.) if on_a_le_champ : for cle in [ "NUME_ORDRE", "INST" ] : if dico.has_key(cle) : @@ -573,12 +583,12 @@ def macr_adap_mail_ops ( self, if on_a_le_champ : indic_est_deja_imprime = 1 ### print "\n\nFin de la boucle .. indic_est_deja_imprime = ",indic_est_deja_imprime -# Si le champ d'indicateur n'a pas été repéré comme champ à mettre à jour, il faut -# l'inclure dans les champs à imprimer +# Si le champ d'indicateur n'a pas ete repere comme champ e mettre e jour, il faut +# l'inclure dans les champs e imprimer if not indic_est_deja_imprime : liste_champs_imprime.append(dico_indi) # -# 4.4.2. Impressions après le filtrage précédent +# 4.4.2. Impressions apres le filtrage precedent #gn print "\n.... Debut de 4.2.4.2." # for dico in liste_champs_imprime : @@ -597,19 +607,19 @@ def macr_adap_mail_ops ( self, ) #gn print ".. motscfa = ",motscfa # - IMPR_RESU ( INFO = INFO, + IMPR_RESU ( INFO = infocomm, FORMAT ='MED', UNITE = unite_fichier_aster_vers_homard, **motscfa ) # #==================================================================== -# 5. ==> Création des fichiers de données pour HOMARD +# 5. ==> Creation des fichiers de donnees pour HOMARD #==================================================================== # #gn print "\.. Debut de 5." # dico_configuration = {} # -# 5.1. ==> Les généralités +# 5.1. ==> Les generalites # dico_configuration["INFO"] = INFO # @@ -629,7 +639,7 @@ def macr_adap_mail_ops ( self, dico_configuration[ "NOM_MED_"+dico["Type_Maillage"] ] = dico["NOM_MED"] #gn print dico_configuration # -# 5.3. ==> Les caracteristiques de l'éventuel indicateur d'erreur +# 5.3. ==> Les caracteristiques de l'eventuel indicateur d'erreur # for dico in liste_champs : dico_aux = {} @@ -644,7 +654,7 @@ def macr_adap_mail_ops ( self, #gn if dico_configuration.has_key("Indicateur") : #gn print "dico_configuration[Indicateur] = ", dico_configuration["Indicateur"] # -# 5.4. ==> Les éventuelles zones de raffinement +# 5.4. ==> Les eventuelles zones de raffinement # prem = 1 for dico in liste_zones : @@ -658,7 +668,7 @@ def macr_adap_mail_ops ( self, ### if dico_configuration.has_key("Zones") : ### print "dico_configuration[Zones] = ", dico_configuration["Zones"] # -# 5.5. ==> La mise à jour de champs +# 5.5. ==> La mise e jour de champs # prem = 1 for dico in liste_champs : @@ -685,10 +695,10 @@ def macr_adap_mail_ops ( self, #gn if dico_configuration.has_key("Champs") : #gn print "dico_configuration[Champs] = ", dico_configuration["Champs"] # -# 5.6. ==> Appel de la fonction de création +# 5.6. ==> Appel de la fonction de creation # donnees_homard = creation_donnees_homard.creation_donnees_homard ( self.nom, args, dico_configuration ) - if ( INFO > 1 ) : + if ( INFO >= 4 ) : donnees_homard.quel_mode ( ) fic_homard_niter, fic_homard_niterp1 = donnees_homard.creation_configuration ( ) donnees_homard.ecrire_fichier_configuration ( ) @@ -697,11 +707,11 @@ def macr_adap_mail_ops ( self, else : Nom_Fichier_Donnees = "0" # -# 5.7. ==> Impression eventuelle des fichiers créés +# 5.7. ==> Impression eventuelle des fichiers crees # -#gn print "Répertoire ",Rep_Calc_HOMARD_global +#gn print "Repertoire ",Rep_Calc_HOMARD_global #gn os.system("ls -la "+Rep_Calc_HOMARD_global) - if ( INFO > 1 ) : + if ( INFO >= 4 ) : l_aux = ["HOMARD.Donnees" , "HOMARD.Configuration"] else : l_aux = [ ] @@ -723,21 +733,25 @@ def macr_adap_mail_ops ( self, #gn time.sleep(3600) # #==================================================================== -# 6. Ecriture de la commande d'exécution de homard +# 6. Ecriture de la commande d'execution de homard #==================================================================== # # #gn print "\.. Debut de 6." +#gn os.system("cp " + Rep_Calc_HOMARD_global + "/../fort.17* $HOME/aster") +#gn os.system("cp " + Rep_Calc_HOMARD_global + "/HOMARD.Configuration $HOME/aster/HOMARD.Configuration"+str(niter)) #gn fichier_aster_vers_homard_2 = os.path.join("/tmp" , "fort." + str(unite_fichier_aster_vers_homard)) #gn shutil.copyfile(fichier_aster_vers_homard, fichier_aster_vers_homard_2) # + iaux = INFO EXEC_LOGICIEL ( ARGUMENT = (Rep_Calc_HOMARD_global, # nom du repertoire VERSION_HOMARD, # version de homard - str(INFO), # niveau d information - Nom_Fichier_Donnees, # fichier de données HOMARD + str(iaux), # niveau d information + Nom_Fichier_Donnees, # fichier de donnees HOMARD str(version_perso), # version personnelle de homard ? ), - LOGICIEL = homard + LOGICIEL = homard, + INFO = INFO, ) #gn import time #gn time.sleep(3600) @@ -755,26 +769,33 @@ def macr_adap_mail_ops ( self, # Remarque : # La fonction self.DeclareOut(a,b) fonctionne ainsi : # a est une chaine de caracteres -# b est la variable déclarée dans la commande -# le but est de associer le contenu de b à la variable locale qui sera désignée par a +# b est la variable declaree dans la commande +# le but est de associer le contenu de b e la variable locale qui sera designee par a # Exemple : # self.DeclareOut("maillage_a_lire",args["MAILLAGE_NP1"]) -# ==> la variable maillage_a_lire est identifiée à l'argument "MAILLAGE_NP1" +# ==> la variable maillage_a_lire est identifiee e l'argument "MAILLAGE_NP1" #==================================================================== # if ( mode_homard == "ADAP" ) : # # 7.1. ==> Le maillage +# On inhibe l'alarme MODELISA5_49 qui apparait car on fait VERIF=NON # #gn print "args = ",args for dico in liste_maillages : #gn print dico if ( dico["Action"] == "A_lire" ) : +# + MasquerAlarme('MODELISA5_49') +# self.DeclareOut("maillage_a_lire", dico["Nom_ASTER"]) maillage_a_lire = LIRE_MAILLAGE ( UNITE = unite_fichier_homard_vers_aster, FORMAT = "MED", NOM_MED = dico["NOM_MED"], - VERI_MAIL = _F(VERIF="NON"), INFO_MED = INFO, INFO = INFO ) + VERI_MAIL = _F(VERIF="NON"), INFO_MED = infocomm, INFO = infocomm ) +# + RetablirAlarme('MODELISA5_49') +# #gn print "MAILLAGE = ",maillage_a_lire #gn print "NOM_MED = ",dico["NOM_MED"] if ( dico["Type_Maillage"] == "MAILLAGE_NP1" ) : @@ -803,12 +824,12 @@ def macr_adap_mail_ops ( self, champ_maj = LIRE_CHAMP ( UNITE = unite_fichier_homard_vers_aster, FORMAT = "MED", MAILLAGE = maillage_np1, NOM_MAIL_MED=maillage_np1_nom_med, NOM_MED = dico["NOM_MED"], NOM_CMP_IDEM = "OUI", TYPE_CHAM = dico["TYPE_CHAM"], - INFO = INFO, **motscsi ) + INFO = infocomm, **motscsi ) # #==================================================================== # 8. Menage des fichiers devenus inutiles # On doit imperativement garder le dernier fichier homard produit -# En mode d'information, on garde également les fichiers textes +# En mode d'information, on garde egalement les fichiers textes #==================================================================== # liste_aux = [fichier_aster_vers_homard] @@ -821,10 +842,11 @@ def macr_adap_mail_ops ( self, liste_aux.append(fichier_homard_vers_aster) fic = os.path.join(Rep_Calc_HOMARD_global, fic_homard_niterp1) liste_aux_bis.append(fic) +#gn os.system("cp " + Rep_Calc_HOMARD_global + "/* $HOME/aster") # for fic in liste_aux : if fic not in liste_aux_bis : - if ( INFO > 1 ) : + if ( INFO >= 3 ) : print "Destruction du fichier ", fic if os.path.isfile(fic) : try : @@ -832,19 +854,19 @@ def macr_adap_mail_ops ( self, except os.error,codret_partiel : self.cr.warn("Code d'erreur de remove : " + str(codret_partiel[0]) + " : " + codret_partiel[1]) UTMESS("F",'HOMARD0_5',valk=fic) -#gn print "Répertoire ",Rep_Calc_HOMARD_global +#gn print "Repertoire ",Rep_Calc_HOMARD_global #gn os.system("ls -la "+Rep_Calc_HOMARD_global) -#gn print "Répertoire ",Rep_Calc_ASTER +#gn print "Repertoire ",Rep_Calc_ASTER #gn os.system("ls -la "+Rep_Calc_ASTER) #gn print os.listdir(Rep_Calc_HOMARD_global) -#gn print "glop :", Rep_Calc_HOMARD_global # #==================================================================== # C'est fini ! #==================================================================== # -#gn if ( mode_homard == "ADAP" ) : -#gn import time -#gn time.sleep(3600) +### if ( mode_homard == "ADAP" and niter == 3 ) : +### if ( niter == 2 ) : +### import time +### time.sleep(3600) # return diff --git a/Aster/Cata/cataSTA9/Macro/macr_cara_poutre_ops.py b/Aster/Cata/cataSTA9/Macro/macr_cara_poutre_ops.py index 9415a2e9..30fc9ad8 100644 --- a/Aster/Cata/cataSTA9/Macro/macr_cara_poutre_ops.py +++ b/Aster/Cata/cataSTA9/Macro/macr_cara_poutre_ops.py @@ -1,25 +1,25 @@ -#@ MODIF macr_cara_poutre_ops Macro DATE 16/10/2007 AUTEUR REZETTE C.REZETTE +#@ MODIF macr_cara_poutre_ops Macro DATE 30/06/2008 AUTEUR FLEJOU J-L.FLEJOU # -*- coding: iso-8859-1 -*- # 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. +# 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. # ====================================================================== # RESPONSABLE JMBHH01 J.M.PROIX -def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, +def macr_cara_poutre_ops(self,MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, GROUP_MA,ORIG_INER,**args): """ Ecriture de la macro MACR_CARA_POUTRE @@ -55,15 +55,15 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, # La macro compte pour 1 dans la numerotation des commandes self.set_icmd(1) - # Le concept sortant (de type table_sdaster) est nommé 'nomres' dans - # le contexte de la macro - + # Le concept sortant (de type table_sdaster) est nommé 'nomres' dans le contexte de la macro self.DeclareOut('nomres',self.sd) - -# if GROUP_MA_BORD and GROUP_MA: -# if not LIAISON: -# - __nomlma=LIRE_MAILLAGE(UNITE=UNITE_MAILLAGE,) + # + if ( MAILLAGE != None ): + __nomlma=CREA_MAILLAGE(MAILLAGE=MAILLAGE) + elif ( args.has_key('UNITE') and args.has_key('FORMAT') ): + __nomlma=LIRE_MAILLAGE(UNITE=args['UNITE'],FORMAT=args['FORMAT']) + else: + assert False, "Erreur dans les options UNITE, FORMAT, MAILLAGE" __nomamo=AFFE_MODELE(MAILLAGE=__nomlma, AFFE=_F(TOUT='OUI', @@ -98,7 +98,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, # --- = OU DU CENTRE DE TORSION/CISAILLEMENT = # --- = DES COEFFICIENTS DE CISAILLEMENT = # --- = ET DE L INERTIE DE GAUCHISSEMENT = -# --- = DU RAYON DE TORSION SUR TOUT LE MAILLAGE +# --- = DU RAYON DE TORSION SUR TOUT LE MAILLAGE # --- = ON CREE UN MODELE PLAN 2D THERMIQUE REPRESENTANT LA SECTION = # --- = DE LA POUTRE CAR ON A A RESOUDRE DES E.D.P. AVEC DES LAPLACIENS= # ================================================================== @@ -118,7 +118,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, __nomlma=DEFI_GROUP(reuse=__nomlma, MAILLAGE=__nomlma, **motscles) - + # --- CREATION D UN MAILLAGE IDENTIQUE AU PREMIER A CECI PRES @@ -194,7 +194,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, motscles={} motscles['FLUX_REP']=[] - + if type(lgmaint)==types.StringType: motscles['FLUX_REP']=_F(GROUP_MA=args['GROUP_MA_INTE'],CARA_TORSION=__tbaire) else: @@ -264,7 +264,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, __tempe2=THER_LINEAIRE(MODELE=__nomoth, CHAM_MATER=__chmath, - EXCIT=_F(CHARGE=__chart2,), + EXCIT=_F(CHARGE=__chart2,), SOLVEUR=_F(STOP_SINGULIER='NON',), ) @@ -305,7 +305,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, __tempe3=THER_LINEAIRE(MODELE=__nomoth, CHAM_MATER=__chmath, - EXCIT=_F(CHARGE=__chart3,), + EXCIT=_F(CHARGE=__chart3,), SOLVEUR=_F(STOP_SINGULIER='NON',), ) @@ -337,10 +337,10 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, __m1=abs(__flun['TRAC_NOR',3]) __m2=abs(__flun['TRAC_NOR',4]) __rtext=max(__m1,__m2) - + # CALCUL DU RAYON DE TORSION : rt # rt = max ( rtext , 2*AIRE(TROU)/L(TROU) ) - + if args.has_key('GROUP_MA_INTE'): if args['GROUP_MA_INTE'] != None : if type(args['GROUP_MA_INTE'])==types.StringType : @@ -363,7 +363,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, __rtext=__m1 __rt=__rtext - + # --- CALCUL DE LA CONSTANTE DE TORSION : # --------------------------------- @@ -380,13 +380,13 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, else: motscles['CARA_POUTRE']=_F(CARA_GEOM=__cageo, LAPL_PHI=__tempe1, - RT=__rt, + RT=__rt, TOUT='OUI', OPTION='CARA_TORSION', ) __cator=POST_ELEM(MODELE=__nomoth, CHAM_MATER=__chmath, **motscles ) - + # --- CALCUL DES COEFFICIENTS DE CISAILLEMENT ET DES COORDONNEES DU # --- CENTRE DE CISAILLEMENT/TORSION : @@ -399,7 +399,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, LAPL_PHI_Z=__tempe3, TOUT='OUI', OPTION='CARA_CISAILLEMENT',), ) - + # # ------------------------------------------------------------ @@ -552,7 +552,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, SOLVEUR=_F(METHODE='LDLT', RENUM='SANS', STOP_SINGULIER='NON',), ) - + # --- CALCUL DE L INERTIE DE GAUCHISSEMENT : # ------------------------------------- @@ -563,7 +563,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, TOUT='OUI', OPTION='CARA_GAUCHI'), ) - + # # ================================================================== # --- = CALCUL DE LA CONSTANTE DE TORSION SUR CHAQUE GROUPE = @@ -755,7 +755,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, CHAM_MATER=__chmath, EXCIT=_F(CHARGE=__chart3, ), SOLVEUR=_F(STOP_SINGULIER='NON',) ) - + # --- CALCUL DU RAYON DE TORSION : # -------------------------- @@ -804,16 +804,16 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, NOM_CHAM='FLUX_ELNO_TEMP', TRAC_NOR='OUI', NOM_CMP=('FLUX','FLUY'), - OPERATION='MOYENNE')) + OPERATION='MOYENNE')) __m1=(abs(__flun['TRAC_NOR',3])+abs(__flun['TRAC_NOR',4]))/2. if __m1 > __rtext : __rtext=__m1 __rt=__rtext - + # --- CALCUL DE LA CONSTANTE DE TORSION : # --------------------------------- - + __catp1=POST_ELEM(MODELE=__nomoth, CHAM_MATER=__chmath, CARA_POUTRE=_F(CARA_GEOM=__catp2, diff --git a/Aster/Cata/cataSTA9/Macro/macr_lign_coupe_ops.py b/Aster/Cata/cataSTA9/Macro/macr_lign_coupe_ops.py index 36c901ab..fd7078e5 100644 --- a/Aster/Cata/cataSTA9/Macro/macr_lign_coupe_ops.py +++ b/Aster/Cata/cataSTA9/Macro/macr_lign_coupe_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macr_lign_coupe_ops Macro DATE 07/04/2008 AUTEUR GALENNE E.GALENNE +#@ MODIF macr_lign_coupe_ops Macro DATE 07/10/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -602,7 +602,7 @@ def macr_lign_coupe_ops(self,RESULTAT,CHAM_GD,UNITE_MAILLAGE,LIGN_COUPE, from Noyau.N_utils import AsType import aster,math from Utilitai.UniteAster import UniteAster - from Utilitai.Utmess import UTMESS + from Utilitai.Utmess import UTMESS, MasquerAlarme, RetablirAlarme ier=0 # On importe les definitions des commandes a utiliser dans la macro @@ -618,6 +618,11 @@ def macr_lign_coupe_ops(self,RESULTAT,CHAM_GD,UNITE_MAILLAGE,LIGN_COUPE, # La macro compte pour 1 dans la numerotation des commandes self.set_icmd(1) + # + MasquerAlarme('CALCULEL2_63') + MasquerAlarme('CALCULEL2_64') + MasquerAlarme('MODELISA5_53') + mcORDR={} if RESULTAT != None: @@ -635,8 +640,8 @@ def macr_lign_coupe_ops(self,RESULTAT,CHAM_GD,UNITE_MAILLAGE,LIGN_COUPE, mcORDR['TOUT_ORDRE']='OUI' nomresu=RESULTAT.nom - l_modele=aster.getvectjev(nomresu.ljust(19)+'.MODL') - n_modele=string.strip(l_modele[0]) + iret,ibid,n_modele = aster.dismoi('F','MODELE',nomresu,'RESULTAT') + n_modele=n_modele.strip() if n_modele=='' : if MODELE==None: UTMESS('F','POST0_9',valk=nomresu) @@ -943,4 +948,7 @@ def macr_lign_coupe_ops(self,RESULTAT,CHAM_GD,UNITE_MAILLAGE,LIGN_COUPE, nomres=CREA_TABLE(**dprod) + RetablirAlarme('CALCULEL2_63') + RetablirAlarme('CALCULEL2_64') + RetablirAlarme('MODELISA5_53') return ier diff --git a/Aster/Cata/cataSTA9/Macro/macr_recal_ops.py b/Aster/Cata/cataSTA9/Macro/macr_recal_ops.py index e0fafb60..8edc4e40 100644 --- a/Aster/Cata/cataSTA9/Macro/macr_recal_ops.py +++ b/Aster/Cata/cataSTA9/Macro/macr_recal_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macr_recal_ops Macro DATE 19/11/2007 AUTEUR COURTOIS M.COURTOIS +#@ MODIF macr_recal_ops Macro DATE 04/11/2008 AUTEUR ASSIRE A.ASSIRE # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -142,6 +142,18 @@ def macr_recal_externe( RESU_EXP, LIST_PARA, RESU_CALC, UNITE_ESCL=3, POIDS=None return fonctionnelle, gradient +# -------------------------------------------------------------------------------------------------- +def force_list(obj, typref=list): + """Retourne 'obj' sous forme d'une liste de 'typref'. + """ + if type(obj) not in (list, tuple): + assert type(obj) == typref, '%s != %s' % (type(obj), typref) + obj = [obj,] + elif len(obj) > 0: + elt = obj[0] + if type(elt) != typref: + obj = [obj,] + return obj # -------------------------------------------------------------------------------------------------- def macr_recal_ops(self,UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, LIST_DERIV, RESU_CALC, @@ -181,7 +193,7 @@ def macr_recal_ops(self,UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, LIST_DERIV, RESU self.current_context[k]= v self.current_context['_F']=cata.__dict__['_F'] - macr_recal(UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, LIST_DERIV, RESU_CALC, + macr_recal(UNITE_ESCL, force_list(RESU_EXP, Numeric.ArrayType), POIDS, force_list(LIST_PARA), LIST_DERIV, force_list(RESU_CALC), ITER_MAXI, ITER_FONC_MAXI, RESI_GLOB_RELA,UNITE_RESU,PARA_DIFF_FINI, GRAPHIQUE, SUIVI_ESCLAVE, METHODE, INFO, **args) diff --git a/Aster/Cata/cataSTA9/Macro/macro_expans_ops.py b/Aster/Cata/cataSTA9/Macro/macro_expans_ops.py index 276f086b..b0d92e23 100644 --- a/Aster/Cata/cataSTA9/Macro/macro_expans_ops.py +++ b/Aster/Cata/cataSTA9/Macro/macro_expans_ops.py @@ -1,21 +1,21 @@ -#@ MODIF macro_expans_ops Macro DATE 26/03/2008 AUTEUR BODEL C.BODEL +#@ MODIF macro_expans_ops Macro DATE 03/11/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== @@ -45,17 +45,26 @@ def macro_expans_ops( self, import aster EXTR_MODE = self.get_cmd('EXTR_MODE') PROJ_MESU_MODAL = self.get_cmd('PROJ_MESU_MODAL') - REST_BASE_PHYS = self.get_cmd('REST_BASE_PHYS') + REST_GENE_PHYS = self.get_cmd('REST_GENE_PHYS') PROJ_CHAMP = self.get_cmd('PROJ_CHAMP') NORM_MODE = self.get_cmd('NORM_MODE') - - + + # La macro compte pour 1 dans la numerotation des commandes self.set_icmd(1) - NUME_MODE_NUM = MODELE_CALCUL['NUME_MODE'] - NUME_MODE_EXP = MODELE_MESURE['NUME_MODE'] - + is_nume_num = is_nume_exp = 0 + if MODELE_CALCUL['NUME_MODE'] or MODELE_CALCUL['NUME_ORDRE']: + # on cree un resultat RESU_NX par extraction de NUME_ORDREs + is_nume_num = 1 + else: + if RESU_NX: UTMESS('A','MEIDEE0_6',valk=['MODELE_MESURE','RESU_EX']) + if MODELE_MESURE['NUME_MODE'] or MODELE_MESURE['NUME_ORDRE']: + # On cree un RESU_EX par extraction de NUME_ORDREs + is_nume_exp = 1 + else: + if RESU_EX: UTMESS('A','MEIDEE0_6',valk=['MODELE_CALCUL','RESU_NX']) + RESU_NUM = MODELE_CALCUL['BASE'] RESU_EXP = MODELE_MESURE['MESURE'] @@ -66,25 +75,35 @@ def macro_expans_ops( self, # Extraction des modes numériques # ------------------------------- - self.DeclareOut( "RESU_NX", RESU_NX ) - if not NUME_MODE_NUM: + if not is_nume_num: RESU_NX = RESU_NUM else: - RESU_NX = EXTR_MODE( FILTRE_MODE=_F( MODE=RESU_NUM, - NUME_MODE=NUME_MODE_NUM ) ) + self.DeclareOut( "RESU_NX", RESU_NX ) + mfact = {'MODE':RESU_NUM} + if MODELE_CALCUL['NUME_MODE']: + mfact.update({'NUME_MODE':MODELE_CALCUL['NUME_MODE']}) + elif MODELE_CALCUL['NUME_ORDRE']: + mfact.update({'NUME_ORDRE':MODELE_CALCUL['NUME_ORDRE']}) + + RESU_NX = EXTR_MODE( FILTRE_MODE = mfact ) + - # Extraction des modes expérimentaux # ---------------------------------- - self.DeclareOut( "RESU_EX", RESU_EX ) - if not NUME_MODE_EXP: + if not is_nume_exp: RESU_EX = RESU_EXP else: - RESU_EX = EXTR_MODE( FILTRE_MODE=_F( MODE=RESU_EXP, - NUME_MODE=NUME_MODE_EXP ) ) + self.DeclareOut( "RESU_EX", RESU_EX ) + mfact = {'MODE':RESU_EXP} + if MODELE_MESURE['NUME_MODE']: + mfact.update({'NUME_MODE':MODELE_MESURE['NUME_MODE']}) + elif MODELE_MESURE['NUME_ORDRE']: + mfact.update({'NUME_ORDRE':MODELE_MESURE['NUME_ORDRE']}) + + RESU_EX = EXTR_MODE( FILTRE_MODE = mfact ) + - # Projection des modes experimentaux - on passe le mot-clef # RESOLUTION directement à PROJ_MESU_MODAL # --------------------------------------------------------- @@ -113,8 +132,8 @@ def macro_expans_ops( self, paras = None #"LE MODELE MEDURE DOIT ETRE UN CONCEPT DE TYPE DYNA_HARMO OU MODE_MECA") UTMESS('A','MEIDEE0_1') - - + + try: __PROJ = PROJ_MESU_MODAL(MODELE_CALCUL = _F( BASE=RESU_NX, MODELE=MOD_CALCUL, @@ -128,30 +147,32 @@ def macro_expans_ops( self, ); except Exception, err: raise Exception, err - + # Phase de reconstruction des donnees mesurees sur le maillage # numerique # ------------------------------------------------------------ self.DeclareOut( "RESU_ET", RESU_ET ) - RESU_ET = REST_BASE_PHYS( RESU_GENE = __PROJ, + RESU_ET = REST_GENE_PHYS( RESU_GENE = __PROJ, MODE_MECA = RESU_NX, TOUT_ORDRE = 'OUI', NOM_CHAM = NOM_CHAM); - + # Restriction des modes mesures etendus sur le maillage capteur # ------------------------------------------------------------- self.DeclareOut( "RESU_RD", RESU_RD ) refd1 = aster.getvectjev(RESU_EXP.nom.ljust(19)+".REFD") refd2 = aster.getvectjev(RESU_EX.nom.ljust(19)+".REFD") + nume=None if RESU_EX.REFD.get(): tmp = RESU_EX.REFD.get()[3] - nume = self.jdc.sds_dict[tmp.strip()] + if tmp.strip() : + nume = self.jdc.sds_dict[tmp.strip()] elif NUME_DDL: nume = NUME_DDL - else: + if not nume : UTMESS('A','MEIDEE0_5') RESU_RD = PROJ_CHAMP( METHODE = 'ELEM', RESULTAT = RESU_ET, @@ -165,5 +186,5 @@ def macro_expans_ops( self, NOM_PARA = paras, ); - + return ier diff --git a/Aster/Cata/cataSTA9/Macro/macro_matr_asse_ops.py b/Aster/Cata/cataSTA9/Macro/macro_matr_asse_ops.py index 6bca7b13..a3089492 100644 --- a/Aster/Cata/cataSTA9/Macro/macro_matr_asse_ops.py +++ b/Aster/Cata/cataSTA9/Macro/macro_matr_asse_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macro_matr_asse_ops Macro DATE 18/03/2008 AUTEUR BOYERE E.BOYERE +#@ MODIF macro_matr_asse_ops Macro DATE 17/11/2008 AUTEUR DELMAS J.DELMAS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -86,7 +86,7 @@ def macro_matr_asse_ops(self,MODELE,CHAM_MATER,CARA_ELEM,MATR_ASSE, motscles['RIGI_MECA'] =rigel motscles['MASS_MECA'] =masel if CHARGE != None: - if option[0:9] not in ('MASS_THER','RIGI_GEOM','MASS_ID_M'): + if option[0:9] not in ('MASS_THER','RIGI_GEOM'): motscles['CHARGE'] =CHARGE if CHAM_MATER != None: motscles['CHAM_MATER'] =CHAM_MATER if CARA_ELEM != None: motscles['CARA_ELEM'] =CARA_ELEM diff --git a/Aster/Cata/cataSTA9/Macro/macro_visu_meidee_ops.py b/Aster/Cata/cataSTA9/Macro/macro_visu_meidee_ops.py deleted file mode 100644 index 7d817d30..00000000 --- a/Aster/Cata/cataSTA9/Macro/macro_visu_meidee_ops.py +++ /dev/null @@ -1,251 +0,0 @@ -#@ MODIF macro_visu_meidee_ops Macro DATE 14/05/2008 AUTEUR BODEL C.BODEL -# -*- coding: iso-8859-1 -*- -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2006 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. -# ====================================================================== - -## \package macro_visu_meidee_ops Implémentation de la macro MACRO_VISU_MEIDEE -# -# Ce module contient la partie controle de la macro MACRO_VISU_MEIDEE -# l'implémetation de cette macro se trouve dans les modules -# meidee_help, meidee_mac, meidee_massamor, meidee_turbulent -# on utilise aussi une librairie de support -# pour la gestion de l'interface graphique dans meidee_iface - - -def macro_visu_meidee_ops( self, - INTERACTIF = None, - UNITE_FIMEN = None, - UNITE_RESU = None, - EXPANSION = None, - FLUIDE_ELASTIQUE = None, - TURBULENT = None, - MODIFSTRUCT = None, - GROUP_NO_CAPTEURS = None, - GROUP_NO_EXTERIEUR = None, - RESU_FLUDELA = None, - RESU_TURBULENT = None, - RESU_MODIFSTRU = None, - **args): - import aster - from Meidee.meidee_cata import MeideeObjects - ier = 0 - - prev = aster.onFatalError() - aster.onFatalError("EXCEPTION") - - # La macro compte pour 1 dans la numerotation des commandes - self.set_icmd(1) - - - # gestion des concepts sortants de la macro, declares a priori - table = [] - table_fonction = [] - - if not RESU_MODIFSTRU: - out_modifstru = {} - else: - out_modifstru = RESU_MODIFSTRU[0] # max=1 dans le capy - - - if not RESU_TURBULENT: - RESU_TURBULENT = [] - else: - for res in RESU_TURBULENT: - table_fonction.append(res['TABLE']) - out_turbulent = {"DeclareOut" : self.DeclareOut, - "TypeTables" : 'TABLE_FONCTION', - "ComptTable" : 0, - "TablesOut" : table_fonction} - - if not RESU_FLUDELA: - RESU_FLUDELA = [] - else: - for res in RESU_FLUDELA: - table.append(res['TABLE']) - out_fludela = {"DeclareOut" : self.DeclareOut, - "TypeTables" : 'TABLE', - "ComptTable" : 0, - "TablesOut" : table} - - - # Mode interactif : ouverture d'une fenetre Tk - if INTERACTIF == "OUI": - create_interactive_window(self, - UNITE_FIMEN, - UNITE_RESU, - out_fludela, - out_turbulent, - out_modifstru) - else: - from Meidee.meidee_calcul import MessageBox - from Meidee.meidee_test import TestMeidee - mess = MessageBox(UNITE_RESU) - mess.disp_mess("Mode non intéractif") - - objects = MeideeObjects(self, mess) - - # importation des concepts aster existants de la memoire jeveux - TestMeidee(self, - mess, - out_fludela, - out_turbulent, - out_modifstru, - objects, - EXPANSION, - FLUIDE_ELASTIQUE, - TURBULENT, - MODIFSTRUCT, - GROUP_NO_CAPTEURS, - GROUP_NO_EXTERIEUR - ) - - mess.close_file() - aster.onFatalError(prev) - return ier - - - -def create_tab_mess_widgets(tk, UNITE_RESU): - """Construits les objects table et boîte à messages.""" - try: - from Pmw import PanedWidget - except ImportError: - PanedWidget = None - - from Meidee.meidee_iface import MessageBoxInteractif, TabbedWindow - - if PanedWidget: - pw = PanedWidget(tk, orient='vertical', - hull_borderwidth = 1, - hull_relief = 'sunken', - ) - tabsw = pw.add("main", min=.1, max=.9) - msgw = pw.add("msg", min=.1, max=.2) - pw.grid(sticky='nsew') - tabsw.rowconfigure(0, weight=1) - tabsw.columnconfigure(0, weight=1) - msgw.rowconfigure(0, weight=1) - msgw.columnconfigure(0, weight=1) - else: - tabsw = tk - msgw = tk - tk.rowconfigure(1, weight=3) - tk.rowconfigure(1, weight=1) - - tabs = TabbedWindow(tabsw, ["Expansion de modeles", - "Modification structurale", - "MEIDEE mono-modal", - "Identification de chargement"]) - - tabs.grid(row=0, column=0, sticky='nsew') - # pack(side='top',expand=1,fill='both') - - # ecriture des message dans un fichier message - mess = MessageBoxInteractif(msgw, UNITE_RESU) - if PanedWidget: - mess.grid(row=0, column=0, sticky='nsew') - #mess.pack(side='top',expand=1,fill='both') - else: - mess.grid(row=1, column=0, sticky='nsew') - #mess.pack(side='top',expand=1,fill='both') - - return tabs, mess - -def get_fimen_files(UNITE_FIMEN, FIMEN=None): - """Fichiers fimen éventuels associés aux unités logiques en entrée""" - # XXX FIMEN is not defined (should it be included in the macro) - from Utilitai.UniteAster import UniteAster - fichiers_fimen = [] - print "FIMEN:", UNITE_FIMEN - - if UNITE_FIMEN: - if type(FIMEN)==int: - UNITE_FIMEN= [ UNITE_FIMEN ] - for unit in UNITE_FIMEN: - UL = UniteAster() - fichiers_fimen.append( (unit, UL.Nom(unit)) ) - - return fichiers_fimen - - -class FermetureCallback: - """Opérations à appliquer lors de la fermeture de la - fenêtre Tk. - """ - - def __init__(self, main_tk, turbulent): - self.main_tk = main_tk - self.turbulent = turbulent - - def apply(self): - """Enlève les fichiers temporaires de Xmgrace""" - self.turbulent.xmgr_manager.fermer() - self.main_tk.quit() - - -def create_interactive_window(macro, - UNITE_FIMEN, - UNITE_RESU, - out_fludela, - out_turbulent, - out_modifstru): - """Construit la fenêtre interactive comprenant une table pour - les 4 domaines de Meidee.""" - from Tkinter import Tk - - from Meidee.meidee_cata import MeideeObjects - from Meidee.meidee_correlation import InterfaceCorrelation - from Meidee.meidee_modifstruct import InterfaceModifStruct - from Meidee.meidee_fludela import InterfaceFludela - from Meidee.meidee_turbulent import InterfaceTurbulent - - # fenetre principale - tk = Tk() - tk.rowconfigure(0, weight=1) - tk.columnconfigure(0,weight=1) - - tabs, mess = create_tab_mess_widgets(tk, UNITE_RESU) - main = tabs.root() - - # importation des concepts aster de la memoire jeveux - objects = MeideeObjects(macro, mess) - tabs.set_objects(objects) - - iface = InterfaceCorrelation(main, objects, macro, mess) - imodifstruct = InterfaceModifStruct(main, objects, macro, - mess, out_modifstru) - fludela = InterfaceFludela(main, objects, - get_fimen_files(UNITE_FIMEN), mess, out_fludela) - turbulent = InterfaceTurbulent(main, objects, mess, out_turbulent) - - tabs.set_tab("Expansion de modeles", iface.main) - tabs.set_tab("Modification structurale", imodifstruct.main) - tabs.set_tab("MEIDEE mono-modal", fludela ) - tabs.set_tab("Identification de chargement", turbulent) - - #tabs.set_current_tab("Modifstruct") - tabs.set_current_tab("Identification de chargement") - - tk.protocol("WM_DELETE_WINDOW", FermetureCallback(tk, turbulent).apply) - - try: - tk.mainloop() - except : - print "MEIDEE : *ERREUR*" - - diff --git a/Aster/Cata/cataSTA9/Macro/observation_ops.py b/Aster/Cata/cataSTA9/Macro/observation_ops.py index 348cb750..d8771a41 100644 --- a/Aster/Cata/cataSTA9/Macro/observation_ops.py +++ b/Aster/Cata/cataSTA9/Macro/observation_ops.py @@ -1,4 +1,4 @@ -#@ MODIF observation_ops Macro DATE 26/03/2008 AUTEUR BODEL C.BODEL +#@ MODIF observation_ops Macro DATE 14/10/2008 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -108,29 +108,33 @@ def observation_ops(self, # cham_mater et cara_elem pour le resultat a projeter jdc = CONTEXT.get_current_step().jdc - nom_cara_elem = aster.getvectjev( RESULTAT.nom.ljust(19) + - '.CARA ' )[0].strip() - if len(nom_cara_elem) > 0 : -## nom_cara_elem = nom_cara_elem[0].strip() - cara_elem = jdc.sds_dict[nom_cara_elem] + iret,ibid,nom_cara_elem = aster.dismoi('F','CARA_ELEM',RESULTAT.nom,'RESULTAT') + if len(nom_cara_elem) > 0 : + assert nom_cara_elem.strip() != "#PLUSIEURS" , nom_cara_elem + if nom_cara_elem.strip() == "#AUCUN" : + cara_elem = None + else : + cara_elem = jdc.sds_dict[nom_cara_elem.strip()] else: cara_elem = None - - nom_cham_mater = aster.getvectjev( RESULTAT.nom.ljust(19) + - '.MATE ' )[0].strip() + + iret,ibid,nom_cham_mater = aster.dismoi('F','CHAM_MATER',RESULTAT.nom,'RESULTAT') if len(nom_cham_mater) > 0 : -## nom_cham_mater = nom_cham_mater[0].strip() - cham_mater = jdc.sds_dict[nom_cham_mater] + assert nom_cham_mater.strip() != "#PLUSIEURS" , nom_cham_mater + if nom_cham_mater.strip() == "#AUCUN" : + cham_mater = None + else : + cham_mater = jdc.sds_dict[nom_cham_mater.strip()] else: cham_mater = None # recuperation du maillage associe au modele experimental - _maillag = aster.getvectjev( MODELE_2.nom.ljust(8) + '.MODELE .LGRF ' ) + _maillag = aster.getvectjev( MODELE_2.nom.ljust(8) + '.MODELE .LGRF' ) maillage = _maillag[0].strip() jdc = CONTEXT.get_current_step().jdc mayaexp = jdc.sds_dict[maillage] - _maillag = aster.getvectjev( MODELE_1.nom.ljust(8) + '.MODELE .LGRF ' ) + _maillag = aster.getvectjev( MODELE_1.nom.ljust(8) + '.MODELE .LGRF' ) maillage = _maillag[0].strip() jdc = CONTEXT.get_current_step().jdc mayanum = jdc.sds_dict[maillage] @@ -325,7 +329,7 @@ def crea_normale(self, modele_1, modele_2, from Accas import _F # recherche du maillage associe au modele numerique nom_modele_num = modele_1.nom - _maillag = aster.getvectjev( nom_modele_num.ljust(8) + '.MODELE .LGRF ' ) + _maillag = aster.getvectjev( nom_modele_num.ljust(8) + '.MODELE .LGRF' ) maillage = _maillag[0].strip() jdc = CONTEXT.get_current_step().jdc mayanum = jdc.sds_dict[maillage] @@ -366,7 +370,7 @@ def crea_normale(self, modele_1, modele_2, affe_dct["CHAM_MATER"] = cham_mater if cara_elem is not None: affe_dct["CARA_ELEM"] = cara_elem - + __norm3 = CREA_RESU( OPERATION = 'AFFE', TYPE_RESU = 'EVOL_ELAS', NOM_CHAM = 'DEPL', diff --git a/Aster/Cata/cataSTA9/Macro/post_dyna_alea_ops.py b/Aster/Cata/cataSTA9/Macro/post_dyna_alea_ops.py index 944f4395..481e9b79 100644 --- a/Aster/Cata/cataSTA9/Macro/post_dyna_alea_ops.py +++ b/Aster/Cata/cataSTA9/Macro/post_dyna_alea_ops.py @@ -1,4 +1,4 @@ -#@ MODIF post_dyna_alea_ops Macro DATE 25/04/2008 AUTEUR ZENTNER I.ZENTNER +#@ MODIF post_dyna_alea_ops Macro DATE 06/10/2008 AUTEUR ZENTNER I.ZENTNER # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -59,9 +59,13 @@ def post_dyna_alea_ops(self,INTE_SPEC, FRAGILITE,TITRE,INFO,**args): #---------algorithme d'optimisation pour le maximum de vraisemblance def vrais(x): am=x[0] - assert am >0.000, 'optimize.py: am negatif' beta=x[1] - assert am >0.000, 'optimize.py: beta negatif' +# assert am >0.000, 'optimize.py: beta negatif' +# assert am >0.000, 'optimize.py: am negatif' + if am <=0.000: + am=0.01 + if beta <=0.000: + beta=0.001 res=1.0 for k in range(Nbval): ai=liste_indic[k] @@ -143,11 +147,10 @@ def post_dyna_alea_ops(self,INTE_SPEC, FRAGILITE,TITRE,INFO,**args): mcfact.append(_F(PARA= 'PARA_NOCI' ,LISTE_R =liste_a )) mcfact.append(_F(PARA= 'PFA' ,LISTE_R = lpfa )) - #print 'fractiles a calculer par bootstrap : ', FRAGILITE['FRACTILE'] - # si calcul de fractiles (intervalles de confiance) par bootstrap + x0 = xopt if FRAGILITE['FRACTILE']!= None : if INFO==2 : texte='FRACTILES A CALCULER PAR BOOTSTRAP '+ str(FRAGILITE['FRACTILE']) +'\n' @@ -177,7 +180,7 @@ def post_dyna_alea_ops(self,INTE_SPEC, FRAGILITE,TITRE,INFO,**args): if INFO==2 : texte1='BOOTSTRAP TIRAGE '+ str(kb+1) texte2=' PARAMETRES Am, beta ESTIMES : '+str(xopt)+'\n' - aster.affiche('MESSAGE',texte1) #print 'bootstrap tirage', kb+1, ', - parametres Am, beta estimes: ', xopt + aster.affiche('MESSAGE',texte1) aster.affiche('MESSAGE',texte2) vecval=(Numeric.log(vec_a/xopt[0]))/xopt[1] for m in range(Nba): diff --git a/Aster/Cata/cataSTA9/Macro/post_k1_k2_k3_ops.py b/Aster/Cata/cataSTA9/Macro/post_k1_k2_k3_ops.py index 4222d356..38595c64 100644 --- a/Aster/Cata/cataSTA9/Macro/post_k1_k2_k3_ops.py +++ b/Aster/Cata/cataSTA9/Macro/post_k1_k2_k3_ops.py @@ -1,4 +1,4 @@ -#@ MODIF post_k1_k2_k3_ops Macro DATE 13/05/2008 AUTEUR GALENNE E.GALENNE +#@ MODIF post_k1_k2_k3_ops Macro DATE 17/11/2008 AUTEUR PROIX J-M.PROIX # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -50,6 +50,50 @@ def moy(t): for value in t : m += value return (m/len(t)) + +def InterpolFondFiss(s0, Coorfo) : +# Interpolation des points du fond de fissure (xfem) +# s0 = abscisse curviligne du point considere +# Coorfo = Coordonnees du fond (extrait de la sd fiss_xfem) +# en sortie : xyza = Coordonnees du point et abscisse + n = len(Coorfo) / 4 + if ( s0 < Coorfo[3] ) : + xyz = [Coorfo[0],Coorfo[1],Coorfo[2]] + return xyz + if ( s0 > Coorfo[-1] ) : + xyz = [Coorfo[-4],Coorfo[-3],Coorfo[-2]] + return xyz + i = 1 + while s0 > Coorfo[4*i+3]: + i = i+1 + xyz = [0.]*4 + xyz[0] = (s0-Coorfo[4*(i-1)+3]) * (Coorfo[4*i+0]-Coorfo[4*(i-1)+0]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Coorfo[4*(i-1)+0] + xyz[1] = (s0-Coorfo[4*(i-1)+3]) * (Coorfo[4*i+1]-Coorfo[4*(i-1)+1]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Coorfo[4*(i-1)+1] + xyz[2] = (s0-Coorfo[4*(i-1)+3]) * (Coorfo[4*i+2]-Coorfo[4*(i-1)+2]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Coorfo[4*(i-1)+2] + xyz[3] = s0 + return xyz + +def InterpolBaseFiss(s0, Basefo, Coorfo) : +# Interpolation de la base locale en fond de fissure +# s0 = abscisse curviligne du point considere +# Basefo = base locale du fond (VNx,VNy,VNz,VPx,VPy,VPz) +# Coorfo = Coordonnees et abscisses du fond (extrait de la sd fiss_xfem) +# en sortie : VPVNi = base locale au point considere (6 coordonnes) + n = len(Coorfo) / 4 + if ( s0 < Coorfo[3] ) : + VPVNi = Basefo[0:6] + return VPVNi + if ( s0 > Coorfo[-1] ) : + VPVNi = [Basefo[i] for i in range(-6,0)] + return VPVNi + i = 1 + while s0 > Coorfo[4*i+3]: + i = i+1 + VPVNi = [0.]*6 + for k in range(6) : + VPVNi[k] = (s0-Coorfo[4*(i-1)+3]) * (Basefo[6*i+k]-Basefo[6*(i-1)+k]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Basefo[6*(i-1)+k] + return VPVNi + def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, TABL_DEPL_SUP,TABL_DEPL_INF,ABSC_CURV_MAXI,PREC_VIS_A_VIS, @@ -255,6 +299,7 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, Lnofon = Lnf1 Nbnofo = Nbf1 ListmaS = FOND_FISS.LEVRESUP___MAIL.get() + if ListmaS==None : UTMESS('F','RUPTURE0_19') if SYME_CHAR=='SANS': ListmaI = FOND_FISS.LEVREINF___MAIL.get() __NCOFON=POST_RELEVE_T(ACTION=_F(INTITULE='Tab pour coordonnees noeuds du fond', @@ -351,9 +396,10 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, if NB_NOEUD_COUPE < 3 : UTMESS('A','RUPTURE0_17') NB_NOEUD_COUPE = 5 - MOD = aster.getvectjev(string.ljust(RESULTAT.nom,19)+'.MODL ') - if MOD==None : UTMESS('F','RUPTURE0_18') - MODEL = self.jdc.sds_dict[MOD[0].rstrip()] + iret,ibid,n_modele = aster.dismoi('F','MODELE',RESULTAT.nom,'RESULTAT') + n_modele=n_modele.rstrip() + if len(n_modele)==0 : UTMESS('F','RUPTURE0_18') + MODEL = self.jdc.sds_dict[n_modele] dmax = PREC_VIS_A_VIS * ABSC_CURV_MAXI for i in range(Nbf1): Porig = array(d_coorf[Lnf1[i]] ) @@ -511,9 +557,10 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, DTAN_EXTR = args['DTAN_EXTR'] dmax = PREC_VIS_A_VIS * ABSC_CURV_MAXI #Projection du resultat sur le maillage lineaire initial - MOD = aster.getvectjev(string.ljust(RESULTAT.nom,19)+'.MODL ') - if MOD==None : UTMESS('F','RUPTURE0_18') - MODEL = self.jdc.sds_dict[MOD[0].rstrip()] + iret,ibid,n_modele = aster.dismoi('F','MODELE',RESULTAT.nom,'RESULTAT') + n_modele=n_modele.rstrip() + if len(n_modele)==0 : UTMESS('F','RUPTURE0_18') + MODEL = self.jdc.sds_dict[n_modele] xcont = MODEL.xfem.XFEM_CONT.get() if xcont[0] == 0 : __RESX = RESULTAT @@ -529,12 +576,40 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, MODELE_2=__MODLINE, ); #Recuperation des coordonnees des points du fond de fissure (x,y,z,absc_curv) Listfo = FISSURE.FONDFISS.get() - Nbfond = len(Listfo)/4 + Basefo = FISSURE.BASEFOND.get() + NB_POINT_FOND = args['NB_POINT_FOND'] +#Traitement du cas fond multiple + Fissmult = FISSURE.FONDMULT.get() + Nbfiss = len(Fissmult)/2 + Numfiss = args['NUME_FOND'] + if Numfiss <= Nbfiss and Nbfiss > 1 : + Ptinit = Fissmult[2*(Numfiss-1)] + Ptfin = Fissmult[2*(Numfiss-1)+1] + Listfo2 = Listfo[((Ptinit-1)*4):(Ptfin*4)] + Listfo = Listfo2 + Basefo2 = Basefo[((Ptinit-1)*(2*ndim)):(Ptfin*(2*ndim))] + Basefo = Basefo2 + elif Numfiss > Nbfiss : + UTMESS('F','RUPTURE1_38',vali=[Nbfiss,Numfiss]) +#### + + if NB_POINT_FOND != None and MODELISATION=='3D' : + Nbfond = NB_POINT_FOND + absmax = Listfo[-1] + Coorfo = [None]*4*Nbfond + Vpropa = [None]*3*Nbfond + for i in range(0,Nbfond) : + absci = i*absmax/(Nbfond-1) + Coorfo[(4*i):(4*(i+1))] = InterpolFondFiss(absci, Listfo) + Vpropa[(6*i):(6*(i+1))] = InterpolBaseFiss(absci,Basefo, Listfo) + else : + Coorfo = Listfo + Vpropa = Basefo + Nbfond = len(Coorfo)/4 # Calcul de la direction de propagation en chaque point du fond VP = [None]*Nbfond VN = [None]*Nbfond absfon = [0,] - Vpropa = FISSURE.BASEFOND.get() # Cas fissure non necessairement plane if VECT_K1 == None : i = 0 @@ -550,9 +625,7 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, VN[0] = array([Vpropa[0],Vpropa[1],Vpropa[2]]) VP[0] = array([Vpropa[3+0],Vpropa[3+1],Vpropa[3+2]]) for i in range(1,Nbfond-1): - Pfon1 = array([Listfo[4*(i-1)],Listfo[4*(i-1)+1],Listfo[4*(i-1)+2]]) - Pfon2 = array([Listfo[4*i],Listfo[4*i+1],Listfo[4*i+2]]) - absf = sqrt(dot(transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1] + absf = Coorfo[4*i+3] absfon.append(absf) VN[i] = array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]]) VP[i] = array([Vpropa[3+6*i],Vpropa[3+6*i+1],Vpropa[3+6*i+2]]) @@ -560,9 +633,7 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, if abs(verif) < 0.98: UTMESS('A','RUPTURE1_35',vali=[i-1,i]) i = Nbfond-1 - Pfon1 = array([Listfo[4*(i-1)],Listfo[4*(i-1)+1],Listfo[4*(i-1)+2]]) - Pfon2 = array([Listfo[4*i],Listfo[4*i+1],Listfo[4*i+2]]) - absf = sqrt(dot(transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1] + absf = Coorfo[4*i+3] absfon.append(absf) if DTAN_EXTR != None : VP[i] = array(DTAN_EXTR) @@ -596,8 +667,8 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, if abs(verif) > 0.01: UTMESS('A','RUPTURE1_36') else : - Pfon2 = array([Listfo[4*i],Listfo[4*i+1],Listfo[4*i+2]]) - Pfon3 = array([Listfo[4*(i+1)],Listfo[4*(i+1)+1],Listfo[4*(i+1)+2]]) + Pfon2 = array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]]) + Pfon3 = array([Coorfo[4*(i+1)],Coorfo[4*(i+1)+1],Coorfo[4*(i+1)+2]]) VT = (Pfon3 - Pfon2)/sqrt(dot(transpose(Pfon3-Pfon2),Pfon3-Pfon2)) VP[0] = array(cross_product(VT,v1)) VNi = array([Vpropa[3],Vpropa[4],Vpropa[5]]) @@ -606,10 +677,10 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],] UTMESS('A','RUPTURE0_32',vali=[i],valr=vv) for i in range(1,Nbfond-1): - Pfon1 = array([Listfo[4*(i-1)],Listfo[4*(i-1)+1],Listfo[4*(i-1)+2]]) - Pfon2 = array([Listfo[4*i],Listfo[4*i+1],Listfo[4*i+2]]) - Pfon3 = array([Listfo[4*(i+1)],Listfo[4*(i+1)+1],Listfo[4*(i+1)+2]]) - absf = sqrt(dot(transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1] + Pfon1 = array([Coorfo[4*(i-1)],Coorfo[4*(i-1)+1],Coorfo[4*(i-1)+2]]) + Pfon2 = array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]]) + Pfon3 = array([Coorfo[4*(i+1)],Coorfo[4*(i+1)+1],Coorfo[4*(i+1)+2]]) + absf = Coorfo[4*i+3] absfon.append(absf) VT = (Pfon3 - Pfon2)/sqrt(dot(transpose(Pfon3-Pfon2),Pfon3-Pfon2)) VT = VT+(Pfon2 - Pfon1)/sqrt(dot(transpose(Pfon2-Pfon1),Pfon2-Pfon1)) @@ -621,9 +692,9 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],] UTMESS('A','RUPTURE0_32',vali=[i],valr=vv) i = Nbfond-1 - Pfon1 = array([Listfo[4*(i-1)],Listfo[4*(i-1)+1],Listfo[4*(i-1)+2]]) - Pfon2 = array([Listfo[4*i],Listfo[4*i+1],Listfo[4*i+2]]) - absf = sqrt(dot(transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1] + Pfon1 = array([Coorfo[4*(i-1)],Coorfo[4*(i-1)+1],Coorfo[4*(i-1)+2]]) + Pfon2 = array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]]) + absf = Coorfo[4*i+3] absfon.append(absf) if DTAN_EXTR != None : VP[i] = array(DTAN_EXTR) @@ -652,7 +723,7 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, #Sens de la tangente if MODELISATION=='3D' : i = Nbfond/2 else : i = 0 - Po = array([Listfo[4*i],Listfo[4*i+1],Listfo[4*i+2]]) + Po = array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]]) Porig = Po + ABSC_CURV_MAXI*VP[i] Pextr = Po - ABSC_CURV_MAXI*VP[i] __Tabg = MACR_LIGN_COUPE(RESULTAT=__RESX,NOM_CHAM='DEPL', @@ -660,7 +731,9 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, TYPE='SEGMENT',COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]), DISTANCE_MAX=dmax),); tmp=__Tabg.EXTR_TABLE() +# a sam test = getattr(tmp,'H1X').values() +# test = getattr(tmp,'E1X').values() if test==[None]*3 : UTMESS('F','RUPTURE0_33') if test[0]!=None : @@ -669,21 +742,24 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, sens = -1 DETRUIRE(CONCEPT=_F(NOM=__Tabg),INFO=1) # Extraction des sauts sur la fissure - TSaut = [None]*Nbfond NB_NOEUD_COUPE = args['NB_NOEUD_COUPE'] if NB_NOEUD_COUPE < 3 : UTMESS('A','RUPTURE0_34') NB_NOEUD_COUPE = 5 + mcfact=[] for i in range(Nbfond): - Porig = array([Listfo[4*i],Listfo[4*i+1],Listfo[4*i+2]]) + Porig = array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]]) if i==0 and DTAN_ORIG!=None : Pextr = Porig - ABSC_CURV_MAXI*VP[i] elif i==(Nbfond-1) and DTAN_EXTR!=None : Pextr = Porig - ABSC_CURV_MAXI*VP[i] else : Pextr = Porig + ABSC_CURV_MAXI*VP[i]*sens - TSaut[i] = MACR_LIGN_COUPE(RESULTAT=__RESX,NOM_CHAM='DEPL', - LIGN_COUPE=_F(NB_POINTS=NB_NOEUD_COUPE,COOR_ORIG=(Porig[0],Porig[1],Porig[2],), - TYPE='SEGMENT',COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]), - DISTANCE_MAX=dmax),); + mcfact.append(_F(NB_POINTS=NB_NOEUD_COUPE,COOR_ORIG=(Porig[0],Porig[1],Porig[2],), + TYPE='SEGMENT',COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]), + DISTANCE_MAX=dmax),) + TSo = MACR_LIGN_COUPE(RESULTAT=__RESX,NOM_CHAM='DEPL', + LIGN_COUPE=mcfact); + TTSo = TSo.EXTR_TABLE() + DETRUIRE(CONCEPT=_F(NOM=TSo),INFO=1) Nbnofo = Nbfond if xcont[0] != 0 : DETRUIRE(CONCEPT=_F(NOM=__MODLINE),INFO=1) @@ -749,8 +825,7 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, Ls = [string.ljust(Lnosup[ino][i],8) for i in range(len(Lnosup[ino]))] tabsup=tabsup.NOEUD==Ls elif FISSURE : - tabsup = TSaut[ino].EXTR_TABLE() - DETRUIRE(CONCEPT=_F(NOM=TSaut[ino]),INFO=1) + tabsup = TTSo.INTITULE=='l.coupe%i'%(ino+1) else : tabsup=TABL_DEPL_SUP.EXTR_TABLE() veri_tab(tabsup,TABL_DEPL_SUP.nom,ndim) @@ -839,7 +914,7 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, for iord in range(len(l_inst)) : inst=l_inst[iord] if INFO==2 and inst!=None: - texte="#================================================================================\n" + texte="#=================================================================================\n" texte=texte+"==> INSTANT: %f"%inst aster.affiche('MESSAGE',texte) if inst!=None: @@ -958,8 +1033,6 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, if FISSURE : H1 = getattr(tabsupi,'H1X').values() nbval = len(H1) - if H1[-1]==None : - UTMESS('F','RUPTURE0_33') H1 = complete(H1) E1 = getattr(tabsupi,'E1X').values() E1 = complete(E1) @@ -976,13 +1049,6 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, dzs = 2*(H1 + sqrt(abscs)*E1) abscs=array(abscs[:nbval]) -# --- TESTS NOMBRE DE NOEUDS--- - if nbval<3 : - UTMESS('F+','RUPTURE0_46') - if FOND_FISS : - UTMESS('F+','RUPTURE0_47',valk=Lnofon[ino]) - UTMESS('F','RUPTURE0_25') - # ---------- CALCUL PROP. MATERIAU AVEC TEMPERATURE ----------- if Tempe3D : tempeno=tabtemp.NOEUD==Lnofon[ino] @@ -998,8 +1064,23 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, coefg = (1. - nu**2) / e coefg3 = (1. + nu) / e +# --- TESTS NOMBRE DE NOEUDS--- + if nbval<3 : + UTMESS('A+','RUPTURE0_46') + if FOND_FISS : + UTMESS('A+','RUPTURE0_47',valk=Lnofon[ino]) + if FISSURE : + UTMESS('A+','RUPTURE0_99',vali=ino) + UTMESS('A','RUPTURE0_25') + kg1 = [0.]*8 + kg2 =[0.]*8 + kg3 =[0.]*8 + + else : +# SI NBVAL >= 3 : + # ------------------------------------------------------------------ -# CHANGEMENT DE REPERE +# CHANGEMENT DE REPERE # ------------------------------------------------------------------ # # 1 : VECTEUR NORMAL AU PLAN DE LA FISSURE @@ -1007,139 +1088,139 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, # 2 : VECTEUR NORMAL AU FOND DE FISSURE EN M # 3 : VECTEUR TANGENT AU FOND DE FISSURE EN M # - if FISSURE : - v2 = VP[ino] - v1 = VN[ino] - elif SYME_CHAR=='SANS' : - vo = array([( coxs[-1]+coxi[-1] )/2.,( coys[-1]+coyi[-1] )/2.,( cozs[-1]+cozi[-1] )/2.]) - ve = array([( coxs[0 ]+coxi[0 ] )/2.,( coys[0 ]+coyi[0 ] )/2.,( cozs[0 ]+cozi[0 ] )/2.]) - v2 = ve-vo - else : - vo = array([ coxs[-1], coys[-1], cozs[-1]]) - ve = array([ coxs[0], coys[0], cozs[0]]) - v2 = ve-vo - if not FISSURE : v1 = array(VECT_K1) - v2 = v2/sqrt(v2[0]**2+v2[1]**2+v2[2]**2) - v1p = sum(v2*v1) - if SYME_CHAR=='SANS' : v1 = v1-v1p*v2 - else : v2 = v2-v1p*v1 - v1 = v1/sqrt(v1[0]**2+v1[1]**2+v1[2]**2) - v2 = v2/sqrt(v2[0]**2+v2[1]**2+v2[2]**2) - v3 = array([v1[1]*v2[2]-v2[1]*v1[2],v1[2]*v2[0]-v2[2]*v1[0],v1[0]*v2[1]-v2[0]*v1[1]]) - pgl = asarray([v1,v2,v3]) - dpls = asarray([dxs,dys,dzs]) - dpls = matrixmultiply(pgl,dpls) - if SYME_CHAR!='SANS' and abs(dpls[0][0]) > 1.e-10 : - UTMESS('A','RUPTURE0_49',valk=[Lnofon[ino],SYME_CHAR]) - if FISSURE : - saut=dpls - elif SYME_CHAR=='SANS' : - dpli = asarray([dxi,dyi,dzi]) - dpli = matrixmultiply(pgl,dpli) - saut=(dpls-dpli) - else : - dpli = [multiply(dpls[0],-1.),dpls[1],dpls[2]] - saut=(dpls-dpli) - if INFO==2 : - mcfact=[] - mcfact.append(_F(PARA='ABSC_CURV' ,LISTE_R=abscs.tolist() )) - if not FISSURE : - mcfact.append(_F(PARA='DEPL_SUP_1',LISTE_R=dpls[0].tolist() )) - mcfact.append(_F(PARA='DEPL_INF_1',LISTE_R=dpli[0].tolist() )) - mcfact.append(_F(PARA='SAUT_1' ,LISTE_R=saut[0].tolist() )) - if not FISSURE : - mcfact.append(_F(PARA='DEPL_SUP_2',LISTE_R=dpls[1].tolist() )) - mcfact.append(_F(PARA='DEPL_INF_2',LISTE_R=dpli[1].tolist() )) - mcfact.append(_F(PARA='SAUT_2' ,LISTE_R=saut[1].tolist() )) - if ndim==3 : - if not FISSURE : - mcfact.append(_F(PARA='DEPL_SUP_3',LISTE_R=dpls[2].tolist() )) - mcfact.append(_F(PARA='DEPL_INF_3',LISTE_R=dpli[2].tolist() )) - mcfact.append(_F(PARA='SAUT_3' ,LISTE_R=saut[2].tolist() )) - __resu0=CREA_TABLE(LISTE=mcfact,TITRE='--> SAUTS') - aster.affiche('MESSAGE',__resu0.EXTR_TABLE().__repr__()) - DETRUIRE(CONCEPT=_F(NOM=__resu0),INFO=1) + if FISSURE : + v2 = VP[ino] + v1 = VN[ino] + elif SYME_CHAR=='SANS' : + vo = array([( coxs[-1]+coxi[-1] )/2.,( coys[-1]+coyi[-1] )/2.,( cozs[-1]+cozi[-1] )/2.]) + ve = array([( coxs[0 ]+coxi[0 ] )/2.,( coys[0 ]+coyi[0 ] )/2.,( cozs[0 ]+cozi[0 ] )/2.]) + v2 = ve-vo + else : + vo = array([ coxs[-1], coys[-1], cozs[-1]]) + ve = array([ coxs[0], coys[0], cozs[0]]) + v2 = ve-vo + if not FISSURE : v1 = array(VECT_K1) + v2 = v2/sqrt(v2[0]**2+v2[1]**2+v2[2]**2) + v1p = sum(v2*v1) + if SYME_CHAR=='SANS' : v1 = v1-v1p*v2 + else : v2 = v2-v1p*v1 + v1 = v1/sqrt(v1[0]**2+v1[1]**2+v1[2]**2) + v2 = v2/sqrt(v2[0]**2+v2[1]**2+v2[2]**2) + v3 = array([v1[1]*v2[2]-v2[1]*v1[2],v1[2]*v2[0]-v2[2]*v1[0],v1[0]*v2[1]-v2[0]*v1[1]]) + pgl = asarray([v1,v2,v3]) + dpls = asarray([dxs,dys,dzs]) + dpls = matrixmultiply(pgl,dpls) + if SYME_CHAR!='SANS' and abs(dpls[0][0]) > 1.e-10 : + UTMESS('A','RUPTURE0_49',valk=[Lnofon[ino],SYME_CHAR]) + if FISSURE : + saut=dpls + elif SYME_CHAR=='SANS' : + dpli = asarray([dxi,dyi,dzi]) + dpli = matrixmultiply(pgl,dpli) + saut=(dpls-dpli) + else : + dpli = [multiply(dpls[0],-1.),dpls[1],dpls[2]] + saut=(dpls-dpli) + if INFO==2 : + mcfact=[] + mcfact.append(_F(PARA='ABSC_CURV' ,LISTE_R=abscs.tolist() )) + if not FISSURE : + mcfact.append(_F(PARA='DEPL_SUP_1',LISTE_R=dpls[0].tolist() )) + mcfact.append(_F(PARA='DEPL_INF_1',LISTE_R=dpli[0].tolist() )) + mcfact.append(_F(PARA='SAUT_1' ,LISTE_R=saut[0].tolist() )) + if not FISSURE : + mcfact.append(_F(PARA='DEPL_SUP_2',LISTE_R=dpls[1].tolist() )) + mcfact.append(_F(PARA='DEPL_INF_2',LISTE_R=dpli[1].tolist() )) + mcfact.append(_F(PARA='SAUT_2' ,LISTE_R=saut[1].tolist() )) + if ndim==3 : + if not FISSURE : + mcfact.append(_F(PARA='DEPL_SUP_3',LISTE_R=dpls[2].tolist() )) + mcfact.append(_F(PARA='DEPL_INF_3',LISTE_R=dpli[2].tolist() )) + mcfact.append(_F(PARA='SAUT_3' ,LISTE_R=saut[2].tolist() )) + __resu0=CREA_TABLE(LISTE=mcfact,TITRE='--> SAUTS') + aster.affiche('MESSAGE',__resu0.EXTR_TABLE().__repr__()) + DETRUIRE(CONCEPT=_F(NOM=__resu0),INFO=1) # ------------------------------------------------------------------ # CALCUL DES K1, K2, K3 # ------------------------------------------------------------------ - isig=sign(transpose(resize(saut[:,-1],(nbval-1,3)))) - isig=sign(isig+0.001) - saut=saut*array([[coefd]*nbval,[coefd]*nbval,[coefd3]*nbval]) - saut=saut**2 - ksig = isig[:,1] - ksig = array([ksig,ksig]) - ksig = transpose(ksig) - kgsig=resize(ksig,(1,6))[0] + isig=sign(transpose(resize(saut[:,-1],(nbval-1,3)))) + isig=sign(isig+0.001) + saut=saut*array([[coefd]*nbval,[coefd]*nbval,[coefd3]*nbval]) + saut=saut**2 + ksig = isig[:,1] + ksig = array([ksig,ksig]) + ksig = transpose(ksig) + kgsig=resize(ksig,(1,6))[0] # ------------------------------------------------------------------ # --- METHODE 1 --- # ------------------------------------------------------------------ - x1 = abscs[1:-1] - x2 = abscs[2: ] - y1 = saut[:,1:-1]/x1 - y2 = saut[:,2: ]/x2 - k = abs(y1-x1*(y2-y1)/(x2-x1)) - g = coefg*(k[0]+k[1])+coefg3*k[2] - kg1 = [max(k[0]),min(k[0]),max(k[1]),min(k[1]),max(k[2]),min(k[2])] - kg1 = sqrt(kg1)*kgsig - kg1=Numeric.concatenate([kg1,[max(g),min(g)]]) - vk = sqrt(k)*isig[:,:-1] - if INFO==2 : - mcfact=[] - mcfact.append(_F(PARA='ABSC_CURV_1' ,LISTE_R=x1.tolist() )) - mcfact.append(_F(PARA='ABSC_CURV_2' ,LISTE_R=x2.tolist() )) - mcfact.append(_F(PARA='K1' ,LISTE_R=vk[0].tolist() )) - mcfact.append(_F(PARA='K2' ,LISTE_R=vk[1].tolist() )) - if ndim==3 : - mcfact.append(_F(PARA='K3' ,LISTE_R=vk[2].tolist() )) - mcfact.append(_F(PARA='G' ,LISTE_R=g.tolist() )) - __resu1=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 1') - aster.affiche('MESSAGE',__resu1.EXTR_TABLE().__repr__()) - DETRUIRE(CONCEPT=_F(NOM=__resu1),INFO=1) + x1 = abscs[1:-1] + x2 = abscs[2: ] + y1 = saut[:,1:-1]/x1 + y2 = saut[:,2: ]/x2 + k = abs(y1-x1*(y2-y1)/(x2-x1)) + g = coefg*(k[0]+k[1])+coefg3*k[2] + kg1 = [max(k[0]),min(k[0]),max(k[1]),min(k[1]),max(k[2]),min(k[2])] + kg1 = sqrt(kg1)*kgsig + kg1=Numeric.concatenate([kg1,[max(g),min(g)]]) + vk = sqrt(k)*isig[:,:-1] + if INFO==2 : + mcfact=[] + mcfact.append(_F(PARA='ABSC_CURV_1' ,LISTE_R=x1.tolist() )) + mcfact.append(_F(PARA='ABSC_CURV_2' ,LISTE_R=x2.tolist() )) + mcfact.append(_F(PARA='K1' ,LISTE_R=vk[0].tolist() )) + mcfact.append(_F(PARA='K2' ,LISTE_R=vk[1].tolist() )) + if ndim==3 : + mcfact.append(_F(PARA='K3' ,LISTE_R=vk[2].tolist() )) + mcfact.append(_F(PARA='G' ,LISTE_R=g.tolist() )) + __resu1=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 1') + aster.affiche('MESSAGE',__resu1.EXTR_TABLE().__repr__()) + DETRUIRE(CONCEPT=_F(NOM=__resu1),INFO=1) # ------------------------------------------------------------------ # --- METHODE 2 --- # ------------------------------------------------------------------ - x1 = abscs[1: ] - y1 = saut[:,1:] - k = abs(y1/x1) - g = coefg*(k[0]+k[1])+coefg3*k[2] - kg2= [max(k[0]),min(k[0]),max(k[1]),min(k[1]),max(k[2]),min(k[2])] - kg2 = sqrt(kg2)*kgsig - kg2=Numeric.concatenate([kg2,[max(g),min(g)]]) - vk = sqrt(k)*isig - if INFO==2 : - mcfact=[] - mcfact.append(_F(PARA='ABSC_CURV' ,LISTE_R=x1.tolist() )) - mcfact.append(_F(PARA='K1' ,LISTE_R=vk[0].tolist() )) - mcfact.append(_F(PARA='K2' ,LISTE_R=vk[1].tolist() )) - if ndim==3 : - mcfact.append(_F(PARA='K3' ,LISTE_R=vk[2].tolist() )) - mcfact.append(_F(PARA='G' ,LISTE_R=g.tolist() )) - __resu2=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 2') - aster.affiche('MESSAGE',__resu2.EXTR_TABLE().__repr__()) - DETRUIRE(CONCEPT=_F(NOM=__resu2),INFO=1) + x1 = abscs[1: ] + y1 = saut[:,1:] + k = abs(y1/x1) + g = coefg*(k[0]+k[1])+coefg3*k[2] + kg2= [max(k[0]),min(k[0]),max(k[1]),min(k[1]),max(k[2]),min(k[2])] + kg2 = sqrt(kg2)*kgsig + kg2=Numeric.concatenate([kg2,[max(g),min(g)]]) + vk = sqrt(k)*isig + if INFO==2 : + mcfact=[] + mcfact.append(_F(PARA='ABSC_CURV' ,LISTE_R=x1.tolist() )) + mcfact.append(_F(PARA='K1' ,LISTE_R=vk[0].tolist() )) + mcfact.append(_F(PARA='K2' ,LISTE_R=vk[1].tolist() )) + if ndim==3 : + mcfact.append(_F(PARA='K3' ,LISTE_R=vk[2].tolist() )) + mcfact.append(_F(PARA='G' ,LISTE_R=g.tolist() )) + __resu2=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 2') + aster.affiche('MESSAGE',__resu2.EXTR_TABLE().__repr__()) + DETRUIRE(CONCEPT=_F(NOM=__resu2),INFO=1) # ------------------------------------------------------------------ # --- METHODE 3 --- # ------------------------------------------------------------------ - x1 = abscs[:-1] - x2 = abscs[1: ] - y1 = saut[:,:-1] - y2 = saut[:,1: ] - k = (sqrt(y2)*sqrt(x2)+sqrt(y1)*sqrt(x1))*(x2-x1) - k = Numeric.sum(transpose(k)) - de = abscs[-1] - vk = (k/de**2)*isig[:,0] - g = coefg*(vk[0]**2+vk[1]**2)+coefg3*vk[2]**2 - kg3=Numeric.concatenate([[vk[0]]*2,[vk[1]]*2,[vk[2]]*2,[g]*2]) - if INFO==2 : - mcfact=[] - mcfact.append(_F(PARA='K1' ,LISTE_R=vk[0] )) - mcfact.append(_F(PARA='K2' ,LISTE_R=vk[1] )) - if ndim==3 : - mcfact.append(_F(PARA='K3' ,LISTE_R=vk[2] )) - mcfact.append(_F(PARA='G' ,LISTE_R=g )) - __resu3=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 3') - aster.affiche('MESSAGE',__resu3.EXTR_TABLE().__repr__()) - DETRUIRE(CONCEPT=_F(NOM=__resu3),INFO=1) + x1 = abscs[:-1] + x2 = abscs[1: ] + y1 = saut[:,:-1] + y2 = saut[:,1: ] + k = (sqrt(y2)*sqrt(x2)+sqrt(y1)*sqrt(x1))*(x2-x1) + k = Numeric.sum(transpose(k)) + de = abscs[-1] + vk = (k/de**2)*isig[:,0] + g = coefg*(vk[0]**2+vk[1]**2)+coefg3*vk[2]**2 + kg3=Numeric.concatenate([[vk[0]]*2,[vk[1]]*2,[vk[2]]*2,[g]*2]) + if INFO==2 : + mcfact=[] + mcfact.append(_F(PARA='K1' ,LISTE_R=vk[0] )) + mcfact.append(_F(PARA='K2' ,LISTE_R=vk[1] )) + if ndim==3 : + mcfact.append(_F(PARA='K3' ,LISTE_R=vk[2] )) + mcfact.append(_F(PARA='G' ,LISTE_R=g )) + __resu3=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 3') + aster.affiche('MESSAGE',__resu3.EXTR_TABLE().__repr__()) + DETRUIRE(CONCEPT=_F(NOM=__resu3),INFO=1) # ------------------------------------------------------------------ # CREATION DE LA TABLE # ------------------------------------------------------------------ diff --git a/Aster/Cata/cataSTA9/Macro/post_k_trans_ops.py b/Aster/Cata/cataSTA9/Macro/post_k_trans_ops.py index 54b71a97..d0a3b890 100644 --- a/Aster/Cata/cataSTA9/Macro/post_k_trans_ops.py +++ b/Aster/Cata/cataSTA9/Macro/post_k_trans_ops.py @@ -1,4 +1,4 @@ -#@ MODIF post_k_trans_ops Macro DATE 22/01/2008 AUTEUR REZETTE C.REZETTE +#@ MODIF post_k_trans_ops Macro DATE 07/10/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -113,7 +113,7 @@ def post_k_trans_ops(self,RESU_TRANS,K_MODAL,TOUT_ORDRE, NUME_ORDRE, LIST_ORDRE, if F3D : n_mode = max((__kgtheta.EXTR_TABLE())['NUME_MODE'].values()['NUME_MODE']) nbno = max((__kgtheta.EXTR_TABLE())['NUM_PT'].values()['NUM_PT']) - labsc = (__kgtheta.EXTR_TABLE())['ABS_CURV'].values()['ABS_CURV'][0:nbno] + labsc = (__kgtheta.EXTR_TABLE())['ABSC_CURV'].values()['ABSC_CURV'][0:nbno] if nmodtr != n_mode : n_mode = min(nmodtr,n_mode) @@ -229,7 +229,7 @@ def post_k_trans_ops(self,RESU_TRANS,K_MODAL,TOUT_ORDRE, NUME_ORDRE, LIST_ORDRE, tabout = CREA_TABLE(LISTE = (_F(LISTE_I =lo, PARA = 'NUME_ORDRE'), _F(LISTE_R =li, PARA = 'INST'), _F(LISTE_I =range(nbno)*nbarch, PARA ='NUM_PT' ), - _F(LISTE_R =labsc*nbarch, PARA = 'ABS_CURV'), + _F(LISTE_R =labsc*nbarch, PARA = 'ABSC_CURV'), _F(LISTE_R =K1t, PARA = k1), _F(LISTE_R =K2t, PARA = k2), _F(LISTE_R =K3t, PARA = k3),), diff --git a/Aster/Cata/cataSTA9/Macro/propa_fiss_ops.py b/Aster/Cata/cataSTA9/Macro/propa_fiss_ops.py new file mode 100644 index 00000000..2933aa86 --- /dev/null +++ b/Aster/Cata/cataSTA9/Macro/propa_fiss_ops.py @@ -0,0 +1,653 @@ +#@ MODIF propa_fiss_ops Macro DATE 20/10/2008 AUTEUR GALENNE E.GALENNE +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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 InterpolationLineaire(x0, points) : + """ + Interpolation Lineaire de x0 sur la fonction discrétisée yi=points(xi) i=1,..,n + """ + # x0 = Une abscisse (1 colonne, 1 ligne) + # points = Tableau de n points (2 colonnes, n lignes) + # on suppose qu'il existe au moins 2 points, + # et que les points sont classés selon les abscisses croissantes + + n = len(points) + if ( x0 < points[0][0] ) : + y0 = points[0][1] + return y0 + if ( x0 > points[n-1][0] ) : + y0 = points[n-1][1] + return y0 + i = 1 + while x0 > points[i][0]: + i = i+1 + y0 = (x0-points[i-1][0]) * (points[i][1]-points[i-1][1]) / (points[i][0]-points[i-1][0]) + points[i-1][1] + return y0 + +def InterpolFondFiss(s0, Coorfo) : + """ + Interpolation des points du fond de fissure + """ + # s0 = abscisse curviligne du point considéré (0 < s0 > 1) + # Coorfo = Coordonnées du fond (extrait de la sd fiss_xfem) + # xyz = Coordonnées du point + + n = len(Coorfo) / 4 + if ( s0 < Coorfo[3] ) : + xyz = [Coorfo[0],Coorfo[1],Coorfo[2]] + return xyz + if ( s0 > Coorfo[-1] ) : + xyz = [Coorfo[-4],Coorfo[-3],Coorfo[-2]] + return xyz + i = 1 + while s0 > Coorfo[4*i+3]: + i = i+1 + xyz = [0.]*3 + xyz[0] = (s0-Coorfo[4*(i-1)+3]) * (Coorfo[4*i+0]-Coorfo[4*(i-1)+0]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Coorfo[4*(i-1)+0] + xyz[1] = (s0-Coorfo[4*(i-1)+3]) * (Coorfo[4*i+1]-Coorfo[4*(i-1)+1]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Coorfo[4*(i-1)+1] + xyz[2] = (s0-Coorfo[4*(i-1)+3]) * (Coorfo[4*i+2]-Coorfo[4*(i-1)+2]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Coorfo[4*(i-1)+2] + return xyz + +def InterpolBaseFiss(s0, Basefo, Coorfo) : +# Interpolation de la base locale en fond de fissure +# s0 = abscisse curviligne du point considere +# Basefo = base locale du fond (VNx,VNy,VNz,VPx,VPy,VPz) +# Coorfo = Coordonnees et abscisses du fond (extrait de la sd fiss_xfem) +# en sortie : VPVNi = base locale au point considere (6 coordonnes) + n = len(Coorfo) / 4 + if ( s0 < Coorfo[3] ) : + VPVNi = Basefo[0:6] + return VPVNi + if ( s0 > Coorfo[-1] ) : + VPVNi = [Basefo[i] for i in range(-6,0)] + return VPVNi + i = 1 + while s0 > Coorfo[4*i+3]: + i = i+1 + VPVNi = [0.]*6 + for k in range(6) : + VPVNi[k] = (s0-Coorfo[4*(i-1)+3]) * (Basefo[6*i+k]-Basefo[6*(i-1)+k]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Basefo[6*(i-1)+k] + return VPVNi + + +def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): + """ + Macro PROPA_FISS + Propagation de fissure pour les modeles X-FEM : propagation par la methode de HAMILTON + ou par projection sur un maillage + """ + import aster + import string + import copy + from Accas import _F + from Utilitai.Utmess import UTMESS + from types import ListType, TupleType + from Utilitai.Table import Table, merge + from Utilitai.partition import MAIL_PY + import Numeric + from Numeric import array,asarray,Float,concatenate,sqrt,sign,resize,dot,zeros + from math import atan, atan2, cos, sin + + + EnumTypes = (ListType, TupleType) + + macro = 'PROPA_FISS' + ier=0 +#------------------------------------------------------------------ + # On importe les definitions des commandes a utiliser dans la macro + ASSE_MAILLAGE =self.get_cmd('ASSE_MAILLAGE' ) + LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE' ) + CREA_TABLE =self.get_cmd('CREA_TABLE' ) + CALC_TABLE =self.get_cmd('CALC_TABLE' ) + PROPA_XFEM = self.get_cmd('PROPA_XFEM' ) + DEFI_FISS_XFEM = self.get_cmd('DEFI_FISS_XFEM' ) + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + +#------------------------------------------------------------------ +# CAS 1 : METHODE_PROPA = 'HAMILTON' +# + if METHODE_PROPA == 'HAMILTON' : + mod = args['MODELE'] + tabk = args['TABLE'] + meth = args['METHODE'] + ray = args['RAYON'] + LOI_PROPA = args['LOI_PROPA'] + if LOI_PROPA != None : + coefc = LOI_PROPA['C'] + coefm = LOI_PROPA['M'] + fiss = args['FISSURE'] + self.DeclareOut('nomfiss',fiss) + nomfiss = PROPA_XFEM(MODELE=mod, + TABLE=tabk, + METHODE=meth, + LOI_PROPA=_F(LOI='PARIS', + C=coefc, + M=coefm), + RAYON=ray, + INFO=INFO,) + +#------------------------------------------------------------------ +# CAS 2 : METHODE_PROPA = 'MAILLAGE' +# + ALPHABET=['A','B','C','D','E','F','G','H','I','J','K','L','O','P','Q','R','S','T','U','V','W','X','Y','Z']; + + if METHODE_PROPA == 'MAILLAGE' : + fiss = args['FISSURE1'] + LOI_PROPA = args['LOI_PROPA'] + MA_XFEM1 = args['MA_XFEM1'] + if LOI_PROPA != None : + coef_paris = LOI_PROPA['M'] + Damax = LOI_PROPA['DA_MAX'] + coef_C = LOI_PROPA['C'] + it = args['ITERATION'] + typmod= MA_XFEM1.DIME.get() + typmod = typmod[5] + +# Verification qu on a bien un fond unique + Fissmult = fiss.FONDMULT.get() + Nbfiss = len(Fissmult)/2 + if Nbfiss >1 : + UTMESS('F','RUPTURE1_48',vali=Nbfiss) + +# Recuperation des K et calcul de DeltaK + Nmeth = args['METHODE_POSTK'] + SIF = args['TABLE'] + hypo = args['HYPOTHESE'] + nbinst = 1 +# A- TABLEAU ISSSU DE POST_K1_K2_K3 + if (Nmeth != None) : + __TABN = CALC_TABLE(TABLE=SIF,ACTION=_F(OPERATION='FILTRE', + NOM_PARA='METHODE',VALE_I=Nmeth),); + __tabp = __TABN.EXTR_TABLE() + if ('K1_MAX' not in __tabp.para) or ('G_MAX' not in __tabp.para): + UTMESS('F','RUPTURE1_44') + __tab1 = __tabp.values() + if 'INST' in __tabp.para : + l_inst_tab=__tabp['INST'].values()['INST'] + l_inst_tab=dict([(i,0) for i in l_inst_tab]).keys() + nbinst = len(l_inst_tab) + if nbinst > 1 : + nbfis = len(__tab1['K1_MAX']) / nbinst + DK1 = [None]*nbfis + DKmax = 0. + for k in range(nbfis) : + DK1[k]=[0.]*2 + __tmp = __tabp.PT_FOND==(k+1) + if (typmod == 3) : DK1[k][0]=__tmp.values()['ABSC_CURV'][0] + DK1[k][1]=max(__tmp.values()['K1_MAX'])-min(__tmp.values()['K1_MAX']) + DKmax = max(DKmax,DK1[k][1]) + else : + nbfis = len(__tab1['K1_MAX']) + if hypo == 'NON_PLAN' : + BETA = [None]*nbfis + if (min(__tab1['G_MAX']) < 0.) : + UTMESS('F','RUPTURE1_46') + DKmax = max(sqrt(__tab1['G_MAX'])) + BETA = [0.]*nbfis + absc = [0.]*nbfis + for i in range(nbfis) : + k1 = __tab1['K1_MAX'][i] + k2 = __tab1['K2_MAX'][i] + if (typmod == 3) : absc[i]=__tab1['ABSC_CURV'][i] + BETA[i] = [absc[i] , 2*atan(0.25*(k1/k2-abs(k2)/k2*sqrt((k1/k2)**2+8)))] + DK1 = [[absc[i],sqrt(__tab1['G_MAX'][i])] for i in range(nbfis)] + else : + DKmax = max(__tab1['K1_MAX']) + if (typmod == 3) : + DK1 = [[__tab1['ABSC_CURV'][i],__tab1['K1_MAX'][i]] for i in range(nbfis)] + else : + DK1 = [[0.,__tab1['K1_MAX'][i]] for i in range(nbfis)] + if (min(__tab1['K1_MAX']) < 0.) : + UTMESS('F','RUPTURE1_49') +# B- TABLEAU ISSSU DE CALC_G (option CALC_K_G) + else : + __tabp = SIF.EXTR_TABLE() + if (typmod == 3) and (('K1_LOCAL' not in __tabp.para) or ('G_LOCAL' not in __tabp.para) or ('BETA_LOCAL' not in __tabp.para)): + UTMESS('F','RUPTURE1_45') + if (typmod == 2) and (('K1' not in __tabp.para) or ('G' not in __tabp.para)) : + UTMESS('F','RUPTURE1_45') + __tab1= __tabp.values() + if 'INST' in __tabp.para : + l_inst_tab=__tabp['INST'].values()['INST'] + l_inst_tab=dict([(i,0) for i in l_inst_tab]).keys() + nbinst = len(l_inst_tab) + if nbinst > 1 : + nbfiss = 1 + if (typmod == 3) : nbfis = len(__tab1['K1_LOCAL']) / nbinst + DK1 = [None]*nbfis + DKmax = 0. + for k in range(nbfis) : + DK1[k]=[None]*2 + __tmp = __tabp.NUM_PT==(k+1) + if (typmod == 3) : + DK1[k][0]=__tmp.values()['ABSC_CURV'][0] + DK1[k][1]=max(__tmp.values()['K1_LOCAL'])-min(__tmp.values()['K1_LOCAL']) + else : + DK1[k][0]=0. + DK1[k][1]=max(__tmp.values()['K1'])-min(__tmp.values()['K1']) + DKmax = max(DKmax,DK1[k][1]) + elif typmod == 3 : + nbfis = len(__tab1['K1_LOCAL']) + if hypo == 'NON_PLAN' : + if (min(__tab1['G_LOCAL']) < 0.) : + UTMESS('F','RUPTURE1_46') + DKmax = max(sqrt(__tab1['G_LOCAL'])) + DK1 = [[__tab1['ABSC_CURV'][i],sqrt(__tab1['G_LOCAL'][i])] for i in range(nbfis)] + BETA = [[__tab1['ABSC_CURV'][i],__tab1['BETA_LOCAL'][i]] for i in range(nbfis)] + else : + DKmax = max(__tab1['K1_LOCAL']) + DK1 = [[__tab1['ABSC_CURV'][i],__tab1['K1_LOCAL'][i]] for i in range(nbfis)] + if (min(__tab1['K1_LOCAL']) < 0.) : + UTMESS('F','RUPTURE1_49') + else : + nbfis = 1 + if hypo == 'NON_PLAN' : + if (min(__tab1['G']) < 0.) : + UTMESS('F','RUPTURE1_46') + DKmax = max(sqrt(__tab1['G'])) + DK1 = [[0.,DKmax],] + k1 = __tab1['K1'][0] + k2 = __tab1['K2'][0] + beta = 2*atan(0.25*(k1/k2-abs(k2)/k2*sqrt((k1/k2)**2+8))) + BETA = [[0.,beta] ] + else : + DKmax = max(__tab1['K1']) + DK1 = [[0.,DKmax ] ,] + if (min(__tab1['K1']) < 0.) : + UTMESS('F','RUPTURE1_49') + + if hypo == 'NON_PLAN' and nbinst > 1 : + UTMESS('F','RUPTURE1_47') + +#------------------------------------------------------------------ +# CAS 2a : MODELE 3D +# + if typmod == 3 : + mm = MAIL_PY() + mm.FromAster(MA_XFEM1) + +# Recuperation des informations sur le maillage + nbno = mm.dime_maillage[0] + nbma = mm.dime_maillage[2] + collgrma = mm.gma + nbnofo = len(collgrma['FOND_0'])+1 + +# Correction de la position des noeuds (equirepartition) + Coorfo = fiss.FONDFISS.get() + absmax = Coorfo[-1] + abscf = [0.]*nbnofo + for i in range(nbnofo) : + abscf[i] = i * absmax / (nbnofo-1) + xyzi = InterpolFondFiss(abscf[i], Coorfo) + mm.cn[nbno-nbnofo+i][0] = xyzi[0] + mm.cn[nbno-nbnofo+i][1] = xyzi[1] + mm.cn[nbno-nbnofo+i][2] = xyzi[2] + +# Maillage apres correction + coord = mm.cn + linomno = list(mm.correspondance_noeuds) + linomno = map(string.rstrip,linomno) + l_coorf = [[linomno[i],coord[i]] for i in range(0,nbno)] + d_coorf = dict(l_coorf) + +# Boucle sur le fond : coordonnees du point propage + Basefo = fiss.BASEFOND.get() + Listfo = fiss.FONDFISS.get() + Vorig = args['DTAN_ORIG'] + Vextr = args['DTAN_EXTR'] + if (Damax ==None) : + DKmax = 1 + if (coef_C ==None) : + coef_C = Damax + for ifond in range(nbnofo) : + Xf = d_coorf['NX%s%i' %(ALPHABET[ifond],it)][0] + Yf = d_coorf['NX%s%i' %(ALPHABET[ifond],it)][1] + Zf = d_coorf['NX%s%i' %(ALPHABET[ifond],it)][2] + + VPVNi = InterpolBaseFiss(abscf[ifond],Basefo, Listfo) + + k1 = InterpolationLineaire(abscf[ifond], DK1) + if k1<=0 : + UTMESS('F','RUPTURE1_49') + +# Correction pour reduire le risque de maille aplatie (pilotage par Damax uniquement) + if (Damax !=None) : + Damin = Damax /10. + if ((k1/DKmax)**coef_paris <= Damin ) : + k1 = Damin**(1/coef_paris)*DKmax + +# Tangentes aux extremites + if (ifond == 0) and (Vorig != None) : + VPVNi[3] = Vorig[0] + VPVNi[4] = Vorig[1] + VPVNi[5] = Vorig[2] + if (ifond == nbnofo-1) and (Vextr != None) : + VPVNi[3] = Vextr[0] + VPVNi[4] = Vextr[1] + VPVNi[5] = Vextr[2] + + if hypo == 'NON_PLAN' : + beta = InterpolationLineaire(abscf[ifond], BETA) + Xf2 = Xf + coef_C*(VPVNi[3]*cos(beta)+VPVNi[0]*sin(beta))*(k1/DKmax)**coef_paris + Yf2 = Yf + coef_C*(VPVNi[4]*cos(beta)+VPVNi[1]*sin(beta))*(k1/DKmax)**coef_paris + Zf2 = Zf + coef_C*(VPVNi[5]*cos(beta)+VPVNi[2]*sin(beta))*(k1/DKmax)**coef_paris + else : + Xf2 = Xf + coef_C*VPVNi[3]*(k1/DKmax)**coef_paris + Yf2 = Yf + coef_C*VPVNi[4]*(k1/DKmax)**coef_paris + Zf2 = Zf + coef_C*VPVNi[5]*(k1/DKmax)**coef_paris + + LesNoeudsEnPlus = array([[Xf2,Yf2,Zf2]]) + if ifond ==0 : + Pini = (Xf2,Yf2,Zf2) + vectorie = (VPVNi[0],VPVNi[1],VPVNi[2],) + NomNoeudsEnPlus = ['NX%s%i' %(ALPHABET[ifond],it+1)] + mm.cn = concatenate((mm.cn,LesNoeudsEnPlus)) + mm.correspondance_noeuds = tuple( list(mm.correspondance_noeuds) + NomNoeudsEnPlus ) + +# Ajout Maille lèvre (quad4) + nbnotot = len(mm.correspondance_noeuds) + NomMaillesEnPlus = [] + num_maille = [] + NoeudsMailles = [] + for ifond in range(nbnofo-1) : + NomMaillesEnPlus.append( 'MX%s%i' %(ALPHABET[ifond], it+1) ) + num_maille.append( [ nbma + ifond +1 ] ) + num_maille.append( nbma +ifond + 1 ) + i1 = nbnotot - 2*nbnofo + ifond + i2 = nbnotot - 2*nbnofo + ifond +1 + i3 = nbnotot - nbnofo + ifond +1 + i4 = nbnotot - nbnofo + ifond + NoeudsMailles.append( array([i1,i2,i3,i4])) + + typ_maille = mm.dic['QUAD4'] + NbMailleAjoute = nbnofo-1 + mm.tm = concatenate((mm.tm,array([typ_maille]*NbMailleAjoute))) + mm.correspondance_mailles += tuple(NomMaillesEnPlus) + mm.co += NoeudsMailles + fsi = mm.gma['FISS_%i' %(it-1)] + for ifond in range(nbnofo-1) : + fsi = concatenate((fsi,array([nbma+ifond]))) + mm.gma['FISS_%i' %it] = fsi + +# Ajout Maille fond (SEG2) + NomMaillesEnPlus = [] + num_maille = [] + NoeudsMailles = [] + for ifond in range(nbnofo-1) : + NomMaillesEnPlus.append( 'MF%s%i' %(ALPHABET[ifond], it+1) ) + num_maille.append( [ nbma + ifond +nbnofo ] ) + num_maille.append( nbma + ifond + nbnofo ) + i3 = nbnotot - nbnofo + ifond + i4 = nbnotot - nbnofo + ifond +1 + NoeudsMailles.append( array([i3,i4])) + + typ_maille = mm.dic['SEG2'] + NbMailleAjoute = nbnofo-1 + mm.tm = concatenate((mm.tm,array([typ_maille]*NbMailleAjoute))) + mm.correspondance_mailles += tuple(NomMaillesEnPlus) + mm.co += NoeudsMailles + fsi = [] + for ifond in range(nbnofo-1) : + fsi = concatenate((fsi,array([nbma+ifond+nbnofo-1]))) + mm.gma['FOND_%i' %it] = fsi + +#------------------------------------------------------------------ +# CAS 2b : MODELE 2D +# + if typmod == 2 : + mm = MAIL_PY() + mm.FromAster(MA_XFEM1) + + (nno,ndim) = mm.cn.shape + +# Recuperation des informations sur le maillage + nbno = mm.dime_maillage[0] + nbma = mm.dime_maillage[2] + coord = mm.cn + linomno = list(mm.correspondance_noeuds) + linomno = map(string.rstrip,linomno) + l_coorf = [[linomno[i],coord[i]] for i in range(0,nbno)] + d_coorf = dict(l_coorf) + +# Coordonnees du point propage + Xf = d_coorf['NXA%i' %(it)][0] + Yf = d_coorf['NXA%i' %(it)][1] + if (Damax ==None) : + DKmax = 1 + if (coef_C ==None) : + coef_C = Damax + + VPVNi = fiss.BASEFOND.get() + k1 = DK1[0][1] + if hypo == 'NON_PLAN' : + beta = BETA[0][1] + Xf2 = Xf + coef_C*(VPVNi[2]*cos(beta)+VPVNi[0]*sin(beta))*(k1/DKmax)**coef_paris + Yf2 = Yf + coef_C*(VPVNi[3]*cos(beta)+VPVNi[1]*sin(beta))*(k1/DKmax)**coef_paris + else : + Xf2 = Xf + coef_C*VPVNi[2]*(k1/DKmax)**coef_paris + Yf2 = Yf + coef_C*VPVNi[3]*(k1/DKmax)**coef_paris + + LesNoeudsEnPlus = array([[Xf2,Yf2]]) + NomNoeudsEnPlus = ['NXA%i' %(it+1)] + mm.cn = concatenate((mm.cn,LesNoeudsEnPlus)) + mm.correspondance_noeuds = tuple(linomno + NomNoeudsEnPlus ) + +# Ajout Maille lèvre (SEG2) + NomMaillesEnPlus = ['MX%s%i' %(ALPHABET[0], it+1)] + num_maille = [ nbma + 1 ] + num_maille.append( nbma + 1 ) + NoeudsMailles = [array([nbno-1,nbno])] + typ_maille = mm.dic['SEG2'] + NbMailleAjoute = 1 + mm.tm = concatenate((mm.tm,array([typ_maille]*NbMailleAjoute))) + mm.correspondance_mailles += tuple(NomMaillesEnPlus) + mm.co += NoeudsMailles + fsi = mm.gma['FISS_%i' %(it-1)] + fsi = concatenate((fsi,array([nbma]))) + mm.gma['FISS_%i' %it] = fsi + +# Ajout Maille fond (POI1) + NomMaillesEnPlus = ['MF%s%i' %(ALPHABET[0], it+1)] + num_maille = [ nbma + 2 ] + NoeudsMailles = [array([nbno])] + typ_maille = mm.dic['POI1'] + mm.tm = concatenate((mm.tm,array([typ_maille]*1))) + mm.correspondance_mailles += tuple(NomMaillesEnPlus) + mm.co += NoeudsMailles + mm.gma['FOND_%i' %it] = array(nbma+1) + +# Fin du 2D + if INFO==2 : + texte="Maillage produit par l operateur PROPA_FISS" + aster.affiche('MESSAGE',texte) + print mm + +# Sauvegarde (maillage xfem et maillage concatene) + MA_XFEM2 = args['MA_XFEM2'] + if MA_XFEM2 != None : self.DeclareOut('ma_xfem2',MA_XFEM2) + __MA = mm.ToAster(unite=39) + self.DeclareOut('ma_xfem2',MA_XFEM2) + ma_xfem2=LIRE_MAILLAGE(UNITE=39); + + MA_TOT2 = args['MA_TOT2'] + if MA_TOT2 != None : self.DeclareOut('ma_tot',MA_TOT2) + MA_STRUC = args['MA_STRUC'] + ma_tot = ASSE_MAILLAGE(MAILLAGE_1 = MA_STRUC, + MAILLAGE_2 = ma_xfem2, + OPERATION='SUPERPOSE') + +#------------------------------------------------------------------ +# CAS 3 : METHODE_PROPA = 'INITIALISATION' +# + if METHODE_PROPA == 'INITIALISATION' : + form = args['FORM_FISS'] + +# 3-a : demi-droite + if form == 'DEMI_DROITE' : + PF = args['PFON'] + DTAN = args['DTAN'] + PI = array([[PF[0]-DTAN[0],PF[1]-DTAN[1]],]) + + ndim = 2 + mm = MAIL_PY() + mm.__init__() + +# Ajout des noeuds + LesNoeudsEnPlus = concatenate((PI,array([PF[0:2]]))) + NomNoeudsEnPlus = ['NXA0','NXA1'] + mm.cn = LesNoeudsEnPlus + mm.correspondance_noeuds = tuple( NomNoeudsEnPlus ) + +# Ajout Maille lèvre (SEG2) + it = 1 + nbma = 0 + nbno = 0 + NomMaillesEnPlus = ['MX%s%i' %(ALPHABET[0], it)] + num_maille = [ nbma + 1 ] + num_maille.append( nbma + 1 ) + NoeudsMailles = [array([nbno,nbno+1])] + typ_maille = mm.dic['SEG2'] + NbMailleAjoute = 1 + mm.tm = concatenate((mm.tm,array([typ_maille]*NbMailleAjoute))) + mm.correspondance_mailles += tuple(NomMaillesEnPlus) + mm.co += NoeudsMailles + mm.gma['FISS_0'] = array(nbma) + +# Ajout Maille fond (POI1) + NomMaillesEnPlus = ['MF%s%i' %(ALPHABET[0], it)] + num_maille = [ nbma + 2 ] + NoeudsMailles = [array([nbno+1])] + typ_maille = mm.dic['POI1'] + mm.tm = concatenate((mm.tm,array([typ_maille]*1))) + mm.correspondance_mailles += tuple(NomMaillesEnPlus) + mm.co += NoeudsMailles + mm.gma['FOND_0'] = array(nbma+1) + + +# 3-b : demi-plan + if form == 'DEMI_PLAN' : + P0 = args['POINT_ORIG'] + P1 = args['POINT_EXTR'] + dpropa = args['DTAN'] + nbpt = args['NB_POINT_FOND'] + Q0 = array([[P0[0]-dpropa[0],P0[1]-dpropa[1],P0[2]-dpropa[2]]]) + + mm = MAIL_PY() + mm.__init__() + x=[None]*nbpt + y=[None]*nbpt + z=[None]*nbpt + xx=[None]*nbpt + yy=[None]*nbpt + zz=[None]*nbpt + LesNoeudsEnPlus = Q0 + NomNoeudsEnPlus = ['NXA0'] + mm.cn = LesNoeudsEnPlus + mm.correspondance_noeuds = tuple( NomNoeudsEnPlus ) + + for i in range(1,nbpt) : + x[i] = P0[0]+i*(P1[0]-P0[0])/(nbpt-1) + y[i] = P0[1]+i*(P1[1]-P0[1])/(nbpt-1) + z[i] = P0[2]+i*(P1[2]-P0[2])/(nbpt-1) + xx[i] = x[i] - dpropa[0] + yy[i] = y[i] - dpropa[1] + zz[i] = z[i] - dpropa[2] + LesNoeudsEnPlus = array([[xx[i],yy[i],zz[i]]]) + NomNoeudsEnPlus = ['NX%s0' %(ALPHABET[i]) ] + mm.cn = concatenate((mm.cn,LesNoeudsEnPlus)) + mm.correspondance_noeuds = tuple(list(mm.correspondance_noeuds) +NomNoeudsEnPlus ) + LesNoeudsEnPlus = array([P0]) + NomNoeudsEnPlus = ['NXA1'] + mm.cn = concatenate((mm.cn,LesNoeudsEnPlus)) + mm.correspondance_noeuds = tuple(list(mm.correspondance_noeuds) + NomNoeudsEnPlus ) + for i in range(1,nbpt) : + LesNoeudsEnPlus = array([[x[i],y[i],z[i]]]) + NomNoeudsEnPlus = ['NX%s1' %(ALPHABET[i]) ] + mm.cn = concatenate((mm.cn,LesNoeudsEnPlus)) + mm.correspondance_noeuds = tuple(list(mm.correspondance_noeuds) +NomNoeudsEnPlus ) + +# Ajout Maille lèvre (quad4) + NomMaillesEnPlus = [] + num_maille = [] + NoeudsMailles = [] + for ifond in range(nbpt-1) : + NomMaillesEnPlus.append( 'MX%s1' %(ALPHABET[ifond]) ) + num_maille.append( [ ifond +1 ] ) + num_maille.append( ifond + 1 ) + i1 = ifond + i2 = ifond+1 + i3 = nbpt+ifond + i4 = nbpt+ifond+1 + NoeudsMailles.append( array([i1,i2,i4,i3])) + + typ_maille = mm.dic['QUAD4'] + NbMailleAjoute = nbpt-1 + mm.tm = concatenate((mm.tm,array([typ_maille]*NbMailleAjoute))) + mm.correspondance_mailles += tuple(NomMaillesEnPlus) + mm.co += NoeudsMailles + fsi =[] + for ifond in range(nbpt-1) : + fsi = concatenate((fsi,array([ifond]))) + mm.gma['FISS_0' ] = fsi + +# Ajout Maille fond (SEG2) + NomMaillesEnPlus = [] + num_maille = [] + NoeudsMailles = [] + for ifond in range(nbpt-1) : + NomMaillesEnPlus.append( 'MF%s1' %(ALPHABET[ifond]) ) + num_maille.append( [ ifond +nbpt ] ) + num_maille.append( ifond + nbpt ) + i3 = nbpt+ifond + i4 = nbpt+ifond+1 + NoeudsMailles.append( array([i3,i4])) + + typ_maille = mm.dic['SEG2'] + NbMailleAjoute = nbpt-1 + mm.tm = concatenate((mm.tm,array([typ_maille]*NbMailleAjoute))) + mm.correspondance_mailles += tuple(NomMaillesEnPlus) + mm.co += NoeudsMailles + fsi = [] + for ifond in range(nbpt-1) : + fsi = concatenate((fsi,array([ifond+nbpt-1]))) + mm.gma['FOND_0'] = fsi + + + if INFO==2 : + texte="Maillage produit par l operateur PROPA_FISS" + aster.affiche('MESSAGE',texte) + print mm + +# Sauvegarde (maillage xfem et maillage concatene) + MA_XFEM2 = args['MA_XFEM2'] + if MA_XFEM2 != None : self.DeclareOut('ma_xfem2',MA_XFEM2) + __MA = mm.ToAster(unite=39) + self.DeclareOut('ma_xfem2',MA_XFEM2) + ma_xfem2=LIRE_MAILLAGE(UNITE=39); + + MA_TOT2 = args['MA_TOT2'] + if MA_TOT2 != None : self.DeclareOut('ma_tot',MA_TOT2) + MA_STRUC = args['MA_STRUC'] + ma_tot = ASSE_MAILLAGE(MAILLAGE_1 = MA_STRUC, + MAILLAGE_2 = ma_xfem2, + OPERATION='SUPERPOSE') + + return diff --git a/Aster/Cata/cataSTA9/Macro/reca_graphique.py b/Aster/Cata/cataSTA9/Macro/reca_graphique.py deleted file mode 100644 index c3ce8c88..00000000 --- a/Aster/Cata/cataSTA9/Macro/reca_graphique.py +++ /dev/null @@ -1,92 +0,0 @@ -#@ MODIF reca_graphique Macro DATE 16/05/2007 AUTEUR ASSIRE A.ASSIRE -# -*- coding: iso-8859-1 -*- -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2005 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 string, copy, Numeric, types -import Cata -from Cata.cata import DEFI_FICHIER, IMPR_FONCTION -from Utilitai.Utmess import UTMESS -from Accas import _F - -try: - import Gnuplot -except: - pass - - -#_____________________________________________ -# -# IMPRESSIONS GRAPHIQUES -#_____________________________________________ - -def graphique(FORMAT, L_F, res_exp, reponses, iter, UL_out, interactif): - - if FORMAT=='XMGRACE': - for i in range(len(L_F)): - _tmp = [] - courbe1 = res_exp[i] - _tmp.append( { 'ABSCISSE': courbe1[:,0].tolist(), 'ORDONNEE': courbe1[:,1].tolist(), 'COULEUR': 1 } ) - courbe2 = L_F[i] - _tmp.append( { 'ABSCISSE': courbe2[:,0].tolist(), 'ORDONNEE': courbe2[:,1].tolist(), 'COULEUR': 2 } ) - - motscle2= {'COURBE': _tmp } - if interactif: motscle2['PILOTE']= 'INTERACTIF' - else: motscle2['PILOTE']= 'POSTSCRIPT' - -# DEFI_FICHIER(UNITE=int(UL_out), ACCES='NEW',) - - IMPR_FONCTION(FORMAT='XMGRACE', - UNITE=int(UL_out), - TITRE='Courbe de : ' + reponses[i][0], - SOUS_TITRE='Iteration : ' + str(iter), - LEGENDE_X=reponses[i][1], - LEGENDE_Y=reponses[i][2], - **motscle2 - ); -# DEFI_FICHIER(ACTION='LIBERER',UNITE=int(UL_out),) - - elif FORMAT=='GNUPLOT': - graphe=[] - impr=Gnuplot.Gnuplot() - Gnuplot.GnuplotOpts.prefer_inline_data=1 - impr('set data style linespoints') - impr('set grid') - impr('set pointsize 2.') - impr('set terminal postscript color') - impr('set output "fort.'+str(UL_out)+'"') - - for i in range(len(L_F)): - if interactif: - graphe.append(Gnuplot.Gnuplot(persist=0)) - graphe[i]('set data style linespoints') - graphe[i]('set grid') - graphe[i]('set pointsize 2.') - graphe[i].xlabel(reponses[i][1]) - graphe[i].ylabel(reponses[i][2]) - graphe[i].title(reponses[i][0]+' Iteration '+str(iter)) - graphe[i].plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental')) - graphe[i]('pause 5') - - impr.xlabel(reponses[i][1]) - impr.ylabel(reponses[i][2]) - impr.title(reponses[i][0]+' Iteration '+str(iter)) - impr.plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental')) - - else: - pass diff --git a/Aster/Cata/cataSTA9/Macro/simu_point_mat_ops.py b/Aster/Cata/cataSTA9/Macro/simu_point_mat_ops.py index 3e6d69e0..09a27c57 100644 --- a/Aster/Cata/cataSTA9/Macro/simu_point_mat_ops.py +++ b/Aster/Cata/cataSTA9/Macro/simu_point_mat_ops.py @@ -1,4 +1,4 @@ -#@ MODIF simu_point_mat_ops Macro DATE 23/04/2007 AUTEUR PROIX J-M.PROIX +#@ MODIF simu_point_mat_ops Macro DATE 07/10/2008 AUTEUR GENIAUT S.GENIAUT # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -485,6 +485,7 @@ def simu_point_mat_ops(self, COMP_INCR, MATER, INCREMENT, NEWTON,CONVERGENCE,REC if etatinit == 1 : __EVOL = STAT_NON_LINE( + INFO = INFO, MODELE = __MO, CHAM_MATER = __CHMAT, ETAT_INIT=init_dico, @@ -494,6 +495,7 @@ def simu_point_mat_ops(self, COMP_INCR, MATER, INCREMENT, NEWTON,CONVERGENCE,REC else: __EVOL = STAT_NON_LINE( + INFO = INFO, MODELE = __MO, CHAM_MATER = __CHMAT, EXCIT = l_char,**motscles) diff --git a/Aster/Cata/cataSTA9/Macro/test_temps_ops.py b/Aster/Cata/cataSTA9/Macro/test_temps_ops.py new file mode 100644 index 00000000..0723b830 --- /dev/null +++ b/Aster/Cata/cataSTA9/Macro/test_temps_ops.py @@ -0,0 +1,251 @@ +#@ MODIF test_temps_ops Macro DATE 05/09/2008 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +""" +for m in clpaster clp50a8 claut626 clau5aaa aster +do + echo "------ $m : `ssh $m hostid` -------" + ssh $m cat /proc/cpuinfo > $m.cpuinfo + ssh $m python -c '"import os ; print os.uname()[-1]"' + grep 'cpu MHz' $m.cpuinfo | head -1 + grep -i bogomips $m.cpuinfo | head -1 +done +""" + +import sys +import os +import re +from glob import glob + +#------------------------------------------------------------------------------- +# formats +tab_header = """ + !--------------------------------------------------------------------------------------------------! + ! Commande ! Ordre ! Reference ! Mesure ! Difference ! Tolerance ! Diagnostic ! + !--------------------------------------------------------------------------------------------------!""" +tab_line = """ ! %(cmde)-22s ! %(nume)6d ! %(refe)10.2f ! %(vale)10.2f ! %(diff)10.2f ! %(prec)10.2f ! %(diag)4s !""" +tab_footer = """ !--------------------------------------------------------------------------------------------------! +""" + +#------------------------------------------------------------------------------- +def get_idperf(conf): + """Retourne l'identifiant utilisé pour la mesure des performances. + Soit on le trouve dans le fichier config.txt de la version utilisée, + soit on le détermine à partir de : "kernel name - hardware name" + """ + machine = '' + compiler = 'unknown' + if conf is not None: + machine = conf['ID_PERF'][0] + compiler = os.path.basename(conf['F77'][0].split()[0]) + + if machine == '': + machine = '%s-%s-%s' %(os.uname()[0], os.uname()[4], compiler) + return machine + +#------------------------------------------------------------------------------- +def as_list(value): + """Retourne 'value' si c'est une liste, sinon le singleton [value,].""" + if type(value) not in (list, tuple): + value = [value,] + return value + +#------------------------------------------------------------------------------- +def test_temps_ops(self, RESU, INFO, **args): + """ + Macro TEST_TEMPS permettant de vérifier le temps passé dans les commandes. + """ + import aster + from Accas import _F + from Utilitai.Utmess import UTMESS, MessageLog + from Utilitai.System import ExecCommand + + # On importe les definitions des commandes a utiliser dans la macro + # Le nom de la variable doit etre obligatoirement le nom de la commande + DETRUIRE = self.get_cmd('DETRUIRE') + CREA_TABLE = self.get_cmd('CREA_TABLE') + TEST_TABLE = self.get_cmd('TEST_TABLE') + + #---------------------------------------------- + ier = 0 + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + + # ----- récupération du fichier de config + ficconf = '?' + conf = None + try: + # recuperation de la variable ASTER_ROOT + aster_root = os.environ.get('ASTER_ROOT') + assert aster_root != None, " Variable d'environnement ASTER_ROOT non definie." + sys.path.append(os.path.join(aster_root, 'ASTK', 'ASTK_SERV', 'lib')) + from as_profil import ASTER_PROFIL + from as_config import ASTER_CONFIG + + l_export = glob('*.export') + assert len(l_export) > 0, " pas de fichier export dans le repertoire de travail." + + ficconf = 'config.txt' + if not os.path.isfile(ficconf): # if as_run.__version__ < 1.6.3 + prof = ASTER_PROFIL(l_export[0]) + if prof.Get('D', typ='conf'): + print ' Surcharge du fichier config.txt non supportée.' + REPREF = os.path.join(aster_root, prof['version'][0]) + ficconf = os.path.join(REPREF, 'config.txt') + conf = ASTER_CONFIG(ficconf) + except Exception, err: + print err + + machine = get_idperf(conf) + + # liste des timers par ordre d'apparition : dict_cmde['commande'] = [timer1, timer2, ...] + dict_cmde = {} + for num, timer in self.jdc.timer.getsortedtimers(): + cmde = timer['name'] + dict_cmde[cmde] = dict_cmde.get(cmde, []) + dict_cmde[cmde].append(timer) + + tab = get_cmde_timers(self.jdc) + if INFO == 2: + aster.affiche('MESSAGE', repr(tab)) + + #---------------------------------------------- + # boucle sur les commandes a tester + alarm9 = True + infos = [] + for res_i in RESU: + dres = res_i.cree_dict_valeurs(res_i.mc_liste) + current = { + 'cmde' : dres['COMMANDE'], + 'nume' : dres['NUME_ORDRE'], + 'refe' : 0., + 'vale' : 0., + 'diff' : 0., + 'prec' : 0., + 'diag' : 'NOOK', + } + error = False + l_mach = as_list(dres['MACHINE']) + l_vale = as_list(dres['VALE']) + if len(l_mach) != len(l_vale): + UTMESS('E', 'TEST0_10') + error = True + + l_prec = as_list(dres['PRECISION']) + if len(l_prec) == 1: + l_prec = l_prec * len(l_vale) + if len(l_prec) != len(l_vale): + UTMESS('E', 'TEST0_8') + error = True + + tres = (tab.COMMANDE == dres['COMMANDE']) & (tab.NUME_ORDRE == dres['NUME_ORDRE']) + if len(tres) != 1: + UTMESS('E', 'TEST0_7', valk=dres['COMMANDE'], vali=dres['NUME_ORDRE']) + error = True + + if error: + infos.append(current) + continue + + # comparaison des valeurs + valtest = getattr(tres, dres['TYPE_TEST']) + assert len(valtest) == 1, 'TYPE_TEST invalide' + valtest = valtest[0] + + current['vale'] = valtest + + # reference, precision + dref = {} + for mach, vale, precision in zip(l_mach, l_vale, l_prec): + if dres['CRITERE'] == 'RELATIF': + precision = precision * vale + dref[mach.upper()] = { + 'vale' : vale, + 'prec' : precision, + 'valmin' : vale - precision, + 'valmax' : vale + precision + } + dmach = dref.get(machine.upper()) + # si on n'a pas de référence pour cette machine, on prend la première + if not dmach: + dmach = dref[l_mach[0].upper()] + if alarm9: + alarm9 = False + UTMESS('A', 'TEST0_9', valk=(machine, l_mach[0])) + current['refe'] = dmach['vale'] + current['prec'] = dmach['prec'] + current['diff'] = valtest - dmach['vale'] + if dmach['valmin'] < valtest < dmach['valmax']: + current['diag'] = 'OK' + infos.append(current) + + # tableau de resultats + text_id = MessageLog.GetText('I', 'TEST0_5', valk=(ficconf, machine)) + is_ok = 1 + txt = [text_id, tab_header,] + for line in infos: + txt.append(tab_line % line) + if line['diag'] != 'OK': + is_ok = 0 + txt.append(tab_footer) + for unit in ('MESSAGE', 'RESULTAT'): + aster.affiche(unit, os.linesep.join(txt)) + + # test_resu + tab1__ = CREA_TABLE(LISTE=(_F(PARA='DIAGNOSTIC', LISTE_I=is_ok),),) + + TEST_TABLE(TABLE=tab1__, + NOM_PARA='DIAGNOSTIC', + VALE_I=1, + CRITERE='ABSOLU', + PRECISION=0,) + + return ier + + +#------------------------------------------------------------------------------- +def get_cmde_timers(jdc): + """Retourne un objet Table contenant les mesures de temps pour + les commandes terminées. + """ + from Utilitai.Table import Table + tab = Table() + + # liste des timers par ordre d'apparition + dnum = {} + for num, timer in jdc.timer.getsortedtimers(): + if timer['state'] != 'stop' \ + or re.sub('[A-Z_]', '', timer['name']).strip() != '': # timers superviseur + continue + line = {} + for k in ('name', 'cpu_dt', 'sys_dt', 'tot_dt'): + line[k] = timer[k] + line['USER+SYS'] = timer['cpu_dt'] + timer['sys_dt'] + dnum[line['name']] = dnum.get(line['name'], 0) + 1 + line['NUME_ORDRE'] = dnum[line['name']] + tab.append(line) + tab.Renomme('name', 'COMMANDE') + tab.Renomme('cpu_dt', 'USER') + tab.Renomme('sys_dt', 'SYSTEM') + tab.Renomme('tot_dt', 'ELAPSED') + tab = tab['NUME_ORDRE', 'COMMANDE', 'USER', 'SYSTEM', 'USER+SYS', 'ELAPSED'] + return tab + diff --git a/Aster/Cata/cataSTA9/SD/co_cara_elem.py b/Aster/Cata/cataSTA9/SD/co_cara_elem.py index 74ed0fc5..c90f369e 100644 --- a/Aster/Cata/cataSTA9/SD/co_cara_elem.py +++ b/Aster/Cata/cataSTA9/SD/co_cara_elem.py @@ -1,4 +1,4 @@ -#@ MODIF co_cara_elem SD DATE 13/02/2007 AUTEUR PELLET J.PELLET +#@ MODIF co_cara_elem SD DATE 20/10/2008 AUTEUR ASSIRE A.ASSIRE # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -23,4 +23,15 @@ from sd_cara_elem import sd_cara_elem # ----------------------------------------------------------------------------- class cara_elem(ASSD, sd_cara_elem): - pass + def toEPX(self): + EPXnoeud = self.CARRIGXN.get() + EPXval = self.CARRIGXV.get() + ressorts = {} + i=0 + assert len(EPXval) == len(EPXnoeud)*6, 'donnees incorrectes' + for no in EPXnoeud : + ressorts[no] = EPXval[i:i+6] + i+=6 + return ressorts + + diff --git a/Aster/Cata/cataSTA9/SD/sd_cara_elem.py b/Aster/Cata/cataSTA9/SD/sd_cara_elem.py index dacbbbe5..ca618588 100644 --- a/Aster/Cata/cataSTA9/SD/sd_cara_elem.py +++ b/Aster/Cata/cataSTA9/SD/sd_cara_elem.py @@ -1,4 +1,4 @@ -#@ MODIF sd_cara_elem SD DATE 09/05/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_cara_elem SD DATE 23/10/2008 AUTEUR TORKHANI M.TORKHANI # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -42,5 +42,11 @@ class sd_cara_elem(AsBase): CVENTCXF = Facultatif(sd_carte()) CARPOUFL = Facultatif(sd_carte()) CARGEOPO = Facultatif(sd_carte()) + CARRIGXN = Facultatif(AsVK8()) + CARRIGXV = Facultatif(AsVR()) + CARDNSCK = Facultatif(sd_carte()) + CARDNSCM = Facultatif(sd_carte()) + CARDNSCA = Facultatif(sd_carte()) + CARDINFO = Facultatif(sd_carte()) diff --git a/Aster/Cata/cataSTA9/SD/sd_cham_elem.py b/Aster/Cata/cataSTA9/SD/sd_cham_elem.py index d5fd1595..7adc4980 100644 --- a/Aster/Cata/cataSTA9/SD/sd_cham_elem.py +++ b/Aster/Cata/cataSTA9/SD/sd_cham_elem.py @@ -1,4 +1,4 @@ -#@ MODIF sd_cham_elem SD DATE 18/03/2008 AUTEUR PELLET J.PELLET +#@ MODIF sd_cham_elem SD DATE 07/10/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -46,4 +46,48 @@ class sd_cham_elem(sd_titre): assert celk[5] != '' , celk assert celk[6] in ('MPI_COMPLET','MPI_INCOMPLET') , celk + def check_2(self, checker): + if not checker._profond : return + if not self.exists() : return + celd=self.CELD.get() + assert celd[0] > 0 , celd + ngrel= celd[1] + assert ngrel > 0 , celd + mxsp = celd[2] + assert mxsp > 0 , celd + mxcmp = celd[3] + lvari = mxcmp > 0 + for kgrel in range(ngrel) : + debugr= celd[4+kgrel]-1 + nbel = celd[debugr+1] + modelo= celd[debugr+2] + lgcata= celd[debugr+3] + lggrel= celd[debugr+4] + + assert nbel > 0 , (nbel,kgrel) + assert modelo >= 0 , (modelo,kgrel) + if modelo == 0 : + assert lgcata == 0 , (lgcata,kgrel) + assert lggrel == 0 , (lggrel,kgrel) + continue + + assert lgcata > 0 , (lgcata,kgrel) + assert lggrel > 0 , (lggrel,kgrel) + assert lggrel >= nbel*lgcata , (lggrel,kgrel,nbel,lgcata) + + + for iel in range(nbel) : + nbsp =celd[debugr+4+4*iel+1] + ncdyn =celd[debugr+4+4*iel+2] + lgchel=celd[debugr+4+4*iel+3] + adiel =celd[debugr+4+4*iel+4] + assert nbsp > 0 , (nbsp,kgrel,iel) + if lvari : + assert ncdyn > 0 , (ncdyn,kgrel,iel) + assert lgchel == lgcata*nbsp*ncdyn , (lgchel,lgcata,nbsp,ncdyn,kgrel,iel) + else : + assert ncdyn == 0 , (ncdyn,kgrel,iel) + assert lgchel == lgcata*nbsp , (lgchel,lgcata,nbsp,kgrel,iel) + assert adiel > 0 , (adiel,kgrel,iel) + diff --git a/Aster/Cata/cataSTA9/SD/sd_cham_mater.py b/Aster/Cata/cataSTA9/SD/sd_cham_mater.py index 42ed3f33..311e3400 100644 --- a/Aster/Cata/cataSTA9/SD/sd_cham_mater.py +++ b/Aster/Cata/cataSTA9/SD/sd_cham_mater.py @@ -1,4 +1,4 @@ -#@ MODIF sd_cham_mater SD DATE 28/01/2008 AUTEUR PELLET J.PELLET +#@ MODIF sd_cham_mater SD DATE 30/06/2008 AUTEUR PROIX J-M.PROIX # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -171,7 +171,7 @@ class sd_cham_mater(AsBase): for kedit in range(n_gd_edit): v1=vale[kedit*ncmp_max:(kedit+1)*ncmp_max] assert v1[3]=='COMP_INCR' , v1 - sd2=sd_compor(v1[5].split('.')[0].strip()) ; sd2.check(checker) + sd2=sd_compor(v1[6].split('.')[0].strip()) ; sd2.check(checker) for x1 in v1[7:] : assert x1=='' , v1 diff --git a/Aster/Cata/cataSTA9/SD/sd_cham_no.py b/Aster/Cata/cataSTA9/SD/sd_cham_no.py index 7a1333de..66e7c4e6 100644 --- a/Aster/Cata/cataSTA9/SD/sd_cham_no.py +++ b/Aster/Cata/cataSTA9/SD/sd_cham_no.py @@ -1,4 +1,4 @@ -#@ MODIF sd_cham_no SD DATE 28/11/2007 AUTEUR COURTOIS M.COURTOIS +#@ MODIF sd_cham_no SD DATE 03/11/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -21,7 +21,7 @@ from SD import * from SD.sd_titre import sd_titre -from SD.sd_nume_equa import sd_nume_equa +from SD.sd_prof_chno import sd_prof_chno class sd_cham_no(sd_titre): @@ -36,7 +36,6 @@ class sd_cham_no(sd_titre): # retourne "vrai" si la SD semble exister (et donc qu'elle peut etre vérifiée) return self.REFE.exists - # indirection vers PROF_CHNO/NUME_EQUA : def check_cham_no_i_REFE(self, checker): if not self.exists() : return lnom = self.REFE.get() @@ -48,9 +47,8 @@ class sd_cham_no(sd_titre): sd2 = sd_maillage(lnom[0]) sd2.check(checker) - # j'aurai préféré : sd_prof_chno que sd_nume_equa (mais sslv111b !) AJACOT_PB : if lnom[1].strip() : - if checker.names.has_key(lnom[1][:14]+'.NUME.DEEQ'): return - sd2 = sd_nume_equa(lnom[1]) ; sd2.check(checker) + if checker.names.has_key(lnom[1][:14]+'.NUME.PRNO'): return + sd2 = sd_prof_chno(lnom[1]) ; sd2.check(checker) diff --git a/Aster/Cata/cataSTA9/SD/sd_char_acou.py b/Aster/Cata/cataSTA9/SD/sd_char_acou.py index b480baab..62c02d31 100644 --- a/Aster/Cata/cataSTA9/SD/sd_char_acou.py +++ b/Aster/Cata/cataSTA9/SD/sd_char_acou.py @@ -1,27 +1,30 @@ -#@ MODIF sd_char_acou SD DATE 13/02/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_char_acou SD DATE 16/09/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== from SD import * from SD.sd_ligrel import sd_ligrel from SD.sd_carte import sd_carte +from SD.sd_char_cine import sd_char_cine + + class sd_char_acou(AsBase): nomj = SDNom(fin=8) chac_vitfa = Facultatif(sd_carte(SDNom(nomj='.CHAC.VITFA', fin=19))) @@ -30,6 +33,7 @@ class sd_char_acou(AsBase): chac_cimpo = Facultatif(sd_carte(SDNom(nomj='.CHAC.CIMPO', fin=19))) chac_imped = Facultatif(sd_carte(SDNom(nomj='.CHAC.IMPED', fin=19))) chac_ligre = Facultatif(sd_ligrel(SDNom(nomj='.CHAC.LIGRE', fin=19))) + ELIM = Facultatif(sd_char_cine()) TYPE = AsVK8(lonmax=1, ) diff --git a/Aster/Cata/cataSTA9/SD/sd_char_cine.py b/Aster/Cata/cataSTA9/SD/sd_char_cine.py index 23f6964f..56317c40 100644 --- a/Aster/Cata/cataSTA9/SD/sd_char_cine.py +++ b/Aster/Cata/cataSTA9/SD/sd_char_cine.py @@ -1,4 +1,4 @@ -#@ MODIF sd_char_cine SD DATE 08/10/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_char_cine SD DATE 16/09/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -38,27 +38,30 @@ class sd_char_cine(AsBase): return self.AFCK.exists - def u_veri1(self): # retourne (CIME/CITH/CIAC, RE/CX/FO/FT) + def u_veri1(self): # retourne (CIME/CITH/CIAC, RE/CX/FT) #--------------------------------------------------------------- + if not self.exists() : return afck=self.AFCK.get() l1=afck[0].strip().split('_') ; assert len(l1)==2 , afck phen, tsca= l1[0], l1[1] assert phen in ('CIME', 'CITH', 'CIAC'), afck - assert tsca in ('RE', 'CX', 'FO', 'FT'), tsca + assert tsca in ('RE', 'CX', 'FT'), tsca return phen, tsca def check_AFCK(self,checker): #--------------------------------------------- + if not self.exists() : return phen, tsca = self.u_veri1() afck=self.AFCK.get() nomo=afck[1].strip() sd2=sd_modele(nomo); sd2.check(checker) - if afck[2].strip() != '' : assert phen=='CIME' and tsca=='FT', afck + if afck[2].strip() != '' : assert (phen=='CIME' or phen=='CITH') and tsca=='FT', afck def check_AFCI(self,checker): #--------------------------------------------- + if not self.exists() : return phen, tsca = self.u_veri1() afci=self.AFCI.get() nbloc=afci[0] @@ -73,6 +76,7 @@ class sd_char_cine(AsBase): def check_AFCV(self,checker): #------------------------------------------------- + if not self.exists() : return phen, tsca = self.u_veri1() afci=self.AFCI.get() nbloc=afci[0] @@ -85,14 +89,14 @@ class sd_char_cine(AsBase): assert self.AFCV.lonmax == nbloc , (nbloc,self.AFCV.lonmax) if tsca == 'RE' : - assert tsca2=='R', tsca2 - if tsca in ('FO', 'FT') : - assert tsca2=='K' , tsca2 # champ de fonctions - if tsca=='CX' : - assert tsca2=='C', tsca2 + assert tsca2=='R', tsca2 # champ de réels + if tsca == 'FT' : + assert tsca2=='K', tsca2 # champ de fonctions + if tsca == 'CX' : + assert tsca2=='C', tsca2 # champ de complexes # vérification des fonctions : - if tsca in ( 'FO', 'FT') : # 'FO' : fonction ; 'FT' : il existe une fonction de 'INST' + if tsca == 'FT' : afcv = self.AFCV.get() for fonc in afcv : sd2=sd_fonction(fonc); sd2.check(checker) diff --git a/Aster/Cata/cataSTA9/SD/sd_char_meca.py b/Aster/Cata/cataSTA9/SD/sd_char_meca.py index 1048b177..7e5a1dc5 100644 --- a/Aster/Cata/cataSTA9/SD/sd_char_meca.py +++ b/Aster/Cata/cataSTA9/SD/sd_char_meca.py @@ -1,4 +1,4 @@ -#@ MODIF sd_char_meca SD DATE 01/04/2008 AUTEUR ABBAS M.ABBAS +#@ MODIF sd_char_meca SD DATE 16/09/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -24,6 +24,7 @@ from SD.sd_ligrel import sd_ligrel from SD.sd_carte import sd_carte from SD.sd_char_unilate import sd_char_unilate from SD.sd_char_contact import sd_char_contact +from SD.sd_char_cine import sd_char_cine class sd_char_gf_xx(AsBase): @@ -96,6 +97,7 @@ class sd_char_meca(AsBase): TYPE = AsVK8(lonmax=1) CHME = Facultatif(sd_char_chme()) + ELIM = Facultatif(sd_char_cine()) UNILATE = Facultatif(sd_char_unilate()) CONTACT = Facultatif(sd_char_contact()) diff --git a/Aster/Cata/cataSTA9/SD/sd_char_ther.py b/Aster/Cata/cataSTA9/SD/sd_char_ther.py index 37cadd6d..38198e2c 100644 --- a/Aster/Cata/cataSTA9/SD/sd_char_ther.py +++ b/Aster/Cata/cataSTA9/SD/sd_char_ther.py @@ -1,4 +1,4 @@ -#@ MODIF sd_char_ther SD DATE 17/07/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_char_ther SD DATE 16/09/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -25,6 +25,7 @@ from SD.sd_cham_elem import sd_cham_elem from SD.sd_carte import sd_carte from SD.sd_champ import sd_champ from SD.sd_fonction import sd_fonction +from SD.sd_char_cine import sd_char_cine class sd_char_chth(AsBase): @@ -64,7 +65,8 @@ class sd_char_chth(AsBase): class sd_char_ther(AsBase): #-------------------------------- nomj = SDNom(fin=8) - TYPE = AsVK8(lonmax=1) - CHTH = sd_char_chth() + TYPE = AsVK8(lonmax=1) + CHTH = sd_char_chth() + ELIM = Facultatif(sd_char_cine()) diff --git a/Aster/Cata/cataSTA9/SD/sd_compor.py b/Aster/Cata/cataSTA9/SD/sd_compor.py index b7ed032f..b283ec73 100644 --- a/Aster/Cata/cataSTA9/SD/sd_compor.py +++ b/Aster/Cata/cataSTA9/SD/sd_compor.py @@ -1,4 +1,4 @@ -#@ MODIF sd_compor SD DATE 19/11/2007 AUTEUR PROIX J-M.PROIX +#@ MODIF sd_compor SD DATE 30/06/2008 AUTEUR PROIX J-M.PROIX # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== diff --git a/Aster/Cata/cataSTA9/SD/sd_compor1.py b/Aster/Cata/cataSTA9/SD/sd_compor1.py deleted file mode 100644 index 651f4b0b..00000000 --- a/Aster/Cata/cataSTA9/SD/sd_compor1.py +++ /dev/null @@ -1,41 +0,0 @@ -#@ MODIF sd_compor1 SD DATE 13/02/2007 AUTEUR PELLET J.PELLET -# -*- coding: iso-8859-1 -*- -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. -# ====================================================================== - -from SD import * -from SD.sd_fonction import sd_fonction - - -class sd_compor1(AsBase): -#----------------------- - nomj = SDNom(fin=19) - VALC = AsVC(SDNom(debut=19), ) - VALK = AsVK8(SDNom(debut=19), ) - VALR = AsVR(SDNom(debut=19), ) - - - # parfois, THER_NL crée une sd_fonction pour BETA - def check_compor1_i_VALK(self, checker): - nom= self.nomj().strip() - valk=list(self.VALK.get()) - if not valk : return - if nom[8:16]=='.THER_NL' : - k=valk.index('BETA ') - nomfon=valk[2*k+1] - sd2=sd_fonction(nomfon) ; sd2.check(checker) diff --git a/Aster/Cata/cataSTA9/SD/sd_fiss_xfem.py b/Aster/Cata/cataSTA9/SD/sd_fiss_xfem.py deleted file mode 100644 index 3cad8b63..00000000 --- a/Aster/Cata/cataSTA9/SD/sd_fiss_xfem.py +++ /dev/null @@ -1,102 +0,0 @@ -#@ MODIF sd_fiss_xfem SD DATE 09/05/2007 AUTEUR PELLET J.PELLET -# -*- coding: iso-8859-1 -*- -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. -# ====================================================================== - -from SD import * - -from SD.sd_cham_no import sd_cham_no -from SD.sd_cham_elem import sd_cham_elem - - -class sd_mailfiss_xfem(AsBase): -#------------------------------- - nomj = SDNom(fin=19) - CTIP = AsVI(SDNom(nomj='.CTIP')) - HEAV = AsVI(SDNom(nomj='.HEAV')) - HECT = AsVI(SDNom(nomj='.HECT')) - - -class sd_contact_xfem(AsBase): -#------------------------------- - nomj = SDNom(fin=16) - CARACF = AsVR(SDNom(nomj='.CARACF')) - ECPDON = AsVI(SDNom(nomj='.ECPDON')) - LISCO = AsVR(SDNom(nomj='.LISCO')) - LISEQ = AsVI(SDNom(nomj='.LISEQ')) - LISRL = AsVI(SDNom(nomj='.LISRL')) - METHCO = AsVI(SDNom(nomj='.METHCO')) - XFEM = AsVI(SDNom(nomj='.XFEM')) - - - -class sd_xfem_com1(AsBase): -#------------------------------- -# champs communs aux sd_fiss_xfem et sd_modele : - - nomj = SDNom(fin=8) - - # cham_no : - BASLOC = sd_cham_no() - LNNO = sd_cham_no() - LTNO = sd_cham_no() - STNO = sd_cham_no() - - # cham_elem : - topose_pin = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOSE.PIN'))) - topose_cns = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOSE.CNS'))) - topose_hea = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOSE.HEA'))) - topose_lon = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOSE.LON'))) - topofac_pi = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOFAC.PI'))) - topofac_ai = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOFAC.AI'))) - topofac_cf = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOFAC.CF'))) - topofac_lo = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOFAC.LO'))) - topofac_ba = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOFAC.BA'))) - - - -class sd_fiss_xfem(AsBase): -#------------------------------- - nomj = SDNom(fin=8) - - CARAFOND = AsVR() - FONDFISS = AsVR() - GROUP_MA_ENRI = AsVI() - GROUP_NO_ENRI = AsVI() - - FONDMULT = Facultatif(AsVI()) - - CONTACT = Facultatif(sd_contact_xfem()) - - mailfiss_indic = AsVI(SDNom(nomj='.MAILFISS .INDIC'), lonmax=6, ) - MAILFISS = Facultatif(sd_mailfiss_xfem()) - - - # sd_xfem_com1 (idem sd_modele) : - com1 = sd_xfem_com1(SDNom(nomj='')) - - # cham_no : - BASCO = Facultatif(sd_cham_no()) - GRLNNO = sd_cham_no() - GRLTNO = sd_cham_no() - STNOR = sd_cham_no() - - # cham_elem : - topose_cri = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOSE.CRI'))) - pro_mes_el = Facultatif(sd_cham_elem(SDNom(nomj='.PRO.MES_EL'))) - pro_normal = Facultatif(sd_cham_elem(SDNom(nomj='.PRO.NORMAL'))) diff --git a/Aster/Cata/cataSTA9/SD/sd_formule.py b/Aster/Cata/cataSTA9/SD/sd_formule.py deleted file mode 100644 index cea5820d..00000000 --- a/Aster/Cata/cataSTA9/SD/sd_formule.py +++ /dev/null @@ -1,28 +0,0 @@ -#@ MODIF sd_formule SD DATE 13/02/2007 AUTEUR PELLET J.PELLET -# -*- coding: iso-8859-1 -*- -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. -# ====================================================================== - -from SD import * - -class sd_formule(AsBase): - nomj = SDNom(fin=19) - PROL = AsVK16(lonmax=6, ) - NOVA = AsVK8() - - diff --git a/Aster/Cata/cataSTA9/SD/sd_macr_elem_dyna.py b/Aster/Cata/cataSTA9/SD/sd_macr_elem_dyna.py index 05bbea0f..3844fba7 100644 --- a/Aster/Cata/cataSTA9/SD/sd_macr_elem_dyna.py +++ b/Aster/Cata/cataSTA9/SD/sd_macr_elem_dyna.py @@ -1,4 +1,4 @@ -#@ MODIF sd_macr_elem_dyna SD DATE 24/09/2007 AUTEUR DEVESA G.DEVESA +#@ MODIF sd_macr_elem_dyna SD DATE 22/09/2008 AUTEUR ANDRIAM H.ANDRIAMBOLOLONA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -28,7 +28,7 @@ class sd_macr_elem_dyna_m(AsBase): nomj = SDNom(fin=18) DESC = AsVI (SDNom(nomj='_DESC'),lonmax=3) REFE = AsVK24 (SDNom(nomj='_REFE'),lonmax=2) - VALE = AsVR (SDNom(nomj='_VALE')) + VALE = AsObject (SDNom(nomj='_VALE'),type=Parmi('C','R',),) def check_macr_elem_dyna_m_1(self,checker): vale=self.VALE.get() diff --git a/Aster/Cata/cataSTA9/SD/sd_matr_cine.py b/Aster/Cata/cataSTA9/SD/sd_matr_cine.py index 2aeadcdf..7bce4ec7 100644 --- a/Aster/Cata/cataSTA9/SD/sd_matr_cine.py +++ b/Aster/Cata/cataSTA9/SD/sd_matr_cine.py @@ -1,4 +1,4 @@ -#@ MODIF sd_matr_cine SD DATE 14/01/2008 AUTEUR DESOZA T.DESOZA +#@ MODIF sd_matr_cine SD DATE 22/09/2008 AUTEUR DESOZA T.DESOZA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -26,7 +26,7 @@ class sd_matr_cine(AsBase): nomj = SDNom(fin=19) CCID = AsVI() - CCJJ = Facultatif(AsVI()) + CCII = Facultatif(AsVI()) CCLL = Facultatif(AsVI()) CCVA = Facultatif(AsObject(genr='V', xous='S', type=Parmi('R','C'))) diff --git a/Aster/Cata/cataSTA9/SD/sd_matr_elem.py b/Aster/Cata/cataSTA9/SD/sd_matr_elem.py index 4ae31b93..0e257c74 100644 --- a/Aster/Cata/cataSTA9/SD/sd_matr_elem.py +++ b/Aster/Cata/cataSTA9/SD/sd_matr_elem.py @@ -1,4 +1,4 @@ -#@ MODIF sd_matr_elem SD DATE 25/03/2008 AUTEUR REZETTE C.REZETTE +#@ MODIF sd_matr_elem SD DATE 16/09/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -29,8 +29,9 @@ class sd_matr_elem(AsBase): nomj = SDNom(fin=19) RERR = AsVK24(lonmax=5, ) RELR = Facultatif(AsVK24()) + RECC = Facultatif(AsVK8()) TITR = AsVK80(SDNom(debut=19), optional=True) - + # indirection par RELR : def check_matr_elem_i_RELR(self, checker): if not self.RELR.exists : return diff --git a/Aster/Cata/cataSTA9/SD/sd_nume_ddl_com.py b/Aster/Cata/cataSTA9/SD/sd_nume_ddl_com.py index 6d18fddd..3dd3aad3 100644 --- a/Aster/Cata/cataSTA9/SD/sd_nume_ddl_com.py +++ b/Aster/Cata/cataSTA9/SD/sd_nume_ddl_com.py @@ -1,21 +1,21 @@ -#@ MODIF sd_nume_ddl_com SD DATE 13/02/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_nume_ddl_com SD DATE 03/11/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== from SD import * @@ -25,7 +25,7 @@ from SD.sd_stockage import sd_stockage class sd_nume_ddl_com(sd_stockage): -#-------------------------------- +#---------------------------------- nomj = SDNom(fin=14) NSLV = AsVK24(lonmax=1, ) diff --git a/Aster/Cata/cataSTA9/SD/sd_nume_ddl_gene.py b/Aster/Cata/cataSTA9/SD/sd_nume_ddl_gene.py index 25f06ed5..88ed5120 100644 --- a/Aster/Cata/cataSTA9/SD/sd_nume_ddl_gene.py +++ b/Aster/Cata/cataSTA9/SD/sd_nume_ddl_gene.py @@ -1,21 +1,21 @@ -#@ MODIF sd_nume_ddl_gene SD DATE 13/02/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_nume_ddl_gene SD DATE 03/11/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== from SD import * @@ -25,7 +25,7 @@ from SD.sd_nume_eqge import sd_nume_eqge class sd_nume_ddl_gene(sd_nume_ddl_com): -#-------------------------------- +#--------------------------------------- nomj = SDNom(fin=14) nume = Facultatif(sd_nume_eqge(SDNom(nomj='.NUME'))) # n'existe pas toujours : CALC_MATR_AJOU/fdlv106a diff --git a/Aster/Cata/cataSTA9/SD/sd_nume_equa.py b/Aster/Cata/cataSTA9/SD/sd_nume_equa.py index 42e3394a..e3656f51 100644 --- a/Aster/Cata/cataSTA9/SD/sd_nume_equa.py +++ b/Aster/Cata/cataSTA9/SD/sd_nume_equa.py @@ -1,4 +1,4 @@ -#@ MODIF sd_nume_equa SD DATE 11/02/2008 AUTEUR PELLET J.PELLET +#@ MODIF sd_nume_equa SD DATE 03/11/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -23,8 +23,8 @@ from SD import * from SD.sd_prof_chno import sd_prof_chno class sd_nume_equa(sd_prof_chno): nomj = SDNom(fin=19) - NEQU = Facultatif(AsVI(SDNom(debut=19), lonmax=2, )) - DELG = Facultatif(AsVI(SDNom(debut=19), )) - REFN = Facultatif(AsVK24(SDNom(debut=19),lonmax=4, )) + NEQU = AsVI(lonmax=2,) + DELG = AsVI( ) + REFN = AsVK24(lonmax=4,) diff --git a/Aster/Cata/cataSTA9/SD/sd_obstacle.py b/Aster/Cata/cataSTA9/SD/sd_obstacle.py deleted file mode 100644 index 128c15fc..00000000 --- a/Aster/Cata/cataSTA9/SD/sd_obstacle.py +++ /dev/null @@ -1,29 +0,0 @@ -#@ MODIF sd_obstacle SD DATE 13/02/2007 AUTEUR PELLET J.PELLET -# -*- coding: iso-8859-1 -*- -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. -# ====================================================================== - -from SD import * - -class sd_obstacle(AsBase): - nomj = SDNom(fin=19) - VALR = Facultatif(AsVR(lonmax=19, )) - REFO = AsVK24(lonmax=1, ) - VALT = Facultatif(AsVR(lonmax=19, )) - - diff --git a/Aster/Cata/cataSTA9/SD/sd_prof_chno.py b/Aster/Cata/cataSTA9/SD/sd_prof_chno.py index 3d81d6d3..fd7380a1 100644 --- a/Aster/Cata/cataSTA9/SD/sd_prof_chno.py +++ b/Aster/Cata/cataSTA9/SD/sd_prof_chno.py @@ -1,31 +1,30 @@ -#@ MODIF sd_prof_chno SD DATE 13/02/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_prof_chno SD DATE 03/11/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== from SD import * class sd_prof_chno(AsBase): nomj = SDNom(fin=19) - LPRN = Facultatif(AsVI(SDNom(debut=19), )) - PRNO = AsColl(SDNom(debut=19), acces='NU', stockage='CONTIG', modelong=Parmi('CONSTANT', 'VARIABLE'), type='I', ) - LILI = AsObject(SDNom(debut=19), genr='N', xous='S', type='K', ltyp=24, ) - NUEQ = AsVI(SDNom(debut=19), ) - DEEQ = AsVI(SDNom(debut=19), ) + PRNO = AsColl( acces='NU', stockage='CONTIG', modelong=Parmi('CONSTANT', 'VARIABLE'), type='I', ) + LILI = AsObject( genr='N', xous='S', type='K', ltyp=24, ) + NUEQ = AsVI( ) + DEEQ = AsVI( ) diff --git a/Aster/Cata/cataSTA9/SD/sd_resultat.py b/Aster/Cata/cataSTA9/SD/sd_resultat.py index 565f82a4..95f8ab55 100644 --- a/Aster/Cata/cataSTA9/SD/sd_resultat.py +++ b/Aster/Cata/cataSTA9/SD/sd_resultat.py @@ -1,4 +1,4 @@ -#@ MODIF sd_resultat SD DATE 22/10/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_resultat SD DATE 07/10/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -38,6 +38,8 @@ class sd_resultat(sd_titre): ORDR = AsVI(SDNom(debut=19), ) DESC = AsObject(SDNom(debut=19), genr='N', xous='S', type='K', ltyp=16, ) + NOEU = Facultatif(AsVK16(SDNom(debut=19))) # en attendant la correction de EL 12583 + # la déclaration suivante simplifie la fonction check_resultat_i_char CHAR = Facultatif(AsVK24(SDNom(debut=19),)) @@ -73,8 +75,8 @@ class sd_resultat(sd_titre): ltyp=Parmi(4,8,16,24),) ; sd2.check(checker) - # indirection vers les sd_l_charges stockées comme paramètres dans l'objet .CHAR : - def check_resultat_i_CHAR(self, checker): + # indirection vers les sd_l_charges stockées comme paramètres sous le nom EXCIT : + def check_resultat_i_EXCIT(self, checker): lnom = self.CHAR.get() if not lnom: return S1=Set() @@ -130,8 +132,8 @@ class sd_resultat(sd_titre): sdu_compare(sd2,checker,len(sd2.get()),'==',npara*nbmax_ordr,'Incohérence LONMAX / LONMAX(.ORDR)') - # vérification que les variables d'accès sont bien différentes : - def check_ACCES(self, checker): + # vérifications supplémentaires : + def check_veri1(self, checker): ordr = self.ORDR.get() nova = self.NOVA.get() tava = self.TAVA.get() @@ -142,18 +144,20 @@ class sd_resultat(sd_titre): # objets trouvés dans .TAVA for knova in tava.keys(): - nova1=nova[knova-1] + nova1=nova[knova-1].strip() suffix=tava[knova][0][:5] if not suffix.strip(): continue nupara=int(tava[knova][1]) nbpara=int(tava[knova][2]) + assert nupara <= nbpara, (nupara, nbpara) acces=tava[knova][3].strip() assert acces in ('PARA','ACCES') , acces + + # on vérifie que les variables d'accès sont toutes différentes : if acces == 'ACCES' : # pour l'instant, on ne vérifie que 'INST' car 'FREQ', 'NUME_MODE', 'NOEUD_CMP' ne semblent pas tous différents ... - if nova1.strip() != 'INST' : continue - sdu_compare(tava,checker,nupara,'<=',nbpara,'nupara <= nbpara') + if nova1 != 'INST' : continue nom=self.nomj()[:19]+suffix sd2 = AsObject(SDNom(nomj=nom,debut=0),) @@ -164,4 +168,16 @@ class sd_resultat(sd_titre): sdu_tous_differents(sd2,checker,seq,nova1) + # on vérifie les éventuelles sd_l_charge (EXCIT) : + if nova1=="EXCIT" : + nom=self.nomj()[:19]+suffix + sd2 = AsObject(SDNom(nomj=nom,debut=0),) + vect=sd2.get() + S1=Set() + for k in range(nbuti_ordr) : + S1.add(vect[k*nbpara+nupara-1]) + for nom in S1 : + if nom.strip() != '' : + sd2 = sd_l_charges(nomj=nom); sd2.check(checker) + diff --git a/Aster/Cata/cataSTA9/SD/sd_resultat_dyn.py b/Aster/Cata/cataSTA9/SD/sd_resultat_dyn.py index 6dab8958..07ac7c55 100644 --- a/Aster/Cata/cataSTA9/SD/sd_resultat_dyn.py +++ b/Aster/Cata/cataSTA9/SD/sd_resultat_dyn.py @@ -1,4 +1,4 @@ -#@ MODIF sd_resultat_dyn SD DATE 11/02/2008 AUTEUR PELLET J.PELLET +#@ MODIF sd_resultat_dyn SD DATE 03/11/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -30,8 +30,7 @@ from SD.sd_proj_mesu import sd_proj_mesu class sd_resultat_dyn(sd_resultat): #-------------------------------------------------- nomj = SDNom(fin=8) - PROFC_NUME_REFN = Facultatif(AsVK24(SDNom(nomj='.PROFC.NUME.REFN'), lonmax=4, )) - REFD = Facultatif(AsVK24(SDNom(debut=19), lonmax=6, )) # n'existe pas dans sdll23a + REFD = AsVK24(SDNom(debut=19), lonmax=6, ) # si utilisation de PROJ_MESU_MODAL : PROJM = Facultatif(sd_proj_mesu()) diff --git a/Aster/Cata/cataSTA9/SD/sd_solveur.py b/Aster/Cata/cataSTA9/SD/sd_solveur.py index 2d678261..cbf779a0 100644 --- a/Aster/Cata/cataSTA9/SD/sd_solveur.py +++ b/Aster/Cata/cataSTA9/SD/sd_solveur.py @@ -1,4 +1,4 @@ -#@ MODIF sd_solveur SD DATE 13/02/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_solveur SD DATE 22/07/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -27,3 +27,17 @@ class sd_solveur(AsBase): SLVI = AsVI(SDNom(debut=19), lonmax=6, ) + def check_SLVK(self,checker): + #--------------------------------------------- + slvk = self.SLVK.get_stripped() + method=slvk[0] + if method == 'MUMPS' : + assert slvk[1] in ('AUTO', 'SANS'), slvk + assert slvk[2] in ('NONSYM', 'SYMGEN', 'SYMDEF', 'AUTO'), slvk + assert slvk[3] in ('AMD','AMF','PORD','METIS','QAMD','AUTO'), slvk + assert slvk[4] in ('OUI', 'NON'), slvk + assert slvk[5] in ('OUI', 'NON'), slvk + else : + pass + + diff --git a/Aster/Cata/cataSTA9/SD/sd_squelette.py b/Aster/Cata/cataSTA9/SD/sd_squelette.py index f3ba2aba..86e28fd2 100644 --- a/Aster/Cata/cataSTA9/SD/sd_squelette.py +++ b/Aster/Cata/cataSTA9/SD/sd_squelette.py @@ -1,4 +1,4 @@ -#@ MODIF sd_squelette SD DATE 19/06/2007 AUTEUR PELLET J.PELLET +#@ MODIF sd_squelette SD DATE 03/11/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -27,7 +27,7 @@ from SD.sd_util import * class sd_squelette(sd_maillage): #------------------------------- nomj = SDNom(fin=8) - inv_skeleton = AsVI(SDNom(nomj='.INV.SKELETON'), ) + inv_skeleton = Facultatif(AsVI(SDNom(nomj='.INV.SKELETON'),)) CORRES = Facultatif(AsVI()) NOMSST = Facultatif(AsVK8(SDNom(debut=17),)) @@ -38,8 +38,9 @@ class sd_squelette(sd_maillage): def check_SKELETON(self,checker): - dime=self.DIME.get() + if not self.inv_skeleton.exists : return skeleton=self.inv_skeleton.get() + dime=self.DIME.get() nbno=dime[0] assert len(skeleton)==2*nbno, (dime,len(skeleton)) for k in skeleton : diff --git a/Aster/Cata/cataSTA9/SD/sd_table_container.py b/Aster/Cata/cataSTA9/SD/sd_table_container.py index 1afe1a17..35360005 100644 --- a/Aster/Cata/cataSTA9/SD/sd_table_container.py +++ b/Aster/Cata/cataSTA9/SD/sd_table_container.py @@ -1,4 +1,4 @@ -#@ MODIF sd_table_container SD DATE 12/02/2008 AUTEUR REZETTE C.REZETTE +#@ MODIF sd_table_container SD DATE 21/10/2008 AUTEUR REZETTE C.REZETTE # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -46,7 +46,7 @@ class sd_table_container(sd_table): # 'NOM_OBJET','TYPE_OBJET','NOM_SD' param=['NOM_OBJET','TYPE_OBJET','NOM_SD'] shape = self.TBNP.get() - assert 3,shape[0] # la table a exactement 3 paramètres + assert shape[0]>2 # la table à au moins 3 paramètres for n in param: col=self.get_column_name(n) if col == None: diff --git a/Aster/Cata/cataSTA9/SD/sd_tran_gene.py b/Aster/Cata/cataSTA9/SD/sd_tran_gene.py index a5c682f4..bd469375 100644 --- a/Aster/Cata/cataSTA9/SD/sd_tran_gene.py +++ b/Aster/Cata/cataSTA9/SD/sd_tran_gene.py @@ -1,4 +1,4 @@ -#@ MODIF sd_tran_gene SD DATE 27/11/2007 AUTEUR ANDRIAM H.ANDRIAMBOLOLONA +#@ MODIF sd_tran_gene SD DATE 25/11/2008 AUTEUR BOYERE E.BOYERE # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -108,8 +108,8 @@ class sd_tran_gene(sd_titre) : assert self.ORDR.lonmax == nbsauv assert self.INST.lonmax == nbsauv assert self.PTEM.lonmax in (1, nbsauv) - # sdu_tous_differents(self.ORDR,checker) # AJACOT_PB : j'aimerais bien "tous_différents" - # sdu_tous_differents(self.INST,checker) # mais il y a sdld102a => fiche à émettre ? + sdu_tous_differents(self.ORDR,checker) # AJACOT_PB : j'aimerais bien "tous_différents" + sdu_tous_differents(self.INST,checker) # mais il y a sdld102a => fiche à émettre ? def check_DEPL_VITE_ACCE(self,checker): diff --git a/Aster/Cata/cataSTA9/SD/sd_xfem.py b/Aster/Cata/cataSTA9/SD/sd_xfem.py index ef81e21e..b23e9075 100644 --- a/Aster/Cata/cataSTA9/SD/sd_xfem.py +++ b/Aster/Cata/cataSTA9/SD/sd_xfem.py @@ -1,4 +1,4 @@ -#@ MODIF sd_xfem SD DATE 04/02/2008 AUTEUR GALENNE E.GALENNE +#@ MODIF sd_xfem SD DATE 14/10/2008 AUTEUR GENIAUT S.GENIAUT # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -44,7 +44,7 @@ class sd_fiss_xfem(AsBase): FONDFISS = Facultatif(AsVR()) BASEFOND = Facultatif(AsVR()) FONDMULT = Facultatif(AsVI()) - CARAFOND = AsVR() + CARAFOND = AsVR(lonmax=12,) # I.2) objets relatifs à l'enrichissement diff --git a/Aster/Cata/cataSTA9/SD/utilsd.py b/Aster/Cata/cataSTA9/SD/utilsd.py index 8e4980be..e101a3be 100644 --- a/Aster/Cata/cataSTA9/SD/utilsd.py +++ b/Aster/Cata/cataSTA9/SD/utilsd.py @@ -23,7 +23,7 @@ Utilitaire sur le catalogue des structures de données. """ -__revision__ = "$Id: utilsd.py,v 1.2.6.3.4.2 2008-10-10 13:32:10 pnoyret Exp $" +__revision__ = "$Id: utilsd.py,v 1.3.4.2 2008-11-28 16:53:33 pnoyret Exp $" import sys import os diff --git a/Aster/Cata/cataSTA9/cata.py b/Aster/Cata/cataSTA9/cata.py index 9107d31c..9984f964 100644 --- a/Aster/Cata/cataSTA9/cata.py +++ b/Aster/Cata/cataSTA9/cata.py @@ -22,7 +22,7 @@ from __future__ import division __version__ = "$Name: $" -__Id__ = "$Id: cata.py,v 1.2.6.5.4.3 2008-10-10 13:31:49 pnoyret Exp $" +__Id__ = "$Id: cata.py,v 1.3.4.2 2008-11-28 16:53:32 pnoyret Exp $" import Accas from Accas import * @@ -226,7 +226,7 @@ from SD.co_vect_elem import vect_elem, \ vect_elem_pres_r, vect_elem_pres_c, \ vect_elem_temp_r -#& MODIF COMMUN DATE 06/05/2008 AUTEUR MARKOVIC D.MARKOVIC +#& MODIF COMMUN DATE 20/10/2008 AUTEUR MICHEL S.MICHEL # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG @@ -246,675 +246,241 @@ from SD.co_vect_elem import vect_elem, \ # ====================================================================== # RESPONSABLE PROIX J.M.PROIX def C_COMP_INCR() : return FACT(statut='f',min=1,max='**', #COMMUN# - RELATION =SIMP(statut='o',typ='TXM',defaut="VMIS_ISOT_TRAC", - into=( "ELAS", -# Spécial Discrets : début - "DIS_VISC", # RESP. : FLEJOU J.L.FLEJOU - "DIS_ECRO_CINE", # RESP. : FLEJOU J.L.FLEJOU + RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS", + into=( "ELAS", # RESP. : PROIX J.M.PROIX + "ARME", # RESP. : PEYRARD C.PEYRARD + "ASSE_CORN", # RESP. : PEYRARD C.PEYRARD + "BARCELONE", # RESP. : ELGHARIB J.ELGHARIB + "BETON_DOUBLE_DP", # RESP. : ELGHARIB J.ELGHARIB + "BETON_REGLE_PR", # RESP. : NECS + "BETON_UMLV_FP", # RESP. : LEPAPE Y.LEPAPE + "CAM_CLAY", # RESP. : ELGHARIB J.ELGHARIB + "CJS", # RESP. : CHAVANT C.CHAVANT + "CORR_ACIER", # RESP. : LEPAPE Y.LEPAPE + "CZM_EXP_REG", # RESP. : LAVERNE J.LAVERNE + "CZM_EXP", # RESP. : LAVERNE J.LAVERNE + "CZM_LIN_REG", # RESP. : LAVERNE J.LAVERNE + "CZM_OUV_MIX", # RESP. : LAVERNE J.LAVERNE + "CZM_TAC_MIX", # RESP. : LAVERNE J.LAVERNE "DIS_BILI_ELAS", # RESP. : FLEJOU J.L.FLEJOU -# Spécial Discrets : fin + "DIS_CHOC", # RESP. : DEVESA G.DEVESA + "DIS_ECRO_CINE", # RESP. : FLEJOU J.L.FLEJOU + "DIS_GOUJ2E_ELAS", # RESP. : ANGLES J.ANGLES + "DIS_GOUJ2E_PLAS", # RESP. : ANGLES J.ANGLES + "DIS_GRICRA", # RESP. : FERNANDES R.FERNANDES + "DIS_VISC", # RESP. : FLEJOU J.L.FLEJOU + "DRUCK_PRAGER", # RESP. : FERNANDES R.FERNANDES + "DRUCK_PRAG_N_A", # RESP. : FERNANDES R.FERNANDES + "ELAS_GONF", # RESP. : GRANET S.GRANET "ELAS_HYPER", # RESP. : ABBAS M.ABBAS - "VMIS_ISOT_TRAC", # RESP. : PROIX J.M.PROIX - "VISC_ISOT_TRAC", # RESP. : PROIX J.M.PROIX - "VMIS_ISOT_LINE", # RESP. : PROIX J.M.PROIX - "VISC_ISOT_LINE", # RESP. : MICHEL S.MICHEL - "VMIS_ISOT_PUIS", # RESP. : PROIX J.M.PROIX - "VMIS_ECMI_TRAC", # RESP. : PROIX J.M.PROIX - "VMIS_ECMI_LINE", # RESP. : PROIX J.M.PROIX - "LABORD_1D", # RESP. : VOLDOIRE F.VOLDOIRE "ENDO_FRAGILE", # RESP. : MICHEL S.MICHEL "ENDO_ISOT_BETON", # RESP. : MICHEL S.MICHEL "ENDO_ORTH_BETON", # RESP. : MICHEL S.MICHEL - "BETON_REGLE_PR", # RESP. : NECS - "MAZARS", # RESP. : MICHEL S.MICHEL + "GATT_MONERIE", # RESP. : DEBONNIERES P.DEBONNIERES + "GLRC_DAMAGE", # RESP. : MARKOVIC D.MARKOVIC + "GLRC_DM", # RESP. : MARKOVIC D.MARKOVIC + "GRANGER_FP_INDT", # RESP. : ROSPARS C.ROSPARS + "GRANGER_FP", # RESP. : ROSPARS C.ROSPARS + "GRANGER_FP_V", # RESP. : ROSPARS C.ROSPARS + "GRAN_IRRA_LOG", # RESP. : FERNANDES R.FERNANDES + "GRILLE_CINE_LINE",# RESP. : ROSPARS C.ROSPARS + "GRILLE_ISOT_LINE",# RESP. : ROSPARS C.ROSPARS + "GRILLE_PINTO_MEN",# RESP. : ROSPARS C.ROSPARS + "HOEK_BROWN_EFF", # RESP. : CHAVANT C.CHAVANT + "HOEK_BROWN", # RESP. : CHAVANT C.CHAVANT + "HOEK_BROWN_TOT", # RESP. : CHAVANT C.CHAVANT + "HUJEUX", # RESP. : FOUCAULT A.FOUCAULT + "IRRAD3M", # RESP. : FLEJOU J.L.FLEJOU "JOINT_BA", # RESP. : MICHEL S.MICHEL - "RUPT_FRAG", # RESP. : LAVERNE J.LAVERNE - "CZM_EXP_REG", # RESP. : LAVERNE J.LAVERNE - "CZM_LIN_REG", # RESP. : LAVERNE J.LAVERNE - "CZM_EXP", # RESP. : LAVERNE J.LAVERNE - "META_P_IL", # RESP. : CANO V.CANO + "KIT_DDI", # RESP. : CHAVANT C.CHAVANT + "KIT_HHM", # RESP. : GRANET S.GRANET + "KIT_HH", # RESP. : GRANET S.GRANET + "KIT_HM", # RESP. : GRANET S.GRANET + "KIT_THHM", # RESP. : GRANET S.GRANET + "KIT_THH", # RESP. : GRANET S.GRANET + "KIT_THM", # RESP. : GRANET S.GRANET + "KIT_THV", # RESP. : GRANET S.GRANET + "LABORD_1D", # RESP. : VOLDOIRE F.VOLDOIRE + "LAIGLE", # RESP. : ELGHARIB J.ELGHARIB + "LEMAITRE_IRRA", # RESP. : FERNANDES R.FERNANDES + "LEMAITRE", # RESP. : DEBONNIERES P.DEBONNIERES + "LEMA_SEUIL", # RESP. : LECLERC S.LECLERC + "LETK", # RESP. : ELGHARIB J.ELGHARIB + "LMARC_IRRA", # RESP. : FERNANDES R.FERNANDES + "LMARC", # RESP. : None + "MAZARS", # RESP. : MICHEL S.MICHEL + "META_LEMA_ANI", # RESP. : CANO V.CANO + "META_P_CL_PT_RE", # RESP. : CANO V.CANO + "META_P_CL_PT", # RESP. : CANO V.CANO + "META_P_CL_RE", # RESP. : CANO V.CANO + "META_P_CL", # RESP. : CANO V.CANO + "META_P_IL_PT_RE", # RESP. : CANO V.CANO "META_P_IL_PT", # RESP. : CANO V.CANO "META_P_IL_RE", # RESP. : CANO V.CANO - "META_P_IL_PT_RE", # RESP. : CANO V.CANO - "META_V_IL", # RESP. : CANO V.CANO - "META_V_IL_PT", # RESP. : CANO V.CANO - "META_V_IL_RE", # RESP. : CANO V.CANO - "META_V_IL_PT_RE", # RESP. : CANO V.CANO - "META_P_INL", # RESP. : CANO V.CANO + "META_P_IL", # RESP. : CANO V.CANO + "META_P_INL_PT_RE",# RESP. : CANO V.CANO "META_P_INL_PT", # RESP. : CANO V.CANO "META_P_INL_RE", # RESP. : CANO V.CANO - "META_P_INL_PT_RE",# RESP. : CANO V.CANO - "META_V_INL", # RESP. : CANO V.CANO - "META_V_INL_PT", # RESP. : CANO V.CANO - "META_V_INL_RE", # RESP. : CANO V.CANO - "META_V_INL_PT_RE",# RESP. : CANO V.CANO - "META_P_CL", # RESP. : CANO V.CANO - "META_P_CL_PT", # RESP. : CANO V.CANO - "META_P_CL_RE", # RESP. : CANO V.CANO - "META_P_CL_PT_RE", # RESP. : CANO V.CANO - "META_V_CL", # RESP. : CANO V.CANO + "META_P_INL", # RESP. : CANO V.CANO + "META_V_CL_PT_RE", # RESP. : CANO V.CANO "META_V_CL_PT", # RESP. : CANO V.CANO "META_V_CL_RE", # RESP. : CANO V.CANO - "META_V_CL_PT_RE", # RESP. : CANO V.CANO - "META_LEMA_ANI", # RESP. : CANO V.CANO - "VMIS_CINE_LINE", # RESP. : PROIX J.M.PROIX - "VISC_TAHERI", # RESP. : TAHERI S.TAHERI + "META_V_CL", # RESP. : CANO V.CANO + "META_V_IL_PT_RE", # RESP. : CANO V.CANO + "META_V_IL_PT", # RESP. : CANO V.CANO + "META_V_IL_RE", # RESP. : CANO V.CANO + "META_V_IL", # RESP. : CANO V.CANO + "META_V_INL_PT_RE",# RESP. : CANO V.CANO + "META_V_INL_PT", # RESP. : CANO V.CANO + "META_V_INL_RE", # RESP. : CANO V.CANO + "META_V_INL", # RESP. : CANO V.CANO + "MONOCRISTAL", # RESP. : PROIX J.M.PROIX + "MULTIFIBRE", # RESP. : FLEJOU J.L.FLEJOU + "NADAI_B", # RESP. : None + "NORTON_HOFF", # RESP. : MICHEL S.MICHEL + "PINTO_MENEGOTTO", # RESP. : ROSPARS C.ROSPARS + "POLYCRISTAL", # RESP. : PROIX J.M.PROIX + "ROUSSELIER", # RESP. : CANO V.CANO + "ROUSS_PR", # RESP. : PARROT A.PARROT + "ROUSS_VISC", # RESP. : CANO V.CANO + "RUPT_FRAG", # RESP. : LAVERNE J.LAVERNE + "SANS", # RESP. : MICHEL S.MICHEL + "VENDOCHAB", # RESP. : PROIX J.M.PROIX + "VISC_CIN1_CHAB", # RESP. : PROIX J.M.PROIX + "VISC_CIN2_CHAB", # RESP. : PROIX J.M.PROIX + "VISC_CIN2_MEMO", # RESP. : PROIX J.M.PROIX + "VISC_IRRA_LOG", # RESP. : FERNANDES R.FERNANDES + "VISC_ISOT_LINE", # RESP. : MICHEL S.MICHEL + "VISC_ISOT_TRAC", # RESP. : PROIX J.M.PROIX "VISCOCHAB", # RESP. : None + "VISC_TAHERI", # RESP. : TAHERI S.TAHERI + "VMIS_ASYM_LINE", # RESP. : PROIX J.M.PROIX "VMIS_CIN1_CHAB", # RESP. : PROIX J.M.PROIX "VMIS_CIN2_CHAB", # RESP. : PROIX J.M.PROIX - "VISC_CIN1_CHAB", # RESP. : PROIX J.M.PROIX - "VISC_CIN2_CHAB", # RESP. : PROIX J.M.PROIX "VMIS_CIN2_MEMO", # RESP. : PROIX J.M.PROIX - "VISC_CIN2_MEMO", # RESP. : PROIX J.M.PROIX - "LMARC", # RESP. : None - "LMARC_IRRA", # RESP. : FERNANDES R.FERNANDES - "ROUSSELIER", # RESP. : CANO V.CANO - "ROUSS_PR", # RESP. : PARROT A.PARROT - "ROUSS_VISC", # RESP. : CANO V.CANO - "VMIS_POU_LINE", # RESP. : PROIX J.M.PROIX + "VMIS_CINE_LINE", # RESP. : PROIX J.M.PROIX + "VMIS_ECMI_LINE", # RESP. : PROIX J.M.PROIX + "VMIS_ECMI_TRAC", # RESP. : PROIX J.M.PROIX + "VMIS_ISOT_LINE", # RESP. : PROIX J.M.PROIX + "VMIS_ISOT_PUIS", # RESP. : PROIX J.M.PROIX + "VMIS_ISOT_TRAC", # RESP. : PROIX J.M.PROIX "VMIS_POU_FLEJOU", # RESP. : FLEJOU J.L.FLEJOU - "ARME", # RESP. : PEYRARD C.PEYRARD - "ASSE_CORN", # RESP. : PEYRARD C.PEYRARD - "NORTON_HOFF", # RESP. : MICHEL S.MICHEL - "LEMAITRE", # RESP. : DEBONNIERES P.DEBONNIERES - "LEMAITRE_IRRA", # RESP. : FERNANDES R.FERNANDES - "LEMA_SEUIL", # RESP. : LECLERC S.LECLERC - "IRRAD3M", # RESP. : FLEJOU J.L.FLEJOU - "VISC_IRRA_LOG", # RESP. : FERNANDES R.FERNANDES - "GRAN_IRRA_LOG", # RESP. : FERNANDES R.FERNANDES - "VENDOCHAB", # RESP. : None - "NADAI_B", # RESP. : None - "DIS_CHOC", # RESP. : DEVESA G.DEVESA - "DIS_GRICRA", # RESP. : FERNANDES R.FERNANDES - "DIS_GOUJ2E_PLAS", # RESP. : ANGLES J.ANGLES - "DIS_GOUJ2E_ELAS", # RESP. : ANGLES J.ANGLES - "GRILLE_ISOT_LINE",# RESP. : ROSPARS C.ROSPARS - "GRILLE_CINE_LINE",# RESP. : ROSPARS C.ROSPARS - "GRILLE_PINTO_MEN",# RESP. : ROSPARS C.ROSPARS - "PINTO_MENEGOTTO", # RESP. : ROSPARS C.ROSPARS - "CJS", # RESP. : CHAVANT C.CHAVANT - "HUJEUX", # RESP. : FOUCAULT A.FOUCAULT - "CAM_CLAY", # RESP. : ELGHARIB J.ELGHARIB - "BARCELONE", # RESP. : ELGHARIB J.ELGHARIB - "LAIGLE", # RESP. : ELGHARIB J.ELGHARIB - "LETK", # RESP. : ELGHARIB J.ELGHARIB - "DRUCK_PRAGER", # RESP. : FERNANDES R.FERNANDES - "DRUCK_PRAG_N_A", # RESP. : FERNANDES R.FERNANDES - "HOEK_BROWN", # RESP. : CHAVANT C.CHAVANT - "HOEK_BROWN_EFF", # RESP. : CHAVANT C.CHAVANT - "HOEK_BROWN_TOT", # RESP. : CHAVANT C.CHAVANT - "GRANGER_FP", # RESP. : ROSPARS C.ROSPARS - "GRANGER_FP_INDT", # RESP. : ROSPARS C.ROSPARS - "GRANGER_FP_V", # RESP. : ROSPARS C.ROSPARS - "BETON_UMLV_FP", # RESP. : LEPAPE Y.LEPAPE - "BETON_DOUBLE_DP", # RESP. : ELGHARIB J.ELGHARIB - "KIT_HH", # RESP. : GRANET S.GRANET - "KIT_HM", # RESP. : GRANET S.GRANET - "KIT_HHM", # RESP. : GRANET S.GRANET - "KIT_THH", # RESP. : GRANET S.GRANET - "KIT_THV", # RESP. : GRANET S.GRANET - "KIT_THM", # RESP. : GRANET S.GRANET - "KIT_THHM", # RESP. : GRANET S.GRANET - "VMIS_ASYM_LINE", # RESP. : None - "KIT_DDI", # RESP. : CHAVANT C.CHAVANT - "GLRC_DAMAGE", # RESP. : MARKOVIC D.MARKOVIC - "GLRC_DM", # RESP. : MARKOVIC D.MARKOVIC - "SANS", # RESP. : None - "CORR_ACIER", # RESP. : LEPAPE Y.LEPAPE - "MONOCRISTAL", # RESP. : PROIX J.M.PROIX - "POLYCRISTAL", # RESP. : PROIX J.M.PROIX + "VMIS_POU_LINE", # RESP. : PROIX J.M.PROIX "ZMAT", # RESP. : PROIX J.M.PROIX - "GATT_MONERIE", # RESP. : DEBONNIERES P.DEBONNIERES - "MULTIFIBRE", # RESP. : FLEJOU J.L.FLEJOU ) ), -# Spécial discrets : début - DIS_VISC =SIMP(statut='c',typ='I',defaut=12,into=(12,)), - DIS_ECRO_CINE =SIMP(statut='c',typ='I',defaut=18,into=(18,)), - DIS_BILI_ELAS =SIMP(statut='c',typ='I',defaut= 6,into=( 6,)), -# Spécial discrets : fin - ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_HYPER =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - SANS =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - CORR_ACIER =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - VMIS_ISOT_TRAC =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - VISC_ISOT_TRAC =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - VMIS_ISOT_LINE =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - VISC_ISOT_LINE =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - VMIS_ISOT_PUIS =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - VMIS_ECMI_TRAC =SIMP(statut='c',typ='I',defaut=8,into=(8,)), - VMIS_ECMI_LINE =SIMP(statut='c',typ='I',defaut=8,into=(8,)), - LABORD_1D =SIMP(statut='c',typ='I',defaut=5,into=(5,)), - ENDO_FRAGILE =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - ENDO_ISOT_BETON =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - ENDO_ORTH_BETON =SIMP(statut='c',typ='I',defaut=7,into=(7,)), - BETON_REGLE_PR =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - MAZARS =SIMP(statut='c',typ='I',defaut=4,into=(4,)), - JOINT_BA =SIMP(statut='c',typ='I',defaut=6,into=(6,)), - RUPT_FRAG =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - CZM_EXP_REG =SIMP(statut='c',typ='I',defaut=9,into=(9,)), - CZM_LIN_REG =SIMP(statut='c',typ='I',defaut=9,into=(9,)), - CZM_EXP =SIMP(statut='c',typ='I',defaut=7,into=(7,)), - META_P_IL =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_P_IL_PT =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_P_IL_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_P_IL_PT_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_V_IL =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_V_IL_PT =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_V_IL_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_V_IL_PT_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_P_INL =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_P_INL_PT =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_P_INL_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_P_INL_PT_RE=SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_V_INL =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_V_INL_PT =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_V_INL_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_V_INL_PT_RE=SIMP(statut='c',typ='I',defaut=1,into=(1,)), - META_P_CL =SIMP(statut='c',typ='I',defaut=6,into=(6,)), - META_P_CL_PT =SIMP(statut='c',typ='I',defaut=6,into=(6,)), - META_P_CL_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)), - META_P_CL_PT_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)), - META_V_CL =SIMP(statut='c',typ='I',defaut=6,into=(6,)), - META_V_CL_PT =SIMP(statut='c',typ='I',defaut=6,into=(6,)), - META_V_CL_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)), - META_V_CL_PT_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)), - META_LEMA_ANI =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - VMIS_CINE_LINE =SIMP(statut='c',typ='I',defaut=7,into=(7,)), - VISCOCHAB =SIMP(statut='c',typ='I',defaut=28,into=(28,)), - VMIS_CIN1_CHAB =SIMP(statut='c',typ='I',defaut=8,into=(8,)), - VMIS_CIN2_CHAB =SIMP(statut='c',typ='I',defaut=14,into=(14,)), - VISC_CIN1_CHAB =SIMP(statut='c',typ='I',defaut=8,into=(8,)), - VISC_CIN2_CHAB =SIMP(statut='c',typ='I',defaut=14,into=(14,)), - VMIS_CIN2_MEMO =SIMP(statut='c',typ='I',defaut=28,into=(28,)), - VISC_CIN2_MEMO =SIMP(statut='c',typ='I',defaut=28,into=(28,)), - LMARC =SIMP(statut='c',typ='I',defaut=20,into=(20,)), - LMARC_IRRA =SIMP(statut='c',typ='I',defaut=20,into=(20,)), - VISC_TAHERI =SIMP(statut='c',typ='I',defaut=9,into=(9,)), - ROUSSELIER =SIMP(statut='c',typ='I',defaut=9,into=(9,)), - ROUSS_PR =SIMP(statut='c',typ='I',defaut=5,into=(5,)), - ROUSS_VISC =SIMP(statut='c',typ='I',defaut=5,into=(5,)), - VMIS_POU_LINE =SIMP(statut='c',typ='I',defaut=9,into=(9,)), - VMIS_POU_FLEJOU =SIMP(statut='c',typ='I',defaut=9 ,into=(9,)), - ASSE_CORN =SIMP(statut='c',typ='I',defaut=7,into=(7,)), - ARME =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - NORTON_HOFF =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - LEMAITRE =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - LEMA_SEUIL =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - IRRAD3M =SIMP(statut='c',typ='I',defaut=5,into=(5,)), - LEMAITRE_IRRA =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - VISC_IRRA_LOG =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - GRAN_IRRA_LOG =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - NADAI_B =SIMP(statut='c',typ='I',defaut=34,into=(34,)), - VENDOCHAB =SIMP(statut='c',typ='I',defaut=10,into=(10,)), - GRILLE_ISOT_LINE=SIMP(statut='c',typ='I',defaut=4,into=(4,)), - GRILLE_CINE_LINE=SIMP(statut='c',typ='I',defaut=4,into=(4,)), - GRILLE_PINTO_MEN=SIMP(statut='c',typ='I',defaut=16,into=(16,)), - DIS_CHOC =SIMP(statut='c',typ='I',defaut=7,into=(7,)), - DIS_GRICRA =SIMP(statut='c',typ='I',defaut=5,into=(5,)), - DIS_GOUJ2E_PLAS =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - DIS_GOUJ2E_ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - PINTO_MENEGOTTO =SIMP(statut='c',typ='I',defaut=8,into=(8,)), - CJS =SIMP(statut='c',typ='I',defaut=16,into=(16,)), - HUJEUX =SIMP(statut='c',typ='I',defaut=35,into=(35,)), - CAM_CLAY =SIMP(statut='c',typ='I',defaut=7,into=(7,)), - BARCELONE =SIMP(statut='c',typ='I',defaut=5,into=(5,)), - LAIGLE =SIMP(statut='c',typ='I',defaut=4,into=(4,)), - LETK =SIMP(statut='c',typ='I',defaut=7,into=(7,)), - DRUCK_PRAGER =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - DRUCK_PRAG_N_A =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - HOEK_BROWN =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - HOEK_BROWN_EFF =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - HOEK_BROWN_TOT =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - GRANGER_FP =SIMP(statut='c',typ='I',defaut=55,into=(55,)), - GRANGER_FP_INDT =SIMP(statut='c',typ='I',defaut=55,into=(55,)), - GRANGER_FP_V =SIMP(statut='c',typ='I',defaut=55,into=(55,)), - BETON_DOUBLE_DP =SIMP(statut='c',typ='I',defaut=4,into=(4,)), - KIT_HH =SIMP(statut='c',typ='I',defaut=0,into=(0,)), - KIT_HM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), - KIT_HHM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), - KIT_THH =SIMP(statut='c',typ='I',defaut=0,into=(0,)), - KIT_THV =SIMP(statut='c',typ='I',defaut=0,into=(0,)), - KIT_THM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), - KIT_THHM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), - VMIS_ASYM_LINE =SIMP(statut='c',typ='I',defaut=4,into=(4,)), - BETON_UMLV_FP =SIMP(statut='c',typ='I',defaut=21,into=(21,)), - GLRC_DAMAGE =SIMP(statut='c',typ='I',defaut=19,into=(19,)), - GLRC_DM =SIMP(statut='c',typ='I',defaut=4,into=(4,)), - GATT_MONERIE =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - b_monox = BLOC(condition = "RELATION == 'MONOCRISTAL' ", fr="SD issue de DEFI_COMPOR", COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),), -# b_polyx = BLOC(condition = "RELATION == 'POLYCRISTAL' ", - fr="SD issue de DEFI_COMPOR", - COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),), -# - b_zmat = BLOC(condition = "RELATION == 'ZMAT' ", - fr="Comportement de la bibliotheque Zmat", - NB_VARI =SIMP(statut='o',typ='I',max=1), - UNITE =SIMP(statut='o',typ='I',max=1),), - - - - RELATION_KIT =SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(), - into=( -# MECA - "ELAS", - "CJS", - "HUJEUX", - "CAM_CLAY", - "BARCELONE", - "LAIGLE", - "LETK", - "DRUCK_PRAGER", - "DRUCK_PRAG_N_A", - "HOEK_BROWN_EFF", - "HOEK_BROWN_TOT", - "MAZARS", - "ENDO_ISOT_BETON", -# THMC - "GAZ", - "LIQU_SATU", - "LIQU_GAZ_ATM", - "LIQU_VAPE_GAZ", - "LIQU_AD_GAZ_VAPE", - "LIQU_VAPE", - "LIQU_GAZ", -# HYDR - "HYDR_UTIL", - "HYDR_VGM", - "HYDR", - "HYDR_ENDO", -# MECA_META - "ACIER", - "ZIRC", -# MECA KIT_DDI - "VMIS_CINE_LINE", - "VMIS_ISOT_TRAC", - "VMIS_ISOT_LINE", - "VMIS_ISOT_CINE", - "VMIS_ISOT_PUIS", - "GLRC_DM", - "GRANGER_FP", - "GRANGER_FP_INDT", - "GRANGER_FP_V", - "BETON_UMLV_FP", - "ROUSS_PR", - "NADAI_B", - "BETON_DOUBLE_DP", - ),), - - - GAZ =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - LIQU_SATU =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - LIQU_GAZ_ATM =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - LIQU_VAPE_GAZ =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - LIQU_AD_GAZ_VAPE=SIMP(statut='c',typ='I',defaut=3,into=(3,)), - LIQU_VAPE =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - LIQU_GAZ =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - HYDR_UTIL =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - HYDR_VGM =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - HYDR =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - HYDR_ENDO =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ACIER =SIMP(statut='c',typ='I',defaut=5,into=(5,)), - ZIRC =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - - DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT", - into=("PETIT","PETIT_REAC","SIMO_MIEHE","GREEN_GR","GREEN","COROTATIONNEL", - "REAC_GEOM","EULER_ALMANSI")), - ALGO_C_PLAN =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)), -# b_deborst = BLOC(condition = " ALGO_C_PLAN == 'DEBORST' ", -# fr="Tolérance relative sur la verification des contraintes planes", - RESI_DEBORST =SIMP(statut='f',typ='R',defaut= 1.0E-6), -# ), - ALGO_1D =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)), -# b_dbiter = BLOC(condition = " (ALGO_C_PLAN == 'DEBORST') or (ALGO_1D == 'DEBORST')", -# fr="Nombre d'iterations maximal pour la boucle pour les contraintes planes", - ITER_MAXI_DEBORST =SIMP(statut='f',typ='I',defaut= 1), -# ), - regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6), - ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), - ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ), - RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE", - into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")), - TYPE_MATR_TANG =SIMP(statut='f',typ='TXM',into=("PERTURBATION","VERIFICATION","TANGENTE_SECANTE")), - b_perturb = BLOC(condition = " (TYPE_MATR_TANG != None) and (TYPE_MATR_TANG != 'TANGENTE_SECANTE') ", - fr="Calcul de la matrice tangente par perturbation, valeur de la perturbation", - VALE_PERT_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-5), - ), - b_tangsec = BLOC(condition = " TYPE_MATR_TANG == 'TANGENTE_SECANTE' ", - fr="Modification evolutive de la matrice tangente/secante", - SEUIL =SIMP(statut='f',typ='R',defaut= 3. ), - AMPLITUDE =SIMP(statut='f',typ='R',defaut= 1.5 ), - TAUX_RETOUR =SIMP(statut='f',typ='R',defaut= 0.05 ), - ), - PARM_THETA =SIMP(statut='f',typ='R',defaut= 1. ), - ) ; -#& MODIF COMMUN DATE 06/05/2008 AUTEUR CNGUYEN C.NGUYEN -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2008 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 C_CONTACT() : return FACT(statut='f',max='**', - fr="Définit les zones soumises à des conditions de contact unilatéral avec ou sans frottement", - - - METHODE =SIMP(statut='f',typ='TXM',defaut="CONTRAINTE", - into =("VERIF","CONTRAINTE","LAGRANGIEN","PENALISATION","CONTINUE","GCP","XFEM") ), -# -# OPTIONS D'APPARIEMENT -# - - APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL", - into =("NODAL","MAIT_ESCL")), - - LISSAGE =SIMP(statut='f',typ='TXM',defaut="NON", - into =("OUI","NON")), - - NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT", - into =("MAIT","MAIT_ESCL","ESCL"),), - - VECT_MAIT =SIMP(statut='f',typ='TXM',defaut="AUTO", - into =("AUTO","FIXE","VECT_Y")), - - b_nmait_fixe =BLOC(condition = "VECT_MAIT == 'FIXE'", - MAIT_FIXE =SIMP(statut='f',typ='R',min=3,max=3), - ), - - b_nmait_vecty =BLOC(condition = "VECT_MAIT == 'VECT_Y'", - MAIT_VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), - ), - - VECT_ESCL =SIMP(statut='f',typ='TXM',defaut="AUTO", - into =("AUTO","FIXE","VECT_Y")), - - b_nescl_fixe =BLOC(condition = "VECT_ESCL == 'FIXE'", - ESCL_FIXE =SIMP(statut='f',typ='R',min=3,max=3), - ), - - b_nescl_vecty =BLOC(condition = "VECT_ESCL == 'VECT_Y'", - ESCL_VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), - ), - - - TYPE_APPA =SIMP(statut='f',typ='TXM',defaut="PROCHE", - into =("PROCHE","FIXE")), - - b_appa_fixe =BLOC(condition = "TYPE_APPA == 'FIXE'", - DIRE_APPA =SIMP(statut='f',typ='R',min=3,max=3), - ), - - b_dist_struct =BLOC(condition = "METHODE != 'CONTINUE' and METHODE != 'XFEM' ", - DIST_POUTRE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), - DIST_COQUE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), - b_cara =BLOC(condition = "DIST_POUTRE == 'OUI' or DIST_COQUE == 'OUI'", - CARA_ELEM =SIMP(statut='o',typ=(cara_elem) ), - ), - ), - - DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - - - TOLE_APPA =SIMP(statut='f',typ='R' ,defaut=-1.0), - TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50), - - - b_xfem =BLOC(condition = "METHODE == 'XFEM' ", - FISS_MAIT = SIMP(statut='o',typ=fiss_xfem,max=1), - FISS_ESCL = SIMP(statut='f',typ=fiss_xfem,max=1), - SIGN_MAIT = SIMP(statut='f',typ='TXM',into=("+","-",) ), - SIGN_ESCL = SIMP(statut='f',typ='TXM',into=("+","-",) ), - INTEGRATION = SIMP(statut='f',typ='TXM',defaut="FPG4",into=("GAUSS","FPG2","FPG3","FPG4","FPG6","FPG7","NOEUD",) ), - COEF_REGU_CONT = SIMP(statut='f',typ='R',defaut=100.E+0), - ITER_CONT_MAXI = SIMP(statut='f',typ='I',defaut=30), - ITER_GEOM_MAXI =SIMP(statut='f',typ='I',defaut=0), - - CONTACT_INIT = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), - ALGO_LAGR = SIMP(statut='f',typ='TXM',defaut="VERSION1",into=("NON","VERSION1","VERSION2" , ) ), - COEF_ECHELLE = SIMP(statut='f',typ='R',defaut=1.E+6), - FROTTEMENT = SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), - GLISSIERE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), - b_frotxfem =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb", - COULOMB = SIMP(statut='o',typ='R',), - ITER_FROT_MAXI = SIMP(statut='f',typ='I',defaut=2), - COEF_REGU_FROT = SIMP(statut='f',typ='R',defaut=100.E+0), - SEUIL_INIT = SIMP(statut='f',typ='R',defaut=0.E+0), - ), - ), - - b_notxfem =BLOC(condition = "METHODE != 'XFEM' ", - regles=(UN_PARMI('GROUP_MA_ESCL','MAILLE_ESCL'),), - GROUP_MA_MAIT =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), - MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - GROUP_MA_ESCL =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), - MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - ), - - - - b_verif =BLOC(condition = "METHODE == 'VERIF' ", - fr="Paramètres de la méthode sans calcul de contact", - STOP_INTERP =SIMP(statut='f',typ='TXM',defaut="NON", - into=("OUI","NON")), - TOLE_INTERP =SIMP(statut='f',typ='R',defaut = 0.), - - GROUP_MA_FOND =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - ), - - b_active =BLOC(condition = "METHODE == 'CONTRAINTE' ", - fr="Paramètres de la méthode des contraintes actives (contact uniquement)", - GLISSIERE =SIMP(statut='f',typ='TXM',defaut="NON", - into=("OUI","NON")), - b_glissiere =BLOC(condition = "GLISSIERE == 'OUI' ", - ALARME_JEU =SIMP(statut='f',typ='R',defaut=0.), - ), - - STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI", - into=("OUI","NON")), - 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", - NB_REAC_GEOM =SIMP(statut='o',typ='I'), - ), - - SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), - - ), - b_lagrangien =BLOC(condition = "METHODE == 'LAGRANGIEN' ", - fr="Paramètres de la méthode Lagrangienne (contact avec ou sans frottement)", - FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), - STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI", - into=("OUI","NON")), - NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ), - ITER_MULT_MAXI =SIMP(statut='f',typ='I' ,defaut=4), - - 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", - NB_REAC_GEOM =SIMP(statut='o',typ='I'), - - ), - - - SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), - - b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb", - COULOMB =SIMP(statut='o',typ='R',), - COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0), - ),), - - b_penalisation =BLOC(condition = "METHODE == 'PENALISATION' ", - fr="Paramètres de la méthode pénalisée (contact avec ou sans frottement)", - E_N =SIMP(statut='f',typ='R'), - FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), - STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI", - into=("OUI","NON")), - NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ), - ITER_MULT_MAXI =SIMP(statut='f',typ='I',defaut=4), - - 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", - NB_REAC_GEOM =SIMP(statut='o',typ='I'), - ), - - SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), - - - - b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb", - COULOMB =SIMP(statut='o',typ='R',), - E_T =SIMP(statut='f',typ='R', - fr="Active la pénalisation sur le frottement et définit le coefficient de pénalisation"), - COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0), - ),), - - b_continue =BLOC(condition = "METHODE == 'CONTINUE' ", - fr="Paramètres de la méthode continue (contact avec ou sans frottement)", -# regles=(UN_PARMI('GLISSIERE','FROTTEMENT'),), - -# -------------------------------- CHOIX DE LA FORMULATION DE LA METHODE CONTINUE - ALGO_CONT =SIMP(statut='f',typ='TXM',defaut="LAGRANGIEN",into=("LAGRANGIEN","AUGMENTE","STABILISE"),), - b_CONT_LAGR =BLOC(condition = "ALGO_CONT == 'LAGRANGIEN' ",fr="Parametres de la formulation Lagrangienne", - COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0),), - b_CONT_STAB =BLOC(condition = "ALGO_CONT == 'STABILISE' ",fr="Parametres du Lagrangien stabilisé", - COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0), - COEF_STAB_CONT =SIMP(statut='f',typ='R',defaut=100.E+0),), - b_CONT_AUGM =BLOC(condition = "ALGO_CONT == 'AUGMENTE' ",fr="Parametres du Lagrangien augmenté", - COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0), - COEF_STAB_CONT =SIMP(statut='f',typ='R',defaut=100.E+0), - COEF_PENA_CONT =SIMP(statut='f',typ='R',defaut=100.E+0),), -# -------------------------------- - GLISSIERE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), - b_glissiere =BLOC(condition = "GLISSIERE == 'OUI' ", - ALARME_JEU =SIMP(statut='f',typ='R',defaut=0.),), -# -------------------------------- - COMPLIANCE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), - b_compliance =BLOC(condition = "COMPLIANCE == 'OUI' ",fr="Parametres de la compliance", - ASPERITE =SIMP(statut='o',typ='R',), - E_N =SIMP(statut='o',typ='R',), - E_V =SIMP(statut='f',typ='R',defaut=0.E+0),), -# -------------------------------- - FOND_FISSURE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), - b_FOND_FISSURE =BLOC(condition = "FOND_FISSURE == 'OUI' ",fr="TRAITEMENT EN FOND DE FISSURE", - regles=(UN_PARMI('NOEUD_FOND','GROUP_NO_FOND','MAILLE_FOND','GROUP_MA_FOND'),), - NOEUD_FOND =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - GROUP_NO_FOND =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - MAILLE_FOND =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - GROUP_MA_FOND =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),), -# -------------------------------- - RACCORD_LINE_QUAD=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), - b_RACCORD_SURF =BLOC(condition = "RACCORD_LINE_QUAD == 'OUI' ",fr="TRAITEMENT DU RACCORD SURFACIQUE", - regles=(UN_PARMI('NOEUD_RACC','GROUP_NO_RACC'),), - NOEUD_RACC =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - GROUP_NO_RACC =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),), -# -------------------------------- MOTS-CLEF CONTACT - INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD", - into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2", - "NCOTES","NCOTES1","NCOTES2"),), - FORMULATION =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE"),), - - ITER_GEOM_MAXI =SIMP(statut='f',typ='I',defaut=2), - ITER_CONT_MAXI =SIMP(statut='f',typ='I',defaut=30), - CONTACT_INIT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",),), -# -------------------------------- détection automatique et exclusion des noeuds impliqués dans le pivot nul - EXCLUSION_PIV_NUL=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",),), -# -------------------------------- exclusion manuelle des noeuds impliqués dans le pivot nul; -# prévaut sur la fonctionnalité précédente sans pour autant interférer avec elle - SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - regles =(EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),), -# -------------------------------- MOTS-CLEF FROTTEMENT - FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), - b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb", - ALGO_FROT =SIMP(statut='f',typ='TXM',defaut="LAGRANGIEN", - into=("LAGRANGIEN","AUGMENTE","STABILISE") ), - b_FROT_LAGR =BLOC(condition = "ALGO_FROT == 'LAGRANGIEN' ",fr="Parametres de la formulation Lagrangienne", - COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0),), - b_FROT_STAB =BLOC(condition = "ALGO_FROT == 'STABILISE' ",fr="Parametres du Lagrangien stabilisé", - COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), - COEF_STAB_FROT =SIMP(statut='f',typ='R',defaut=100.E+0),), - b_FROT_AUGM =BLOC(condition = "ALGO_FROT == 'AUGMENTE' ",fr="Parametres du Lagrangien augmenté", - COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), - COEF_STAB_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), - COEF_PENA_FROT =SIMP(statut='f',typ='R',defaut=100.E+0),), - COULOMB =SIMP(statut='o',typ='R',), - SANS_NOEUD_FR =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - SANS_GROUP_NO_FR =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - regles =(EXCLUS('SANS_NOEUD_FR','SANS_GROUP_NO_FR'),), - b_sans_group_no_frot =BLOC(condition = "SANS_GROUP_NO_FR != None or SANS_NO_FR != None", - fr="Direction(s) de frottement à exclure", - EXCL_FROT_1 =SIMP(statut='f',typ='R',min=3,max=3), - EXCL_FROT_2 =SIMP(statut='f',typ='R',min=3,max=3),), - ITER_FROT_MAXI =SIMP(statut='f',typ='I',defaut=2), - SEUIL_INIT =SIMP(statut='f',typ='R',defaut=0.E+0), - USURE =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","ARCHARD",),), - b_usure =BLOC(condition = "USURE == 'ARCHARD' ",fr="Parametres de la loi d'usure d'Archard", - K =SIMP(statut='o',typ='R',), - H =SIMP(statut='o',typ='R',),),),), - - b_gcp =BLOC(condition = "METHODE == 'GCP' ", - fr="Paramètres de la méthode du gradient conjugué projeté (contact uniquement)", - RESI_ABSO =SIMP(statut='o',typ='R', - fr="Critère de convergence (niveau d'interpénétration autorisé)"), - REAC_ITER =SIMP(statut='f',typ='I',defaut=3, fr="Fréquence de réinitialisation de la conjugaison"), - ITER_GCP_MAXI =SIMP(statut='f',typ='I',defaut=0, fr="Nombre d'itérations maximal pour le GCP"), - STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI", - into=("OUI","NON")), - 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", - NB_REAC_GEOM =SIMP(statut='o',typ='I'), + fr="SD issue de DEFI_COMPOR", + COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),), + b_zmat = BLOC(condition = "RELATION == 'ZMAT' ", + fr="Comportement de la bibliotheque Zmat", + NB_VARI =SIMP(statut='o',typ='I',max=1), + UNITE =SIMP(statut='o',typ='I',max=1),), +# KITs + b_kit_ddi = BLOC(condition = "RELATION == 'KIT_DDI' ", + fr="relations de couplage fluage-plasticite", + RELATION_KIT =SIMP(statut='o',typ='TXM',min=2,max=2,validators=NoRepeat(), + into=( + "VMIS_CINE_LINE", + "VMIS_ISOT_TRAC", + "VMIS_ISOT_LINE", + "VMIS_ISOT_CINE", + "VMIS_ISOT_PUIS", + "GLRC_DM", + "GRANGER_FP", + "GRANGER_FP_INDT", + "GRANGER_FP_V", + "BETON_UMLV_FP", + "ROUSS_PR", + "NADAI_B", + "BETON_DOUBLE_DP", + "ENDO_ISOT_BETON", + "MAZARS" + ),), + ), + b_kit_thm = BLOC(condition = "RELATION in ['KIT_HHM','KIT_HH','KIT_HM','KIT_THHM','KIT_THH','KIT_THM','KIT_THV']", + fr="lois de comportements thermo-hydro-mecaniques", + RELATION_KIT =SIMP(statut='o',typ='TXM',max=9,validators=NoRepeat(), + into=( +# MECA + "ELAS", + "CJS", + "HUJEUX", + "CAM_CLAY", + "BARCELONE", + "LAIGLE", + "LETK", + "DRUCK_PRAGER", + "DRUCK_PRAG_N_A", + "ELAS_GONF", + "HOEK_BROWN_EFF", + "HOEK_BROWN_TOT", + "MAZARS", + "ENDO_ISOT_BETON", +# THMC + "GAZ", + "LIQU_SATU", + "LIQU_GAZ_ATM", + "LIQU_VAPE_GAZ", + "LIQU_AD_GAZ_VAPE", + "LIQU_VAPE", + "LIQU_GAZ", +# HYDR + "HYDR_UTIL", + "HYDR_VGM", + "HYDR", + "HYDR_ENDO", + ),), + ), + b_kit_meta = BLOC(condition = "RELATION in ('META_LEMA_ANI','META_P_CL_PT_RE','META_P_CL_PT','META_P_CL_RE','META_P_CL',\ + 'META_P_IL_PT_RE','META_P_IL_PT','META_P_IL_RE','META_P_IL','META_P_INL_PT_RE','META_P_INL_PT','META_P_INL_RE','META_P_INL',\ + 'META_V_CL_PT_RE','META_V_CL_PT','META_V_CL_RE','META_V_CL','META_V_IL_PT_RE','META_V_IL_PT','META_V_IL_RE','META_V_IL',\ + 'META_V_INL_PT_RE','META_V_INL_PT','META_V_INL_RE','META_V_INL')", + fr="nombre de phases metallurgiques", + RELATION_KIT =SIMP(statut='o',typ='TXM',max=1,validators=NoRepeat(), + into=("ACIER","ZIRC"),), ), - PRE_COND =SIMP(statut='f',typ='TXM',defaut="SANS", - into=("DIRICHLET","SANS"),fr="Choix d'un préconditionneur (accélère la convergence)"), - ITER_PRE_MAXI =SIMP(statut='f',typ='I',defaut=0, fr="Nombre d'itérations maximal pour le préconditionneur"), - COEF_RESI =SIMP(statut='f',typ='R',defaut = 1., - fr="Critère_Convergence_Préconditionneur = COEF_RESI*Critère_Convergence_GCP",), - RECH_LINEAIRE=SIMP(statut='f',typ='TXM',defaut="ADMISSIBLE",into=("ADMISSIBLE","NON_ADMISSIBLE"), - fr="Autorise-t-on de sortir du domaine admissible lors de la recherche linéaire",), - SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), - ), - ); + DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT", + into=("PETIT","PETIT_REAC","SIMO_MIEHE","GREEN_GR","GREEN","COROTATIONNEL", + "REAC_GEOM","EULER_ALMANSI")), + + ALGO_C_PLAN =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)), + RESI_DEBORST =SIMP(statut='f',typ='R',defaut= 1.0E-6), + ALGO_1D =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)), + ITER_MAXI_DEBORST =SIMP(statut='f',typ='I',defaut= 1), + + RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6), + ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), + b_redec_local = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GREEN')", + fr="Nombre de redécoupages internes du pas de temps", + ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ), + ), + RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE", + into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")), + TYPE_MATR_TANG =SIMP(statut='f',typ='TXM',into=("PERTURBATION","VERIFICATION","TANGENTE_SECANTE")), + b_perturb = BLOC(condition = " (TYPE_MATR_TANG != None) and (TYPE_MATR_TANG != 'TANGENTE_SECANTE') ", + fr="Calcul de la matrice tangente par perturbation, valeur de la perturbation", + VALE_PERT_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-5), + ), + b_tangsec = BLOC(condition = " TYPE_MATR_TANG == 'TANGENTE_SECANTE' ", + fr="Modification evolutive de la matrice tangente/secante", + SEUIL =SIMP(statut='f',typ='R',defaut= 3. ), + AMPLITUDE =SIMP(statut='f',typ='R',defaut= 1.5 ), + TAUX_RETOUR =SIMP(statut='f',typ='R',defaut= 0.05 ), + ), + PARM_THETA =SIMP(statut='f',typ='R',defaut= 1. ), + regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), -#& MODIF COMMUN DATE 22/04/2008 AUTEUR ABBAS M.ABBAS + ) ; +#& MODIF COMMUN DATE 21/10/2008 AUTEUR DESOZA T.DESOZA # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2008 EDF R&D WWW.CODE-ASTER.ORG @@ -932,8 +498,8 @@ def C_CONTACT() : return FACT(statut='f',max='**', # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== - -def C_CONTACT_F() : return FACT(statut='f',max='**', +# RESPONSABLE DESOZA T.DESOZA +def C_CONTACT() : return FACT(statut='f',max='**', fr="Définit les zones soumises à des conditions de contact unilatéral avec ou sans frottement", @@ -981,17 +547,20 @@ def C_CONTACT_F() : return FACT(statut='f',max='**', b_appa_fixe =BLOC(condition = "TYPE_APPA == 'FIXE'", DIRE_APPA =SIMP(statut='f',typ='R',min=3,max=3), ), - - DIST_POUTRE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), - DIST_COQUE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), + + b_dist_struct =BLOC(condition = "METHODE != 'CONTINUE' and METHODE != 'XFEM' ", + DIST_POUTRE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), + DIST_COQUE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), + b_cara =BLOC(condition = "DIST_POUTRE == 'OUI' or DIST_COQUE == 'OUI'", + CARA_ELEM =SIMP(statut='o',typ=(cara_elem) ), + ), + ), + DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - b_cara =BLOC(condition = "DIST_POUTRE == 'OUI' or DIST_COQUE == 'OUI'", - CARA_ELEM =SIMP(statut='o',typ=(cara_elem) ), - ), - TOLE_APPA =SIMP(statut='f',typ='R' ,defaut=-1.0), + TOLE_APPA =SIMP(statut='f',typ='R' ,defaut=-1.0), TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50), @@ -1000,7 +569,8 @@ def C_CONTACT_F() : return FACT(statut='f',max='**', FISS_ESCL = SIMP(statut='f',typ=fiss_xfem,max=1), SIGN_MAIT = SIMP(statut='f',typ='TXM',into=("+","-",) ), SIGN_ESCL = SIMP(statut='f',typ='TXM',into=("+","-",) ), - INTEGRATION = SIMP(statut='f',typ='TXM',defaut="FPG4",into=("GAUSS","FPG4","FPG6","FPG7",) ), + INTEGRATION = SIMP(statut='f',typ='TXM',defaut="FPG4",into=("GAUSS","FPG2","FPG3","FPG4","FPG6", + "FPG7","NOEUD","SIMPSON","SIMPSON1","NCOTES","NCOTES1","NCOTES2") ), COEF_REGU_CONT = SIMP(statut='f',typ='R',defaut=100.E+0), ITER_CONT_MAXI = SIMP(statut='f',typ='I',defaut=30), ITER_GEOM_MAXI =SIMP(statut='f',typ='I',defaut=0), @@ -1058,7 +628,6 @@ def C_CONTACT_F() : return FACT(statut='f',max='**', SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), ), b_lagrangien =BLOC(condition = "METHODE == 'LAGRANGIEN' ", @@ -1080,7 +649,6 @@ def C_CONTACT_F() : return FACT(statut='f',max='**', SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb", COULOMB =SIMP(statut='o',typ='R',), @@ -1105,7 +673,6 @@ def C_CONTACT_F() : return FACT(statut='f',max='**', SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), @@ -1224,13 +791,12 @@ def C_CONTACT_F() : return FACT(statut='f',max='**', fr="Autorise-t-on de sortir du domaine admissible lors de la recherche linéaire",), SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), ); -#& MODIF COMMUN DATE 26/06/2007 AUTEUR REZETTE C.REZETTE +#& MODIF COMMUN DATE 14/10/2008 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG @@ -1386,6 +952,7 @@ def C_NOM_CHAM_INTO() : return ("ACCE", #COMMUN# "SIEF_ELNO_ELGA", "SIEF_NOEU", "SIEF_NOEU_ELGA", + "SIEF_SENO_SEGA", "SIEQ_ELNO_TUYO", "SIGM_ELNO_CART", "SIGM_ELNO_COQU", @@ -1621,7 +1188,7 @@ def C_TYPE_CHAM_INTO() : #COMMUN# l.append(typ+"_"+gd) return tuple(l) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 23/10/2008 AUTEUR TORKHANI M.TORKHANI # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -1775,6 +1342,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, DISCRET =FACT(statut='f',max='**', REPERE =SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ), AMOR_HYST =SIMP(statut='f',typ='R' ), + SYME =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1, fr="Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds", into=("K_T_D_N","K_T_D_L","K_TR_D_N","K_TR_D_L", @@ -1782,7 +1350,11 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, "M_T_D_N","M_TR_D_N","M_T_N", "M_T_L", "M_TR_N", "M_TR_L", "A_T_D_N","A_TR_D_N","A_T_D_L","A_TR_D_L", - "A_T_N", "A_T_L", "A_TR_N", "A_TR_L") ), + "A_T_N", "A_T_L", "A_TR_N", "A_TR_L", + "K_T_N_NS", "K_T_L_NS", "K_TR_N_NS", "K_TR_L_NS", + "M_T_N_NS", + "M_T_L_NS", "M_TR_N_NS", "M_TR_L_NS", + "A_T_N_NS", "A_T_L_NS", "A_TR_N_NS", "A_TR_L_NS") ), # affection des caractéristiques de RIGIDITE/AMORTISSEMENT b_K_T_D_N =BLOC(condition = "(CARA=='K_T_D_N')or(CARA=='A_T_D_N')", @@ -1849,6 +1421,38 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), VALE =SIMP(statut='f',typ='R',min=78,max=78), VALE_F =SIMP(statut='f',typ=(para_sensi,),min=78 ,max=78 ),), + b_K_T_N_NS =BLOC(condition = "(CARA=='K_T_N_NS')or(CARA=='A_T_N_NS')", + regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=9 ,max=9 ), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=9 ,max=9 ),), + b_K_T_L_NS =BLOC(condition = "(CARA=='K_T_L_NS')or(CARA=='A_T_L_NS')", + regles=(UN_PARMI('MAILLE','GROUP_MA'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=36,max=36), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=36 ,max=36 ),), + b_K_TR_N_NS =BLOC(condition = "(CARA=='K_TR_N_NS')or(CARA=='A_TR_N_NS')", + regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=36,max=36), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=36 ,max=36 ),), + b_K_TR_L_NS =BLOC(condition = "(CARA=='K_TR_L_NS')or(CARA=='A_TR_L_NS')", + regles=(UN_PARMI('MAILLE','GROUP_MA'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=144,max=144), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=144 ,max=144 ),), # affection des caractéristiques de MASSE b_M_T_D_N =BLOC(condition = "CARA=='M_T_D_N'", @@ -1907,12 +1511,49 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), VALE =SIMP(statut='f',typ='R',min=78,max=78), VALE_F =SIMP(statut='f',typ=(para_sensi,),min=78 ,max=78 ),), + b_M_T_N_NS =BLOC(condition = "CARA=='M_T_N_NS'", + fr="NOEUD: 9 valeurs de masse (pleine)", + regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=9 ,max=9 ), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=9 ,max=9 ),), + b_M_T_L_NS =BLOC(condition = "CARA=='M_T_L_NS'", + fr="SEGMENT: 36 valeurs de masse (pleine)", + regles=(UN_PARMI('MAILLE','GROUP_MA'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=36,max=36), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=36 ,max=36 ),), + b_M_TR_N_NS =BLOC(condition = "CARA=='M_TR_N_NS'", + fr="NOEUD: 36 valeurs de masse (pleine)", + regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=36,max=36), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=36 ,max=36 ),), + b_M_TR_L_NS =BLOC(condition = "CARA=='M_TR_L_NS'", + fr="SEGMENT: 144 valeurs de masse (pleine)", + regles=(UN_PARMI('MAILLE','GROUP_MA'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=144,max=144), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=144 ,max=144 ),), ), #============================================================================ DISCRET_2D =FACT(statut='f',max='**', REPERE =SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ), AMOR_HYST =SIMP(statut='f',typ='R' ), + SYME =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1, fr="Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds", into=("K_T_D_N","K_T_D_L","K_TR_D_N","K_TR_D_L", @@ -1920,7 +1561,10 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, "M_T_D_N","M_T_N", "M_TR_D_N", "M_T_L", "M_TR_N", "M_TR_L", "A_T_D_N","A_TR_D_N","A_T_D_L","A_TR_D_L", - "A_T_N", "A_T_L", "A_TR_N", "A_TR_L") ), + "A_T_N", "A_T_L", "A_TR_N", "A_TR_L", + "K_T_N_NS", "K_T_L_NS", "K_TR_N_NS", "K_TR_L_NS", + "M_T_N_NS", "M_T_L_NS", "M_TR_N_NS", "M_TR_L_NS", + "A_T_N_NS", "A_T_L_NS", "A_TR_N_NS", "A_TR_L_NS") ), # affection des caractéristiques de RIGIDITE/AMORTISSEMENT b_K_T_D_N =BLOC(condition = "(CARA=='K_T_D_N')or(CARA=='A_T_D_N')", @@ -1987,6 +1631,39 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), VALE =SIMP(statut='f',typ='R',min=21,max=21), VALE_F =SIMP(statut='f',typ=(para_sensi,),min=21 ,max=21 ),), + + b_K_T_N_NS =BLOC(condition = "(CARA=='K_T_N_NS')or(CARA=='A_T_N_NS')", + regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=4 ,max=4 ), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=4 ,max=4 ),), + b_K_T_L_NS =BLOC(condition = "(CARA=='K_T_L_NS')or(CARA=='A_T_L_NS')", + regles=(UN_PARMI('MAILLE','GROUP_MA'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=16,max=16), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=16 ,max=16 ),), + b_K_TR_N_NS =BLOC(condition = "(CARA=='K_TR_N_NS')or(CARA=='A_TR_N_NS')", + regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=9 ,max=9), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=9 ,max=9 ),), + b_K_TR_L_NS =BLOC(condition = "(CARA=='K_TR_L_NS')or(CARA=='A_TR_L_NS')", + regles=(UN_PARMI('MAILLE','GROUP_MA'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=36,max=36), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=36 ,max=36 ),), # affection des caractéristiques de MASSE b_M_T_D_N =BLOC(condition = "CARA=='M_T_D_N'", @@ -2045,6 +1722,42 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), VALE =SIMP(statut='f',typ='R',min=21,max=21), VALE_F =SIMP(statut='f',typ=(para_sensi,),min=21 ,max=21 ),), + b_M_T_N_NS =BLOC(condition = "CARA=='M_T_N_NS'", + fr="NOEUD: 4 valeurs de masse (triangulaire supérieure par colonne)", + regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=4 ,max=4 ), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=4 ,max=4 ),), + b_M_T_L_NS =BLOC(condition = "CARA=='M_T_L_NS'", + fr="SEGMENT: 16 valeurs de masse (triangulaire supérieure par colonne)", + regles=(UN_PARMI('MAILLE','GROUP_MA'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=16,max=16), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=16 ,max=16 ),), + b_M_TR_N_NS =BLOC(condition = "CARA=='M_TR_N_NS'", + fr="NOEUD: 9 valeurs de masse (triangulaire supérieure par colonne)", + regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=9 ,max=9 ), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=9 ,max=9 ),), + b_M_TR_L_NS =BLOC(condition = "CARA=='M_TR_L_NS'", + fr="SEGMENT: 36 valeurs de masse (triangulaire supérieure par colonne)", + regles=(UN_PARMI('MAILLE','GROUP_MA'), + AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE =SIMP(statut='f',typ='R',min=36,max=36), + VALE_F =SIMP(statut='f',typ=(para_sensi,),min=36 ,max=36 ),), ), #============================================================================ @@ -2160,6 +1873,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, GROUP_NO_CENTRE =SIMP(statut='f',typ=grno), NOEUD_CENTRE =SIMP(statut='f',typ=no), COOR_CENTRE =SIMP(statut='f',typ='R',min=2,max=3), + UNITE_EUROPLEXUS=SIMP(statut='f',typ='I'), ), #============================================================================ @@ -2186,23 +1900,23 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 16/09/2008 AUTEUR PELLET 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. # ====================================================================== # RESPONSABLE None AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op= 68,sd_prod=char_acou, @@ -2212,6 +1926,9 @@ AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op= 68,sd_prod=char_acou, regles=(AU_MOINS_UN('PRES_IMPO','VITE_FACE','IMPE_FACE','LIAISON_UNIF' ),), MODELE =SIMP(statut='o',typ=modele_sdaster ), VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + METHODE =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les pressions imposées", + into=('DUALISATION',),defaut='DUALISATION',), + # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement PRES_IMPO =FACT(statut='f',max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -2474,7 +2191,7 @@ AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 101,sd_prod=affe_char_cine_f_pr ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 16/09/2008 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2514,6 +2231,9 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, typ=evol_char ), PESANTEUR =SIMP(statut='f',typ='R',fr="Champ de pesanteur",min=4,max=4), + METHODE =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les déplacements imposés", + into=('DUALISATION',),defaut='DUALISATION',), + # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement ROTATION =SIMP(statut='f',typ='R',fr="Champ de rotation", min=4,max=4), b_rotation =BLOC ( condition = "ROTATION != None", CENTRE =SIMP(statut='f',typ='R',defaut=(0.,0.,0.),max=3),), @@ -2892,7 +2612,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, CONTACT = C_CONTACT(), # # FORCES -# +# FORCE_NODALE =FACT(statut='f',fr="Applique à des noeuds des forces nodales",max='**', regles=(AU_MOINS_UN('GROUP_NO','NOEUD'), AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),), @@ -3287,23 +3007,23 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 16/09/2008 AUTEUR PELLET 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. # ====================================================================== # RESPONSABLE DESROCHES X.DESROCHES AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op= 7,sd_prod=char_meca, @@ -3313,6 +3033,9 @@ AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op= 7,sd_prod=char_meca, regles=(AU_MOINS_UN('DDL_IMPO','FORCE_POUTRE','LIAISON_DDL', ),), MODELE =SIMP(statut='o',typ=modele_sdaster ), VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + METHODE =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les déplacements imposés", + into=('DUALISATION',),defaut='DUALISATION',), + # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement DDL_IMPO =FACT(statut='f',max='**', fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées)", regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD',), @@ -3322,7 +3045,7 @@ AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op= 7,sd_prod=char_meca, MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - LIAISON =SIMP(statut='f',typ='TXM',into=('ENCASTRE',)), + LIAISON =SIMP(statut='f',typ='TXM',into=('ENCASTRE',)), DX =SIMP(statut='f',typ='C' ), DY =SIMP(statut='f',typ='C' ), DZ =SIMP(statut='f',typ='C' ), @@ -3366,7 +3089,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 06/05/2008 AUTEUR CNGUYEN C.NGUYEN +#& MODIF COMMANDE DATE 16/09/2008 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3398,6 +3121,9 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), VERI_NORM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), MODELE =SIMP(statut='o',typ=modele_sdaster), + METHODE =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les déplacements imposés", + into=('DUALISATION',),defaut='DUALISATION',), + # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement DDL_IMPO =FACT(statut='f',max='**', fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées) fournies" @@ -3884,7 +3610,7 @@ AFFE_CHAR_OPS011=OPER(nom="AFFE_CHAR_OPS011",op= 190,sd_prod=char_ther, ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 16/09/2008 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3911,6 +3637,9 @@ AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther 'ECHANGE_PAROI','GRAD_TEMP_INIT','LIAISON_DDL','LIAISON_GROUP', 'LIAISON_UNIF','LIAISON_CHAMNO','RAYONNEMENT','LIAISON_MAIL' ),), MODELE =SIMP(statut='o',typ=(modele_sdaster) ), + METHODE =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les températures imposées", + into=('DUALISATION',),defaut='DUALISATION',), + # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement TEMP_IMPO =FACT(statut='f',max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), @@ -4089,23 +3818,23 @@ AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 16/09/2008 AUTEUR PELLET 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. # ====================================================================== # RESPONSABLE DESROCHES X.DESROCHES AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther, @@ -4120,20 +3849,18 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther, TEMP_IMPO =FACT(statut='f',max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), - AU_MOINS_UN('TEMP_SUP','TEMP','TEMP_INF','EVOL_THER'), - PRESENT_ABSENT('EVOL_THER','TEMP','TEMP_INF','TEMP_SUP'),), + AU_MOINS_UN('TEMP_SUP','TEMP','TEMP_INF'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - EVOL_THER =SIMP(statut='f',typ=(evol_ther) ), DDL =SIMP(statut='f',typ='TXM',into=("TEMP",) ), TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), TEMP_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), TEMP_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), ), - + FLUX_REP =FACT(statut='f',max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), @@ -4156,8 +3883,8 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther, GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), FLUN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), - ), - + ), + RAYONNEMENT =FACT(statut='f',max='**', fr="Attention, exprimer les températures en Celsius si rayonnement", @@ -4170,7 +3897,7 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther, EPSILON =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), TEMP_EXT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), ), - + ECHANGE =FACT(statut='f',max='**', @@ -4190,7 +3917,7 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther, COEF_H_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), TEMP_EXT_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), ), - + SOURCE =FACT(statut='f',max='**', regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), @@ -4199,7 +3926,7 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther, MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), SOUR =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), ), - + GRAD_TEMP_INIT =FACT(statut='f',max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), @@ -4211,7 +3938,7 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther, FLUX_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), FLUX_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), ), - + ECHANGE_PAROI =FACT(statut='f',max='**', regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'), UN_PARMI('GROUP_MA_2','MAILLE_2'),), @@ -4285,7 +4012,7 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 22/07/2008 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -4456,15 +4183,15 @@ AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater, VARC_M_ZIRC =FACT(statut='d', NOM_VARC =SIMP(statut='c',typ='TXM',defaut="M_ZIRC"), GRANDEUR =SIMP(statut='c',typ='TXM',defaut="VARI_R"), - CMP_GD =SIMP(statut='c',typ='TXM',max=3,min=3,defaut=("V1","V2","V3")), - CMP_VARC =SIMP(statut='c',typ='TXM',max=3,min=3,defaut=("ALPHPUR","ALPHBETA","TZIRC",)), + CMP_GD =SIMP(statut='c',typ='TXM',max=4,min=4,defaut=("V1","V2","V3","V4")), + CMP_VARC =SIMP(statut='c',typ='TXM',max=4,min=4,defaut=("ALPHPUR","ALPHBETA","TZIRC","TEMPS")), ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 06/05/2008 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 01/09/2008 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -4545,22 +4272,22 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster, "3D_GRAD_VARI", # RESP. : MICHEL S.MICHEL "3D_XFEM_CONT", # RESP. : GENIAUT S.GENIAUT "3D_JOINT", # RESP. : LAVERNE J.LAVERNE + "3D_INTERFACE", # RESP. : LAVERNE J.LAVERNE "AXIS", # RESP. : LEFEBVRE J.P.LEFEBVRE "AXIS_FLUI_STRU", # RESP. : GREFFET N.GREFFET "AXIS_FLUIDE", # RESP. : GREFFET N.GREFFET "AXIS_FOURIER", # RESP. : DESROCHES X.DESROCHES "AXIS_INCO", # RESP. : MICHEL S.MICHEL "AXIS_INCO_GD", # RESP. : MICHEL S.MICHEL - "AXIS_NS", # RESP. : BADEL P.BADEL "AXIS_SI", # RESP. : DESROCHES X.DESROCHES "AXIS_GRAD_VARI", # RESP. : MICHEL S.MICHEL "AXIS_JOINT", # RESP. : LAVERNE J.LAVERNE + "AXIS_INTERFACE", # RESP. : LAVERNE J.LAVERNE "AXIS_ELDI", # RESP. : LAVERNE J.LAVERNE "BARRE", # RESP. : FLEJOU J.L.FLEJOU "2D_BARRE", # RESP. : FLEJOU J.L.FLEJOU "C_PLAN", # RESP. : LEFEBVRE J.P.LEFEBVRE "C_PLAN_XFEM_CONT",# RESP. : GENIAUT S.GENIAUT - "C_PLAN_NS", # RESP. : BADEL P.BADEL "C_PLAN_SI", # RESP. : DESROCHES X.DESROCHES "C_PLAN_GRAD_EPSI",# RESP. : MICHEL S.MICHEL "CABLE", # RESP. : FLEJOU J.L.FLEJOU @@ -4573,8 +4300,8 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster, "D_PLAN_XFEM_CONT",# RESP. : GENIAUT S.GENIAUT "D_PLAN_GRAD_EPSI",# RESP. : MICHEL S.MICHEL "D_PLAN_GRAD_VARI",# RESP. : MICHEL S.MICHEL - "D_PLAN_NS", # RESP. : BADEL P.BADEL "PLAN_JOINT", # RESP. : LAVERNE J.LAVERNE + "PLAN_INTERFACE", # RESP. : LAVERNE J.LAVERNE "PLAN_ELDI", # RESP. : LAVERNE J.LAVERNE "D_PLAN_ABSO", # RESP. : DEVESA G.DEVESA "D_PLAN_INCO", # RESP. : MICHEL S.MICHEL @@ -4710,6 +4437,9 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster, ), ),), ), + + VERI_JACOBIEN =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI', + fr ="Vérification de la forme des mailles (jacobiens tous de meme signe).",), ) ; #& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION @@ -4812,7 +4542,7 @@ ASSE_MATR_GENE=OPER(nom="ASSE_MATR_GENE",op= 128,sd_prod=asse_matr_gene_prod, OPTION =SIMP(statut='o',typ='TXM',into=("RIGI_GENE","RIGI_GENE_C","MASS_GENE","AMOR_GENE") ), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 06/10/2008 AUTEUR DEVESA G.DEVESA # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -4844,6 +4574,7 @@ ASSE_MATRICE=OPER(nom="ASSE_MATRICE",op=12,sd_prod=asse_matrice_prod, MATR_ELEM =SIMP(statut='o', typ=(matr_elem_depl_r,matr_elem_depl_c,matr_elem_temp_r,matr_elem_pres_c) ), NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster), + SYME =SIMP(statut='f',typ='TXM',into=("OUI",) ), CHAR_CINE =SIMP(statut='f',typ=(char_cine_meca,char_cine_ther,char_cine_acou) ), INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; @@ -5099,7 +4830,7 @@ CALC_CHAR_SEISME=OPER(nom="CALC_CHAR_SEISME",op= 92,sd_prod=calc_char_seisme_pr ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5141,15 +4872,16 @@ CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,reentrant='f', NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), NOM_CAS =SIMP(statut='f',typ='TXM' ), - INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), LIST_INST =SIMP(statut='f',typ=listr8_sdaster), LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R'),), LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', fr="le calcul ne sera effectué que sur ces mailles là"), @@ -5231,8 +4963,11 @@ CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,reentrant='f', b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \ (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)", - PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max= 1., - fr="precision demandee pour calculer la carte de taille des elements"),), + PREC_ERR=SIMP(statut='o',typ='R',val_min= 0., + fr="precision demandee pour calculer la carte de taille des elements"), + TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERRE_ELEM_SIGM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM", + "QIRE_ELEM_SIGM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",), + fr="choix de l'estimateur d'erreur"),), EXCIT =FACT(statut='f',max='**', fr="Charges contenant les températures, les efforts répartis pour les poutres...", @@ -5370,8 +5105,11 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \ (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)", - PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max=1., - fr="precision demandee pour calculer la carte de taille des elements" ),), + PREC_ERR=SIMP(statut='o',typ='R',val_min= 0., + fr="precision demandee pour calculer la carte de taille des elements" ), + TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERRE_ELEM_SIGM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM", + "QIRE_ELEM_SIGM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",), + fr="choix de l'estimateur d'erreur"),), EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures", CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),), @@ -5425,8 +5163,11 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \ (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)", - PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max=1., - fr="precision demandee pour calculer la carte de taille des elements" ),), + PREC_ERR=SIMP(statut='o',typ='R',val_min= 0., + fr="precision demandee pour calculer la carte de taille des elements" ), + TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERRE_ELEM_SIGM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM", + "QIRE_ELEM_SIGM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",), + fr="choix de l'estimateur d'erreur"),), b_extr = BLOC( condition = "OPTION in ('EXTR_ELNO_VARI','EXTR_ELGA_VARI')", @@ -5502,98 +5243,446 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),), ), - b_crit =BLOC( condition = "TYPE_OPTION=='CRIT'", - OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("EQUI_ELNO_SIGM","EQUI_ELGA_SIGM", - "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME", - "ENDO_ELNO_SIGA","ENDO_ELNO_SINO","CRIT_ELNO_RUPT", - "ENDO_ELGA","ENDO_ELNO_ELGA", - "PMPB_ELNO_SIEF","PMPB_ELGA_SIEF","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO", - ) ), - ), + b_crit =BLOC( condition = "TYPE_OPTION=='CRIT'", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("EQUI_ELNO_SIGM","EQUI_ELGA_SIGM", + "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME", + "ENDO_ELNO_SIGA","ENDO_ELNO_SINO","CRIT_ELNO_RUPT", + "ENDO_ELGA","ENDO_ELNO_ELGA", + "PMPB_ELNO_SIEF","PMPB_ELGA_SIEF","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO", + ) ), + ), + + b_autres =BLOC( condition = "TYPE_OPTION=='AUTRES'", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("VALE_NCOU_MAXI",) ), + b_maxi =BLOC( condition = "OPTION=='VALE_NCOU_MAXI' or \ + (type(OPTION)==type(()) and 'VALE_NCOU_MAXI' in OPTION)", + NOM_CHAM =SIMP(statut='o',typ='TXM',fr="Nom du champ pour VALE_NCOU_MAXI" ), + NOM_CMP =SIMP(statut='o',typ='TXM',fr="Nom de la composante pour VALE_NCOU_MAXI"),), + ), + + b_indi_erreur =BLOC( condition = "TYPE_OPTION=='INDI_ERREUR'", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERRE_ELEM_SIGM", + into=("ERRE_ELEM_SIGM","ERRE_ELNO_ELEM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM", + "DCHA_ELNO_SIGM","DCHA_ELGA_SIGM","RADI_ELNO_SIGM","RADI_ELGA_SIGM", + "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM", + "SING_ELEM","SING_ELNO_ELEM",) ), + + b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM_SIGM','QIZ1_ELEM_SIGM','QIZ2_ELEM_SIGM') or \ + (type(OPTION)==type(()) and 'QIRE_ELEM_SIGM' in OPTION) or \ + (type(OPTION)==type(()) and 'QIZ1_ELEM_SIGM' in OPTION) or \ + (type(OPTION)==type(()) and 'QIZ2_ELEM_SIGM' in OPTION)", + RESU_DUAL =SIMP(statut='o',typ=(evol_elas,evol_noli),fr="resultat du probleme dual")), + + b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \ + (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)", + PREC_ERR=SIMP(statut='o',typ='R',val_min= 0., + fr="precision demandee pour calculer la carte de taille des elements" ), + TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERRE_ELEM_SIGM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM", + "QIRE_ELEM_SIGM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",), + fr="choix de l'estimateur d'erreur"),), + + b_indic = BLOC( condition ="OPTION in ('DCHA_ELNO_SIGM','DCHA_ELGA_SIGM','RADI_ELNO_SIGM','RADI_ELGA_SIGM') or\ + (type(OPTION)==type(()) and 'DCHA_ELNO_SIGM' in OPTION) or\ + (type(OPTION)==type(()) and 'DCHA_ELGA_SIGM' in OPTION) or\ + (type(OPTION)==type(()) and 'RADI_ELNO_SIGM' in OPTION) or\ + (type(OPTION)==type(()) and 'RADI_ELGA_SIGM' in OPTION) ", + NORME =SIMP(statut='f',typ='TXM',defaut="VMIS", + into=("VMIS","TOTAL","VMIS_CINE","TOTAL_CINE") ), + ), + ), + ), +# fin bloc evol_noli + +# thermique : evol_ther, fourier_ther + b_ther =BLOC( condition = "AsType(RESULTAT) in (evol_ther,fourier_ther,)" ,fr="options thermiques", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("DEUL_ELGA_TEMP","DETE_ELNO_DLTE","FLUX_ELGA_TEMP","FLUX_ELNO_TEMP", + "HYDR_ELNO_ELGA","DURT_ELGA_META","DURT_ELNO_META", + "SOUR_ELGA_ELEC","ERRE_ELEM_TEMP","ERRE_ELNO_ELEM",),), + EXCIT =FACT(statut='f',max='**', + regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),), + CHARGE =SIMP(statut='o',typ=char_ther ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FONC_MULT_C =SIMP(statut='f',typ=fonction_c), + COEF_MULT =SIMP(statut='f',typ='R'), + COEF_MULT_C =SIMP(statut='f',typ='C'), + PHAS_DEG =SIMP(statut='f',typ='R'), + PUIS_PULS =SIMP(statut='f',typ='I'), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),), + ), + ), + +# acoustique + b_acou =BLOC( condition = "AsType(RESULTAT) in (acou_harmo,mode_acou,)",fr="options acoustiques", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("PRES_ELNO_DBEL","PRES_ELNO_REEL","PRES_ELNO_IMAG", + "INTE_ELNO_ACTI","INTE_ELNO_REAC", + ),), + EXCIT =FACT(statut='f',max='**', + regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),), + CHARGE =SIMP(statut='o',typ=char_acou ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FONC_MULT_C =SIMP(statut='f',typ=fonction_c), + COEF_MULT =SIMP(statut='f',typ='R'), + COEF_MULT_C =SIMP(statut='f',typ='C'), + PHAS_DEG =SIMP(statut='f',typ='R'), + PUIS_PULS =SIMP(statut='f',typ='I'), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),), + ), + + +# Choix du solveur (utilisé actuellement pour estimateur d'erreur ZZ1) : + SOLVEUR =FACT(statut='d', fr="Méthode de résolution des systèmes linéaires", + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("LDLT","MUMPS","MULT_FRONT",) ), + + + b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT", + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ), + NPREC =SIMP(statut='f',typ='I',defaut=8), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + + b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", + RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), + NPREC =SIMP(statut='f',typ='I',defaut=8), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + + + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), + PARALLELISME =SIMP(statut='f',typ='TXM',defaut="CENTRALISE", + into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")), + PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), + CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100), + CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), + ), + + + + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters"), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 21/10/2008 AUTEUR NISTOR I.NISTOR +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== + +# RESPONSABLE NISTOR I.NISTOR + +from Macro.calc_essai_ops import calc_essai_ops + +def calc_essai_prod(self,RESU_FLUDELA,RESU_IDENTIFICATION,RESU_TURBULENT, RESU_MODIFSTRU,**args): + + if RESU_FLUDELA != None: + for res in RESU_FLUDELA: + self.type_sdprod(res['TABLE'],table_sdaster) + if RESU_IDENTIFICATION != None: + for res in RESU_IDENTIFICATION: + self.type_sdprod(res['TABLE'],table_fonction) + if RESU_TURBULENT != None: + for res in RESU_TURBULENT: + self.type_sdprod(res['FONCTION'],fonction_sdaster) + + + MTYPES = { + 'MODELE' : modele_sdaster, + 'MODE_MECA' : mode_meca, + 'NUME_DDL' : nume_ddl_sdaster, + 'MAILLAGE' : maillage_sdaster, + 'MASS_MECA' : matr_asse_depl_r, + 'RIGI_MECA' : matr_asse_depl_r, + 'AMOR_MECA' : matr_asse_depl_r, + 'MACR_ELEM' : macr_elem_stat, + 'PROJ_MESU' : mode_gene, + 'BASE_ES' : base_modale, + 'BASE_LMME' : mode_meca, + 'MODE_STA' : mode_stat_forc, + } + if RESU_MODIFSTRU != None: + for res in RESU_MODIFSTRU: + for mc, typ in MTYPES.items(): + if res[mc]: + self.type_sdprod(res[mc], typ) + return None + + +CALC_ESSAI = MACRO(nom = 'CALC_ESSAI', + op = calc_essai_ops, + sd_prod = calc_essai_prod, + reentrant = 'n', + UIinfo = {"groupes":("Outils métier",)}, + fr = "Outil de post-traitement interactif pour Meidee ", + UNITE_FIMEN = SIMP( statut='f',typ='I',max='**' ), + INTERACTIF = SIMP( statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI' ), + RESU_FLUDELA = FACT( statut='f',max='**', + TABLE = SIMP(statut='f', typ=CO), + ), + RESU_TURBULENT = FACT( statut='f',max=1, + FONCTION = SIMP(statut='f', typ=CO), + ), + RESU_IDENTIFICATION = FACT( statut='f',max='**', + TABLE = SIMP(statut='f', typ=CO), + ), + RESU_MODIFSTRU = FACT( statut='f', max=1, + MODELE=SIMP(statut='f',typ=CO,defaut=None), + MODE_MECA=SIMP(statut='f',typ=CO,defaut=None), + MAILLAGE=SIMP(statut='f',typ=CO,defaut=None), + NUME_DDL=SIMP(statut='f',typ=CO,defaut=None), + MASS_MECA=SIMP(statut='f',typ=CO,defaut=None), + RIGI_MECA=SIMP(statut='f',typ=CO,defaut=None), + AMOR_MECA=SIMP(statut='f',typ=CO,defaut=None), + MACR_ELEM=SIMP(statut='f',typ=CO,defaut=None), + PROJ_MESU=SIMP(statut='f',typ=CO,defaut=None), + BASE_ES=SIMP(statut='f',typ=CO,defaut=None), + BASE_LMME=SIMP(statut='f',typ=CO,defaut=None), + MODE_STA=SIMP(statut='f',typ=CO,defaut=None), + ), + UNITE_RESU = SIMP( statut='f',typ='I'), + + b_inter = BLOC( condition="INTERACTIF=='NON'", + + EXPANSION = FACT( statut='f',max='**', + CALCUL = SIMP(statut='o',typ=mode_meca), + NUME_MODE_CALCUL = SIMP(statut='f',typ='I',validators=NoRepeat(), + max='**',defaut=0), + MESURE = SIMP(statut='o',typ=mode_meca), + NUME_MODE_MESURE = SIMP(statut='f',typ='I',validators=NoRepeat(), + max='**',defaut=0), + RESOLUTION = SIMP(statut='f',typ='TXM',defaut='SVD',into=('SVD','LU')), + b_reso = BLOC(condition = "RESOLUTION=='SVD'", + EPS = SIMP(statut='f',typ='R', defaut = 0.) + ) + ), + MEIDEE_FLUDELA = FACT( statut='f', max='**', + MESURE1 = SIMP(statut='o',typ=mode_meca), + MESURE2 = SIMP(statut='o',typ=mode_meca), + MESURE3 = SIMP(statut='o',typ=mode_meca), + BASE = SIMP(statut='o',typ=mode_meca), + ), + MEIDEE_TURBULENT = FACT( statut='f', max='**', + INTE_SPEC = SIMP(statut='o',typ=table_sdaster), + NUME_MODE_DECONV = SIMP(statut='f',typ='I',validators=NoRepeat(), + max=1,defaut=0), + NUME_MODE_LOCAL = SIMP(statut='f',typ='I',validators=NoRepeat(), + max='**',defaut=0), + BASE = SIMP(statut='o',typ=mode_meca), + MESURE = SIMP(statut='o',typ=(mode_meca,base_modale)), + ), + IDENTIFICATION = FACT( statut='f',max='**', + ALPHA = SIMP(statut='f',typ='R', defaut = 0.), + EPS = SIMP(statut='f',typ='R', defaut = 0.), + OBSERVABILITE = SIMP(statut='o',typ=(mode_meca, base_modale)), + COMMANDABILITE = SIMP(statut='o',typ=(mode_meca, base_modale)), + INTE_SPEC = SIMP(statut='o',typ=table_sdaster), + RESU_EXPANSION = SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON')), + BASE = SIMP(statut='o',typ=mode_meca), + ), + MODIFSTRUCT = FACT( statut='f', max=1, + MESURE = SIMP(statut='o', typ=mode_meca), + MODELE_SUP = SIMP(statut='o', typ=modele_sdaster), + MATR_RIGI = SIMP(statut='o', typ=matr_asse_depl_r), + RESOLUTION = SIMP(statut='o', typ='TXM', + into=('ES', 'LMME')), + b_resol = BLOC( condition = "RESOLUTION=='LMME'", + MATR_MASS = SIMP(statut='o', typ=matr_asse_depl_r), + ), + NUME_MODE_MESU = SIMP(statut='o', typ='I',max='**'), + NUME_MODE_CALCUL = SIMP(statut='o', typ='I',max='**'), + MODELE_MODIF = SIMP(statut='o', typ=modele_sdaster), + ), + + # Si on realise une modification structurale, on donne les DDL capteurs et interface + b_inter = BLOC( condition="MODIFSTRUCT!=None", + GROUP_NO_CAPTEURS = FACT( statut='f', max='**', + GROUP_NO = SIMP(statut='f',typ='TXM', max='**'), + NOM_CMP = SIMP(statut='f',typ='TXM', max='**'), + ), + GROUP_NO_EXTERIEUR = FACT( statut='f', max='**', + GROUP_NO = SIMP(statut='f',typ='TXM', max='**'), + NOM_CMP = SIMP(statut='f',typ='TXM', max='**'), + ), + ), + ), + ); + +#& MODIF COMMANDE DATE 20/10/2008 AUTEUR ASSIRE A.ASSIRE +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== +# RESPONSABLE ASSIRE A.ASSIRE +from Macro.calc_europlexus_ops import calc_europlexus_ops + +import types + +def calc_europlexus_prod(self,COURBE=None,**args): + if COURBE is not None: + self.type_sdprod(args['TABLE_COURBE'],table_sdaster) + return evol_noli + +CALC_EUROPLEXUS = MACRO(nom="CALC_EUROPLEXUS",op=calc_europlexus_ops,sd_prod=calc_europlexus_prod, + reentrant='n', + #UIinfo={"groupes":("Dynamique rapide",)}, + fr="Chainage Code_Aster-Europlexus", + + LOGICIEL = SIMP(statut='f', typ='TXM', defaut='/home/europlex/EPXD/EUROPLEXUS_GESTION/runepx_d'), + + MODELE = SIMP(statut='o',typ=modele_sdaster), + CARA_ELEM = SIMP(statut='o',typ=cara_elem), + + FONC_PARASOL = FACT(statut='f', + NFKT = SIMP(statut='o',typ=(fonction_sdaster,)), + NFKR = SIMP(statut='o',typ=(fonction_sdaster,)), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + - b_autres =BLOC( condition = "TYPE_OPTION=='AUTRES'", - OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("VALE_NCOU_MAXI",) ), - b_maxi =BLOC( condition = "OPTION=='VALE_NCOU_MAXI' or \ - (type(OPTION)==type(()) and 'VALE_NCOU_MAXI' in OPTION)", - NOM_CHAM =SIMP(statut='o',typ='TXM',fr="Nom du champ pour VALE_NCOU_MAXI" ), - NOM_CMP =SIMP(statut='o',typ='TXM',fr="Nom de la composante pour VALE_NCOU_MAXI"),), - ), + CHAM_MATER = SIMP(statut='o',typ=cham_mater), - b_indi_erreur =BLOC( condition = "TYPE_OPTION=='INDI_ERREUR'", - OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERRE_ELEM_SIGM", - into=("ERRE_ELEM_SIGM","ERRE_ELNO_ELEM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM", - "DCHA_ELNO_SIGM","DCHA_ELGA_SIGM","RADI_ELNO_SIGM","RADI_ELGA_SIGM", - "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM", - "SING_ELEM","SING_ELNO_ELEM",) ), + EXCIT = FACT(statut='o',max='**', + CHARGE = SIMP(statut='o',typ=(char_meca,)), + FONC_MULT = SIMP(statut='o',typ=(fonction_sdaster,)), + ), - b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM_SIGM','QIZ1_ELEM_SIGM','QIZ2_ELEM_SIGM') or \ - (type(OPTION)==type(()) and 'QIRE_ELEM_SIGM' in OPTION) or \ - (type(OPTION)==type(()) and 'QIZ1_ELEM_SIGM' in OPTION) or \ - (type(OPTION)==type(()) and 'QIZ2_ELEM_SIGM' in OPTION)", - RESU_DUAL =SIMP(statut='o',typ=(evol_elas,evol_noli),fr="resultat du probleme dual")), + DIME = FACT(statut='o', regles=(AU_MOINS_UN('UNITE_DIME','Q4GS','FORCE', + 'PT6L','ZONE','POUT','ECRO', + 'APPU','BLOQ','PRESS','PMAT', + 'DKT3','DEPL','FNOM','TABLE','FTAB', + 'MTTI','NEPE','LIAI',), ), + UNITE_DIME=SIMP(statut='f',typ='I'), + + Q4GS = SIMP(statut='f',typ='I'), + FORCE = SIMP(statut='f',typ='I'), + PT6L = SIMP(statut='f',typ='I'), + ZONE = SIMP(statut='f',typ='I'), + POUT = SIMP(statut='f',typ='I'), + ECRO = SIMP(statut='f',typ='I'), + APPU = SIMP(statut='f',typ='I'), + BLOQ = SIMP(statut='f',typ='I'), + PRESS = SIMP(statut='f',typ='I',min=2,max=2,), + PMAT = SIMP(statut='f',typ='I'), + DKT3 = SIMP(statut='f',typ='I'), + DEPL = SIMP(statut='f',typ='I'), + FNOM = SIMP(statut='f',typ='I'), + TABLE = SIMP(statut='f',typ='I',min=2,max=2,), + FTAB = SIMP(statut='f',typ='I'), + MTTI = SIMP(statut='f',typ='I'), + NEPE = SIMP(statut='f',typ='I'), + LIAI = SIMP(statut='f',typ='I'), + ), - b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \ - (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)", - PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max=1., - fr="precision demandee pour calculer la carte de taille des elements" ),), + CALCUL = FACT(statut='o', + TYPE_DISCRETISATION = SIMP(statut='o',typ='TXM',defaut='AUTO',into=('AUTO','UTIL')), + INST_FIN = SIMP(statut='o',typ='R'), + INST_INIT = SIMP(statut='o',typ='R'), + NMAX = SIMP(statut='f',typ='R'), - b_indic = BLOC( condition ="OPTION in ('DCHA_ELNO_SIGM','DCHA_ELGA_SIGM','RADI_ELNO_SIGM','RADI_ELGA_SIGM') or\ - (type(OPTION)==type(()) and 'DCHA_ELNO_SIGM' in OPTION) or\ - (type(OPTION)==type(()) and 'DCHA_ELGA_SIGM' in OPTION) or\ - (type(OPTION)==type(()) and 'RADI_ELNO_SIGM' in OPTION) or\ - (type(OPTION)==type(()) and 'RADI_ELGA_SIGM' in OPTION) ", - NORME =SIMP(statut='f',typ='TXM',defaut="VMIS", - into=("VMIS","TOTAL","VMIS_CINE","TOTAL_CINE") ), - ), - ), - ), -# fin bloc evol_noli + b_auto =BLOC( condition = "TYPE_DISCRETISATION=='AUTO'", + CSTAB = SIMP(statut='o',typ='R',max='**',defaut=0.3), +# DTMAX = SIMP(statut='f',typ='R',max='**'), + ), -# thermique : evol_ther, fourier_ther - b_ther =BLOC( condition = "AsType(RESULTAT) in (evol_ther,fourier_ther,)" ,fr="options thermiques", - OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("DEUL_ELGA_TEMP","DETE_ELNO_DLTE","FLUX_ELGA_TEMP","FLUX_ELNO_TEMP", - "HYDR_ELNO_ELGA","DURT_ELGA_META","DURT_ELNO_META", - "SOUR_ELGA_ELEC","ERRE_ELEM_TEMP","ERRE_ELNO_ELEM",),), - EXCIT =FACT(statut='f',max='**', - regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),), - CHARGE =SIMP(statut='o',typ=char_ther ), - FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - FONC_MULT_C =SIMP(statut='f',typ=fonction_c), - COEF_MULT =SIMP(statut='f',typ='R'), - COEF_MULT_C =SIMP(statut='f',typ='C'), - PHAS_DEG =SIMP(statut='f',typ='R'), - PUIS_PULS =SIMP(statut='f',typ='I'), - TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),), - ), - ), + b_util =BLOC( condition = "TYPE_DISCRETISATION=='UTIL'", + PASFIX = SIMP(statut='o',typ='R',max='**'), + ), + ), -# acoustique - b_acou =BLOC( condition = "AsType(RESULTAT) in (acou_harmo,mode_acou,)",fr="options acoustiques", - OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("PRES_ELNO_DBEL","PRES_ELNO_REEL","PRES_ELNO_IMAG", - "INTE_ELNO_ACTI","INTE_ELNO_REAC", - ),), - EXCIT =FACT(statut='f',max='**', - regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),), - CHARGE =SIMP(statut='o',typ=char_acou ), - FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - FONC_MULT_C =SIMP(statut='f',typ=fonction_c), - COEF_MULT =SIMP(statut='f',typ='R'), - COEF_MULT_C =SIMP(statut='f',typ='C'), - PHAS_DEG =SIMP(statut='f',typ='R'), - PUIS_PULS =SIMP(statut='f',typ='I'), - TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),), - ), - SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', - fr="Liste des paramètres de sensibilité.", - ang="List of sensitivity parameters"), - INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), - TITRE =SIMP(statut='f',typ='TXM',max='**'), -) ; + OBSERVATION =FACT(statut='f',max='**', + SUIVI_DDL = SIMP(statut='o',typ='TXM',defaut="OUI",max=1,into=("OUI","NON")), + b_suivi =BLOC(condition = "SUIVI_DDL == 'OUI' ", + regles=( AU_MOINS_UN('PAS_NBRE','PAS_INST',), + EXCLUS('PAS_NBRE','PAS_INST',), + EXCLUS('GROUP_NO','TOUT_GROUP_NO',), + EXCLUS('GROUP_MA','TOUT_GROUP_MA',), ), + NOM_CHAM = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', defaut = ('DEPL',), + into=('DEPL','VITE','ACCE','SIEF_ELGA','EPSI_ELGA','VARI_ELGA'),), + PAS_INST = SIMP(statut='f',typ='R'), + PAS_NBRE = SIMP(statut='f',typ='I'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + TOUT_GROUP_NO = SIMP(statut='f',typ='TXM',into=('OUI',),), + TOUT_GROUP_MA = SIMP(statut='f',typ='TXM',into=('OUI',),), + ), + ), + + + ARCHIVAGE =FACT(statut='f', regles=( AU_MOINS_UN('PAS_NBRE','PAS_INST',), EXCLUS('PAS_NBRE','PAS_INST',), ), + PAS_INST = SIMP(statut='f',typ='R'), + PAS_NBRE = SIMP(statut='f',typ='I'), + CONT_GENER = SIMP(statut='o',typ='TXM',defaut="NON",max=1,into=("OUI","NON")), + ), + COURBE = FACT(statut='f',max='**', regles=(EXCLUS('GROUP_NO','GROUP_MA')), + UNITE_ALIT = SIMP(statut='f',typ='I'), + NOM_CHAM = SIMP(statut='f',typ='TXM'), + NOM_CMP = SIMP(statut='f',typ='TXM'), +# NOEUD = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), +# MAILLE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max=1), + + b_maille = BLOC(condition = "MAILLE != None", regles=(AU_MOINS_UN('NUM_GAUSS')), + NUM_GAUSS = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),), + ), + b_courbe = BLOC(condition = "COURBE != None", + regles=(AU_MOINS_UN('PAS_NBRE_COURBE','PAS_INST_COURBE',), + AU_MOINS_UN('TABLE_COURBE',)), + PAS_INST_COURBE = SIMP(statut='f',typ='R'), + PAS_NBRE_COURBE = SIMP(statut='f',typ='I'), + TABLE_COURBE = SIMP(statut='f', typ=CO), + ), + DOMAINES = FACT(statut='f',max='**', + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + IDENTIFIANT = SIMP(statut='f',typ='I'),), + INTERFACES = FACT(statut='f',max='**', + GROUP_MA_1 = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_MA_2 = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + TOLE = SIMP(statut='f',typ='R'), + IDENT_DOMAINE_1 = SIMP(statut='f',typ='I'), + IDENT_DOMAINE_2 = SIMP(statut='f',typ='I'),), + + INFO =SIMP(statut='f',typ='I',defaut=1,into=( 1, 2 ) ), + ) ; #& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -5945,7 +6034,7 @@ CALC_FONCTION=MACRO(nom="CALC_FONCTION",op=calc_fonction_ops,sd_prod=calc_foncti PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5997,7 +6086,7 @@ CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene, INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), SOLVEUR =FACT(statut='d', - METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ), + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ), b_mult_front = BLOC ( condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), ), @@ -6015,11 +6104,37 @@ CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene, RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), + ), + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + RESI_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6,), + PARALLELISME =SIMP(statut='f',typ='TXM',defaut="CENTRALISE", + into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")), + PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), + CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100), + CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), + + b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), + b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), + NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), ), ), ) ; -#& MODIF COMMANDE DATE 13/05/2008 AUTEUR GALENNE E.GALENNE +#& MODIF COMMANDE DATE 20/10/2008 AUTEUR GALENNE E.GALENNE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG @@ -6054,7 +6169,9 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster, FISSURE =SIMP(statut='f',typ=fiss_xfem,max=1), DTAN_ORIG =SIMP(statut='f',typ='R',max='**'), DTAN_EXTR =SIMP(statut='f',typ='R',max='**'), + NB_POINT_FOND =SIMP(statut='f',typ='I',val_min=2), regles=(EXCLUS('FOND_FISS','FISSURE'), + EXCLUS('FOND_FISS','NB_POINT_FOND'), EXCLUS('FOND_FISS','DTAN_ORIG'), EXCLUS('FOND_FISS','DTAN_EXTR'),), b_theta =BLOC(condition="THETA == None",fr="calcul de theta", @@ -6066,7 +6183,7 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster, R_SUP =SIMP(statut='f',typ='R'), MODULE =SIMP(statut='f',typ='R',defaut=1.), DIRE_THETA =SIMP(statut='f',typ=cham_no_sdaster ), - DIRECTION =SIMP(statut='f',typ='R',max='**'), + DIRECTION =SIMP(statut='f',typ='R',max=3,min=3), R_INF_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), R_SUP_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), MODULE_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -6091,8 +6208,11 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster, FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)or(FREQ != None)or(LIST_FREQ != None)", - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R'),), ), ), @@ -6111,10 +6231,7 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster, COMP_ELAS =FACT(statut='f', RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS", into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC","ELAS_VMIS_PUIS") ), - ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,) ), - ELAS_VMIS_LINE =SIMP(statut='c',typ='I',defaut=1,into=(1,) ), - ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut=1,into=(1,) ), - ELAS_VMIS_PUIS =SIMP(statut='c',typ='I',defaut=1,into=(1,) ), + CALCUL_CONTRAINTE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","GREEN") ), regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -6124,9 +6241,6 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster, COMP_INCR =FACT(statut='f', RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS", into=("ELAS","VMIS_ISOT_TRAC","VMIS_ISOT_LINE","VMIS_CINE_LINE","ELAS_VMIS_PUIS") ), - ELAS =SIMP(statut='f',typ='I',defaut=1,into=(1,) ), - VMIS_ISOT_TRAC =SIMP(statut='f',typ='I',defaut=2,into=(2,) ), - VMIS_ISOT_LINE =SIMP(statut='f',typ='I',defaut=2,into=(2,) ), DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","PETIT_REAC") ), regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -6202,7 +6316,7 @@ CALC_INTE_SPEC=OPER(nom="CALC_INTE_SPEC",op= 120,sd_prod=table_fonction, TITRE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1 , 2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -6245,7 +6359,7 @@ CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r, INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), SOLVEUR =FACT(statut='d', - METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ), + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ), b_mult_front = BLOC ( condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), ), @@ -6264,9 +6378,35 @@ CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r, RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), ), + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + RESI_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6,), + PARALLELISME =SIMP(statut='f',typ='TXM',defaut="CENTRALISE", + into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")), + PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), + CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100), + CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), + + b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), + b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), + NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), + ), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 17/11/2008 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -6288,10 +6428,6 @@ CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r, def calc_matr_elem_prod(OPTION,**args): if OPTION == "RIGI_MECA" : return matr_elem_depl_r if OPTION == "RIGI_FLUI_STRU" : return matr_elem_depl_r - if OPTION == "MASS_ID_MDEP_R" : return matr_elem_depl_r - if OPTION == "MASS_ID_MDNS_R" : return matr_elem_depl_r - if OPTION == "MASS_ID_MTEM_R" : return matr_elem_temp_r - if OPTION == "MASS_ID_MTNS_R" : return matr_elem_temp_r if OPTION == "MASS_MECA" : return matr_elem_depl_r if OPTION == "MASS_FLUI_STRU" : return matr_elem_depl_r if OPTION == "RIGI_GEOM" : return matr_elem_depl_r @@ -6319,8 +6455,8 @@ CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op= 9,sd_prod=calc_matr_elem_prod "AMOR_MECA","RIGI_THER","MASS_THER","IMPE_MECA", "ONDE_FLUI","AMOR_MECA_ABSO","MASS_FLUI_STRU","RIGI_FLUI_STRU", "RIGI_ROTA","MECA_GYRO","MASS_MECA_DIAG","RIGI_ACOU", - "MASS_ID_MDEP_R","MASS_ID_MDNS_R","MASS_ID_MTEM_R","MASS_ID_MTNS_R", "MASS_ACOU","AMOR_ACOU","RIGI_MECA_HYST") ), + MODELE =SIMP(statut='o',typ=modele_sdaster ), # mots clés facultatifs que l'on a du mal à mettre dans les blocs # sans gener MACRO_MATR_ASSE : @@ -6329,48 +6465,30 @@ CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op= 9,sd_prod=calc_matr_elem_prod b_rigi_meca = BLOC( condition = "OPTION=='RIGI_MECA'", - regles=(AU_MOINS_UN('MODELE','CHARGE' ),), - MODELE =SIMP(statut='f',typ=modele_sdaster ), - b_modele =BLOC(condition = "MODELE != None", - CHAM_MATER =SIMP(statut='f',typ=cham_mater ), - CARA_ELEM =SIMP(statut='f',typ=cara_elem ), - MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ), - ), + CHAM_MATER =SIMP(statut='f',typ=cham_mater ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ), CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**' ), ), - b_mass_meca =BLOC(condition = "(OPTION=='MASS_MECA') or (OPTION=='MASS_MECA_DIAG')", - regles=(AU_MOINS_UN('MODELE','CHARGE'),), - MODELE =SIMP(statut='f',typ=modele_sdaster ), - b_modele =BLOC(condition = "MODELE != None", - CHAM_MATER =SIMP(statut='f',typ=cham_mater ), - CARA_ELEM =SIMP(statut='f',typ=cara_elem ), - ), + b_mass_meca =BLOC(condition = "(OPTION=='MASS_MECA') or (OPTION=='MASS_MECA_DIAG')", + CHAM_MATER =SIMP(statut='f',typ=cham_mater ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'), ), - b_mass_identite =BLOC(condition = "(OPTION in ('MASS_ID_MDEP_R','MASS_ID_MTEM_R','MASS_ID_MDNS_R','MASS_ID_MTNS_R')) ", - MODELE =SIMP(statut='o',typ=modele_sdaster ), - # j'ajoute ces 2 mot clés inutiles à cause de l'alarme pas assez subtile de MEDOME - CHAM_MATER =SIMP(statut='f',typ=cham_mater ), - CARA_ELEM =SIMP(statut='f',typ=cara_elem ), - ), - b_rigi_geom =BLOC(condition = "OPTION=='RIGI_GEOM'", - MODELE =SIMP(statut='o',typ=modele_sdaster ), CARA_ELEM =SIMP(statut='f',typ=cara_elem ), SIEF_ELGA =SIMP(statut='o',typ=cham_elem ), MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ), ), b_rigi_rota =BLOC(condition = "OPTION=='RIGI_ROTA'", - MODELE =SIMP(statut='o',typ=modele_sdaster ), CHAM_MATER =SIMP(statut='o',typ=cham_mater ), CHARGE =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**' ), ), b_meca_gyro = BLOC( condition = "OPTION=='MECA_GYRO'", - MODELE =SIMP(statut='o',typ=modele_sdaster ), CHAM_MATER =SIMP(statut='o',typ=cham_mater ), CARA_ELEM =SIMP(statut='o',typ=cara_elem ), CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**' ), @@ -6379,27 +6497,24 @@ CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op= 9,sd_prod=calc_matr_elem_prod b_amor_meca =BLOC(condition = "OPTION=='AMOR_MECA'", regles=(AU_MOINS_UN('CARA_ELEM','RIGI_MECA'), ENSEMBLE('RIGI_MECA','MASS_MECA','CHAM_MATER'), ), - MODELE =SIMP(statut='o',typ=modele_sdaster ), CARA_ELEM =SIMP(statut='f',typ=cara_elem ), CHAM_MATER =SIMP(statut='f',typ=cham_mater ), RIGI_MECA =SIMP(statut='f',typ=matr_elem_depl_r ), MASS_MECA =SIMP(statut='f',typ=matr_elem_depl_r ), CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'), ), - + b_amor_meca_abso =BLOC(condition = "OPTION=='AMOR_MECA_ABSO'", regles=(AU_MOINS_UN('CARA_ELEM','RIGI_MECA'), ENSEMBLE('RIGI_MECA','MASS_MECA','CHAM_MATER'), ), - MODELE =SIMP(statut='o',typ=modele_sdaster ), CARA_ELEM =SIMP(statut='f',typ=cara_elem ), CHAM_MATER =SIMP(statut='o',typ=cham_mater ), RIGI_MECA =SIMP(statut='f',typ=matr_elem_depl_r ), MASS_MECA =SIMP(statut='f',typ=matr_elem_depl_r ), CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'), ), - + b_rigi_meca_hyst =BLOC( condition = "OPTION=='RIGI_MECA_HYST'", - MODELE =SIMP(statut='o',typ=modele_sdaster ), CHARGE =SIMP(statut='f',typ=char_meca ,validators=NoRepeat(),max='**' ), CHAM_MATER =SIMP(statut='f',typ=cham_mater ), CARA_ELEM =SIMP(statut='f',typ=cara_elem ), @@ -6407,56 +6522,46 @@ CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op= 9,sd_prod=calc_matr_elem_prod ), b_rigi_ther =BLOC(condition = "OPTION=='RIGI_THER'", - regles=(AU_MOINS_UN('MODELE','CHARGE' ),), - MODELE =SIMP(statut='f',typ=modele_sdaster ), - b_modele =BLOC(condition = "MODELE != None", - CHAM_MATER =SIMP(statut='o',typ=cham_mater ), - CARA_ELEM =SIMP(statut='f',typ=cara_elem ), - MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ), - ), + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ), CHARGE =SIMP(statut='f',typ=char_ther,validators=NoRepeat(),max='**' ), ), b_mass_ther =BLOC(condition = "OPTION=='MASS_THER'", - MODELE =SIMP(statut='o',typ=modele_sdaster ), CHAM_MATER =SIMP(statut='o',typ=cham_mater ), CARA_ELEM =SIMP(statut='f',typ=cara_elem ), CHARGE =SIMP(statut='f',typ=char_ther ,validators=NoRepeat(),max='**' ), ), b_rigi_acou =BLOC(condition = "OPTION=='RIGI_ACOU'", - MODELE =SIMP(statut='o',typ=modele_sdaster ), CHAM_MATER =SIMP(statut='o',typ=cham_mater ), CHARGE =SIMP(statut='f',typ=char_acou ,validators=NoRepeat(),max='**' ), ), b_mass_acou =BLOC(condition = "(OPTION=='MASS_ACOU') or (OPTION=='AMOR_ACOU')", - MODELE =SIMP(statut='o',typ=modele_sdaster ), CHAM_MATER =SIMP(statut='o',typ=cham_mater ), CHARGE =SIMP(statut='f',typ=char_acou ,validators=NoRepeat(),max='**' ), ), b_rigi_flui =BLOC(condition = "OPTION=='RIGI_FLUI_STRU'", - MODELE =SIMP(statut='o',typ=modele_sdaster ), CARA_ELEM =SIMP(statut='o',typ=cara_elem ), CHAM_MATER =SIMP(statut='o',typ=cham_mater ), CHARGE =SIMP(statut='o',typ=char_meca ,validators=NoRepeat(),max='**' ), ), b_mass_flui =BLOC(condition = "OPTION=='MASS_FLUI_STRU'", - MODELE =SIMP(statut='o',typ=modele_sdaster ), CARA_ELEM =SIMP(statut='o',typ=cara_elem ), CHAM_MATER =SIMP(statut='o',typ=cham_mater ), CHARGE =SIMP(statut='o',typ=char_meca ,validators=NoRepeat(),max='**'), ), b_impe_meca =BLOC(condition = "(OPTION=='IMPE_MECA') or (OPTION=='ONDE_FLUI')", - MODELE =SIMP(statut='o',typ=modele_sdaster ), CHAM_MATER =SIMP(statut='o',typ=cham_mater ), CHARGE =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**' ), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -6490,24 +6595,139 @@ CALC_META=OPER(nom="CALC_META",op=194,sd_prod=evol_ther,reentrant='o', NUME_INIT =SIMP(statut='f',typ='I'), INST_INIT =SIMP(statut='f',typ='R'), b_inst =BLOC(condition="INST_INIT != None", - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ) + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ), ), ), - COMP_INCR =FACT(statut='o',max='**', + COMP_INCR =FACT(statut='o',max=1, RELATION =SIMP(statut='o',typ='TXM',into=("ACIER","ZIRC",) ), ACIER =SIMP(statut='c',typ='I',defaut=7,into=(7,) ), - ZIRC =SIMP(statut='c',typ='I',defaut=3,into=(3,) ), + ZIRC =SIMP(statut='c',typ='I',defaut=4,into=(4,) ), regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma), - MAILLE =SIMP(statut='f',typ=ma), + GROUP_MA =SIMP(statut='f',typ=grma, validators=NoRepeat(), max='**'), + MAILLE =SIMP(statut='f',typ=ma, validators=NoRepeat(), max='**'), ), OPTION =SIMP(statut='f',typ='TXM' ,into=("META_ELNO_TEMP",) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 14/10/2008 AUTEUR NISTOR I.NISTOR +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== + +# RESPONSABLE NISTOR I.NISTOR + +from Macro.calc_modal_ops import calc_modal_ops + +def calc_modal_prod(self,AMORTISEMENT,**args): + if AMORTISEMENT=="NON": return mode_meca + if AMORTISEMENT=="OUI": return mode_meca_c + raise AsException("type de concept resultat non prevu") + + +CALC_MODAL=MACRO(nom="CALC_MODAL",op=calc_modal_ops, + UIinfo={"groupes":("Résolution",)}, + sd_prod=calc_modal_prod, + fr="Calcul des modes propres reels ou complexes dans une seule commande", + MODELE =SIMP(statut='o',typ=modele_sdaster), + AMORTISEMENT =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ), + CHAM_MATER =SIMP(statut='o',typ=cham_mater), + INST =SIMP(statut='f',typ='R',defaut=0.), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'), + SOLVEUR =FACT(statut='d', + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT") ), + b_mult_front =BLOC(condition="METHODE=='MULT_FRONT'",fr="Paramètres associés à la méthode multifrontale", + RENUM =SIMP(statut='f',typ='TXM',into=("MD","MDA","METIS"),defaut="METIS" ), + ), + b_ldlt =BLOC(condition="METHODE=='LDLT'",fr="Paramètres associés à la méthode LDLT", + RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ), + ),), + METHODE =SIMP(statut='f',typ='TXM',defaut="SORENSEN", + into=("TRI_DIAG","JACOBI","SORENSEN","QZ") ), + b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'", + PREC_ORTHO =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ), + NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), + PREC_LANCZOS =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ), + NMAX_ITER_QR =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ), + ), + b_jacobi =BLOC(condition = "METHODE == 'JACOBI'", + PREC_BATHE =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ), + NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ), + PREC_JACOBI =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ), + NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ), + ), + b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'", + PREC_SOREN =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ), + NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ), + PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717,val_min=0.E+0 ), + ), + b_qz =BLOC(condition = "METHODE == 'QZ'", + TYPE_QZ =SIMP(statut='f',typ='TXM',defaut="QZ_SIMPLE",into=("QZ_QR","QZ_SIMPLE","QZ_EQUI") ), + ), + MODE_RIGIDE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), + fr="Calcul des modes de corps rigide, uniquement pour la méthode TRI_DIAG" ), + CALC_FREQ =FACT(statut='d',min=0, + OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","BANDE","CENTRE","TOUT"), + fr="Choix de l option et par conséquent du shift du problème modal" ), + b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites valeurs propres", + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ), + ), + b_centre =BLOC(condition = "OPTION == 'CENTRE'", + fr="Recherche des valeurs propres les plus proches d une valeur donnée", + FREQ =SIMP(statut='o',typ='R', + fr="Fréquence autour de laquelle on cherche les fréquences propres"), + AMOR_REDUIT =SIMP(statut='f',typ='R',), + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ), + ), + b_bande =BLOC(condition = "(OPTION == 'BANDE')", + fr="Recherche des valeurs propres dans une bande donnée", + FREQ =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max=2, + fr="Valeur des deux fréquences délimitant la bande de recherche"), + ), + APPROCHE =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG","COMPLEXE"), + fr="Choix du pseudo-produit scalaire pour la résolution du problème quadratique" ), + regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),), + DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ), + COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ), + NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ), + NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), + PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ), + SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ), + STOP_FREQ_VIDE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + + VERI_MODE =FACT(statut='d',min=0, + STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-3,val_min=0.E+0 ), + SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0, + fr="Valeur limite admise pour l ereur a posteriori des modes" ), + STURM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +) ; +#& MODIF COMMANDE DATE 06/10/2008 AUTEUR DEVESA G.DEVESA # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -6530,7 +6750,7 @@ def calc_no_prod(RESULTAT,**args): if AsType(RESULTAT) != None : return AsType(RESULTAT) raise AsException("type de concept resultat non prevu") -CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='o', +CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='f', fr="Enrichir une SD Résultat par des champs aux noeuds calculés à partir de champs aux éléments évalués aux noeuds", UIinfo={"groupes":("Post traitements",)}, RESULTAT =SIMP(statut='o',typ=resultat_sdaster), @@ -6551,12 +6771,15 @@ CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='o', FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), LIST_INST =SIMP(statut='f',typ=listr8_sdaster), LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), - + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', into=("FORC_NODA","REAC_NODA", + "FORC_NODA_NONL", "DCHA_NOEU_SIGM", "DEGE_NOEU_DEPL", "DETE_NOEU_DLTE", @@ -6593,7 +6816,11 @@ CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='o', (OPTION == 'REAC_NODA') or (type(OPTION) == type(()) and 'REAC_NODA' in OPTION)""", MODELE =SIMP(statut='f',typ=modele_sdaster), ), - + b_forc_nonl =BLOC(condition = """(OPTION == 'FORC_NODA_NONL')""", + MODELE =SIMP(statut='f',typ=modele_sdaster), + COMP_INCR =C_COMP_INCR(), + ), + CHAM_MATER =SIMP(statut='f',typ=cham_mater), CARA_ELEM =SIMP(statut='f',typ=cara_elem), EXCIT =FACT(statut='f',max='**', @@ -6610,7 +6837,7 @@ CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='o', GROUP_NO_RESU =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), NOEUD_RESU =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG @@ -6654,7 +6881,7 @@ CALC_PRECONT=MACRO(nom="CALC_PRECONT",op=calc_precont_ops,sd_prod=evol_noli, LIST_INST =SIMP(statut='o',typ=listr8_sdaster), INST_INIT =SIMP(statut='f',typ='R'), INST_FIN =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ), + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6 ), # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS SUBD_METHODE =SIMP( statut='f',typ='TXM', into =("AUCUNE","UNIFORME","EXTRAPOLE"), @@ -6725,13 +6952,16 @@ CALC_PRECONT=MACRO(nom="CALC_PRECONT",op=calc_precont_ops,sd_prod=evol_noli, EVOL_NOLI =SIMP(statut='f',typ=evol_noli), NUME_ORDRE =SIMP(statut='f',typ='I'), INST =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), NUME_DIDI =SIMP(statut='f',typ='I'), INST_ETAT_INIT =SIMP(statut='f',typ='R'), ), SOLVEUR =FACT(statut='d', - METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ), + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ), b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), ), @@ -6750,6 +6980,32 @@ CALC_PRECONT=MACRO(nom="CALC_PRECONT",op=calc_precont_ops,sd_prod=evol_noli, RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), ), + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + RESI_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6,), + PARALLELISME =SIMP(statut='f',typ='TXM',defaut="CENTRALISE", + into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")), + PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), + CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100), + CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), + + b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), + b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), + NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), + ), SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), ), INFO =SIMP(statut='f',typ='I',into=(1,2) ), @@ -6761,6 +7017,69 @@ CALC_PRECONT=MACRO(nom="CALC_PRECONT",op=calc_precont_ops,sd_prod=evol_noli, COMP_INCR =C_COMP_INCR(), ) ; +#& MODIF COMMANDE DATE 21/10/2008 AUTEUR CORUS M.CORUS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== + +# RESPONSABLE CORUS M.CORUS + +from Macro.calc_spec_ops import calc_spec_ops + +CALC_SPEC=MACRO(nom="CALC_SPEC",op= calc_spec_ops,sd_prod=table_fonction, + reentrant='n', + fr="Calcule une matrice interspectrale ou des fonctions de transferts", + UIinfo={"groupes":("Fonction",)}, + TAB_ECHANT =FACT(statut='f', + NOM_TAB =SIMP(statut='o',typ=table_sdaster), + LONGUEUR_ECH =FACT(statut='f', + DUREE =SIMP(statut='f',typ='R'), + POURCENT =SIMP(statut='f',typ='R'), + NB_PTS =SIMP(statut='f',typ='I'), + ), + RECOUVREMENT =FACT(statut='f', + DUREE =SIMP(statut='f',typ='R'), + POURCENT =SIMP(statut='f',typ='R'), + NB_PTS =SIMP(statut='f',typ='I'), + ), + ), + ECHANT =FACT(statut='f',max='**', + NUME_ORDRE_I =SIMP(statut='o',typ='I' ), + NUME_MES =SIMP(statut='o',typ='I' ), + FONCTION =SIMP(statut='o',typ=fonction_sdaster), + ), +#-- Cas de la matrice interspectrale --# + INTERSPE =FACT(statut='f', + FENETRE =SIMP(statut='f',typ='TXM',defaut="RECT",into=("RECT","HAMM","HANN","EXPO","PART",)), + BLOC_DEFI_FENE =BLOC(condition = "FENETRE == 'EXPO' or FENETRE == 'PART' ", +# DEFI_FENE =SIMP(statut='f',typ='R',max='**'), + ), + ), +#-- Cas des transferts - estimateurs H1 / H2 / Hv + Coherence --# + TRANSFERT =FACT(statut='f', + ESTIM =SIMP(statut='f',typ='TXM',defaut="H1",into=("H1","H2","CO",)), + REFER =SIMP(statut='o',typ='I',max='**'), + FENETRE =SIMP(statut='f',typ='TXM',defaut="RECT",into=("RECT","HAMM","HANN","EXPO","PART",)), + DEFI_FENE =SIMP(statut='f',typ='R',max='**'), + + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +); #& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -6948,7 +7267,7 @@ CALC_THETA=OPER(nom="CALC_THETA",op=54,sd_prod=theta_geom,reentrant='n', FORMAT =SIMP(statut='f',typ='TXM',defaut="EXCEL",into=("EXCEL","AGRAF") ), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 21/10/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG @@ -6968,7 +7287,7 @@ CALC_THETA=OPER(nom="CALC_THETA",op=54,sd_prod=theta_geom,reentrant='n', # ====================================================================== # RESPONSABLE ABBAS M.ABBAS -CALCUL=OPER(nom="CALCUL",op=26,sd_prod=table_container,reentrant='n', +CALCUL=OPER(nom="CALCUL",op=26,sd_prod=table_container,reentrant='f', UIinfo={"groupes":("Résolution",)}, fr="Calculer des objets élémentaires comme une matrice tangente, intégrer une loi de comportement, etc...", OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="COMPORTEMENT", @@ -6976,6 +7295,7 @@ CALCUL=OPER(nom="CALCUL",op=26,sd_prod=table_container,reentrant='n', MODELE =SIMP(statut='o',typ=modele_sdaster), CARA_ELEM =SIMP(statut='f',typ=cara_elem), CHAM_MATER =SIMP(statut='o',typ=cham_mater), + TABLE =SIMP(statut='f',typ=table_container), EXCIT =FACT(statut='o',max='**', CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)), FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -6999,12 +7319,6 @@ CALCUL=OPER(nom="CALCUL",op=26,sd_prod=table_container,reentrant='n', RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS", into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC", "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")), - ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_VMIS_LINE =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_HYPER =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_POUTRE_GR =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - CABLE =SIMP(statut='c',typ='I',defaut=1,into=(1,)), DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ),), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; @@ -7284,7 +7598,7 @@ COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_stat, ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7319,7 +7633,7 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod, UIinfo={"groupes":("Résultats et champs",)}, TYPE_CHAM =SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO()), # TYPE_CHAM doit etre de la forme : CART_xx, NOEU_xx, ELEM_xx, ELGA_xx ou ELNO_xx - # ou xx est le nom d'une grandeur définie dans le catalogue des grandeurs + # ou xx est le nom d'une grandeur définie dans le catalogue des grandeurs # SI CREATION D'UN CHAM_NO, POUR IMPOSER LA NUMEROTATION DES DDLS : # ------------------------------------------------------------------ regles=(EXCLUS('NUME_DDL','CHAM_NO',)), @@ -7397,7 +7711,7 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod, # ------------------------------------------------------------------ b_c2r =BLOC(condition = "OPERATION == 'C2R'", CHAM_GD =SIMP(statut='o',typ=cham_gd_sdaster), - PARTIE =SIMP(statut='o',typ='TXM',into=('REEL','IMAG'),), + PARTIE =SIMP(statut='o',typ='TXM',into=('REEL','IMAG','MODULE','PHASE'),), ), # ------------------------------------------------------------------ b_disc =BLOC(condition = "OPERATION == 'DISC'", @@ -7466,8 +7780,11 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod, INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN",) ), ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ), # fin bloc b_extr @@ -7478,7 +7795,7 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 19/05/2008 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 30/06/2008 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7541,7 +7858,9 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster, fr="Nombre minimal de mailles que doit contenir le groupe pour etre détruit", ), ), RESTREINT =FACT(statut='f',fr="Restreindre un maillage à des groupes de mailles",max=1, - GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), TOUT_GROUP_MA =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),), GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), TOUT_GROUP_NO =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),), @@ -7562,8 +7881,8 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster, MODI_MAILLE =FACT(statut='f',max='**',fr="Modification du type de mailles", regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - MAILLE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - GROUP_MA =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), OPTION =SIMP(statut='o',typ='TXM',into=("TRIA6_7","QUAD8_9","SEG3_4","QUAD_TRIA3"), fr="Choix de la transformation" ), b_NOS =BLOC(condition = "OPTION == 'TRIA6_7' or OPTION == 'QUAD8_9' or OPTION == 'SEG3_4'", @@ -7585,24 +7904,24 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster, LINE_QUAD =FACT(statut='f',fr="Passage linéaire -> quadratique", regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - MAILLE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - GROUP_MA =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS"), PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ), ), HEXA20_27 =FACT(statut='f',fr="Passage HEXA20 -> HEXA27", regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - MAILLE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - GROUP_MA =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS"), PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ), ), QUAD_LINE =FACT(statut='f',fr="Passage quadratique -> linéaire", regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - MAILLE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - GROUP_MA =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), ), REPERE =FACT(statut='f',max='**', fr="changement de repère servant à déterminer les caractéristiques d'une section de poutre", @@ -7629,7 +7948,7 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster, # INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 20/10/2008 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7653,6 +7972,7 @@ def crea_resu_prod(TYPE_RESU,**args): if TYPE_RESU == "EVOL_NOLI" : return evol_noli if TYPE_RESU == "EVOL_THER" : return evol_ther if TYPE_RESU == "MULT_ELAS" : return mult_elas + if TYPE_RESU == "MODE_MECA" : return mode_meca if TYPE_RESU == "FOURIER_ELAS" : return fourier_elas if TYPE_RESU == "FOURIER_THER" : return fourier_ther if TYPE_RESU == "EVOL_VARC" : return evol_varc @@ -7671,10 +7991,15 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f', #------------------------------------- b_affe =BLOC(condition = "OPERATION == 'AFFE'", - TYPE_RESU =SIMP(statut='o',position='global',typ='TXM',into=("MULT_ELAS","EVOL_ELAS","EVOL_NOLI","FOURIER_ELAS", - "EVOL_THER","EVOL_VARC","EVOL_CHAR","FOURIER_THER") ), + TYPE_RESU =SIMP(statut='o',position='global',typ='TXM',into=("MODE_MECA","MULT_ELAS","EVOL_ELAS","EVOL_NOLI", + "FOURIER_ELAS","EVOL_THER","EVOL_VARC","EVOL_CHAR","FOURIER_THER") ), NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()), + b_mode =BLOC(condition = "TYPE_RESU == 'MODE_MECA'", + MATR_A =SIMP(statut='f',typ=matr_asse_depl_r,), + MATR_B =SIMP(statut='f',typ=matr_asse_depl_r,), + ), + AFFE =FACT(statut='o',max='**', CHAM_GD =SIMP(statut='o',typ=(cham_gd_sdaster)), MODELE =SIMP(statut='f',typ=modele_sdaster), @@ -7691,13 +8016,17 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f', LIST_INST =SIMP(statut='f',typ=listr8_sdaster), NUME_INIT =SIMP(statut='f',typ='I', val_min=1), NUME_FIN =SIMP(statut='f',typ='I', val_min=1), - PRECISION =SIMP(statut='f',typ='R',defaut= 0. ), + PRECISION =SIMP(statut='f',typ='R',defaut= 0.0 ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), ), b_fourier =BLOC(condition = "((TYPE_RESU == 'FOURIER_ELAS') or (TYPE_RESU == 'FOURIER_THER')) ", NUME_MODE =SIMP(statut='f',typ='I'), TYPE_MODE =SIMP(statut='f',typ='TXM',defaut="SYME",into=("SYME","ANTI","TOUS") ), ), + b_mode =BLOC(condition = "TYPE_RESU == 'MODE_MECA'", + NUME_MODE =SIMP(statut='f',typ='I'), + FREQ =SIMP(statut='f',typ='R'), + ), ), ), @@ -7731,8 +8060,11 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f', LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), LIST_INST =SIMP(statut='f',typ=listr8_sdaster), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ), ), @@ -7743,8 +8075,11 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f', NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","SIEF_ELGA","VARI_ELGA",),validators=NoRepeat(),max='**' ), RESU_INIT =SIMP(statut='o',typ=evol_noli), INST_INIT =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3), - CRITERE =SIMP(statut='f',typ='TXM',into=('RELATIF','ABSOLU'),defaut='RELATIF'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), MAILLAGE_INIT =SIMP(statut='o',typ=maillage_sdaster,), RESU_FINAL =SIMP(statut='o',typ=evol_noli,), MAILLAGE_FINAL =SIMP(statut='o',typ=maillage_sdaster,), @@ -7767,8 +8102,11 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f', INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), LIST_INST =SIMP(statut='f',typ=listr8_sdaster), b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)", - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ), PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU",),), PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU",),), @@ -7903,7 +8241,7 @@ DEBUG=PROC(nom="DEBUG",op=137, IMPR_MACRO =SIMP(fr="affichage des sous-commandes produites par les macros dans le fichier mess", statut='f',typ='TXM',into=("OUI","NON")), ); -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 07/10/2008 AUTEUR COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7963,7 +8301,7 @@ DEBUT=MACRO(nom="DEBUT",op=ops.build_debut ,repetable='n', ), ERREUR =FACT(fr="comportement en cas d'erreur",statut='f',min=1,max=1, - ERREUR_F =SIMP(statut='f',typ='TXM',into=('ABORT','EXCEPTION'),defaut='ABORT'), + ERREUR_F =SIMP(statut='f',typ='TXM',into=('ABORT','EXCEPTION'),), ), DEBUG =FACT(fr="option de déboggage reservée aux développeurs", @@ -7978,13 +8316,13 @@ DEBUT=MACRO(nom="DEBUT",op=ops.build_debut ,repetable='n', statut='f',typ='TXM',into=('TEST',)), ), - MEMOIRE =FACT(fr="mode de gestion mémoire utilisé",statut='f',min=1,max=1, + MEMOIRE =FACT(fr="mode de gestion mémoire utilisé",statut='d',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'), - DYNAMIQUE =SIMP(statut='f',typ='I'), + DYNAMIQUE =SIMP(statut='f',typ='I',defaut=1), ), RESERVE_CPU =FACT(fr="reserve de temps pour terminer une execution",statut='d',max=1, @@ -7999,23 +8337,23 @@ DEBUT=MACRO(nom="DEBUT",op=ops.build_debut ,repetable='n', IGNORE_ALARM = SIMP(statut='f', typ='TXM', max='**', fr="Alarmes que l'utilisateur souhaite délibérément ignorer"), ); -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 22/07/2008 AUTEUR PELLET 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. # ====================================================================== # RESPONSABLE NISTOR I.NISTOR DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op= 99,sd_prod=base_modale, @@ -8053,6 +8391,27 @@ DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op= 99,sd_prod=base_modale, BASE =SIMP(statut='o',typ=(mode_meca,mode_stat_depl,mode_stat_acce,mode_stat_forc,mult_elas,base_modale)), MATRICE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ) ), ), + + + SOLVEUR =FACT(statut='d', fr="Méthode de résolution des systèmes linéaires", + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("LDLT","MULT_FRONT",) ), + # remarque : on ne peut pas utiliser MUMPS tant qu'il ne sait pas faire STOP_SINGULIER="NON" + + b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT", + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ), + NPREC =SIMP(statut='f',typ='I',defaut=8), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + ), + + b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", + RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), + NPREC =SIMP(statut='f',typ='I',defaut=8), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + ), + ), + + + TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; @@ -8182,7 +8541,7 @@ DEFI_CABLE_OP=OPER(nom="DEFI_CABLE_OP",op= 180,sd_prod=cabl_precont,reentrant='n PRESENT =SIMP(statut='o',typ='TXM',min=2,max=2,into=("OUI","NON") ), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/06/2008 AUTEUR PROIX J-M.PROIX # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG @@ -8302,54 +8661,6 @@ DEFI_COMPOR=OPER(nom="DEFI_COMPOR",op=59,sd_prod=compor_sdaster, "ZMAT", "GRAN_IRRA_LOG", ) ), - ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_HYPER =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - SANS =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - CORR_ACIER =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - VMIS_ISOT_TRAC =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - VISC_ISOT_TRAC =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - VMIS_ISOT_LINE =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - VISC_ISOT_LINE =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - VMIS_ISOT_PUIS =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - VMIS_ECMI_TRAC =SIMP(statut='c',typ='I',defaut=8,into=(8,)), - VMIS_ECMI_LINE =SIMP(statut='c',typ='I',defaut=8,into=(8,)), - LABORD_1D =SIMP(statut='c',typ='I',defaut=5,into=(5,)), - ENDO_FRAGILE =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - ENDO_ISOT_BETON =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - ENDO_ORTH_BETON =SIMP(statut='c',typ='I',defaut=7,into=(7,)), - BETON_REGLE_PR =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - MAZARS =SIMP(statut='c',typ='I',defaut=4,into=(4,)), - RUPT_FRAG =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - VMIS_CINE_LINE =SIMP(statut='c',typ='I',defaut=7,into=(7,)), - VISCOCHAB =SIMP(statut='c',typ='I',defaut=28,into=(28,)), - VMIS_CIN1_CHAB =SIMP(statut='c',typ='I',defaut=8,into=(8,)), - VMIS_CIN2_CHAB =SIMP(statut='c',typ='I',defaut=14,into=(14,)), - VISC_CIN1_CHAB =SIMP(statut='c',typ='I',defaut=8,into=(8,)), - VISC_CIN2_CHAB =SIMP(statut='c',typ='I',defaut=14,into=(14,)), - VISC_TAHERI =SIMP(statut='c',typ='I',defaut=9,into=(9,)), - ROUSSELIER =SIMP(statut='c',typ='I',defaut=9,into=(9,)), - ROUSS_PR =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - ROUSS_VISC =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - VMIS_POU_LINE =SIMP(statut='c',typ='I',defaut=9,into=(9,)), - VMIS_POU_FLEJOU =SIMP(statut='c',typ='I',defaut=9 ,into=(9,)), - ASSE_CORN =SIMP(statut='c',typ='I',defaut=7,into=(7,)), - ARME =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - NORTON_HOFF =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - LEMAITRE =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - VENDOCHAB =SIMP(statut='c',typ='I',defaut=10,into=(10,)), - GRILLE_ISOT_LINE=SIMP(statut='c',typ='I',defaut=4,into=(4,)), - DRUCK_PRAGER =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - DRUCK_PRAG_N_A =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - HOEK_BROWN =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - HOEK_BROWN_EFF =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - HOEK_BROWN_TOT =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - GRANGER_FP =SIMP(statut='c',typ='I',defaut=55,into=(55,)), - GRANGER_FP_INDT =SIMP(statut='c',typ='I',defaut=55,into=(55,)), - GRANGER_FP_V =SIMP(statut='c',typ='I',defaut=55,into=(55,)), - BETON_DOUBLE_DP =SIMP(statut='c',typ='I',defaut=4,into=(4,)), - BETON_UMLV_FP =SIMP(statut='c',typ='I',defaut=21,into=(21,)), - GRAN_IRRA_LOG =SIMP(statut='c',typ='I',defaut=4,into=(4,)), - RELATION_KIT =SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(), into=( # MECA KIT_DDI @@ -8365,7 +8676,6 @@ DEFI_COMPOR=OPER(nom="DEFI_COMPOR",op=59,sd_prod=compor_sdaster, "NADAI_B", "BETON_DOUBLE_DP", ),), - # on pourrait ajouter TOUT_GROUP_FIBRE ) ); @@ -8499,7 +8809,7 @@ DEFI_FICHIER=MACRO(nom="DEFI_FICHIER",op=ops.build_DEFI_FICHIER,sd_prod=DEFIC_pr INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 14/10/2008 AUTEUR GENIAUT S.GENIAUT # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG @@ -8532,21 +8842,55 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op= 41,sd_prod=fiss_xfem,reentrant='n' FONC_LN =SIMP(statut='f',typ=(fonction_sdaster,formule) ), GROUP_MA_FISS =SIMP(statut='f',typ=grma,max=01), GROUP_MA_FOND =SIMP(statut='f',typ=grma), - FORM_FISS =SIMP(statut='f',typ='TXM',into=("ELLIPSE",) ), - b_ellipse =BLOC(condition = "FORM_FISS == 'ELLIPSE' ",fr="Paramères de la fissure elliptique", + FORM_FISS =SIMP(statut='f',typ='TXM',into=("ELLIPSE","CYLINDRE","DEMI_PLAN","SEGMENT","DEMI_DROITE") ), + b_ellipse =BLOC(condition = "FORM_FISS == 'ELLIPSE' ",fr="Paramètres de la fissure elliptique", DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.E+0), DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.E+0), CENTRE =SIMP(statut='o',typ='R',min=3,max=3), VECT_X =SIMP(statut='o',typ='R',min=3,max=3), VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), COTE_FISS =SIMP(statut='f',typ='TXM',defaut="IN",into=("IN","OUT",) ), ), + b_cylindre =BLOC(condition = "FORM_FISS == 'CYLINDRE' ",fr="Paramètres de la fissure cylindrique", + DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.E+0), + DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.E+0), + CENTRE =SIMP(statut='o',typ='R',min=3,max=3), + VECT_X =SIMP(statut='o',typ='R',min=3,max=3), + VECT_Y =SIMP(statut='o',typ='R',min=3,max=3),), + b_demiplan =BLOC(condition = "FORM_FISS == 'DEMI_PLAN' ",fr="Paramètres de la fissure plane à front droit", + PFON =SIMP(statut='o',typ='R',min=3,max=3), + NORMALE =SIMP(statut='o',typ='R',min=3,max=3), + DTAN =SIMP(statut='o',typ='R',min=3,max=3),), + b_segment =BLOC(condition = "FORM_FISS == 'SEGMENT' ",fr="Paramètres de la fissure 2D segment", + PFON_ORIG =SIMP(statut='o',typ='R',min=3,max=3), + PFON_EXTR =SIMP(statut='o',typ='R',min=3,max=3),), + b_demidroite =BLOC(condition = "FORM_FISS == 'DEMI_DROITE' ",fr="Paramètres de la fissure 2D demi-droite", + PFON =SIMP(statut='o',typ='R',min=3,max=3), + DTAN =SIMP(statut='o',typ='R',min=3,max=3),), + b_droite =BLOC(condition = "FORM_FISS == 'DROITE' ",fr="Paramètres de l'interface 2D (fissure traversante)", + POINT =SIMP(statut='o',typ='R',min=3,max=3), + DTAN =SIMP(statut='o',typ='R',min=3,max=3),), + b_inclusion =BLOC(condition = "FORM_FISS == 'INCLUSION' ",fr="Paramètres de l'interface 2D (inclusion)", + DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.E+0), + DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.E+0), + CENTRE =SIMP(statut='o',typ='R',min=3,max=3), + VECT_X =SIMP(statut='o',typ='R',min=3,max=3), + VECT_Y =SIMP(statut='o',typ='R',min=3,max=3),), ), GROUP_MA_ENRI =SIMP(statut='o',typ=grma,max=01), - RAYON_ENRI =SIMP(statut='f',typ='R',defaut=0.E+0), + TYPE_ENRI_FOND =SIMP(statut='f',typ='TXM',into=("TOPOLOGIQUE","GEOMETRIQUE"),defaut="TOPOLOGIQUE" ), + b_enri_geom =BLOC(condition = "TYPE_ENRI_FOND == 'GEOMETRIQUE' ",fr="Paramètres de l enrichissement geometrique", + RAYON_ENRI =SIMP(statut='f',typ='R',val_min=0.E+0), + + b_enri_couches =BLOC(condition = "(RAYON_ENRI == None) ",fr="Paramètres de l enrichissement à n couches", + NB_COUCHES =SIMP(statut='f',typ='I',defaut=4,val_min=1), + ), + + ), + ORIE_FOND =FACT(statut='f',max=01, PFON_INI =SIMP(statut='o',typ='R',max=03), VECT_ORIE =SIMP(statut='o',typ='R',max=03), - PT_ORIGIN =SIMP(statut='o',typ='R',max=03), + POINT_ORIG =SIMP(statut='o',typ='R',max=03), ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,3,) ), ) ; @@ -8982,7 +9326,7 @@ DEFI_GEOM_FIBRE=OPER(nom="DEFI_GEOM_FIBRE",op= 119, sd_prod=gfibre_sdaster, ) ; -#& MODIF COMMANDE DATE 19/05/2008 AUTEUR MARKOVIC D.MARKOVIC +#& MODIF COMMANDE DATE 20/10/2008 AUTEUR ASSIRE A.ASSIRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2008 EDF R&D WWW.CODE-ASTER.ORG @@ -9029,6 +9373,11 @@ DEFI_GLRC=OPER(nom="DEFI_GLRC",op=57,sd_prod=mater_sdaster,reentrant='f', C2M1 =SIMP(statut='o',typ='R',val_min=0.E+0), C2M2 =SIMP(statut='o',typ='R',val_min=0.E+0), C2M3 =SIMP(statut='o',typ='R',val_min=0.E+0), + + MP1X =SIMP(statut='f',typ=('R',listr8_sdaster)), + MP2X =SIMP(statut='f',typ=('R',listr8_sdaster)), + MP1Y =SIMP(statut='f',typ=('R',listr8_sdaster)), + MP2Y =SIMP(statut='f',typ=('R',listr8_sdaster)), ), NAPPE =FACT(statut='o',max=10, MATER =SIMP(statut='o',typ=(mater_sdaster) ), @@ -9036,6 +9385,7 @@ DEFI_GLRC=OPER(nom="DEFI_GLRC",op=57,sd_prod=mater_sdaster,reentrant='f', OMY =SIMP(statut='o',typ='R',val_min=0.E+0), RX =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), RY =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), + FS =SIMP(statut='f',typ='R',val_min=0.E+0), ), CABLE_PREC =FACT(statut='f',max=1, MATER =SIMP(statut='o',typ=(mater_sdaster) ), @@ -9531,7 +9881,7 @@ DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op= 88,sd_prod=maillage_sdaster, GROUP_NO_FIN =SIMP(statut='f',typ=grno), ), ) ; -#& MODIF COMMANDE DATE 06/05/2008 AUTEUR MARKOVIC D.MARKOVIC +#& MODIF COMMANDE DATE 20/10/2008 AUTEUR MICHEL S.MICHEL # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9576,10 +9926,10 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, PRESENT_PRESENT('BPEL_ACIER','ELAS'), EXCLUS('RCCM','RCCM_FO'), EXCLUS('WEIBULL','WEIBULL_FO'), - PRESENT_PRESENT('BARCELONE','CAM_CLAY'), PRESENT_PRESENT('LAIGLE','ELAS'), PRESENT_PRESENT('LETK','ELAS'), PRESENT_PRESENT('DRUCK_PRAGER','ELAS'), + PRESENT_PRESENT('ELAS_GONF','ELAS'), PRESENT_PRESENT('HOEK_BROWN','ELAS'), EXCLUS('MAZARS','MAZARS_FO'), PRESENT_PRESENT('JOINT_BA','ELAS'), @@ -10273,7 +10623,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, C_MRZ_RZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), F_MTZ_TZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), C_MTZ_TZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - ), + ), VMIS_POUTRE =FACT(statut='f', NP =SIMP(statut='o',typ='R'), MEY =SIMP(statut='o',typ='R'), @@ -10399,6 +10749,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, BC =SIMP(statut='o',typ='R'), AT =SIMP(statut='o',typ='R'), BT =SIMP(statut='o',typ='R'), + CHI =SIMP(statut='f',typ='R',val_min=0.0E+0,val_max=1.0E+0), ), MAZARS_FO=FACT(statut='f',min=0 , EPSD0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -10408,6 +10759,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, AT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), BT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","SECH","HYDR") ), + CHI =SIMP(statut='f',typ='R'), ), JOINT_BA=FACT(statut='f',min=0 ,max=1, HPEN =SIMP(statut='o',typ='R',defaut= 1.E+0,val_min=0.E+0), @@ -10426,23 +10778,23 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, BDN =SIMP(statut='o',typ='R',defaut= 1.E+0,val_min=1.E-1), ), VENDOCHAB =FACT(statut='f', - S_VP =SIMP(statut='o',typ='R'), - SEDVP1 =SIMP(statut='o',typ='R'), - SEDVP2 =SIMP(statut='o',typ='R'), - N_VP =SIMP(statut='o',typ='R'), - M_VP =SIMP(statut='o',typ='R'), - K_VP =SIMP(statut='o',typ='R'), + S =SIMP(statut='o',typ='R',defaut= 0.E+0), + ALPHA_D =SIMP(statut='o',typ='R',defaut= 0.E+0), + BETA_D =SIMP(statut='o',typ='R',defaut= 0.E+0), + N =SIMP(statut='o',typ='R'), + UN_SUR_M =SIMP(statut='o',typ='R',defaut= 0.E+0), + UN_SUR_K =SIMP(statut='o',typ='R'), R_D =SIMP(statut='o',typ='R'), A_D =SIMP(statut='o',typ='R'), K_D =SIMP(statut='o',typ='R'), ), VENDOCHAB_FO =FACT(statut='f', - S_VP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - SEDVP1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - SEDVP2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - N_VP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - M_VP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - K_VP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + S =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ALPHA_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + BETA_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + UN_SUR_M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + UN_SUR_K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), R_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), A_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), K_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -10482,9 +10834,18 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, KAPA =SIMP(statut='o',typ='R'), M =SIMP(statut='o',typ='R'), PRES_CRIT =SIMP(statut='o',typ='R'), - PA =SIMP(statut='o',typ='R'), + KCAM =SIMP(statut='f',typ='R',val_min=0.E+0), + PTRAC =SIMP(statut='f',typ='R',val_max=0.E+0), + regles=(PRESENT_PRESENT('PTRAC','KCAM',),), ), BARCELONE =FACT(statut='f', + MU =SIMP(statut='o',typ='R'), + PORO =SIMP(statut='o',typ='R'), + LAMBDA =SIMP(statut='o',typ='R'), + KAPA =SIMP(statut='o',typ='R'), + M =SIMP(statut='o',typ='R'), + PRES_CRIT =SIMP(statut='o',typ='R'), + PA =SIMP(statut='o',typ='R'), R =SIMP(statut='o',typ='R'), BETA =SIMP(statut='o',typ='R'), KC =SIMP(statut='o',typ='R'), @@ -10839,11 +11200,13 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, TDEQ =SIMP(statut='o',typ='R'), N =SIMP(statut='o',typ='R'), K =SIMP(statut='o',typ='R'), - TDC =SIMP(statut='o',typ='R'), + T1C =SIMP(statut='o',typ='R'), + T2C =SIMP(statut='o',typ='R'), AC =SIMP(statut='o',typ='R'), M =SIMP(statut='o',typ='R'), - QSR_K =SIMP(statut='f',typ='R'), - TDR =SIMP(statut='o',typ='R'), + QSR_K =SIMP(statut='o',typ='R'), + T1R =SIMP(statut='o',typ='R'), + T2R =SIMP(statut='o',typ='R'), AR =SIMP(statut='o',typ='R'), BR =SIMP(statut='o',typ='R'), ), @@ -12159,8 +12522,10 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, RUPT_FRAG =FACT(statut='f', GC =SIMP(statut='o',typ='R'), SIGM_C =SIMP(statut='f',typ='R'), - PENA_ADHERENCE =SIMP(statut='f',typ='R'), + PENA_ADHERENCE =SIMP(statut='f',typ='R',val_min=1.E-12,val_max=1.E+0), PENA_CONTACT =SIMP(statut='f',typ='R',defaut=1.), + PENA_LAGR =SIMP(statut='f',typ='R',defaut=1.0E2,val_min=1.01E+0), + RIGI_GLIS =SIMP(statut='f',typ='R',defaut=1.0E1), ), RUPT_FRAG_FO =FACT(statut='f', GC =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -12258,7 +12623,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, TYPE_DP =SIMP(statut='c',typ='R',defaut= 2.0,), ), DILAT =SIMP(statut='f',typ='R',defaut=0.0), - ), + ), HOEK_BROWN =FACT(statut='f', GAMMA_RUP =SIMP(statut='o',typ='R'), GAMMA_RES =SIMP(statut='o',typ='R'), @@ -12272,6 +12637,10 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, PHI_RES =SIMP(statut='o',typ='R'), PHI_END =SIMP(statut='f',typ='R'), ), + ELAS_GONF =FACT(statut='f', + BETAM =SIMP(statut='o',typ='R'), + PREF =SIMP(statut='o',typ='R'), + ), #### MONOCRISTAL ECOU_VISC1 =FACT(statut='f', @@ -12952,7 +13321,7 @@ DEFI_TRC=OPER(nom="DEFI_TRC",op=94,sd_prod=table_sdaster,reentrant='n', A =SIMP(statut='f',typ='R'), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 21/10/2008 AUTEUR NISTOR I.NISTOR # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12977,13 +13346,14 @@ def depl_interne_prod(DEPL_GLOBAL,**args ): if AsType(DEPL_GLOBAL) == dyna_trans : return dyna_trans if AsType(DEPL_GLOBAL) == dyna_harmo : return dyna_harmo if AsType(DEPL_GLOBAL) == mode_meca : return mode_meca + if AsType(DEPL_GLOBAL) == mode_meca_c : return mode_meca_c if AsType(DEPL_GLOBAL) == base_modale : return base_modale raise AsException("type de concept resultat non prevu") DEPL_INTERNE=OPER(nom="DEPL_INTERNE",op=89,sd_prod=depl_interne_prod,reentrant='n', UIinfo={"groupes":("Matrices/vecteurs",)}, fr="Calculer le champ de déplacement à l'intérieur d'une sous-structure statique", - DEPL_GLOBAL =SIMP(statut='o',typ=(cham_no_sdaster,mode_meca,base_modale,evol_elas,dyna_trans,dyna_harmo),), + DEPL_GLOBAL =SIMP(statut='o',typ=(cham_no_sdaster,mode_meca,mode_meca_c,base_modale,evol_elas,dyna_trans,dyna_harmo),), SUPER_MAILLE =SIMP(statut='o',typ=ma,), NOM_CAS =SIMP(statut='f',typ='TXM',defaut=" "), ) ; @@ -13183,7 +13553,7 @@ DYNA_ISS_VARI=MACRO(nom="DYNA_ISS_VARI",op=dyna_iss_vari_ops ,sd_prod=table_fonc # INFO =SIMP(statut='f',typ='I' ,defaut=1,into=( 1 , 2)), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 06/10/2008 AUTEUR DEVESA G.DEVESA # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13219,7 +13589,6 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, PRESENT_ABSENT('MATR_AMOR','LIST_AMOR'), UN_PARMI('FREQ','LIST_FREQ'), CONCEPT_SENSIBLE('ENSEMBLE'),), - MODELE =SIMP(statut='f',typ=modele_sdaster ), CHAM_MATER =SIMP(statut='f',typ=cham_mater ), CARA_ELEM =SIMP(statut='f',typ=cara_elem ), MATR_MASS =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_pres_c,matr_asse_gene_r ) ), @@ -13240,8 +13609,8 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, regles=(UN_PARMI('VECT_ASSE','CHARGE'), UN_PARMI('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'), ), - VECT_ASSE =SIMP(statut='f',typ=(cham_no_sdaster,vect_asse_gene) ), - CHARGE =SIMP(statut='f',typ=char_meca ), + VECT_ASSE =SIMP(statut='f',position='global',typ=(cham_no_sdaster,vect_asse_gene) ), + CHARGE =SIMP(statut='f',position='global', typ=char_meca ), TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ), FONC_MULT_C =SIMP(statut='f',typ=(fonction_c,formule_c) ), COEF_MULT_C =SIMP(statut='f',typ='C' ), @@ -13250,7 +13619,16 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, PHAS_DEG =SIMP(statut='f',typ='R',defaut= 0.E+0 ), PUIS_PULS =SIMP(statut='f',typ='I',defaut= 0 ), ), - + b_modele_char =BLOC(condition = " CHARGE != None ", + MODELE =SIMP(statut='o',typ=modele_sdaster ), + ), + b_modele_vect =BLOC(condition = " VECT_ASSE != None ", + MODELE =SIMP(statut='f',typ=modele_sdaster ), + ), + EXCIT_RESU =FACT(statut='f',max='**', + RESULTAT =SIMP(statut='o',typ=(dyna_harmo,harm_gene)), + COEF_MULT_C =SIMP(statut='o',typ='C' ), + ), b_matr_gene =BLOC(condition = "AsType(MATR_MASS) in (matr_asse_gene_r,)", fr="Methode de resolution matrice generalisee", SOLVEUR =FACT(statut='d', @@ -13274,6 +13652,7 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=0,min=0), CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), ), ), @@ -13307,6 +13686,7 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=0,min=0), CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), ), ), @@ -13319,7 +13699,7 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, # Rajouter test icompatibilite vect_asse et sensibilite # Peut-on aussi rajouter ici le test d incompatibilite charge complexe - derivation # presents dans le Fortran -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 06/10/2008 AUTEUR DEVESA G.DEVESA # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13372,8 +13752,11 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, NUME_INIT =SIMP(statut='f',typ='I' ), INST_INIT =SIMP(statut='f',typ='R' ), b_inst_init =BLOC(condition = "INST_INIT != None", - PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ), ), DEPL_INIT =SIMP(statut='f',typ=cham_no_sdaster), @@ -13402,6 +13785,10 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), ), + EXCIT_RESU =FACT(statut='f',max='**', + RESULTAT =SIMP(statut='o',typ=dyna_trans ), + COEF_MULT =SIMP(statut='o',typ='R' ), + ), AMOR_MODAL =FACT(statut='f', MODE_MECA =SIMP(statut='f',typ=mode_meca ), AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'), @@ -13440,13 +13827,18 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), PARALLELISME =SIMP(statut='f',typ='TXM',defaut="CENTRALISE",into=("CENTRALISE","CENTRALISE")), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", - VARIANTE =SIMP(statut='f',typ='TXM',into=("GMRES","BCGS","CR","CG","BICG","CHEBYCHEV",),defaut="GMRES" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("ILU","SOR","BJACOBI"),defaut="ILU" ), + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), + b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), - RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-8), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), ), ), @@ -13486,7 +13878,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 18/11/2008 AUTEUR ABBAS M.ABBAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13505,6 +13897,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== # RESPONSABLE GREFFET N.GREFFET +# DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', fr="Calcul de l'évolution dynamique d'une structure dont le matériau ou la géométrie ont un comportement non linéaire", UIinfo={"groupes":("Résolution",)}, @@ -13552,7 +13945,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', REAC_VITE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), ), PROJ_MODAL =FACT(statut='f',max='**', - MODE_MECA =SIMP(statut='o',typ=mode_meca), + MODE_MECA =SIMP(statut='o',typ=(mode_meca,base_modale)), NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ), regles=(PRESENT_PRESENT('MASS_GENE','RIGI_GENE'),), MASS_GENE =SIMP(statut='f',typ=matr_asse_gene_r), @@ -13565,12 +13958,6 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC","ELAS_VMIS_PUIS", "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")), ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_VMIS_LINE =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_VMIS_PUIS =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_HYPER =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_POUTRE_GR =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - CABLE =SIMP(statut='c',typ='I',defaut=1,into=(1,)), DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ), regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -13600,8 +13987,11 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', EVOL_NOLI =SIMP(statut='f',typ=evol_noli), NUME_ORDRE =SIMP(statut='f',typ='I'), INST =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), NUME_DIDI =SIMP(statut='f',typ='I'), INST_ETAT_INIT =SIMP(statut='f',typ='R'), ),), @@ -13622,8 +14012,11 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', EVOL_NOLI =SIMP(statut='f',typ=evol_noli), NUME_ORDRE =SIMP(statut='f',typ='I'), INST =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), NUME_DIDI =SIMP(statut='f',typ='I'), INST_ETAT_INIT =SIMP(statut='f',typ='R'), ),), @@ -13632,17 +14025,15 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', regles=(EXCLUS('NUME_INST_INIT','INST_INIT'), EXCLUS('NUME_INST_FIN','INST_FIN'),), LIST_INST =SIMP(statut='o',typ=listr8_sdaster), - EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE", - into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ), NUME_INST_INIT =SIMP(statut='f',typ='I'), INST_INIT =SIMP(statut='f',typ='R'), NUME_INST_FIN =SIMP(statut='f',typ='I'), INST_FIN =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ), + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6 ), # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS SUBD_METHODE =SIMP( statut='f',typ='TXM', into =("AUCUNE","UNIFORME","EXTRAPOLE"), - defaut="AUCUNE", + defaut="UNIFORME", fr="Méthode de subdivision des pas de temps en cas de non-convergence" ), b_subd_unif=BLOC(condition = "SUBD_METHODE == 'UNIFORME'", @@ -13651,7 +14042,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', fr="Coefficient multiplicateur de la 1ère subdivision"), SUBD_PAS =SIMP(statut='f',typ='I',defaut=4,val_min=2, fr="Nombre de subdivision d'un pas de temps"), - SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2, + SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,defaut=3, fr="Nombre maximum de niveau de subdivision d'un pas de temps"), SUBD_PAS_MINI=SIMP(statut='f',typ='R',val_min=0.0, fr="Pas de temps en dessous duquel on ne subdivise plus"), @@ -13676,10 +14067,6 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', fr="% itération autorisée en plus"), ), # FIN DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS - OPTI_LIST_INST =SIMP(statut='f',typ='TXM',into=("INCR_MAXI",),), - NOM_CHAM =SIMP(statut='f',typ='TXM',), - NOM_CMP =SIMP(statut='f',typ='TXM',), - VALE =SIMP(statut='f',typ='R'), ), #------------------------------------------------------------------- SCHEMA_TEMPS =FACT(statut='o', @@ -13687,30 +14074,35 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', into=("DIFF_CENT","TCHAMWA","NEWMARK","HHT","THETA_METHODE"),), b_tchamwa = BLOC(condition="SCHEMA=='TCHAMWA'", PHI =SIMP(statut='f',typ='R',defaut= 1.05),), + b_newmark = BLOC(condition="SCHEMA=='NEWMARK'", - ALPHA =SIMP(statut='f',typ='R',defaut= 0.25), - DELTA =SIMP(statut='f',typ='R',defaut= 0.5),), + BETA =SIMP(statut='f',typ='R',defaut= 0.25), + GAMMA =SIMP(statut='f',typ='R',defaut= 0.5),), + b_hht = BLOC(condition="SCHEMA=='HHT'", ALPHA =SIMP(statut='f',typ='R',defaut= -0.3 ), MODI_EQUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),),), + b_theta = BLOC(condition="SCHEMA=='THETA_METHODE'", THETA =SIMP(statut='f',typ='R',defaut= 1.,val_min=0.5,val_max=1. ),), + b_explicit= BLOC(condition="SCHEMA=='TCHAMWA'or SCHEMA=='DIFF_CENT'", STOP_CFL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),), FORMULATION =SIMP(statut='o',typ='TXM',into=("ACCELERATION",),),), + b_implicit= BLOC(condition="SCHEMA!='TCHAMWA'and SCHEMA!='DIFF_CENT'", - FORMULATION =SIMP(statut='o',max=1,typ='TXM',into=("DEPLACEMENT","VITESSE",),),), + FORMULATION =SIMP(statut='o',max=1,typ='TXM',into=("DEPLACEMENT","VITESSE","ACCELERATION"),),), ), NEWTON =FACT(statut='d', - REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ), + REAC_INCR =SIMP(statut='f',typ='I',defaut= 1,val_min=0 ), PREDICTION =SIMP(statut='f',typ='TXM',into=("TANGENTE","ELASTIQUE") ), MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ), - REAC_ITER =SIMP(statut='f',typ='I',defaut= 0), - REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0), + REAC_ITER =SIMP(statut='f',typ='I',defaut= 0,val_min=0), + REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0,val_min=0), PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0), ), SOLVEUR =FACT(statut='d', - METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ), + METHODE=SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","FETI","PETSC") ), b_mult_front =BLOC(condition= "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), ), @@ -13734,6 +14126,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100), CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), b_gcpc =BLOC(condition="METHODE == 'GCPC'",fr="Paramètres de la méthode du gradient conjugué", PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ), @@ -13743,12 +14136,16 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), ), b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", - VARIANTE =SIMP(statut='f',typ='TXM',into=("GMRES","BCGS","CR","CG","BICG","CHEBYCHEV",),defaut="GMRES" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("ILU","SOR","BJACOBI"),defaut="ILU" ), + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), + b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), - RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-8), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6), NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), - ), + ), SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), ), #------------------------------------------------------------------- @@ -13762,14 +14159,21 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', FLUX_THER_REFE =SIMP(statut='f',typ='R'), FLUX_HYD1_REFE =SIMP(statut='f',typ='R'), FLUX_HYD2_REFE =SIMP(statut='f',typ='R'), - VARI_REFE =SIMP(statut='f',typ='R'), + VARI_REFE =SIMP(statut='f',typ='R'), ), RESI_REFE_RELA =SIMP(statut='f',typ='R'), RESI_GLOB_MAXI =SIMP(statut='f',typ='R'), RESI_GLOB_RELA =SIMP(statut='f',typ='R'), ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10), ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25), + TYPE =SIMP(statut='f',typ='TXM',defaut="PIC",into=("PIC","PLATEAU")), + b_plateau =BLOC(condition = "TYPE == 'PLATEAU' ", + + PLATEAU_ITER =SIMP(statut='f',typ='I',defaut=3, val_min =2), + PLATEAU_RELA =SIMP(statut='f',typ='R',defaut=1E-3), + ), ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"), + ), #------------------------------------------------------------------- OBSERVATION =FACT(statut='f',max='**', @@ -13801,8 +14205,11 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', LIST_INST =SIMP(statut='f',typ=listr8_sdaster), PAS_OBSE =SIMP(statut='f',typ='I'), LIST_ARCH =SIMP(statut='f',typ=listis_sdaster), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),),), ), AFFICHAGE = FACT(statut='f',max=16, @@ -13825,7 +14232,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', "LAGR_ECAR","LAGR_INCR","LAGR_ITER", "MATR_ASSE", "ITER_DEBO", - "CTCD_ITER","CTCD_INFO","CTCD_GEOM","CTCD_NOEU", + "CTCD_ITER","CTCD_GEOM","CTCD_NOEU", "CTCC_GEOM","CTCC_FROT","CTCC_CONT", "SUIV_1","SUIV_2","SUIV_3","SUIV_4", ), @@ -13845,7 +14252,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), PAS_ARCH =SIMP(statut='f',typ='I' ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-6), ARCH_ETAT_INIT =SIMP(statut='f',typ='TXM',into=("OUI",)), NUME_INIT =SIMP(statut='f',typ='I'), DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)), @@ -13906,23 +14313,23 @@ DYNA_SPEC_MODAL=OPER(nom="DYNA_SPEC_MODAL",op= 147,sd_prod=table_fonction, OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG") ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # 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. # ====================================================================== # RESPONSABLE BOYERE E.BOYERE DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, @@ -13930,7 +14337,7 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, +" par superposition modale ou par sous structuration", reentrant='f', UIinfo={"groupes":("Résolution",)}, - regles=(EXCLUS('AMOR_REDUIT','AMOR_GENE','LIST_AMOR'), + regles=(EXCLUS('AMOR_REDUIT','AMOR_GENE','LIST_AMOR'), PRESENT_ABSENT('MODE_STAT','MODE_CORR'),), METHODE =SIMP(statut='f',typ='TXM',defaut="EULER", into=("EULER","NEWMARK","DEVOGE","ADAPT","ITMI") ), @@ -13941,15 +14348,18 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ), MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc) ), MODE_CORR =SIMP(statut='f',typ=(mult_elas,mode_stat_acce) ,), - + ETAT_INIT =FACT(statut='f', regles=(EXCLUS('RESU_GENE','DEPL_INIT_GENE'), EXCLUS('RESU_GENE','VITE_INIT_GENE'),), RESU_GENE =SIMP(statut='f',typ=tran_gene ), b_resu_gene =BLOC(condition = "RESU_GENE != None", INST_INIT =SIMP(statut='f',typ='R' ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ), DEPL_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene ), VITE_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene ), @@ -13971,11 +14381,11 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, LIST_ARCH =SIMP(statut='f',typ=listis_sdaster ), PAS_ARCH =SIMP(statut='f',typ='I' ), ), - + NMAX_ITER =SIMP(statut='f',typ='I',defaut= 20 ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), LAMBDA =SIMP(statut='f',typ='R',defaut= 10. ), - + EXCIT =FACT(statut='f',max='**', regles=(UN_PARMI('FONC_MULT','COEF_MULT','ACCE'), PRESENT_PRESENT('ACCE','VITE','DEPL'), @@ -14113,6 +14523,42 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, INST_INIT =SIMP(statut='f',typ='R' ), INST_FIN =SIMP(statut='f',typ='R' ), ), + + + SOLVEUR =FACT(statut='d', fr="Méthode de résolution des systèmes linéaires", + METHODE =SIMP(statut='f',typ='TXM',defaut="LDLT",into=("LDLT","MUMPS","MULT_FRONT",) ), + + + b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT", + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ), + NPREC =SIMP(statut='f',typ='I',defaut=8), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + + b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", + RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), + NPREC =SIMP(statut='f',typ='I',defaut=8), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + + + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), + PARALLELISME =SIMP(statut='f',typ='TXM',defaut="CENTRALISE", + into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")), + PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), + CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100), + CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), + ), + + TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; #& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE @@ -14262,7 +14708,7 @@ EXTR_MODE=OPER(nom="EXTR_MODE",op= 168,sd_prod=extr_mode_prod, CRIT_EXTR =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",into=("MASS_EFFE_UN","MASS_GENE") ), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14319,8 +14765,11 @@ EXTR_RESU=OPER(nom="EXTR_RESU",op=176,sd_prod=extr_resu_prod,reentrant='f', EXCLUS( 'CHAM_EXCLU','NOM_CHAM' ), ), CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO()), - PRECISION =SIMP(statut='f',typ='R',defaut=1.E-3 ), - CRITERE =SIMP(statut='f',typ='TXM',into=("RELATIF","ABSOLU"),defaut="RELATIF"), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), LIST_ARCH =SIMP(statut='f',typ=listis_sdaster), PAS_ARCH =SIMP(statut='f',typ='I'), NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), @@ -14390,7 +14839,7 @@ EXTR_TABLE=OPER(nom="EXTR_TABLE",op=173,sd_prod=extr_table_prod,reentrant='n', TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG @@ -14443,10 +14892,14 @@ FACTORISER=OPER(nom="FACTORISER",op=14,sd_prod=factoriser_prod, PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), - - # mots clés pour solveur GCPC : - PRE_COND =SIMP(statut='f',typ='TXM',defaut="LDLT_INC",into=("LDLT_INC",) ), - NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + + # mots clés pour solveur GCPC et PETSc : + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), + b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',into=(1,2) ), @@ -14682,32 +15135,6 @@ GENE_VARI_ALEA=MACRO(nom="GENE_VARI_ALEA", ), INIT_ALEA =SIMP(statut='f',typ='I'), ) -#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN -# 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. -# ====================================================================== -IMPR_CHARGE=PROC(nom="IMPR_CHARGE",op= 158, - fr="Impression des charges mécaniques de type ddl imposés et relations linéaires entre les ddl", - UIinfo={"groupes":("Fonction",)}, - UNITE =SIMP(statut='f',typ='I',defaut=30), - FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS",into=("IDEAS",) ), - VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ), - CHARGE =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**', ), -) ; #& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -14884,7 +15311,7 @@ IMPR_FONCTION=MACRO(nom="IMPR_FONCTION",op=impr_fonction_ops,sd_prod=None, ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14930,9 +15357,11 @@ IMPR_GENE=PROC(nom="IMPR_GENE",op= 157, LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ), TOUT_MODE =SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF", - into=("RELATIF","ABSOLU") ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), TOUT_CMP_GENE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), NUME_CMP_GENE =SIMP(statut='f',typ='I',max='**'), TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), @@ -15226,7 +15655,7 @@ IMPR_OAR =MACRO(nom="IMPR_OAR",op= impr_oar_ops, sd_prod=None, UNITE = SIMP(statut='f',typ='I',defaut=38), AJOUT = SIMP(statut='f', typ='TXM', defaut='NON', into=('OUI', 'NON')), ); -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15254,36 +15683,47 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39, into=("RESULTAT","IDEAS","ASTER","CASTEM","ENSIGHT","MED","GMSH") ), b_format_resultat =BLOC(condition="FORMAT=='RESULTAT'",fr="unité logique d'impression au format RESULTAT", - UNITE =SIMP(statut='f',typ='I',defaut=8), + UNITE =SIMP(statut='f',typ='I',defaut=8), ), b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="unité logique d'impression et version IDEAS", - UNITE =SIMP(statut='f',typ='I',defaut=30), + UNITE =SIMP(statut='f',typ='I',defaut=30), VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)), ), b_format_aster =BLOC(condition="FORMAT=='ASTER'",fr="unité logique d'impression au format ASTER", - UNITE =SIMP(statut='f',typ='I',defaut=26), + UNITE =SIMP(statut='f',typ='I',defaut=26), ), b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="unité logique d'impression et version CASTEM", - UNITE =SIMP(statut='f',typ='I',defaut=37), + UNITE =SIMP(statut='f',typ='I',defaut=37), NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)), ), b_format_ensight =BLOC(condition="FORMAT=='ENSIGHT'",fr="unité logique d'impression au format ENSIGHT", - UNITE =SIMP(statut='f',typ='I',defaut=31), + UNITE =SIMP(statut='f',typ='I',defaut=31), ), b_format_med =BLOC(condition="FORMAT=='MED'",fr="unité logique d'impression au format MED", - UNITE =SIMP(statut='f',typ='I',defaut=80), + UNITE =SIMP(statut='f',typ='I',defaut=80), ), b_format_gmsh =BLOC(condition="FORMAT=='GMSH'",fr="unité logique d'impression et version GMSH", - UNITE =SIMP(statut='f',typ='I',defaut=37), + UNITE =SIMP(statut='f',typ='I',defaut=37), VERSION =SIMP(statut='f',typ='R',defaut=1.2,into=(1.0,1.2)), ), + RESTREINT =FACT(statut='f',fr="Réduire le maillage et les champs imprimés sur un ensemble de mailles",max=1, + regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + TOUT_GROUP_MA =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + TOUT_GROUP_NO =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),), + MODELE =SIMP(statut='f',typ=modele_sdaster, + fr="Nécessaire s'il y a des cham_elem dans la sd_resultat à imprimer."), + ), + RESU =FACT(statut='o',max='**', regles=(AU_MOINS_UN('CHAM_GD','RESULTAT','MAILLAGE'), @@ -15304,7 +15744,7 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39, fr="Liste des paramètres de sensibilité.", ang="List of sensitivity parameters"),), - b_partie =BLOC(condition="""(AsType(RESULTAT) in (dyna_harmo, acou_harmo) or + b_partie =BLOC(condition="""(AsType(RESULTAT) in (dyna_harmo, acou_harmo) or AsType(CHAM_GD) != carte_sdaster) and FORMAT in ('CASTEM', 'GMSH', 'MED')""", PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ), ), @@ -15329,8 +15769,11 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39, LIST_INST =SIMP(statut='f',typ=listr8_sdaster), b_acce_reel =BLOC(condition="(FREQ != None)or(LIST_FREQ != None)or(INST != None)or(LIST_INST != None)", - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ), ), ### @@ -15659,7 +16102,7 @@ INFO_EXEC_ASTER=OPER(nom="INFO_EXEC_ASTER",op=35,sd_prod=table_sdaster, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG @@ -15697,8 +16140,11 @@ INFO_FONCTION=MACRO(nom="INFO_FONCTION",op=info_fonction_ops,sd_prod=info_foncti FONCTION =SIMP(statut='o',typ=fonction_sdaster ), INST_INIT =SIMP(statut='f',typ='R',fr="Instant initial définissant le début du signal" ), INST_FIN =SIMP(statut='f',typ='R',fr="Instant final définissant la fin du signal" ), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3,val_min=0.E+0 ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R'),), ), NOCI_SEISME =FACT(statut='f', regles=(UN_PARMI('FONCTION','SPEC_OSCI',),), @@ -15728,8 +16174,11 @@ INFO_FONCTION=MACRO(nom="INFO_FONCTION",op=info_fonction_ops,sd_prod=info_foncti BORNE_INF =SIMP(statut='f',typ='R',defaut= 0.05E+0 ), BORNE_SUP =SIMP(statut='f',typ='R',defaut= 0.95E+0 ), b_acce_reel =BLOC(condition="(INST_INIT != None)or(INST_FIN != None)or(FREQ_INIT != None)or(FREQ_FIN != None)", - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,val_min=0.E+0), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R'),), ), ), MAX =FACT(statut='f',fr="Extrémas locaux d'une fonction", @@ -15743,8 +16192,11 @@ INFO_FONCTION=MACRO(nom="INFO_FONCTION",op=info_fonction_ops,sd_prod=info_foncti FONCTION =SIMP(statut='o',typ=fonction_sdaster), INST_INIT =SIMP(statut='f',typ='R',fr="Instant initial définissant le début du signal" ), INST_FIN =SIMP(statut='f',typ='R',fr="Instant final définissant la fin du signal" ), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3,val_min=0.E+0 ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R'),), ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) @@ -15869,7 +16321,7 @@ INTE_MAIL_3D=OPER(nom="INTE_MAIL_3D",op=96,sd_prod=surface_sdaster, PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15920,11 +16372,15 @@ LIRE_CHAMP=OPER(nom="LIRE_CHAMP",op= 192,sd_prod=lire_champ_prod, INST =SIMP(statut='f',typ='R',fr="Instant associé",ang="Instant" ), # b_precision =BLOC(condition="(INST != None)", - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3, - fr="Précision sur le choix de l'instant associé",ang="Accuracy over instant choice" ), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"), - fr="Critère de précision sur le choix de l'instant associé", - ang="Accuracy criterium over instant choice" ),), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",), + fr="Critère de précision sur le choix de l'instant associé", + ang="Accuracy criterium over instant choice" ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6, + fr="Précision sur le choix de l'instant associé",ang="Accuracy over instant choice" ),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R', + fr="Précision sur le choix de l'instant associé",ang="Accuracy over instant choice" ),),), # NOM_MAIL_MED =SIMP(statut='f',typ='TXM',), ), @@ -16198,7 +16654,7 @@ LIRE_MISS_3D=OPER(nom="LIRE_MISS_3D",op= 163,sd_prod=lire_miss_3d_prod, TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="TRANS",into=("TRANS","HARMO") ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -16234,13 +16690,14 @@ LIRE_PLEXUS=OPER(nom="LIRE_PLEXUS",op= 184,sd_prod=evol_char, INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), LIST_INST =SIMP(statut='f',typ=listr8_sdaster ), b_prec_crit =BLOC(condition = "LIST_INST != None or INST != None", - PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF", - into=("RELATIF","ABSOLU") ), - ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),),), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 02/06/2008 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -16385,6 +16842,8 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n', UNITE =SIMP(statut='f',typ='I',defaut= 19 ), # TEST =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ), NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=l_nom_cham_pas_elga()), + PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",), + fr="Affecte des valeurs nulles la ou le champ n'est pas defini"), FORMAT_IDEAS =FACT(statut='f',max='**', regles=(UN_PARMI('POSI_INST','POSI_FREQ'),), NOM_CHAM =SIMP(statut='o',typ='TXM',into=l_nom_cham_pas_elga()), @@ -16400,6 +16859,12 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n', POSI_FREQ =SIMP(statut='f',typ='I',min=2,max=2), NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),), ), + + b_mode =BLOC(condition="((TYPE_RESU=='MODE_MECA')or(TYPE_RESU=='MODE_MECA_C') )and (FORMAT=='IDEAS')", + NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster),max=1, + fr="Utile en dynamique pour pouvoir imposer la numérotation des cham_no."), + ), + # 1-3 ensight : # ------------- b_ensight =BLOC(condition="FORMAT=='ENSIGHT'", @@ -16443,8 +16908,11 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n', LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)or(FREQ != None)or(LIST_FREQ != None)", - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ), ), ) ; @@ -16481,7 +16949,7 @@ LIRE_TABLE=MACRO(nom="LIRE_TABLE",op=lire_table_ops,sd_prod=table_sdaster, TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 21/10/2008 AUTEUR NISTOR I.NISTOR # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG @@ -16502,16 +16970,18 @@ LIRE_TABLE=MACRO(nom="LIRE_TABLE",op=lire_table_ops,sd_prod=table_sdaster, # RESPONSABLE ANDRIAM H.ANDRIAMBOLOLONA MAC_MODES=OPER(nom="MAC_MODES",op= 141,sd_prod=table_sdaster, - fr="Normalisation de modes propres", + fr="Critere orthogonalite de modes propres", reentrant='n', - UIinfo={"groupes":("Résolution",)}, - BASE_1 =SIMP(statut='o',typ=(mode_meca,mode_flamb,base_modale) ), - BASE_2 =SIMP(statut='o',typ=(mode_meca,mode_flamb,base_modale) ), - MATR_ASSE =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_depl_c) ), + UIinfo={"groupes":("Résolution",)}, + regles=(PRESENT_PRESENT('IERI','MATR_ASSE'),), + BASE_1 =SIMP(statut='o',typ=(mode_meca,mode_meca_c,mode_flamb,base_modale) ), + BASE_2 =SIMP(statut='o',typ=(mode_meca,mode_meca_c,mode_flamb,base_modale) ), + MATR_ASSE =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_depl_c) ), + IERI =SIMP(statut='f',typ='TXM',into=("OUI",),), TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 20/10/2008 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -16561,12 +17031,12 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada # # 1. Le niveau d'information # - INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2,3,4)), # # 2. Version de HOMARD # - VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V8_11", - into=("V8_11", "V8_N", "V8_N_PERSO"), + VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V9_5", + into=("V9_5", "V9_N", "V9_N_PERSO"), fr="Version de HOMARD", ang="HOMARD release"), # @@ -16692,12 +17162,17 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada b_precision = BLOC(condition="(INST != None)", fr="Choix de la précision du choix de l'instant", ang="Selection for instant choice", - PRECISION = SIMP(statut='f',typ='R',defaut=1.0E-3, - fr="Précision sur le choix de l'instant associé", - ang="Accuracy over instant choice" ), - CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",), fr="Critère de précision sur le choix de l'instant associé", - ang="Accuracy criterium over instant choice" ), + ang="Accuracy criterium over instant choice"), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6, + fr="Précision relative sur le choix de l'instant associé", + ang="Relative accuracy over instant choice"),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R', + fr="Précision absolue sur le choix de l'instant associé", + ang="Absolute accuracy over instant choice"),), ), # ), @@ -16969,13 +17444,17 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada fr="Choix de la précision du choix de l'instant", ang="Selection for instant choice", # - PRECISION = SIMP(statut='f',typ='R',defaut=1.0E-3, - fr="Précision sur le choix de l'instant associé", - ang="Accuracy over instant choice" ), -# - CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"), - fr="Critère de précision sur le choix de l'instant associé", - ang="Accuracy criterium over instant choice" ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",), + fr="Critère de précision sur le choix de l'instant associé", + ang="Accuracy criterium over instant choice"), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6, + fr="Précision relative sur le choix de l'instant associé", + ang="Relative accuracy over instant choice"),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R', + fr="Précision absolue sur le choix de l'instant associé", + ang="Absolute accuracy over instant choice"),), # ), # @@ -17022,7 +17501,7 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada ang="Incompatible elements for HOMARD" ), # ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -17110,7 +17589,6 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=ma COMP_INCR =FACT(statut='f', RELATION =SIMP(statut='o',typ='TXM',into=("VMIS_ISOT_TRAC",) ), - VMIS_ISOT_TRAC =SIMP(statut='c',typ='I',defaut= 2,into=( 2 ,) ), RESI_INTE_RELA =SIMP(statut='f',typ='R' ,defaut= 1.0E-6), ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), @@ -17121,8 +17599,6 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=ma COMP_ELAS =FACT(statut='f', RELATION =SIMP(statut='o',typ='TXM',into=("ELAS","ELAS_VMIS_TRAC") ), - ELAS =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ), - ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ), RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6), ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ), @@ -17131,7 +17607,33 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=ma ), SOLVEUR =FACT(statut='d', - METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ), + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ), + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + RESI_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6,), + PARALLELISME =SIMP(statut='f',typ='TXM',defaut="CENTRALISE", + into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")), + PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), + CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100), + CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), + + b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), + b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), + NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), + ), b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), ), @@ -17177,13 +17679,11 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=ma regles=(EXCLUS('NUME_INST_INIT','INST_INIT'), EXCLUS('NUME_INST_FIN','INST_FIN'),), LIST_INST =SIMP(statut='o',typ=listr8_sdaster), - EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE", - into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ), NUME_INST_INIT =SIMP(statut='f',typ='I'), INST_INIT =SIMP(statut='f',typ='R'), NUME_INST_FIN =SIMP(statut='f',typ='I'), INST_FIN =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ), + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6 ), # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS SUBD_METHODE =SIMP( statut='f',typ='TXM', into =("AUCUNE","UNIFORME","EXTRAPOLE"), @@ -17415,7 +17915,7 @@ MACR_ASCOUF_MAIL=MACRO(nom="MACR_ASCOUF_MAIL",op=macr_ascouf_mail_ops,sd_prod=ma INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -17519,7 +18019,6 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_ COMP_INCR =FACT(statut='f', RELATION =SIMP(statut='o',typ='TXM',into=("VMIS_ISOT_TRAC",) ), - VMIS_ISOT_TRAC =SIMP(statut='c',typ='I',defaut= 2,into=( 2 ,) ), RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6), ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut=10), ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut=0), @@ -17529,8 +18028,6 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_ COMP_ELAS =FACT(statut='f', RELATION =SIMP(statut='o',typ='TXM',into=("ELAS","ELAS_VMIS_TRAC") ), - ELAS =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ), - ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ), RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6), ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ), @@ -17551,7 +18048,33 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_ ), SOLVEUR =FACT(statut='d', - METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ), + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ), + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + RESI_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6,), + PARALLELISME =SIMP(statut='f',typ='TXM',defaut="CENTRALISE", + into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")), + PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), + CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100), + CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), + + b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), + b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), + NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), + ), b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), ), @@ -17596,13 +18119,11 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_ regles=(EXCLUS('NUME_INST_INIT','INST_INIT'), EXCLUS('NUME_INST_FIN','INST_FIN'),), LIST_INST =SIMP(statut='o',typ=listr8_sdaster), - EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE", - into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ), NUME_INST_INIT =SIMP(statut='f',typ='I'), INST_INIT =SIMP(statut='f',typ='R'), NUME_INST_FIN =SIMP(statut='f',typ='I'), INST_FIN =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ), + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6 ), # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS SUBD_METHODE =SIMP( statut='f',typ='TXM', into =("AUCUNE","UNIFORME","EXTRAPOLE"), @@ -17769,23 +18290,23 @@ MACR_ASPIC_MAIL=MACRO(nom="MACR_ASPIC_MAIL",op= macr_aspic_mail_ops,sd_prod=mail INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/06/2008 AUTEUR FLEJOU J-L.FLEJOU # 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. +# 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. # ====================================================================== # RESPONSABLE FLEJOU J.L.FLEJOU @@ -17793,47 +18314,60 @@ from Macro.macr_cara_poutre_ops import macr_cara_poutre_ops MACR_CARA_POUTRE=MACRO(nom="MACR_CARA_POUTRE",op=macr_cara_poutre_ops,sd_prod=table_sdaster, reentrant='n', - UIinfo={"groupes":("Modélisation",)}, - fr="Calculer les caractéristiques d'une section transversale de poutre à partir d'un maillage 2D de la section", - regles=(EXCLUS('SYME_X','GROUP_MA_BORD'), - EXCLUS('SYME_Y','GROUP_MA_BORD'),), - - UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut= 20 ), - ORIG_INER =SIMP(statut='f',typ='R',max=3,defaut=(0.E+0,0.E+0), - fr="Point par rapport auquel sont calculées les inerties"), - INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), - - SYME_X =SIMP(statut='f',typ='TXM',into=("OUI",),fr="demi maillage par rapport a x=0"), - SYME_Y =SIMP(statut='f',typ='TXM',into=("OUI",),fr="demi maillage par rapport a y=0"), - - GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', - fr="Calcul des caractéristiques équivalentes a plusieurs sections disjointes"), - - GROUP_MA_BORD =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', - fr="Groupe(s) de mailles linéiques, bord(s) de(s) section(s)"), - - b_gma_bord = BLOC( condition = "GROUP_MA_BORD != None", - fr=" calcul des carac. mecaniques", - regles=(UN_PARMI('NOEUD','GROUP_NO')), - - NOEUD =SIMP(statut='f',typ=no, max='**', - fr="Simplement pour empecher des pivots nuls le cas echeant. Fournir un noeud quelconque"), - GROUP_NO =SIMP(statut='f',typ=grno,max='**', - fr="Simplement pour empecher des pivots nuls le cas echeant. Fournir un noeud quelconque"), - GROUP_MA_INTE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', - fr="groupes de mailles linéiques bordant des trous dans la section"), - ), - - b_reseau = BLOC( condition ="""(GROUP_MA_BORD != None) and (GROUP_MA != None)""", - fr=" calcul des coef de cisaillement équivalents a un reseau de poutres", - regles=(ENSEMBLE('LONGUEUR','LIAISON','MATERIAU') ,), - LONGUEUR =SIMP(statut='f',typ='R',fr="Longueur du réseau de poutres"), - MATERIAU =SIMP(statut='f',typ=mater_sdaster,fr="Materiau elastique lineaire du reseau"), - LIAISON =SIMP(statut='f',typ='TXM',into=("ROTULE","ENCASTREMENT"), - fr="type de conditions aux limites sur le plancher supérieur" ), - ), - ) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE + UIinfo={"groupes":("Modélisation",)}, + fr="Calculer les caractéristiques d'une section transversale de poutre à partir d'un maillage 2D de la section", + regles=( EXCLUS('SYME_X','GROUP_MA_BORD'), + EXCLUS('SYME_Y','GROUP_MA_BORD'), + ), + + MAILLAGE =SIMP(statut='f',typ=maillage_sdaster, + fr="Nom du concept maillage"), + b_maillage=BLOC( condition = "MAILLAGE == None", + regles=( PRESENT_PRESENT('FORMAT','UNITE') ), + FORMAT =SIMP(statut='f',typ='TXM',defaut="ASTER",into=("ASTER","MED"), + fr="Format du fichier"), + UNITE =SIMP(statut='f',typ='I',defaut= 20, + fr="Unite correspondant au format du fichier maillage"), + ), + + ORIG_INER =SIMP(statut='f',typ='R',max=3,defaut=(0.E+0,0.E+0), + fr="Point par rapport auquel sont calculées les inerties"), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + + SYME_X =SIMP(statut='f',typ='TXM',into=("OUI",), + fr="demi maillage par rapport a x=0"), + SYME_Y =SIMP(statut='f',typ='TXM',into=("OUI",), + fr="demi maillage par rapport a y=0"), + + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="Calcul des caractéristiques équivalentes a plusieurs sections disjointes"), + + GROUP_MA_BORD =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="Groupe(s) de mailles linéiques, bord(s) de(s) section(s)"), + + b_gma_bord =BLOC( condition = "GROUP_MA_BORD != None", + fr=" calcul des carac. mecaniques", + regles=(UN_PARMI('NOEUD','GROUP_NO')), + NOEUD =SIMP(statut='f',typ=no, max='**', + fr="Simplement pour empecher des pivots nuls le cas echeant. Fournir un noeud quelconque"), + GROUP_NO =SIMP(statut='f',typ=grno,max='**', + fr="Simplement pour empecher des pivots nuls le cas echeant. Fournir un noeud quelconque"), + GROUP_MA_INTE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="groupes de mailles linéiques bordant des trous dans la section"), + ), + + b_reseau = BLOC( condition ="""(GROUP_MA_BORD != None) and (GROUP_MA != None)""", + fr=" calcul des coef de cisaillement équivalents a un reseau de poutres", + regles=(ENSEMBLE('LONGUEUR','LIAISON','MATERIAU') ,), + LONGUEUR =SIMP(statut='f',typ='R', + fr="Longueur du réseau de poutres"), + MATERIAU =SIMP(statut='f',typ=mater_sdaster, + fr="Materiau elastique lineaire du reseau"), + LIAISON =SIMP(statut='f',typ='TXM',into=("ROTULE","ENCASTREMENT"), + fr="type de conditions aux limites sur le plancher supérieur" ), + ), +) +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG @@ -17891,8 +18425,11 @@ MACR_ECLA_PG=MACRO(nom="MACR_ECLA_PG",op=macr_ecla_pg_ops,sd_prod=macr_ecla_pg_p LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), LIST_INST =SIMP(statut='f',typ=listr8_sdaster), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ) #& MODIF COMMANDE DATE 06/05/2008 AUTEUR CORUS M.CORUS # CONFIGURATION MANAGEMENT OF EDF VERSION @@ -17936,7 +18473,7 @@ MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op= 81,sd_prod=macr_elem_dyna, VECT_ASSE_GENE =SIMP(statut='o',typ=vect_asse_gene ), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 21/10/2008 AUTEUR NISTOR I.NISTOR # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -17981,6 +18518,8 @@ MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,reentrant= ), MASS_MECA =FACT(statut='f', ), + AMOR_MECA =FACT(statut='f', + ), CAS_CHARGE =FACT(statut='f',max='**', NOM_CAS =SIMP(statut='o',typ='TXM'), SUIV =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), @@ -18438,7 +18977,7 @@ MACR_FIAB_IMPR=MACRO(nom="MACR_FIAB_IMPR",op=macr_fiab_impr_ops, ), # ); -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 20/10/2008 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -18467,12 +19006,12 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops, # # 1. Le niveau d'information # - INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2,3,4)), # # 2. Version de HOMARD # - VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V8_11", - into=("V8_11", "V8_N", "V8_N_PERSO"), + VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V9_5", + into=("V9_5", "V9_N", "V9_N_PERSO"), fr="Version de HOMARD", ang="HOMARD release"), # @@ -18499,9 +19038,9 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops, fr="Information complémentaire sur la frontière", ang="Further information about boundary", # - GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', - fr="Groupes de mailles définissant la frontière", - ang="Mesh groups which define the boundary" ), + GROUP_MA_FRONT = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="Groupes de mailles définissant la frontière", + ang="Mesh groups which define the boundary" ), # ) , # @@ -18544,7 +19083,7 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops, fr="Acceptation d'éléments incompatibles avec HOMARD", ang="Incompatible elements for HOMARD" ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -18582,8 +19121,11 @@ MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",op=macr_lign_coupe_ops,sd_prod=table LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), LIST_INST =SIMP(statut='f',typ=listr8_sdaster), - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ), # extraction des résultats @@ -18664,10 +19206,6 @@ MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",op=macr_lign_coupe_ops,sd_prod=table ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE -#MACRO_BASCULE_SCHEMA = MACRO(nom="MACRO_BASCULE_SCHEMA", op=macro_bascule_schema_ops, sd_prod=evol_noli,reentrant='f', - - #& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -18753,7 +19291,7 @@ MACRO_ELAS_MULT=MACRO(nom="MACRO_ELAS_MULT",op=macro_elas_mult_ops,sd_prod=macro INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2)), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 21/10/2008 AUTEUR NISTOR I.NISTOR # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG @@ -18777,7 +19315,8 @@ from Macro.macro_expans_ops import macro_expans_ops def macro_expans_prod(self, MODELE_MESURE, RESU_NX, RESU_EX, RESU_ET, RESU_RD, **args): RESU_EXP = MODELE_MESURE['MESURE'] - for res in (RESU_NX, RESU_EX, RESU_ET, RESU_RD): + self.type_sdprod(RESU_NX, mode_meca) + for res in (RESU_EX, RESU_ET, RESU_RD): if isinstance(res, CO): if AsType(RESU_EXP) == mode_meca: self.type_sdprod(res, mode_meca) @@ -18797,6 +19336,8 @@ MACRO_EXPANS=MACRO(nom="MACRO_EXPANS", MODELE = SIMP(statut='o',typ=(modele_sdaster) ), BASE = SIMP(statut='o',typ=(mode_meca,base_modale,) ), NUME_MODE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**',defaut=0), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**',defaut=0), + ), MODELE_MESURE = FACT(statut='o', MODELE = SIMP(statut='o',typ=(modele_sdaster) ), @@ -18804,6 +19345,8 @@ MACRO_EXPANS=MACRO(nom="MACRO_EXPANS", NOM_CHAM = SIMP(statut='f',typ='TXM',defaut="DEPL", into=("DEPL","VITE","ACCE","SIEF_NOEU","EPSI_NOEU_DEPL",) ), NUME_MODE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**',defaut=0), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**',defaut=0), + ), NUME_DDL = SIMP(statut='f',typ=(nume_ddl_sdaster)), RESU_NX = SIMP(statut='f',typ=(mode_meca,dyna_harmo, CO)), @@ -18823,7 +19366,7 @@ MACRO_EXPANS=MACRO(nom="MACRO_EXPANS", ), ), ) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -18906,7 +19449,7 @@ MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",op=macro_matr_ajou_ops,sd_prod=macro VECTEUR =SIMP(statut='o',typ=CO), ), SOLVEUR =FACT(statut='d', - METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ), + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ), b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), ), @@ -18925,12 +19468,38 @@ MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",op=macro_matr_ajou_ops,sd_prod=macro RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), ), + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + RESI_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6,), + PARALLELISME =SIMP(statut='f',typ='TXM',defaut="CENTRALISE", + into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")), + PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), + CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100), + CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), + + b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), + b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), + NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), + ), ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), NOEUD_DOUBLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), AVEC_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), ) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 17/11/2008 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -18964,13 +19533,13 @@ def macro_matr_asse_prod(self,NUME_DDL,MATR_ASSE,**args): if opti in ( "RIGI_MECA","RIGI_FLUI_STRU","RIGI_MECA_LAGR" , "MASS_MECA" , "MASS_FLUI_STRU" ,"RIGI_GEOM" ,"RIGI_ROTA", - "AMOR_MECA","IMPE_MECA","MASS_ID_MDEP_R","MASS_ID_MDNS_R", + "AMOR_MECA","IMPE_MECA", "ONDE_FLUI","MASS_MECA_DIAG","MECA_GYRO" ) : t=matr_asse_depl_r if opti in ( "RIGI_ACOU","MASS_ACOU","AMOR_ACOU",) : t=matr_asse_pres_c if opti in ( "RIGI_THER","MASS_THER","RIGI_THER_CONV" , - "RIGI_THER_CONV_D","MASS_ID_MTEM_R","MASS_ID_MTNS_R",) : t=matr_asse_temp_r + "RIGI_THER_CONV_D",) : t=matr_asse_temp_r if opti == "RIGI_MECA_HYST" : t= matr_asse_depl_c @@ -18989,19 +19558,23 @@ MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops, CHAR_CINE =SIMP(statut='f',typ=(char_cine_meca,char_cine_ther,char_cine_acou) ), NUME_DDL =SIMP(statut='o',typ=(nume_ddl_sdaster,CO)), SOLVEUR =FACT(statut='d', - METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS") ), + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ), b_mult_front =BLOC(condition="METHODE=='MULT_FRONT'",fr="Paramètres associés à la méthode multifrontale", RENUM =SIMP(statut='f',typ='TXM',into=("MD","MDA","METIS"),defaut="METIS" ), ), b_ldlt =BLOC(condition="METHODE=='LDLT'",fr="Paramètres associés à la méthode LDLT", RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ), ), - b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), b_gcpc =BLOC(condition="METHODE=='GCPC'",fr="Paramètres associés à la méthode gradient conjugué", RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ), ), + b_petsc =BLOC(condition = "METHODE == 'PETSC'",fr="Paramètres de la méthode PETSC", + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + ), ), MATR_ASSE =FACT(statut='o',max='**', @@ -19012,8 +19585,7 @@ MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops, "ONDE_FLUI","RIGI_FLUI_STRU","MASS_FLUI_STRU", "RIGI_ROTA","RIGI_GEOM","RIGI_MECA_LAGR","MECA_GYRO", "RIGI_THER","MASS_THER", - "RIGI_ACOU","MASS_ACOU","AMOR_ACOU", - "MASS_ID_MTEM_R","MASS_ID_MTNS_R","MASS_ID_MDEP_R","MASS_ID_MDNS_R",) + "RIGI_ACOU","MASS_ACOU","AMOR_ACOU",) ), b_rigi_meca = BLOC( condition = "OPTION=='RIGI_MECA'", @@ -19252,146 +19824,6 @@ MACRO_PROJ_BASE=MACRO(nom="MACRO_PROJ_BASE",op=macro_proj_base_ops, ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 03/06/2008 AUTEUR BODEL C.BODEL -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2006 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. -# ====================================================================== -# RESPONSABLE BODEL C.BODEL - -from Macro.macro_visu_meidee_ops import macro_visu_meidee_ops - -def macro_visu_meidee_prod(self,RESU_FLUDELA,RESU_TURBULENT,RESU_MODIFSTRU,**args): - - if RESU_FLUDELA != None: - for res in RESU_FLUDELA: - self.type_sdprod(res['TABLE'],table_sdaster) - if RESU_TURBULENT != None: - for res in RESU_TURBULENT: - self.type_sdprod(res['TABLE'],table_fonction) - - MTYPES = { - 'MODELE' : modele_sdaster, - 'MODE_MECA' : mode_meca, - 'NUME_DDL' : nume_ddl_sdaster, - 'MAILLAGE' : maillage_sdaster, - 'MASS_MECA' : matr_asse_depl_r, - 'RIGI_MECA' : matr_asse_depl_r, - 'AMOR_MECA' : matr_asse_depl_r, - 'MACR_ELEM' : macr_elem_stat, - 'PROJ_MESU' : mode_gene, - } - if RESU_MODIFSTRU != None: - for res in RESU_MODIFSTRU: - for mc, typ in MTYPES.items(): - if res[mc]: - self.type_sdprod(res[mc], typ) - return None - - -MACRO_VISU_MEIDEE=MACRO(nom = 'MACRO_VISU_MEIDEE', - op = macro_visu_meidee_ops, - sd_prod = macro_visu_meidee_prod, - reentrant = 'n', - UIinfo = {"groupes":("Outils métier",)}, - fr = "Outil de post-traitement interactif pour Meidee ", - UNITE_FIMEN = SIMP( statut='f',typ='I',max='**' ), - INTERACTIF = SIMP( statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI' ), - RESU_FLUDELA = FACT( statut='f',max='**', - TABLE = SIMP(statut='f', typ=CO), - ), - RESU_TURBULENT = FACT( statut='f',max='**', - TABLE = SIMP(statut='f', typ=CO), - ), - RESU_MODIFSTRU = FACT( statut='f', max=1, - MODELE=SIMP(statut='f',typ=CO,defaut=None), - MODE_MECA=SIMP(statut='f',typ=CO,defaut=None), - MAILLAGE=SIMP(statut='f',typ=CO,defaut=None), - NUME_DDL=SIMP(statut='f',typ=CO,defaut=None), - MASS_MECA=SIMP(statut='f',typ=CO,defaut=None), - RIGI_MECA=SIMP(statut='f',typ=CO,defaut=None), - AMOR_MECA=SIMP(statut='f',typ=CO,defaut=None), - MACR_ELEM=SIMP(statut='f',typ=CO,defaut=None), - PROJ_MESU=SIMP(statut='f',typ=CO,defaut=None), - ), - UNITE_RESU = SIMP( statut='f',typ='I'), - - b_inter = BLOC( condition="INTERACTIF=='NON'", - - EXPANSION = FACT( statut='f',max='**', - CALCUL = SIMP(statut='o',typ=mode_meca), - NUME_MODE_CALCUL = SIMP(statut='f',typ='I',validators=NoRepeat(), - max='**',defaut=0), - MESURE = SIMP(statut='o',typ=mode_meca), - NUME_MODE_MESURE = SIMP(statut='f',typ='I',validators=NoRepeat(), - max='**',defaut=0), - RESOLUTION = SIMP(statut='f',typ='TXM',defaut='SVD',into=('SVD','LU')), - b_reso = BLOC(condition = "RESOLUTION=='SVD'", - EPS = SIMP(statut='f',typ='R', defaut = 0.) - ) - ), - FLUIDE_ELASTIQUE = FACT( statut='f', max='**', - MESURE1 = SIMP(statut='o',typ=mode_meca), - MESURE2 = SIMP(statut='o',typ=mode_meca), - MESURE3 = SIMP(statut='o',typ=mode_meca), - RESU_EXPANSION = SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON')), - b_base = BLOC(condition = "RESU_EXPANSION=='NON'", - BASE = SIMP(statut='o',typ=mode_meca), - ) - ), - TURBULENT = FACT( statut='f',max='**', - ALPHA = SIMP(statut='f',typ='R', defaut = 0.), - EPS = SIMP(statut='f',typ='R', defaut = 0.), - OBSERVABILITE = SIMP(statut='o',typ=(mode_meca, base_modale)), - COMMANDABILITE = SIMP(statut='o',typ=(mode_meca, base_modale)), - INTE_SPEC = SIMP(statut='o',typ=table_sdaster), - RESU_EXPANSION = SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON')), - b_base = BLOC(condition = "RESU_EXPANSION=='NON'", - BASE = SIMP(statut='o',typ=mode_meca), - ), - ), - MODIFSTRUCT = FACT( statut='f', max=1, - MESURE = SIMP(statut='o', typ=mode_meca), - MODELE_SUP = SIMP(statut='o', typ=modele_sdaster), - MATR_RIGI = SIMP(statut='o', typ=matr_asse_depl_r), - RESOLUTION = SIMP(statut='o', typ='TXM', - into=('ES', 'LMME')), - b_resol = BLOC( condition = "RESOLUTION=='LMME'", - MATR_MASS = SIMP(statut='o', typ=matr_asse_depl_r), - ), - NUME_MODE_MESU = SIMP(statut='o', typ='I',max='**'), - NUME_MODE_CALCUL = SIMP(statut='o', typ='I',max='**'), - MAILLE_MODIF = SIMP(statut='o', typ=maillage_sdaster), - MODELE_MODIF = SIMP(statut='o', typ=modele_sdaster), - ), - - # Si on realise une modification structurale, on donne les DDL capteurs et interface - b_inter = BLOC( condition="MODIFSTRUCT!=None", - GROUP_NO_CAPTEURS = FACT( statut='f', max='**', - GROUP_NO = SIMP(statut='f',typ='TXM', max='**'), - NOM_CMP = SIMP(statut='f',typ='TXM', max='**'), - ), - GROUP_NO_EXTERIEUR = FACT( statut='f', max='**', - GROUP_NO = SIMP(statut='f',typ='TXM', max='**'), - NOM_CMP = SIMP(statut='f',typ='TXM', max='**'), - ), - ), - ), - ); - #& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -19560,7 +19992,7 @@ MAJ_CATA=PROC(nom="MAJ_CATA",op=20, ELEMENT =FACT(statut='f',), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -19658,19 +20090,24 @@ MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas, RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), - RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), + RESI_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6,), PARALLELISME =SIMP(statut='f',typ='TXM',defaut="CENTRALISE", into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")), PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100), CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", - VARIANTE =SIMP(statut='f',typ='TXM',into=("GMRES","BCGS","CR","CG","BICG","CHEBYCHEV",),defaut="GMRES" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("ILU","SOR","BJACOBI"),defaut="ILU" ), + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), + b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), - RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-8), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), ), ), @@ -19980,23 +20417,23 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op= 45,sd_prod=mode_iter_simult_pr INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 05/05/2008 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # 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. # ====================================================================== # RESPONSABLE NISTOR I.NISTOR @@ -20045,9 +20482,66 @@ MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_stat_prod, regles=(UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),), TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",) ), AVEC_CMP =SIMP(statut='f',typ='TXM',max='**'), - SANS_CMP =SIMP(statut='f',typ='TXM',max='**'), - ), + SANS_CMP =SIMP(statut='f',typ='TXM',max='**'), + ), + ), + + + SOLVEUR =FACT(statut='d', fr="Méthode de résolution des systèmes linéaires", + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ), + + + b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT", + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ), + NPREC =SIMP(statut='f',typ='I',defaut=8), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + + b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", + RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), + NPREC =SIMP(statut='f',typ='I',defaut=8), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + + + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), + PARALLELISME =SIMP(statut='f',typ='TXM',defaut="CENTRALISE", + into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")), + PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), + CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100), + CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), + + b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), + b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), + NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), + ), + + b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué", + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ), + NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6), + NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), + ), ), + + + TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ), ) ; @@ -20085,23 +20579,23 @@ MODI_BASE_MODALE=OPER(nom="MODI_BASE_MODALE",op= 149,sd_prod=mode_meca, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 06/05/2008 AUTEUR KHAM M.KHAM +#& MODIF COMMANDE DATE 14/10/2008 AUTEUR REZETTE C.REZETTE # 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. # ====================================================================== # RESPONSABLE PELLET J.PELLET MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster, @@ -20111,7 +20605,7 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster, UIinfo={"groupes":("Maillage",)}, regles=(AU_MOINS_UN('ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE', - 'TRANSLATION','ROTATION','MODI_BASE','ECHELLE','ORIE_SHB8','SYMETRIE', + 'TRANSLATION','ROTATION','MODI_BASE','ECHELLE','ORIE_SHB','SYMETRIE', 'ORIE_LIGNE',), PRESENT_ABSENT('ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE', @@ -20150,7 +20644,7 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster, DEFORME =FACT(statut='f', OPTION =SIMP(statut='o',typ='TXM',into=("TRAN","TRAN_APPUI") ), DEPL =SIMP(statut='o',typ=cham_no_sdaster ), - b_deform =BLOC(condition = "OPTION=='TRAN_APPUI'", + b_deform =BLOC(condition = "OPTION=='TRAN_APPUI'", GROUP_NO_APPUI = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**' ), GROUP_NO_STRU = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**' ),), ), @@ -20173,31 +20667,32 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster, ), ORIE_PEAU_2D =FACT(statut='f',max='**', GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + GROUP_MA_SURF =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), ), ORIE_PEAU_3D =FACT(statut='f',max='**', GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), GROUP_MA_VOLU =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), ), - ORIE_SHB8 =FACT(statut='f',max=1, + ORIE_SHB =FACT(statut='f',max=1, 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'), - PRESENT_PRESENT('GROUP_NO','VECT_NORM'),), GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), VECT_NORM =SIMP(statut='f',typ='R',max=3), - NOEUD =SIMP(statut='f',typ=no), - GROUP_NO =SIMP(statut='f',typ=grno), + b_vect_norm =BLOC(condition = "VECT_NORM != None", + regles=UN_PARMI('NOEUD','GROUP_NO'), + NOEUD =SIMP(statut='f',typ=no), + GROUP_NO =SIMP(statut='f',typ=grno), + ), ), ORIE_LIGNE =FACT(statut='f',max='**', - regles=(EXCLUS('NOEUD','GROUP_NO'), - PRESENT_PRESENT('NOEUD','VECT_TANG'), - PRESENT_PRESENT('GROUP_NO','VECT_TANG'),), GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), VECT_TANG =SIMP(statut='f',typ='R',max=3), - NOEUD =SIMP(statut='f',typ=no), - GROUP_NO =SIMP(statut='f',typ=grno), + b_vect_tang =BLOC(condition = "VECT_TANG != None", + regles=UN_PARMI('NOEUD','GROUP_NO'), + NOEUD =SIMP(statut='f',typ=no), + GROUP_NO =SIMP(statut='f',typ=grno), + ), ), PLAQ_TUBE =FACT(statut='f', DEXT =SIMP(statut='o',typ='R' ), @@ -20223,7 +20718,7 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster, VECT_X =SIMP(statut='o',typ='R',min=2,max=3), VECT_Y =SIMP(statut='f',typ='R',min=2,max=3), ), - ECHELLE =SIMP(statut='f',typ='R',), + ECHELLE =SIMP(statut='f',typ='R',), TRANSLATION =SIMP(statut='f',typ='R',min=2,max=3), ROTATION =FACT(statut='f',max='**', POIN_1 =SIMP(statut='o',typ='R',min=2,max=3), @@ -20309,7 +20804,7 @@ MODI_OBSTACLE=OPER(nom="MODI_OBSTACLE",op=182,sd_prod=table_fonction, V_USUR_OBST =SIMP(statut='f',typ='R',max='**'), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -20349,8 +20844,11 @@ MODI_REPERE=OPER(nom="MODI_REPERE",op=191,sd_prod=modi_repere_prod,reentrant='n' LIST_INST =SIMP(statut='f',typ=listr8_sdaster), LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), MODI_CHAM =FACT(statut='o',max='**', GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), @@ -20443,7 +20941,7 @@ NORM_MODE=OPER(nom="NORM_MODE",op= 37,sd_prod=norm_mode_prod, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 08/08/2008 AUTEUR DESOZA T.DESOZA # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -20472,7 +20970,7 @@ NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl_sdaster,reentrant='n', b_modele =BLOC(condition = "MODELE != None", CHARGE =SIMP(statut='f',validators=NoRepeat(),max='**',typ=(char_meca,char_ther,char_acou, ),), ), - METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS") ), + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","PETSC","MUMPS") ), b_mult_front =BLOC(condition="METHODE=='MULT_FRONT'",fr="paramètres associés à la méthode multifrontale", RENUM =SIMP(statut='f',typ='TXM',into=("MD","MDA","METIS"),defaut="METIS" ), ), @@ -20482,7 +20980,7 @@ NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl_sdaster,reentrant='n', b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), ), - b_gcpc =BLOC(condition="METHODE=='GCPC'",fr="paramètres associés à la méthode gradient conjugué", + b_gcpc =BLOC(condition="METHODE=='GCPC' or METHODE=='PETSC'",fr="paramètres associés à la GCPC ou PETSc", RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ), ), INFO =SIMP(statut='f',typ='I',into=(1,2)), @@ -20806,23 +21304,23 @@ POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=table_sdaster, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 20/05/2008 AUTEUR MAHFOUZ D.MAHFOUZ +#& MODIF COMMANDE DATE 03/11/2008 AUTEUR PELLET 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. # ====================================================================== # RESPONSABLE DESROCHES X.DESROCHES POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', @@ -20859,8 +21357,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), RESULTAT = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_noli,mult_elas, fourier_elas,dyna_trans) ), - PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE = SIMP(statut='f',typ='I',), LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), @@ -20895,8 +21396,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), RESULTAT = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_ther,evol_noli,dyna_trans,mult_elas) ), - PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), @@ -20934,8 +21438,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), RESULTAT = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_ther,evol_noli,dyna_trans) ), - PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), @@ -20966,8 +21473,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), RESULTAT = SIMP(statut='o',typ=(evol_noli) ), regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), - PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), @@ -20993,8 +21503,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), RESULTAT = SIMP(statut='o',typ=(evol_noli) ), regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), - PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), @@ -21007,16 +21520,20 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - NOM_CHAM = SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()), - NOM_CMP = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CHAM = SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()), + NOM_CMP = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'), + DEJA_INTEGRE = SIMP(statut='f',typ='TXM',into=("OUI","NON",),), ), b_integrale = BLOC(condition = "( INTEGRALE != None )", fr="calcul de la moyenne d'une composante", regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), MODELE = SIMP(statut='f',typ=modele_sdaster), - RESULTAT = SIMP(statut='o',typ=(evol_noli,evol_ther,evol_elas) ), - PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + RESULTAT = SIMP(statut='o',typ=(evol_noli,evol_ther,evol_elas,evol_char) ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), @@ -21031,17 +21548,20 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', PRESENT_PRESENT('CHAM_GD','MODELE'), PRESENT_PRESENT('RESULTAT','NOM_CHAM'), AU_MOINS_UN('TOUT','GROUP_MA'),), - TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), RESULTAT = SIMP(statut='f',typ=(evol_noli,evol_ther,evol_elas) ), - NOM_CHAM = SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()), + NOM_CHAM = SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()), CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), MODELE = SIMP(statut='f',typ=modele_sdaster), - NOM_CMP = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CMP = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'), b_minmax = BLOC(condition = "( RESULTAT != None )", regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), - PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), @@ -21075,8 +21595,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), RESULTAT = SIMP(statut='f',typ=(evol_noli) ), - PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), @@ -21108,8 +21631,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), RESULTAT = SIMP(statut='f',typ=(evol_noli) ), - PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), @@ -21132,8 +21658,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), RESULTAT = SIMP(statut='o',typ=(evol_noli) ), regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), - PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), @@ -21156,8 +21685,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), RESULTAT = SIMP(statut='o',typ=(evol_noli) ), regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), - PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), @@ -21178,8 +21710,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), RESULTAT = SIMP(statut='o',typ=(evol_noli) ), regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), - PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), @@ -21243,8 +21778,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', b_trav_ext = BLOC(condition = "( TRAV_EXT != None )", fr="calcul du travail des efforts extérieurs", RESULTAT = SIMP(statut='o',typ=(evol_elas,evol_noli,dyna_trans) ), - PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), ), @@ -21486,7 +22024,7 @@ POST_GP=MACRO(nom="POST_GP", op=post_gp_ops, sd_prod=post_gp_prod, INFO = SIMP(statut='f', typ='I', defaut=1, into=(1, 2),), ) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 20/10/2008 AUTEUR GALENNE E.GALENNE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -21539,6 +22077,8 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",op=post_k1_k2_k3_ops,sd_prod=table_sdast b_fissure =BLOC (condition="(FISSURE!= None)", MAILLAGE = SIMP(statut='o',typ=maillage_sdaster), NB_NOEUD_COUPE = SIMP(statut='f',typ='I' ,defaut=5 ), + NB_POINT_FOND = SIMP(statut='f',typ='I' ,), + NUME_FOND = SIMP(statut='f',typ='I',defaut=1), DTAN_ORIG = SIMP(statut='f',typ='R',max='**'), DTAN_EXTR = SIMP(statut='f',typ='R',max='**'), ), @@ -21550,7 +22090,7 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",op=post_k1_k2_k3_ops,sd_prod=table_sdast fr="Table issue de post_releve_t sur les noeuds de la lèvre supérieure"), TABL_DEPL_INF =SIMP(statut='f',typ=table_sdaster, fr="Table issue de post_releve_t sur les noeuds de la lèvre inférieure"), - ABSC_CURV_MAXI=SIMP(statut='f',typ='R', + ABSC_CURV_MAXI=SIMP(statut='o',typ='R', fr="Distance maximum à partir du fond de fissure à utiliser pour le calcul"), PREC_VIS_A_VIS= SIMP(statut='f',typ='R',defaut=0.1), TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -21559,12 +22099,15 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",op=post_k1_k2_k3_ops,sd_prod=table_sdast INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), LIST_INST =SIMP(statut='f',typ=listr8_sdaster), b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)", - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ), SYME_CHAR =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","SANS") ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), - VECT_K1 =SIMP(statut='f',typ='R',max=3, + VECT_K1 =SIMP(statut='f',typ='R',max=3,min=3, fr="Vecteur normal au plan de fissure, orienté de la lèvre inférieure vers la lèvre supérieure"), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; @@ -21610,7 +22153,7 @@ POST_K_BETA=OPER(nom="POST_K_BETA",op=198,sd_prod=table_sdaster, ), TITRE = SIMP(statut='f',typ='TXM',max='**'), ); -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG @@ -21667,9 +22210,11 @@ POST_K_TRANS=MACRO(nom="POST_K_TRANS",op=post_k_trans_ops,sd_prod=table_sdaster, LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), LIST_INST =SIMP(statut='f',typ=listr8_sdaster), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), - + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R'),), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), TITRE =SIMP(statut='f',typ='TXM'), ) @@ -21706,7 +22251,7 @@ POST_MAIL_XFEM=OPER(nom="POST_MAIL_XFEM",op= 187,sd_prod=maillage_sdaster, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ), ); -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 03/11/2008 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -21759,10 +22304,12 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster, INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), LIST_INST =SIMP(statut='f',typ=listr8_sdaster ), b_inst =BLOC(condition = "(INST != None) or (LIST_INST != None)" , - PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6 ), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ), - ), - ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),),), + ), ), # ====================================================================== @@ -21779,7 +22326,6 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster, regles=(UN_PARMI('MX','MX_TUBU'),), NUME_CHAR =SIMP(statut='o',typ='I',fr="numéro du chargement" ), NOM_CHAR =SIMP(statut='f',typ='TXM',fr="nom du chargement" ), - TYPE_CHAR =SIMP(statut='f',typ='TXM',fr="nature du chargement",into=( "SEISME","AUTRE"),defaut="AUTRE",), MX =SIMP(statut='f',typ='R',fr="moment suivant x", ), MX_TUBU =SIMP(statut='f',typ='R',fr="moment suivant x, tubulure", ), b_1_tenseur =BLOC( condition = "MX != None", @@ -21855,15 +22401,25 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster, TABL_RESU_THER =SIMP(statut='o',typ=table_sdaster, fr="table relevé des contraintes sous chargement thermique seul" ), ), + SEISME =FACT(statut='f',max='**',fr="Situation séisme",ang="situation_ang", + NB_OCCUR =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ), + NB_CYCL_SEISME =SIMP(statut='o',typ='I',fr="nombre de cycles associé au séisme" ), + NUME_SITU =SIMP(statut='o',typ='I',fr="numéro de la situation" ), + NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ), + NUME_GROUPE =SIMP(statut='o',typ='I',fr="numéros du groupe de la situation" ), + CHAR_ETAT =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ), + NUME_RESU_THER =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ), + ), SITUATION =FACT(statut='o',max='**',fr="Situation",ang="situation_ang", NB_OCCUR =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ), - NB_CYCL_SEISME =SIMP(statut='f',typ='I',fr="nombre de cycles associé au séisme" ), NUME_SITU =SIMP(statut='o',typ='I',fr="numéro de la situation" ), NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ), COMBINABLE =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ), - NUME_GROUPE =SIMP(statut='f',typ='I',max=2, - fr="numéro du groupe de la situation,si 2 numéros cette situation est une situation de passage" ), - NUME_RESU_THER =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ), + NUME_GROUPE =SIMP(statut='f',typ='I', + fr="numéros des groupes de la situation" ), + NUME_PASSAGE =SIMP(statut='f',typ='I',min=2,max=2, + fr="numéro des situations de passage" ), + NUME_RESU_THER =SIMP(statut='f',typ='I',max=1,fr="numeros de transitoires thermiques" ), CHAR_ETAT_A =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ), CHAR_ETAT_B =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ), PRES_A =SIMP(statut='o',typ='R',fr="pression etat A"), @@ -21891,7 +22447,6 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster, regles=(UN_PARMI('CHAM_GD','RESULTAT'),), NUME_CHAR =SIMP(statut='o',typ='I',fr="numéro du chargement" ), NOM_CHAR =SIMP(statut='f',typ='TXM',fr="nom du chargement" ), - TYPE_CHAR =SIMP(statut='f',typ='TXM',fr="nature du chargement",into=( "SEISME","AUTRE"),defaut="AUTRE",), CHAM_GD =SIMP(statut='f',typ=cham_gd_sdaster), RESULTAT =SIMP(statut='f',typ=resultat_sdaster), b_extrac =BLOC(condition="RESULTAT != None", @@ -21903,8 +22458,11 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster, INST =SIMP(statut='f',typ='R',), NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), b_acce_reel =BLOC(condition="(INST != None)", - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"), ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ), ), ), @@ -21943,14 +22501,25 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster, NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), ), ), + SEISME =FACT(statut='f',max='**',fr="Situation séisme",ang="situation_ang", + NB_OCCUR =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ), + NB_CYCL_SEISME =SIMP(statut='o',typ='I',fr="nombre de cycles associé au séisme" ), + NUME_SITU =SIMP(statut='o',typ='I',fr="numéro de la situation" ), + NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ), + NUME_GROUPE =SIMP(statut='o',typ='I',fr="numéros du groupe de la situation" ), + CHAR_ETAT =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ), + NUME_RESU_THER =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ), + TEMP_REF =SIMP(statut='f',typ='R',fr="temperature référence"), + ), SITUATION =FACT(statut='o',max='**',fr="Situation",ang="situation_ang", NB_OCCUR =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ), - NB_CYCL_SEISME =SIMP(statut='f',typ='I',fr="nombre de cycles associé au séisme" ), NUME_SITU =SIMP(statut='o',typ='I',fr="numéro de la situation" ), NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ), COMBINABLE =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ), - NUME_GROUPE =SIMP(statut='f',typ='I',max=2, - fr="numéro du groupe de la situation,si 2 numéros cette situation est une situation de passage" ), + NUME_GROUPE =SIMP(statut='f',typ='I', + fr="numéros des groupes de la situation" ), + NUME_PASSAGE =SIMP(statut='f',typ='I',min=2,max=2, + fr="numéro des situations de passage" ), NUME_RESU_THER =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ), CHAR_ETAT_A =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ), CHAR_ETAT_B =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ), @@ -21961,7 +22530,7 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster, ), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # ====================================================================== # CONFIGURATION MANAGEMENT OF EDF VERSION # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -22049,8 +22618,11 @@ POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=table_sdaster,reentrant='f' LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), LIST_INST =SIMP(statut='f',typ=listr8_sdaster), - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ), b_extrema =BLOC(condition="OPERATION == 'EXTREMA'", @@ -22235,7 +22807,7 @@ POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=table_sdaster,reentrant='f', INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -22277,11 +22849,13 @@ POST_ZAC=OPER(nom="POST_ZAC",op= 175,sd_prod=mult_elas,reentrant='n', b_evol_noli =BLOC(condition="EVOL_NOLI != None", INST_MAX =SIMP(statut='o',typ='R'), ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), - + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 16/09/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -22344,13 +22918,13 @@ POURSUITE=MACRO(nom="POURSUITE",op=ops.build_poursuite,repetable='n', 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, + MEMOIRE =FACT(fr="mode de gestion mémoire utilisé",statut='d',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' ), - DYNAMIQUE =SIMP(statut='f',typ='I'), + DYNAMIQUE =SIMP(statut='f',typ='I',defaut=1), ), RESERVE_CPU =FACT(fr="reserve de temps pour terminer une execution",statut='d',max=1, @@ -22637,7 +23211,7 @@ PROJ_MATR_BASE=OPER(nom="PROJ_MATR_BASE",op= 71,sd_prod=matr_asse_gene_prod, MATR_ASSE_GENE =SIMP(statut='f',typ=(matr_asse_gene_r,matr_asse_gene_c) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 21/10/2008 AUTEUR NISTOR I.NISTOR # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -22661,7 +23235,7 @@ def proj_mesu_modal_prod(MODELE_MESURE,**args): if AsType(vale) == dyna_trans : return tran_gene if AsType(vale) == dyna_harmo : return harm_gene if AsType(vale) == mode_meca : return mode_gene -# if AsType(vale) == mode_meca_c : return mode_gene_c + if AsType(vale) == mode_meca_c : return mode_gene if AsType(vale) == base_modale : return mode_gene raise AsException("type de concept resultat non prevu") @@ -22771,6 +23345,97 @@ PROJ_VECT_BASE=OPER(nom="PROJ_VECT_BASE",op= 72,sd_prod=vect_asse_gene, VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster), VECT_ASSE_GENE =SIMP(statut='f',typ=vect_asse_gene ), ) ; +#& MODIF COMMANDE DATE 20/10/2008 AUTEUR GALENNE E.GALENNE +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== +# RESPONSABLE GALENNE E.GALENNE + + +from Macro.propa_fiss_ops import propa_fiss_ops + +def propa_fiss_prod(self,**args): + if args.has_key('MA_TOT2') : + MA_TOT2 = args['MA_TOT2'] + self.type_sdprod(MA_TOT2,maillage_sdaster) + if args.has_key('MA_XFEM2') : + MA_XFEM2 = args['MA_XFEM2'] + self.type_sdprod(MA_XFEM2,maillage_sdaster) + if args.has_key('FISSURE') : + FISSURE = args['FISSURE'] + self.type_sdprod(FISSURE,fiss_xfem) + return None + +PROPA_FISS=MACRO(nom="PROPA_FISS",op=propa_fiss_ops,sd_prod=propa_fiss_prod, + fr="Propagation de fissure avec X-FEM",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, + + METHODE_PROPA = SIMP(statut='o',typ='TXM', + into=("HAMILTON","MAILLAGE","INITIALISATION") ), + + b_hamilton =BLOC(condition="(METHODE_PROPA=='HAMILTON')", + MODELE =SIMP(statut='o',typ=modele_sdaster), + RAYON =SIMP(statut='o',typ='R',), + METHODE =SIMP(statut='f',typ='TXM',into=("SIMPLEXE","UPWIND",),defaut="SIMPLEXE"), + FISSURE = SIMP(statut='o',typ=CO), + TABLE = SIMP(statut='o',typ=table_sdaster), + ), + + b_maillage =BLOC(condition="(METHODE_PROPA=='MAILLAGE')", + MA_STRUC = SIMP(statut='o',typ=maillage_sdaster), + MA_XFEM1 = SIMP(statut='o',typ=maillage_sdaster), + FISSURE1 = SIMP(statut='o',typ=fiss_xfem), + DTAN_ORIG = SIMP(statut='f',typ='R',max=3), + DTAN_EXTR = SIMP(statut='f',typ='R',max=3), + METHODE_POSTK = SIMP(statut='f',typ='I',into=(1,2,3),max=1), + ITERATION = SIMP(statut='o',typ='I',max=1), + HYPOTHESE = SIMP(statut='f',typ='TXM',into=("PLAN","NON_PLAN"),defaut="NON_PLAN"), + MA_XFEM2 = SIMP(statut='f',typ=CO), + MA_TOT2 = SIMP(statut='o',typ=CO), + TABLE = SIMP(statut='o',typ=table_sdaster), + ), + + b_init =BLOC(condition="(METHODE_PROPA=='INITIALISATION')", + MA_STRUC = SIMP(statut='o',typ=maillage_sdaster), + FORM_FISS = SIMP(statut='o',typ='TXM', into=("DEMI_DROITE","DEMI_PLAN"), ), + PFON = SIMP(statut='f',typ='R',max=3), + DTAN = SIMP(statut='o',typ='R',min=3,max=3), + POINT_ORIG = SIMP(statut='f',typ='R',min=3,max=3), + POINT_EXTR = SIMP(statut='f',typ='R',min=3,max=3), + NB_POINT_FOND = SIMP(statut='f',typ='I',), + regles=(PRESENT_PRESENT('POINT_ORIG','POINT_EXTR',), + UN_PARMI('PFON','POINT_ORIG'),), + MA_TOT2 = SIMP(statut='o',typ=CO), + MA_XFEM2 = SIMP(statut='f',typ=CO), + ), + + LOI_PROPA =FACT(statut='f',max=1, + LOI =SIMP(statut='o',typ='TXM',into=("PARIS",),defaut="PARIS"), + b_paris =BLOC( condition = "LOI=='PARIS'", + C = SIMP(statut='f',typ='R',), + M = SIMP(statut='o',typ='R',), + DA_MAX = SIMP(statut='f',typ='R',max=1), + regles=(UN_PARMI('C','DA_MAX'),), + ), + ), + + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +) + #& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -22861,7 +23526,7 @@ RECA_WEIBULL=OPER(nom="RECA_WEIBULL",op= 197,sd_prod=table_sdaster, ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -22926,8 +23591,11 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod, LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ), NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), b_prec = BLOC ( condition = "(INST != None) or (LIST_INST != None) or (FREQ != None) or (LIST_FREQ != None)", - PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), INTERP_NUME =SIMP(statut='f',typ='TXM',into=("NON","LIN") ), ), ), @@ -23091,7 +23759,7 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -23118,8 +23786,11 @@ RECU_GENE=OPER(nom="RECU_GENE",op= 76,sd_prod=vect_asse_gene,reentrant='n', INST =SIMP(statut='o',typ='R' ), NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE") ), INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF" ,into=("ABSOLU","RELATIF") ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ) ; #& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION @@ -23150,10 +23821,189 @@ RECU_TABLE=OPER(nom="RECU_TABLE",op= 174,sd_prod=table_sdaster, NOM_PARA =SIMP(statut='f',typ='TXM',max='**'), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 08/08/2008 AUTEUR DESOZA T.DESOZA +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET + +RESOUDRE=OPER(nom="RESOUDRE",op=15,sd_prod=cham_no_sdaster,reentrant='f', + fr="Résolution par méthode directe un système d'équations linéaires préalablement factorisé par FACT_LDLT"+ + "ou Résolution d'un système linéaire par la méthode du gradient conjugué préconditionné", + UIinfo={"groupes":("Résolution",)}, + MATR =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r, + matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ), + CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster), + CHAM_CINE =SIMP(statut='f',typ=cham_no_sdaster), + + # mot-clé commun aux solveurs MUMPS, GCPC et PETSc: + RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6), + + # mot-clé commun aux solveurs GCPC et PETSc: + NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), + MATR_PREC =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ), + + # mots-clés pour solveur PETSc: + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), + + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 21/10/2008 AUTEUR NISTOR I.NISTOR +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== + +# RESPONSABLE DEVESA G.DEVESA +def rest_cond_tran_prod(RESULTAT,**args ): + + if AsType(RESULTAT) == evol_noli : return dyna_trans + if AsType(RESULTAT) == dyna_trans : return dyna_trans + + raise AsException("type de concept resultat non prevu") + +REST_COND_TRAN=OPER(nom="REST_COND_TRAN",op= 78,sd_prod=rest_cond_tran_prod, + fr="Restituer dans la base physique des résultats issus d'un calcul" + +"non-lineaire avec projection modale ou d'un calcul transitoire linear" + +"avec condensation dynamique", + reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, + regles=( + EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','TOUT_INST'), + EXCLUS('NOEUD','GROUP_NO'), + EXCLUS('MAILLE','GROUP_MA'), + EXCLUS('MACR_ELEM_DYNA','BASE_MODALE'),), + RESULTAT =SIMP(statut='f',typ=(evol_noli,dyna_trans) ), + BASE_MODALE =SIMP(statut='f',typ=(base_modale,mode_meca) ), + NUME_DDL =SIMP(statut='f',typ=nume_ddl_sdaster ), + MACR_ELEM_DYNA =SIMP(statut='f',typ=macr_elem_dyna), + TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=8,defaut="ACCE", + into=("DEPL","VITE","ACCE","ACCE_ABSOLU","EFGE_ELNO_DEPL","SIPO_ELNO_DEPL", + "SIGM_ELNO_DEPL","FORC_NODA",) ), + TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), +) ; +#& MODIF COMMANDE DATE 21/10/2008 AUTEUR NISTOR I.NISTOR +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== + +# RESPONSABLE BOYERE E.BOYERE + +def rest_gene_phys_prod(RESU_GENE,**args ): + if AsType(RESU_GENE) == tran_gene : return dyna_trans + if AsType(RESU_GENE) == mode_gene : return mode_meca + if AsType(RESU_GENE) == harm_gene : return dyna_harmo + + raise AsException("type de concept resultat non prevu") + +REST_GENE_PHYS=OPER(nom="REST_GENE_PHYS",op= 75,sd_prod=rest_gene_phys_prod, + fr="Restituer dans la base physique des résultats en coordonnées généralisées", + reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, + regles=( + EXCLUS('INST','LIST_INST','TOUT_INST'), + EXCLUS('TOUT_ORDRE','NUME_ORDRE','NUME_MODE'), + EXCLUS('FREQ','LIST_FREQ'), + EXCLUS('MULT_APPUI','CORR_STAT'), + EXCLUS('MULT_APPUI','NOEUD','GROUP_NO'), + EXCLUS('CORR_STAT','NOEUD','GROUP_NO'), + EXCLUS('NOEUD','GROUP_NO'), + EXCLUS('MAILLE','GROUP_MA'), + PRESENT_PRESENT('ACCE_MONO_APPUI','DIRECTION'),), + RESU_GENE =SIMP(statut='f',typ=(tran_gene,mode_gene,harm_gene) ), + MODE_MECA =SIMP(statut='f',typ=mode_meca ), + BASE_MODALE =SIMP(statut='f',typ=(base_modale,mode_meca) ), + NUME_DDL =SIMP(statut='f',typ=nume_ddl_sdaster ), + TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ), + MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), + CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=8,defaut="ACCE", + into=("DEPL","VITE","ACCE","ACCE_ABSOLU","EFGE_ELNO_DEPL","SIPO_ELNO_DEPL", + "SIGM_ELNO_DEPL","FORC_NODA",) ), + TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + ACCE_MONO_APPUI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + DIRECTION =SIMP(statut='f',typ='R',min=3,max=3 ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), +) ; +#& MODIF COMMANDE DATE 21/10/2008 AUTEUR NISTOR I.NISTOR # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2008 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 @@ -23168,85 +24018,37 @@ RECU_TABLE=OPER(nom="RECU_TABLE",op= 174,sd_prod=table_sdaster, # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== -# RESPONSABLE PELLET J.PELLET - -RESOUDRE=OPER(nom="RESOUDRE",op=15,sd_prod=cham_no_sdaster,reentrant='f', - fr="Résolution par méthode directe un système d'équations linéaires préalablement factorisé par FACT_LDLT"+ - "ou Résolution d'un système linéaire par la méthode du gradient conjugué préconditionné", - UIinfo={"groupes":("Résolution",)}, - MATR =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r, - matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ), - CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster), - CHAM_CINE =SIMP(statut='f',typ=cham_no_sdaster), - - # mot-clé commun aux solveurs MUMPS et GCPC: - RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6), - # mots-clés pour solver GCPC: - MATR_PREC =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ), - NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), - REPRISE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), - - TITRE =SIMP(statut='f',typ='TXM',max='**'), - INFO =SIMP(statut='f',typ='I',into=(1,2) ), -) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE -# 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. -# ====================================================================== -# RESPONSABLE BOYERE E.BOYERE -def rest_base_phys_prod(RESU_GENE,RESU_PHYS,RESULTAT,**args ): +# RESPONSABLE CORUS M.CORUS +def rest_sous_struc_prod(RESU_GENE,RESULTAT,**args ): if AsType(RESU_GENE) == tran_gene : return dyna_trans if AsType(RESU_GENE) == mode_gene : return mode_meca if AsType(RESU_GENE) == mode_cycl : return mode_meca if AsType(RESU_GENE) == harm_gene : return dyna_harmo - if AsType(RESU_PHYS) == evol_noli : return dyna_trans - if AsType(RESULTAT) == evol_elas : return evol_elas if AsType(RESULTAT) == evol_noli : return evol_noli - if AsType(RESULTAT) == evol_char : return evol_char if AsType(RESULTAT) == dyna_trans : return dyna_trans if AsType(RESULTAT) == mode_meca : return mode_meca - if AsType(RESULTAT) == mode_stat_depl : return mode_stat_depl if AsType(RESULTAT) == base_modale : return base_modale raise AsException("type de concept resultat non prevu") -REST_BASE_PHYS=OPER(nom="REST_BASE_PHYS",op= 75,sd_prod=rest_base_phys_prod, - fr="Restituer dans la base physique des résultats en coordonnées généralisées", +REST_SOUS_STRUC=OPER(nom="REST_SOUS_STRUC",op= 77,sd_prod=rest_sous_struc_prod, + fr="Restituer dans la base physique des résultats obtenus par sous-structuration", reentrant='n', UIinfo={"groupes":("Matrices/vecteurs",)}, - regles=(UN_PARMI('RESU_GENE','RESU_PHYS','RESULTAT'), + regles=(UN_PARMI('RESU_GENE','RESULTAT'), EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','TOUT_INST'), EXCLUS('TOUT_INST','NUME_ORDRE','INST','LIST_INST','TOUT_ORDRE'), # Doc U à revoir - EXCLUS('MULT_APPUI','CORR_STAT'), - EXCLUS('MULT_APPUI','NOEUD','GROUP_NO'), - EXCLUS('CORR_STAT','NOEUD','GROUP_NO'), - EXCLUS('NOEUD','GROUP_NO'), - EXCLUS('MACR_ELEM_DYNA','BASE_MODALE'), + EXCLUS('NOEUD','GROUP_NO'), + EXCLUS('MAILLE','GROUP_MA'), PRESENT_PRESENT('RESULTAT','SQUELETTE'), - PRESENT_PRESENT('ACCE_MONO_APPUI','DIRECTION'),), - RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,dyna_trans,evol_char, - mode_meca,mode_stat_depl,base_modale) ), - + + ), + RESULTAT =SIMP(statut='f',typ=(evol_noli,dyna_trans, + mode_meca,base_modale) ), RESU_GENE =SIMP(statut='f',typ=(tran_gene,mode_gene,mode_cycl,harm_gene) ), - RESU_PHYS =SIMP(statut='f',typ=evol_noli ), BASE_MODALE =SIMP(statut='f',typ=(base_modale,mode_meca) ), NUME_DDL =SIMP(statut='f',typ=nume_ddl_sdaster ), - MACR_ELEM_DYNA =SIMP(statut='f',typ=macr_elem_dyna), MODE_MECA =SIMP(statut='f',typ=mode_meca ), TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), @@ -23257,10 +24059,11 @@ REST_BASE_PHYS=OPER(nom="REST_BASE_PHYS",op= 75,sd_prod=rest_base_phys_prod, FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ), - MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), - CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ), NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=8,defaut="ACCE", into=("DEPL","VITE","ACCE","ACCE_ABSOLU","EFGE_ELNO_DEPL","SIPO_ELNO_DEPL", "SIGM_ELNO_DEPL","FORC_NODA",) ), @@ -23269,10 +24072,6 @@ REST_BASE_PHYS=OPER(nom="REST_BASE_PHYS",op= 75,sd_prod=rest_base_phys_prod, NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - - ACCE_MONO_APPUI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - DIRECTION =SIMP(statut='f',typ='R',min=3,max=3 ), - CYCLIQUE =FACT(statut='f',max='**', NB_SECTEUR =SIMP(statut='f',typ='I',validators=NoRepeat(),max=1 ), NUME_DIAMETRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max=1 ), @@ -23331,7 +24130,46 @@ REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=table_fonction, into=("DIAG_TOUT","DIAG_DIAG","TOUT_TOUT","TOUT_DIAG") ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 06/10/2008 AUTEUR DEVESA G.DEVESA +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== +# RESPONSABLE DEVESA G.DEVESA +def rest_spec_temp_prod(RESU_GENE,RESULTAT,**args): + if AsType(RESULTAT) == dyna_harmo : return dyna_trans + if AsType(RESU_GENE) == harm_gene : return tran_gene + if AsType(RESULTAT) == dyna_trans : return dyna_harmo + if AsType(RESU_GENE) == tran_gene : return harm_gene + raise AsException("type de concept resultat non prevu") + + +REST_SPEC_TEMP=OPER(nom="REST_SPEC_TEMP",op=181,sd_prod=rest_spec_temp_prod, + fr="Transformée de Fourier d'un résultat", + reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, + regles=UN_PARMI('RESU_GENE','RESULTAT'), + RESU_GENE =SIMP(statut='f',typ=(harm_gene,tran_gene,) ), + RESULTAT =SIMP(statut='f',typ=(dyna_harmo,dyna_trans,) ), + METHODE =SIMP(statut='f',typ='TXM',defaut="PROL_ZERO",into=("PROL_ZERO","TRONCATURE") ), + SYMETRIE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",)), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,into=("DEPL","VITE","ACCE") ), +); +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG @@ -23365,10 +24203,6 @@ SIMU_POINT_MAT=MACRO(nom="SIMU_POINT_MAT", op=simu_point_mat_ops,sd_prod=table_s RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS", into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC", "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")), - ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_VMIS_LINE =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_HYPER =SIMP(statut='c',typ='I',defaut=1,into=(1,)), DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ), ), MATER =SIMP(statut='o',typ=mater_sdaster,max=30), @@ -23378,7 +24212,7 @@ SIMU_POINT_MAT=MACRO(nom="SIMU_POINT_MAT", op=simu_point_mat_ops,sd_prod=table_s INST_INIT =SIMP(statut='f',typ='R'), NUME_INST_FIN =SIMP(statut='f',typ='I'), INST_FIN =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,), # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS SUBD_METHODE =SIMP( statut='f',typ='TXM', into =("AUCUNE","UNIFORME","EXTRAPOLE"), @@ -23456,7 +24290,7 @@ SIMU_POINT_MAT=MACRO(nom="SIMU_POINT_MAT", op=simu_point_mat_ops,sd_prod=table_s LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), PAS_ARCH =SIMP(statut='f',typ='I' ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6), ARCH_ETAT_INIT =SIMP(statut='f',typ='TXM',into=("OUI",)), NUME_INIT =SIMP(statut='f',typ='I'), DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)), @@ -23578,7 +24412,7 @@ STANLEY=MACRO(nom="STANLEY",op=stanley_ops,sd_prod=None, fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit les md5"), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 18/11/2008 AUTEUR ABBAS M.ABBAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -23597,6 +24431,7 @@ STANLEY=MACRO(nom="STANLEY",op=stanley_ops,sd_prod=None, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== # RESPONSABLE ABBAS M.ABBAS +# STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, fr="Calcul de l'évolution mécanique ou thermo-hydro-mécanique couplée, en quasi-statique," +" d'une structure en non linéaire", @@ -23630,13 +24465,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS", into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC","ELAS_VMIS_PUIS", "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")), - ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_VMIS_LINE =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_VMIS_PUIS =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_HYPER =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - ELAS_POUTRE_GR =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - CABLE =SIMP(statut='c',typ='I',defaut=1,into=(1,)), + DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ), regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -23656,8 +24485,11 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, EVOL_NOLI =SIMP(statut='f',typ=evol_noli), NUME_ORDRE =SIMP(statut='f',typ='I'), INST =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), NUME_DIDI =SIMP(statut='f',typ='I'), INST_ETAT_INIT =SIMP(statut='f',typ='R'), ),), @@ -23674,8 +24506,11 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, EVOL_NOLI =SIMP(statut='f',typ=evol_noli), NUME_ORDRE =SIMP(statut='f',typ='I'), INST =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), NUME_DIDI =SIMP(statut='f',typ='I'), INST_ETAT_INIT =SIMP(statut='f',typ='R'), ),), @@ -23683,8 +24518,6 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, regles=(EXCLUS('NUME_INST_INIT','INST_INIT'), EXCLUS('NUME_INST_FIN','INST_FIN'),), LIST_INST =SIMP(statut='o',typ=listr8_sdaster), - EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE", - into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ), NUME_INST_INIT =SIMP(statut='f',typ='I'), INST_INIT =SIMP(statut='f',typ='R'), NUME_INST_FIN =SIMP(statut='f',typ='I'), @@ -23692,11 +24525,11 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, ERRE_TEMPS =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON", fr="Adaptation temporelle pour les modélisations HM instationnaires", ang="Time adaptation for unstationary HM models"), - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ), + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6 ), # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS SUBD_METHODE =SIMP( statut='f',typ='TXM', into =("AUCUNE","UNIFORME","EXTRAPOLE"), - defaut="AUCUNE", + defaut="UNIFORME", fr="Méthode de subdivision des pas de temps en cas de non-convergence" ), b_subd_unif=BLOC(condition = "SUBD_METHODE == 'UNIFORME'", @@ -23705,7 +24538,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, fr="Coefficient multiplicateur de la 1ère subdivision"), SUBD_PAS =SIMP(statut='f',typ='I',defaut=4,val_min=2, fr="Nombre de subdivision d'un pas de temps"), - SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2, + SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,defaut=3, fr="Nombre maximum de niveau de subdivision d'un pas de temps"), SUBD_PAS_MINI=SIMP(statut='f',typ='R',val_min=0.0, fr="Pas de temps en dessous duquel on ne subdivise plus"), @@ -23730,24 +24563,20 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, fr="% itération autorisée en plus"), ), # FIN DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS - OPTI_LIST_INST =SIMP(statut='f',typ='TXM',into=("INCR_MAXI",),), - NOM_CHAM =SIMP(statut='f',typ='TXM',), - NOM_CMP =SIMP(statut='f',typ='TXM',), - VALE =SIMP(statut='f',typ='R'), ), NEWTON =FACT(statut='d', - REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ), + REAC_INCR =SIMP(statut='f',typ='I',defaut= 1,val_min=0), PREDICTION =SIMP(statut='f',typ='TXM',into=("DEPL_CALCULE","TANGENTE","ELASTIQUE","EXTRAPOL") ), MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ), - PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0), - REAC_ITER =SIMP(statut='f',typ='I',defaut=0), - REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0), + PAS_MINI_ELAS =SIMP(statut='f',typ='R',val_min=0.0), + REAC_ITER =SIMP(statut='f',typ='I',defaut=0,val_min=0), + REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0,val_min=0), EVOL_NOLI =SIMP(statut='f',typ=evol_noli), ), RECH_LINEAIRE =FACT(statut='f', METHODE =SIMP(statut='f',typ='TXM',defaut="CORDE",into=("CORDE","MIXTE") ), RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-1 ), - ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3), + ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3,val_max=999), ITER_LINE_CRIT =SIMP(statut='f',typ='I',defaut= 20), PAS_MINI_CRIT =SIMP(statut='f',typ='R',defaut=0.0E+0), RHO_MIN =SIMP(statut='f',typ='R',defaut=1.0E-2), @@ -23775,29 +24604,34 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA'),), b_refe_rela =BLOC(condition = "RESI_REFE_RELA != None", regles=(AU_MOINS_UN('SIGM_REFE','EPSI_REFE','FLUX_THER_REFE','FORC_REFE', - 'FLUX_HYD1_REFE','FLUX_HYD2_REFE','VARI_REFE'),), + 'FLUX_HYD1_REFE','FLUX_HYD2_REFE','VARI_REFE','DEPL_REFE'),), FORC_REFE =SIMP(statut='f',typ='R',min=2,max=2, fr="Force et Moment de référence pour les éléments de structure."), SIGM_REFE =SIMP(statut='f',typ='R'), + DEPL_REFE =SIMP(statut='f',typ='R'), EPSI_REFE =SIMP(statut='f',typ='R'), FLUX_THER_REFE =SIMP(statut='f',typ='R'), FLUX_HYD1_REFE =SIMP(statut='f',typ='R'), FLUX_HYD2_REFE =SIMP(statut='f',typ='R'), VARI_REFE =SIMP(statut='f',typ='R'), ), - - - RESI_REFE_RELA =SIMP(statut='f',typ='R'), RESI_GLOB_MAXI =SIMP(statut='f',typ='R'), RESI_GLOB_RELA =SIMP(statut='f',typ='R'), ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10), ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25), + TYPE =SIMP(statut='f',typ='TXM',defaut="PIC",into=("PIC","PLATEAU")), + b_plateau =BLOC(condition = "TYPE == 'PLATEAU' ", + + PLATEAU_ITER =SIMP(statut='f',typ='I',defaut=3, val_min =2), + PLATEAU_RELA =SIMP(statut='f',typ='R',defaut=1E-3), + ), + + ARRET =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), ), SOLVEUR =FACT(statut='d', METHODE=SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","FETI","PETSC") ), - b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), ), @@ -23828,14 +24662,8 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100), CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), - b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", - VARIANTE =SIMP(statut='f',typ='TXM',into=("GMRES","BCGS","CR","CG","BICG","CHEBYCHEV",),defaut="GMRES" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("ILU","SOR","BJACOBI"),defaut="ILU" ), - RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), - RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-8), - NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), - ), b_feti =BLOC(condition = "METHODE == 'FETI' ",fr="Paramètres de la méthode FETI 1", PARTITION =SIMP(statut='o',typ=sd_feti_sdaster), RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), @@ -23854,6 +24682,18 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, NB_SD_PROC0 =SIMP(statut='f',typ='I',defaut=0,val_min=0), ACCELERATION_SM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), ), + b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), + b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6), + NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), + ), + + SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), ), ARCHIVAGE =FACT(statut='f', @@ -23862,7 +24702,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), PAS_ARCH =SIMP(statut='f',typ='I' ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-6), ARCH_ETAT_INIT =SIMP(statut='f',typ='TXM',into=("OUI",)), NUME_INIT =SIMP(statut='f',typ='I'), DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)), @@ -23898,8 +24738,11 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, LIST_INST =SIMP(statut='f',typ=listr8_sdaster), PAS_OBSE =SIMP(statut='f',typ='I'), LIST_ARCH =SIMP(statut='f',typ=listis_sdaster), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),),), ), AFFICHAGE = FACT(statut='f',max=16, @@ -23922,7 +24765,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, "LAGR_ECAR","LAGR_INCR","LAGR_ITER", "MATR_ASSE", "ITER_DEBO", - "CTCD_ITER","CTCD_INFO","CTCD_GEOM","CTCD_NOEU", + "CTCD_ITER","CTCD_GEOM","CTCD_NOEU", "CTCC_GEOM","CTCC_FROT","CTCC_CONT", "SUIV_1","SUIV_2","SUIV_3","SUIV_4","ITER_FETI", ), @@ -24315,7 +25158,55 @@ TEST_TABLE=PROC(nom="TEST_TABLE",op= 177, INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 05/09/2008 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== +# -*- coding: iso-8859-1 -*- +# RESPONSABLE COURTOIS M.COURTOIS + + +from Macro.test_temps_ops import test_temps_ops + +TEST_TEMPS=MACRO(nom="TEST_TEMPS",op=test_temps_ops, sd_prod=None, + fr="Permet de vérifier le temps passé dans les commandes", + reentrant='n', + + RESU = FACT(statut='o',max='**', + COMMANDE = SIMP(statut='o', typ='TXM', + fr="Nom de la commande testee"), + NUME_ORDRE = SIMP(statut='f', typ='I', defaut=1, val_min=1, + fr="Numero de l'occurrence de la commande testee"), + MACHINE = SIMP(statut='o', typ='TXM', max='**', + fr="Liste des machines dont on a la référence"), + VALE = SIMP(statut='o', typ='R', max='**', + fr="Temps CPU sur les machines listees en secondes"), + CRITERE = SIMP(statut='f', typ='TXM', defaut='RELATIF', into=('ABSOLU', 'RELATIF')), + PRECISION = SIMP(statut='f', typ='R', defaut=0.01, max='**', + fr="Ecart admissible pour chaque machine"), + TYPE_TEST = SIMP(statut='o', typ='TXM', into=('USER', 'SYSTEM', 'USER+SYS', 'ELAPSED'), + defaut='USER+SYS', + fr="Valeur testee parmi 'USER', 'SYSTEM', 'USER+SYS', 'ELAPSED'"), + ), + + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) + +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -24349,13 +25240,11 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f', regles=(EXCLUS('NUME_INST_INIT','INST_INIT'), EXCLUS('NUME_INST_FIN','INST_FIN'),), LIST_INST =SIMP(statut='o',typ=listr8_sdaster), - EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE", - into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ), NUME_INST_INIT =SIMP(statut='f',typ='I'), INST_INIT =SIMP(statut='f',typ='R'), NUME_INST_FIN =SIMP(statut='f',typ='I'), INST_FIN =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ), + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6 ), ), ETAT_INIT =FACT(statut='f', regles=(EXCLUS('STATIONNAIRE','EVOL_THER','CHAM_NO','VALE'),), @@ -24365,8 +25254,11 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f', VALE =SIMP(statut='f',typ='R'), NUME_ORDRE =SIMP(statut='f',typ='I'), INST =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), INST_ETAT_INIT =SIMP(statut='f',typ='R'), ), SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', @@ -24411,13 +25303,18 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f', PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100), CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", - VARIANTE =SIMP(statut='f',typ='TXM',into=("GMRES","BCGS","CR","CG","BICG","CHEBYCHEV",),defaut="GMRES" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("ILU","SOR","BJACOBI"),defaut="ILU" ), + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), + b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), - RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-8), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6), NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), ), ), @@ -24428,7 +25325,7 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f', LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), PAS_ARCH =SIMP(statut='f',typ='I' ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-6), ARCH_ETAT_INIT =SIMP(statut='f',typ='TXM',into=("OUI",)), NUME_INIT =SIMP(statut='f',typ='I'), DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)), @@ -24438,7 +25335,7 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f', TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',into=(1,2)), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -24488,50 +25385,11 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f', regles=(EXCLUS('NUME_INST_INIT','INST_INIT'), EXCLUS('NUME_INST_FIN','INST_FIN'),), LIST_INST =SIMP(statut='o',typ=listr8_sdaster), - EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE", - into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ), NUME_INST_INIT =SIMP(statut='f',typ='I'), INST_INIT =SIMP(statut='f',typ='R'), NUME_INST_FIN =SIMP(statut='f',typ='I'), INST_FIN =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ), - # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS - SUBD_METHODE =SIMP( statut='f',typ='TXM', - into =("AUCUNE","UNIFORME","EXTRAPOLE"), - defaut="AUCUNE", - fr="Méthode de subdivision des pas de temps en cas de non-convergence" - ), - b_subd_unif=BLOC(condition = "SUBD_METHODE == 'UNIFORME'", - regles=(AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),), - SUBD_COEF_PAS_1=SIMP(statut='f',typ='R',defaut=1.0,val_min=0.0, - fr="Coefficient multiplicateur de la 1ère subdivision"), - SUBD_PAS =SIMP(statut='f',typ='I',defaut=4,val_min=2, - fr="Nombre de subdivision d'un pas de temps"), - SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2, - fr="Nombre maximum de niveau de subdivision d'un pas de temps"), - SUBD_PAS_MINI=SIMP(statut='f',typ='R',val_min=0.0, - fr="Pas de temps en dessous duquel on ne subdivise plus"), - ), - b_subd_extr=BLOC(condition = "SUBD_METHODE == 'EXTRAPOLE'", - regles=(AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),), - SUBD_OPTION =SIMP(statut='f',typ='TXM', - into =("IGNORE_PREMIERES","GARDE_DERNIERES",), - defaut="IGNORE_PREMIERES", - fr="Technique d'extrapolation : les 1ere itérations sont ignorées ou les dernières sont gardées"), - SUBD_ITER_IGNO =SIMP(statut='c',typ='I',defaut=3,val_min=0, - fr="Les n premières itérations sont ignorées pour l'extrapolation"), - SUBD_ITER_FIN =SIMP(statut='c',typ='I',defaut=8,val_min=3, - fr="Seules les n dernières itérations sont prises pour l'extrapolation"), - SUBD_PAS =SIMP(statut='c',typ='I',defaut=4,val_min=2, - fr="Nombre de subdivision d'un pas de temps en cas divergence"), - SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2, - fr="Nombre maximum de niveau de subdivision d'un pas de temps"), - SUBD_PAS_MINI=SIMP(statut='f',typ='R',val_min=0.0, - fr="Pas de temps en dessous duquel on ne subdivise plus"), - SUBD_ITER_PLUS =SIMP(statut='c',typ='I',defaut=50,val_min=20, - fr="% itération autorisée en plus"), - ), - # FIN DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6 ), ), ETAT_INIT =FACT(statut='f', regles=(EXCLUS('STATIONNAIRE','EVOL_THER','CHAM_NO','VALE'),), @@ -24541,12 +25399,15 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f', VALE =SIMP(statut='f',typ='R'), NUME_ORDRE =SIMP(statut='f',typ='I'), INST =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), INST_ETAT_INIT =SIMP(statut='f',typ='R'), ), NEWTON =FACT(statut='d', - REAC_ITER =SIMP(statut='f',typ='I',defaut= 0 ), + REAC_ITER =SIMP(statut='f',typ='I',defaut= 0 ,val_min=0), RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 0 ), ), @@ -24591,13 +25452,18 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f', PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100), CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", - VARIANTE =SIMP(statut='f',typ='TXM',into=("GMRES","BCGS","CR","CG","BICG","CHEBYCHEV",),defaut="GMRES" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("ILU","SOR","BJACOBI"),defaut="ILU" ), + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), + b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), - RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-8), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6), NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), ), SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), @@ -24609,7 +25475,7 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f', LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), PAS_ARCH =SIMP(statut='f',typ='I' ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-6), ARCH_ETAT_INIT =SIMP(statut='f',typ='TXM',into=("OUI",)), NUME_INIT =SIMP(statut='f',typ='I'), DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)), @@ -24628,8 +25494,11 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f', LIST_INST =SIMP(statut='f',typ=listr8_sdaster), PAS_OBSE =SIMP(statut='f',typ='I'), LIST_ARCH =SIMP(statut='f',typ=listis_sdaster), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),),), ), TITRE =SIMP(statut='f',typ='TXM',max='**'), OPTION =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2, @@ -24637,7 +25506,7 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f', INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -24698,6 +25567,31 @@ THER_NON_LINE_MO=OPER(nom="THER_NON_LINE_MO",op= 171,sd_prod=evol_ther, RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), ), + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), + PARALLELISME =SIMP(statut='f',typ='TXM',defaut="CENTRALISE", + into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")), + PARTITION =SIMP(statut='f',typ=sd_feti_sdaster), + CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100), + CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), + b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), + b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), + NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), + ), SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), diff --git a/Aster/Cata/cataSTA9/ops.py b/Aster/Cata/cataSTA9/ops.py index 90a38f53..6ee01171 100644 --- a/Aster/Cata/cataSTA9/ops.py +++ b/Aster/Cata/cataSTA9/ops.py @@ -1,4 +1,4 @@ -#@ MODIF ops Cata DATE 02/06/2008 AUTEUR COURTOIS M.COURTOIS +#@ MODIF ops Cata DATE 01/12/2008 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -60,7 +60,7 @@ def commun_DEBUT_POURSUITE(jdc, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM): # en POURSUITE, ne pas écraser la mémorisation existante. if not hasattr(jdc, 'memo_sensi'): jdc.memo_sensi = MEMORISATION_SENSIBILITE() - jdc.memo_sensi.reparent(jdc) + jdc.memo_sensi.reparent(jdc) if hasattr(jdc, 'msg_init') and jdc.msg_init == 1: # messages d'alarmes désactivés @@ -69,6 +69,12 @@ def commun_DEBUT_POURSUITE(jdc, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM): IGNORE_ALARM = [IGNORE_ALARM] for idmess in IGNORE_ALARM: MessageLog.disable_alarm(idmess) + + # en POURSUITE, conserver le catalogue de comportement picklé + if not hasattr(jdc, 'catalc'): + from Comportement import catalc + jdc.catalc = catalc + jdc.msg_init = True @@ -171,6 +177,8 @@ def POURSUITE(self, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, **args): # on rattache chaque assd au nouveau jdc courant (en poursuite) pickle_context[elem].jdc=self.jdc pickle_context[elem].parent=self.jdc + # le marquer comme 'executed' + pickle_context[elem].executed = 1 # pour que sds_dict soit cohérent avec g_context self.jdc.sds_dict[elem] = pickle_context[elem] assert elem == pickle_context[elem].nom diff --git a/Aster/configuration.py b/Aster/configuration.py new file mode 100644 index 00000000..d357d232 --- /dev/null +++ b/Aster/configuration.py @@ -0,0 +1,369 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +""" + Ce module sert pour charger les paramètres de configuration d'EFICAS +""" +# Modules Python +import os, sys, string, types, re +import traceback + +# Modules Eficas +from Editeur import utils + +class CONFIGbase: + + #----------------------------------- + def __init__(self,appli): + #----------------------------------- + + # Classe de base permettant de lire, afficher + # et sauvegarder les fichiers utilisateurs editeur.ini + # et style.py + # Classe Mere de : class CONFIG(CONFIGbase) + # class CONFIGStyle(CONFIGbase): + self.appli = appli + self.salome = appli.salome + self.dRepMat={} + if self.appli: + self.parent=appli.top + else: + self.parent=None + self.rep_user = utils.get_rep_user() + self.lecture_fichier_ini_standard() + self.lecture_catalogues_standard() + self.lecture_fichier_ini_utilisateur() + self.init_liste_param() + + #-------------------------------------- + def lecture_fichier_ini_standard(self): + #-------------------------------------- + # Verifie l'existence du fichier "standard" + # appelle la lecture de ce fichier + if not os.path.isfile(self.fic_ini): + if self.appli.ihm=="TK" : + from widgets import showerror + showerror("Erreur","Pas de fichier de configuration" + self.fic_ini+"\n") + print "Erreur à la lecture du fichier de configuration : %s" % self.fic_ini + sys.exit(0) + self.lecture_fichier(self.fic_ini) + + #----------------------------- + def lecture_fichier(self,fic): + #------------------------------ + # lit les paramètres du fichier eficas.ini ou style.py + # les transforme en attribut de l 'objet + # utilisation du dictionnaire local pour récuperer style + txt = utils.read_file(fic) + from styles import style + d=locals() + try: + exec txt in d + except: + l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) + if self.appli.ihm=="TK" : + from widgets import showerror + showerror("Erreur","Une erreur s'est produite lors de la lecture du fichier : " + fic + "\n") + print "Erreur à la lecture du fichier de configuration : %s" % fic + sys.exit() + + for k in d.keys() : + if k in self.labels.keys() : + setattr(self,k,d[k]) + # Glut horrible pour les repertoires materiau... + elif k[0:9]=="rep_mat_v" : + setattr(self,k,d[k]) + + for k in d['style'].__dict__.keys() : + setattr(self,k,d['style'].__dict__[k]) + + if hasattr(self,"catalogues") : + for ligne in self.catalogues : + version=ligne[1] + codeSansPoint=re.sub("\.","",version) + chaine="rep_mat_"+codeSansPoint + if hasattr(self,chaine): + rep_mat=getattr(self,chaine) + self.dRepMat[version]=str(rep_mat) + + + #-------------------------------------- + def lecture_fichier_ini_utilisateur(self): + #-------------------------------------- + # Surcharge les paramètres standards par les paramètres utilisateur s'ils existent + self.fic_ini_utilisateur = os.path.join(self.rep_user,self.fichier) + if not os.path.isfile(self.fic_ini_utilisateur): + return + self.lecture_fichier(self.fic_ini_utilisateur) + + #-------------------------------------- + def lecture_catalogues_standard(self): + #-------------------------------------- + # repertoires Materiau + if hasattr(self,"catalogues") : + for ligne in self.catalogues : + version=ligne[1] + cata=ligne[2] + self.dRepMat[version]=os.path.join(cata,'materiau') + + #-------------------------------------- + def affichage_fichier_ini(self): + #-------------------------------------- + """ + Affichage des valeurs des paramètres relus par Eficas + """ + import widgets + result = widgets.Formulaire(self.parent, + obj_pere = self, + titre = self.titre, + texte = self.texte_ini, + items = self.l_param, + mode='display', + commande=('Modifier',self.commande)) + if result.resultat : + #print 'on sauvegarde les nouveaux paramètres :',result.resultat + self.save_param_ini(result.resultat) + + #-------------------------------------- + def save_param_ini(self,dico): + #-------------------------------------- + # sauvegarde + # les nouveaux paramètres dans le fichier de configuration utilisateur + # + f=open(self.fic_ini_utilisateur,'w+') + for k,v in dico.items(): + if self.types[k] in ('mot2','mot3','mot4'): + v1=v[1:-1] + val=v1.split(",") + p = "(" + listeval="" + for valeur in val: + listeval = listeval+ p + str(valeur) + p=" , " + listeval = listeval + ")" + f.write(str(self.pref)+str(k) + '=' + str(listeval) + '\n') + elif k == 'catalogues' : + f.write(k + '\t=\t' + str(v) + '\n') + else: + f.write(str(self.pref)+str(k) + '\t=\t"' + str(v) + '"\n') + f.close() + self.lecture_fichier_ini_utilisateur() + + #------------------------------------------- + def creation_fichier_ini_si_possible(self): + #------------------------------------------- + return self.creation_fichier_ini(mode='ignorer_annuler') + + #-------------------------------------------------------- + def creation_fichier_ini(self,mode='considerer_annuler'): + #--------------------------------------------------------- + # Récupération des valeurs des paramétres requis pour la création du fichier + # eficas.ini + # + import widgets + items = self.l_param + result = widgets.Formulaire(self.parent, + obj_pere = self, + titre = "Saisie des données indispensables à la configuration d'EFICAS", + texte = self.texte, + items = items, + mode='query') + if not result.resultat : + if mode == 'considerer_annuler': + test=0 + if self.appli.ihm=="TK" : + from widgets import showerror,askretrycancel + test = askretrycancel("Erreur","Données incorrectes !") + if not test: + # XXX On sort d'EFICAS, je suppose + self.appli.exitEFICAS() + else: + self.creation_fichier_ini() + else: + return None + else : + self.save_param_ini(result.resultat) + return result.resultat + + #-------------------------- + def init_liste_param (self): + #-------------------------- + # construit self.l_param + # a partir de self.labels et des attributs + # de l objet (mis a jour lors de la lecture du fichier) + # l_param est une liste de tuples où chaque tuple est de la forme : + # (label,nature,nom_var,defaut) + + self.l_param=[] + for k in self.labels.keys() : + if hasattr(self,k) : + if k in self.YesNo.keys(): + self.l_param.append((self.labels[k],self.types[k],k,self.__dict__[k], + self.YesNo[k][0],self.YesNo[k][1])) + else : + self.l_param.append((self.labels[k],self.types[k],k,self.__dict__[k])) + self.l_param = tuple(self.l_param) + + +class CONFIG(CONFIGbase): + def __init__(self,appli,repIni): + + self.dFichierEditeur={"ASTER" : "editeur.ini", + "ASTER_SALOME" : "editeur_salome.ini"} + self.texte = "EFICAS a besoin de certains renseignements pour se configurer\n"+\ + "Veuillez remplir TOUS les champs ci-dessous et appuyer sur 'Valider'\n"+\ + "Si vous annulez, EFICAS ne se lancera pas !!" + + self.salome=appli.salome + self.code=appli.code + clef=self.code + if self.salome != 0 : + clef = clef + "_SALOME" + self.fichier=self.dFichierEditeur[clef] + self.repIni = repIni + self.rep_ini = repIni + self.fic_ini = os.path.join(self.repIni,self.fichier) + self.titre = "Paramètres nécessaires à la configuration d'EFICAS" + self.texte_ini = "Voici les paramètres que requiert Eficas" + self.commande = self.creation_fichier_ini_si_possible + self.labels={"savedir" : "Répertoire initial pour Open/Save des fichiers", + "rep_travail" : "Répertoire de travail", + "rep_mat" : "Répertoire materiaux", + "path_doc" : "Chemin d'accès à la doc Aster", + "exec_acrobat" : "Ligne de commande Acrobat Reader", + "catalogues" : "Versions du code ", + "isdeveloppeur" : "Niveau de message ", + "path_cata_dev" : "Chemin d'accès aux catalogues développeurs"} + + + self.types ={"savedir":"rep", "rep_travail":"rep","rep_mat":"rep", + "path_doc": "rep","exec_acrobat":"file","exec_acrobat":"file", + "catalogues" :"cata","isdeveloppeur":"YesNo","path_cata_dev":"rep", + "DTDDirectory":"rep"} + + self.YesNo={} + self.YesNo['isdeveloppeur']=('Deboggage','Utilisation') + + # Valeurs par defaut + self.rep_user = utils.get_rep_user() + self.initialdir=self.rep_user + self.savedir = os.environ['HOME'] + self.rep_travail=os.path.join(self.rep_user,'uaster','tmp_eficas') + self.rep_mat="" + self.path_doc=self.rep_user + self.exec_acrobat=self.rep_user + self.catalogues= os.path.join(self.repIni,'..','Cata/cata.py') + self.isdeveloppeur='NON' + self.path_cata_dev=os.path.join(self.rep_user,'cata') + CONFIGbase.__init__ (self,appli) + self.pref="" + + #-------------------------------------- + def save_params(self): + #-------------------------------------- + # sauvegarde + # les nouveaux paramètres dans le fichier de configuration utilisateur + # + l_param=('exec_acrobat', 'repIni','catalogues','rep_travail','rep_mat','path_doc','savedir') + texte="" + for clef in l_param : + if hasattr(self,clef): + valeur=getattr(self,clef) + texte= texte + clef+" = " + repr(valeur) +"\n" + + + # recuperation des repertoires materiaux + try : + for item in self.catalogues : + try : + (code,version,cata,format,defaut)=item + except : + (code,version,cata,format)=item + codeSansPoint=re.sub("\.","",version) + chaine="rep_mat_"+codeSansPoint + if hasattr(self,chaine): + valeur=getattr(self,chaine) + texte= texte + chaine+" = '" + str(valeur) +"'\n" + except : + pass + + f=open(self.fic_ini_utilisateur,'w+') + f.write(texte) + f.close() + + +class CONFIGStyle(CONFIGbase): + def __init__(self,appli,repIni): + self.salome=appli.salome + self.texte = "Pour prendre en compte les modifications \n"+\ + " RELANCER EFICAS" + self.fichier="style.py" + self.repIni = repIni + self.rep_ini = repIni + self.fic_ini = os.path.join(self.repIni,self.fichier) + self.titre = "Paramètres d affichage" + self.texte_ini = "Voici les paramètres configurables : " + self.commande = self.creation_fichier_ini_si_possible + self.labels={"background":"couleur du fonds", + "foreground":"couleur de la police standard" , + "standard":" police et taille standard", + "standard_italique":"police utilisée pour l'arbre ", + "standard_gras_souligne":"police utilisée pour le gras souligné", + "canvas_italique":"police italique", + "standard_gras":"gras", + #"canvas":"police", + #"canvas_gras":"police gras", + #"canvas_gras_italique":"police gras italique", + #"standard12":"police 12", + #"standard12_gras":"police 12 gras", + #"standard12_gras_italique":"police 12 gras italique", + #"standardcourier10":"courrier " + "statusfont":"police utilisée dans la status Bar", + } + self.types ={"background":"mot", + "foreground":"mot" , + "standard":"mot2", + "standard_italique":"mot3", + "standard_gras":"mot3", + "standard_gras_souligne":"mot4", + "canvas":"mot2", + "canvas_italique":"mot3", + "canvas_gras":"mot3", + "canvas_gras_italique":"mot4", + "standard12":"mot2", + "standard12_gras":"mot3", + "standard12_gras_italique":"mot4", + "statusfont":"mot2", + "standardcourier10":"mot2"} + self.YesNo={} + self.l_param=[] + CONFIGbase.__init__ (self,appli) + self.pref="style." + + def affichage_style_ini(self): + self.affichage_fichier_ini() + +def make_config(appli,rep): + return CONFIG(appli,rep) + +def make_config_style(appli,rep): + return CONFIGStyle(appli,rep) + + diff --git a/Aster/editeur.ini b/Aster/editeur.ini index 5f497917..418bd663 100644 --- a/Aster/editeur.ini +++ b/Aster/editeur.ini @@ -37,12 +37,12 @@ rep_travail = "/tmp" initialdir=os.curdir # Choix des catalogues -rep_mat_v85=os.path.join(rep_cata,'cataSTA8','materiau') -rep_mat_v91=os.path.join(rep_cata,'cataSTA9','materiau') +rep_mat_v88=os.path.join(rep_cata,'cataSTA8','materiau') +rep_mat_v94=os.path.join(rep_cata,'cataSTA9','materiau') catalogues = ( ('ASTER','v7.8',os.path.join(rep_cata,'cataSTA7'),'python'), - ('ASTER','v8.7',os.path.join(rep_cata,'cataSTA8'),'python'), - ('ASTER','v9.3',os.path.join(rep_cata,'cataSTA9'),'python','defaut'), + ('ASTER','v8.8',os.path.join(rep_cata,'cataSTA8'),'python'), + ('ASTER','v9.4',os.path.join(rep_cata,'cataSTA9'),'python','defaut'), ) diff --git a/Aster/editeur_salome.ini b/Aster/editeur_salome.ini index d0881d54..9805411b 100644 --- a/Aster/editeur_salome.ini +++ b/Aster/editeur_salome.ini @@ -27,7 +27,8 @@ rep_Pmw = os.path.join(prefs.REPINI,'../Pmw') # Accès à la documentation Aster path_doc = os.path.join(rep_cata,'..','Doc') -exec_acrobat = "acroread" +#exec_acrobat = "acroread" +exec_acrobat = "/local01/assire/v0.5/SALOME-MECA-2008.2/SALOME-MECA/prerequis/xpdf-3.02-linux/xpdf" # Utilisateur/Développeur isdeveloppeur = "NON" path_cata_dev = "/tmp/cata" @@ -42,7 +43,7 @@ rep_mat_v91=os.path.join(rep_cata,'cataSTA9','materiau') catalogues = ( ('ASTER','v7.8',os.path.join(rep_cata,'cataSTA7'),'python'), - ('ASTER','v8.5',os.path.join(rep_cata,'cataSTA8'),'python'), - ('ASTER','v9.1',os.path.join(rep_cata,'cataSTA9'),'python','defaut'), + ('ASTER','v8.7',os.path.join(rep_cata,'cataSTA8'),'python'), + ('ASTER','v9.3',os.path.join(rep_cata,'cataSTA9'),'python','defaut'), ) diff --git a/Aster/prefs.py b/Aster/prefs.py index 5fc73e58..5786a287 100644 --- a/Aster/prefs.py +++ b/Aster/prefs.py @@ -24,6 +24,7 @@ import os,sys # REPINI sert à localiser le fichier editeur.ini # Obligatoire REPINI=os.path.dirname(os.path.abspath(__file__)) +repIni=REPINI # INSTALLDIR sert à localiser l'installation d'Eficas # Obligatoire @@ -54,7 +55,7 @@ ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') if os.name == 'nt': userprefs = os.sep.join( [ os.environ['HOMEDRIVE'], os.environ['HOMEPATH'], 'Eficas_install', 'prefs.py' ]) else : - userprefs=os.path.expanduser("~/Eficas_install/prefs.py") + userprefs=os.path.expanduser("~/.Eficas_install/prefs.py") if os.path.isfile(userprefs): try: @@ -102,7 +103,8 @@ menu_defs={ 'bureau': [ ] ), ('Traduction',[ - ('Traduction v7 en v8','TraduitFichier','','Ctrl+T'), + ('Traduction v7 en v8','TraduitFichier7'), + ('Traduction v8 en v9','TraduitFichier8','','Ctrl+T'), ] ), ('Aide',[ diff --git a/Aster/properties.py b/Aster/properties.py index 72607722..fc860faf 100644 --- a/Aster/properties.py +++ b/Aster/properties.py @@ -1,5 +1,4 @@ -#@ MODIF properties Accas DATE 04/04/2007 AUTEUR aster M.ADMINISTRATEUR -# CONFIGURATION MANAGEMENT OF EDF VERSION +#@ MODIF properties Accas DATE 11/06/2008 AUTEUR aster M.ADMINISTRATEUR # RESPONSABLE D6BHHHH J-P.LEFEBVRE # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -20,6 +19,6 @@ # IDENTIFICATION DU GESTIONNAIRE DE COMMANDE ACCAS A PARTIR # DE LA VERSION DU CODE_ASTER ASSOCIE #---------------------------------------------------------------------- -version = "9.1.15" -date = "17/10/2007" +version = "9.3.0" +date = "11/06/2008" exploit = False diff --git a/Aster/sdist.py b/Aster/sdist.py index 9b0f3af7..ba37e082 100644 --- a/Aster/sdist.py +++ b/Aster/sdist.py @@ -55,6 +55,8 @@ def main(): 'editeur.ini', 'editeur_salome.ini', 'eficas_aster.py', + 'qtEficas_aster.py', + 'configuration.py', 'test_eficas.py', 'style.py', '__init__.py' diff --git a/Editeur/analyse_catalogue.py b/Editeur/analyse_catalogue.py index 70d449bb..ede00619 100644 --- a/Editeur/analyse_catalogue.py +++ b/Editeur/analyse_catalogue.py @@ -24,7 +24,7 @@ import re,string,cPickle,os from Noyau.N_CR import CR # -__Id__="$Id: analyse_catalogue.py,v 1.6.6.1.4.1 2008-10-10 13:22:15 pnoyret Exp $" +__Id__="$Id: analyse_catalogue.py,v 1.7.4.1 2008-11-13 10:35:11 cchris Exp $" __version__="$Name: $" # l_noms_commandes = ['OPER','PROC','MACRO','FORM'] diff --git a/Editeur/basestyle.py b/Editeur/basestyle.py new file mode 100644 index 00000000..e4287b75 --- /dev/null +++ b/Editeur/basestyle.py @@ -0,0 +1,27 @@ +class STYLE: + background='gray90' + foreground='black' + entry_background='white' + list_background='white' + list_select_background='#00008b' + list_select_foreground='grey' + tooltip_background="yellow" + + standard = ("Helvetica",12) + standard_italique = ("Helvetica",12,'italic') + standard_gras = ("Helvetica",12,'bold') + standard_gras_souligne = ("Helvetica",12,'bold','underline') + + canvas = ('Helvetica',10) + canvas_italique = ('Helvetica',10,'italic') + canvas_gras = ("Helvetica",10,'bold') + canvas_gras_italique = ("Helvetica",12,'bold','italic') + + standard12 = ("Helvetica",14) + standard12_gras = ("Helvetica",14,'bold') + standard12_gras_italique = ( "Helvetica",14,'bold','italic') + + standardcourier10 = ("Courier",14) + statusfont = ("Helvetica",16) + +style=STYLE() diff --git a/Editeur/comploaderqt4.py b/Editeur/comploaderqt4.py new file mode 100644 index 00000000..e75d492e --- /dev/null +++ b/Editeur/comploaderqt4.py @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +""" + Module de chargement des composants et de mapping des objets du noyau + Accas vers les items d'EFICAS + + - composants : dictionnaire de stockage des relations entre types + d'objet du noyau et types d'item + - charger_composants() : fonction de chargement des composants. Retourne + le dictionnaire composants. + - gettreeitem(object) -> type d'item : fonction qui retourne un type + d'item correspondant au type de l'objet noyau fourni. + - make_objecttreeitem(appli,labeltext, object, setfunction=None) -> item : fonction qui retourne un item + correspondant à l'objet noyau fourni. +""" +# import généraux +import os,glob,types + +# Dictionnaire {object : item} permettant d'associer un item à un object +# Ce dictionnaire est renseigné par la méthode charger_composants +composants = {} + +def charger_composants(Ihm="TK"): + """ + Cette fonction a pour but de charger tous les modules composants graphiques + (fichiers compo*.py dans le même répertoire que ce module ) + et de remplir le dictionnaire composants utilisé par make_objecttreeitem + """ + reper=os.path.dirname(__file__) + if Ihm == "TK" : + repertoire=reper+"/../InterfaceTK" + package="InterfaceTK" + else : + repertoire=reper+"/../InterfaceQT4" + package="InterfaceQT4" + listfich=glob.glob(os.path.join(repertoire, "compo*.py")) + for fichier in listfich: + m= os.path.basename(fichier)[:-3] + module=__import__(package,globals(),locals(),[m]) + module = getattr(module, m) + composants[module.objet]=module.treeitem + return composants + +def gettreeitem(object): + """ + Cette fonction retourne la classe item associée à l'objet object. + Cette classe item dépend bien sûr de la nature de object, d'où + l'interrogation du dictionnaire composants + """ + # Si la definition de l'objet a un attribut itemeditor, il indique + # la classe a utiliser pour l'item + try: + return object.definition.itemeditor + except: + pass + + # On cherche ensuite dans les composants (plugins) + try: + itemtype= composants[object.__class__] + return itemtype + except: + pass + + # Puis une eventuelle classe heritee (aleatoire car sans ordre) + for e in composants.keys(): + if e and isinstance(object,e): + itemtype= composants[e] + return itemtype + + # Si on n'a rien trouve dans les composants on utilise l'objet par defaut + itemtype=composants[None] + return itemtype + +def make_objecttreeitem(appli,labeltext, object, setfunction=None): + """ + Cette fonction permet de construire et de retourner un objet + de type item associé à l'object passé en argument. + """ + c = gettreeitem(object) + return c(appli,labeltext, object, setfunction) + diff --git a/Editeur/configuration.py b/Editeur/configuration.py deleted file mode 100644 index f0cd647c..00000000 --- a/Editeur/configuration.py +++ /dev/null @@ -1,364 +0,0 @@ -# -*- coding: utf-8 -*- -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. -# -# -# ====================================================================== -""" - Ce module sert pour charger les paramètres de configuration d'EFICAS -""" -# Modules Python -import os, sys, string, types, re -import traceback - -# Modules Eficas -from Editeur import utils - -class CONFIGbase: - - #----------------------------------- - def __init__(self,appli): - #----------------------------------- - - # Classe de base permettant de lire, afficher - # et sauvegarder les fichiers utilisateurs editeur.ini - # et style.py - # Classe Mere de : class CONFIG(CONFIGbase) - # class CONFIGStyle(CONFIGbase): - - self.appli = appli - self.salome = appli.salome - self.dRepMat={} - if self.appli: - self.parent=appli.top - else: - self.parent=None - self.rep_user = utils.get_rep_user() - self.lecture_fichier_ini_standard() - self.lecture_catalogues_standard() - self.lecture_fichier_ini_utilisateur() - self.init_liste_param() - - #-------------------------------------- - def lecture_fichier_ini_standard(self): - #-------------------------------------- - # Verifie l'existence du fichier "standard" - # appelle la lecture de ce fichier - if not os.path.isfile(self.fic_ini): - if self.appli.ihm=="TK" : - from widgets import showerror - showerror("Erreur","Pas de fichier de configuration" + self.fic_ini+"\n") - print "Erreur à la lecture du fichier de configuration : %s" % self.fic_ini - sys.exit(0) - self.lecture_fichier(self.fic_ini) - - #----------------------------- - def lecture_fichier(self,fic): - #------------------------------ - # lit les paramètres du fichier eficas.ini ou style.py - # les transforme en attribut de l 'objet - # utilisation du dictionnaire local pour récuperer style - txt = utils.read_file(fic) - from InterfaceTK.styles import style - d=locals() - try: - exec txt in d - except: - l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) - if self.appli.ihm=="TK" : - from widgets import showerror - showerror("Erreur","Une erreur s'est produite lors de la lecture du fichier : " + fic + "\n") - print "Erreur à la lecture du fichier de configuration : %s" % fic - sys.exit() - - for k in d.keys() : - if k in self.labels.keys() : - setattr(self,k,d[k]) - # Glut horrible pour les repertoires materiau... - elif k[0:9]=="rep_mat_v" : - setattr(self,k,d[k]) - - for k in d['style'].__dict__.keys() : - setattr(self,k,d['style'].__dict__[k]) - - if hasattr(self,"catalogues") : - for ligne in self.catalogues : - version=ligne[1] - codeSansPoint=re.sub("\.","",version) - chaine="rep_mat_"+codeSansPoint - if hasattr(self,chaine): - rep_mat=getattr(self,chaine) - self.dRepMat[version]=str(rep_mat) - - #-------------------------------------- - def lecture_fichier_ini_utilisateur(self): - #-------------------------------------- - # Surcharge les paramètres standards par les paramètres utilisateur s'ils existent - self.fic_ini_utilisateur = os.path.join(self.rep_user,self.fichier) - if not os.path.isfile(self.fic_ini_utilisateur): - return - self.lecture_fichier(self.fic_ini_utilisateur) - - #-------------------------------------- - def lecture_catalogues_standard(self): - #-------------------------------------- - # repertoires Materiau - if hasattr(self,"catalogues") : - for ligne in self.catalogues : - version=ligne[1] - cata=ligne[2] - self.dRepMat[version]=os.path.join(cata,'materiau') - - #-------------------------------------- - def affichage_fichier_ini(self): - #-------------------------------------- - """ - Affichage des valeurs des paramètres relus par Eficas - """ - import widgets - result = widgets.Formulaire(self.parent, - obj_pere = self, - titre = self.titre, - texte = self.texte_ini, - items = self.l_param, - mode='display', - commande=('Modifier',self.commande)) - if result.resultat : - #print 'on sauvegarde les nouveaux paramètres :',result.resultat - self.save_param_ini(result.resultat) - - #-------------------------------------- - def save_param_ini(self,dico): - #-------------------------------------- - # sauvegarde - # les nouveaux paramètres dans le fichier de configuration utilisateur - # - f=open(self.fic_ini_utilisateur,'w+') - for k,v in dico.items(): - if self.types[k] in ('mot2','mot3','mot4'): - v1=v[1:-1] - val=v1.split(",") - p = "(" - listeval="" - for valeur in val: - listeval = listeval+ p + str(valeur) - p=" , " - listeval = listeval + ")" - f.write(str(self.pref)+str(k) + '=' + str(listeval) + '\n') - elif k == 'catalogues' : - f.write(k + '\t=\t' + str(v) + '\n') - else: - f.write(str(self.pref)+str(k) + '\t=\t"' + str(v) + '"\n') - f.close() - self.lecture_fichier_ini_utilisateur() - - #------------------------------------------- - def creation_fichier_ini_si_possible(self): - #------------------------------------------- - return self.creation_fichier_ini(mode='ignorer_annuler') - - #-------------------------------------------------------- - def creation_fichier_ini(self,mode='considerer_annuler'): - #--------------------------------------------------------- - # Récupération des valeurs des paramétres requis pour la création du fichier - # eficas.ini - # - import widgets - items = self.l_param - result = widgets.Formulaire(self.parent, - obj_pere = self, - titre = "Saisie des données indispensables à la configuration d'EFICAS", - texte = self.texte, - items = items, - mode='query') - if not result.resultat : - if mode == 'considerer_annuler': - test=0 - if self.appli.ihm=="TK" : - from widgets import showerror,askretrycancel - test = askretrycancel("Erreur","Données incorrectes !") - if not test: - # XXX On sort d'EFICAS, je suppose - self.appli.exitEFICAS() - else: - self.creation_fichier_ini() - else: - return None - else : - self.save_param_ini(result.resultat) - return result.resultat - - #-------------------------- - def init_liste_param (self): - #-------------------------- - # construit self.l_param - # a partir de self.labels et des attributs - # de l objet (mis a jour lors de la lecture du fichier) - # l_param est une liste de tuples où chaque tuple est de la forme : - # (label,nature,nom_var,defaut) - - self.l_param=[] - for k in self.labels.keys() : - if hasattr(self,k) : - if k in self.YesNo.keys(): - self.l_param.append((self.labels[k],self.types[k],k,self.__dict__[k], - self.YesNo[k][0],self.YesNo[k][1])) - else : - self.l_param.append((self.labels[k],self.types[k],k,self.__dict__[k])) - self.l_param = tuple(self.l_param) - - -class CONFIG(CONFIGbase): - def __init__(self,appli,rep_ini): - self.texte = "EFICAS a besoin de certains renseignements pour se configurer\n"+\ - "Veuillez remplir TOUS les champs ci-dessous et appuyer sur 'Valider'\n"+\ - "Si vous annulez, EFICAS ne se lancera pas !!" - self.salome=appli.salome - self.code=appli.code - if self.salome == 0 : - self.fichier="editeur.ini" - else : - self.fichier="editeur_salome.ini" - self.rep_ini = rep_ini - self.fic_ini = os.path.join(self.rep_ini,self.fichier) - self.titre = "Paramètres nécessaires à la configuration d'EFICAS" - self.texte_ini = "Voici les paramètres que requiert Eficas" - self.commande = self.creation_fichier_ini_si_possible - self.labels={"initialdir" : "Répertoire initial pour Open/Save des fichiers", - "rep_travail" : "Répertoire de travail", - "rep_mat" : "Répertoire materiaux", - "path_doc" : "Chemin d'accès à la doc Aster", - "exec_acrobat" : "Ligne de commande Acrobat Reader", - "catalogues" : "Versions du code ", - "isdeveloppeur" : "Niveau de message ", - "path_cata_dev" : "Chemin d'accès aux catalogues développeurs"} - - if self.code == "OPENTURNS" : - self.labels["DTDDirectory"]="Chemin d'accès au wraper" - - self.types ={"initialdir":"rep", "rep_travail":"rep","rep_mat":"rep", - "path_doc": "rep","exec_acrobat":"file","exec_acrobat":"file", - "catalogues" :"cata","isdeveloppeur":"YesNo","path_cata_dev":"rep", - "DTDDirectory":"rep"} - - self.YesNo={} - self.YesNo['isdeveloppeur']=('Deboggage','Utilisation') - - # Valeurs par defaut - self.rep_user = utils.get_rep_user() - self.initialdir=self.rep_user - self.rep_travail=os.path.join(self.rep_user,'uaster','tmp_eficas') - self.rep_mat="" - self.path_doc=self.rep_user - self.exec_acrobat=self.rep_user - self.catalogues= os.path.join(self.rep_ini,'..','Cata/cata.py') - self.isdeveloppeur='NON' - self.path_cata_dev=os.path.join(self.rep_user,'cata') - CONFIGbase.__init__ (self,appli) - self.pref="" - - #-------------------------------------- - def save_params(self): - #-------------------------------------- - # sauvegarde - # les nouveaux paramètres dans le fichier de configuration utilisateur - # - l_param=('exec_acrobat', 'rep_ini','catalogues','rep_travail','rep_mat','path_doc') - texte="" - for clef in l_param : - if hasattr(self,clef): - valeur=getattr(self,clef) - texte= texte + clef+" = " + repr(valeur) +"\n" - - - # recuperation des repertoires materiaux - try : - for item in self.catalogues : - try : - (code,version,cata,format,defaut)=item - except : - (code,version,cata,format)=item - codeSansPoint=re.sub("\.","",version) - chaine="rep_mat_"+codeSansPoint - if hasattr(self,chaine): - valeur=getattr(self,chaine) - texte= texte + chaine+" = '" + str(valeur) +"'\n" - except : - pass - - f=open(self.fic_ini_utilisateur,'w+') - f.write(texte) - f.close() - - -class CONFIGStyle(CONFIGbase): - def __init__(self,appli,rep_ini): - self.salome=appli.salome - self.texte = "Pour prendre en compte les modifications \n"+\ - " RELANCER EFICAS" - self.fichier="style.py" - self.rep_ini = rep_ini - self.fic_ini = os.path.join(self.rep_ini,self.fichier) - self.titre = "Paramètres d affichage" - self.texte_ini = "Voici les paramètres configurables : " - self.commande = self.creation_fichier_ini_si_possible - self.labels={"background":"couleur du fonds", - "foreground":"couleur de la police standard" , - "standard":" police et taille standard", - "standard_italique":"police utilisée pour l'arbre ", - "standard_gras_souligne":"police utilisée pour le gras souligné", - "canvas_italique":"police italique", - "standard_gras":"gras", - #"canvas":"police", - #"canvas_gras":"police gras", - #"canvas_gras_italique":"police gras italique", - #"standard12":"police 12", - #"standard12_gras":"police 12 gras", - #"standard12_gras_italique":"police 12 gras italique", - #"standardcourier10":"courrier " - "statusfont":"police utilisée dans la status Bar", - } - self.types ={"background":"mot", - "foreground":"mot" , - "standard":"mot2", - "standard_italique":"mot3", - "standard_gras":"mot3", - "standard_gras_souligne":"mot4", - "canvas":"mot2", - "canvas_italique":"mot3", - "canvas_gras":"mot3", - "canvas_gras_italique":"mot4", - "standard12":"mot2", - "standard12_gras":"mot3", - "standard12_gras_italique":"mot4", - "statusfont":"mot2", - "standardcourier10":"mot2"} - self.YesNo={} - self.l_param=[] - CONFIGbase.__init__ (self,appli) - self.pref="style." - - def affichage_style_ini(self): - self.affichage_fichier_ini() - -def make_config(appli,rep): - return CONFIG(appli,rep) - -def make_config_style(appli,rep): - return CONFIGStyle(appli,rep) - - diff --git a/Editeur/fontes.py b/Editeur/fontes.py new file mode 100644 index 00000000..8e158927 --- /dev/null +++ b/Editeur/fontes.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +standard = ("Times",10) +standard_italique = ("Times",10,'italic') +standard_gras = ("Times",10,'bold') +standard_gras_souligne = ("Times",10,'bold','underline') + +canvas = ('times',8) +canvas_italique = ('times',8,'italic') +canvas_gras = ("Times",8,'bold') +canvas_gras_italique = ("Times",10,'bold','italic') + +standard12 = ("Times",12) +standard12_gras = ("Times",12,'bold') +standard12_gras_italique = ( "times",12,'bold','italic') + +standardcourier10 = ("Courier",10) + diff --git a/Editeur/import_code.py b/Editeur/import_code.py index 9dec4a20..3d34eaa6 100644 --- a/Editeur/import_code.py +++ b/Editeur/import_code.py @@ -23,15 +23,29 @@ les imports de modules Python """ import sys +import os + import prefs +INSTALLDIR=prefs.INSTALLDIR +sys.path.append(INSTALLDIR) +sys.path.append(INSTALLDIR+"/Ui") +sys.path.append(INSTALLDIR+"/InterfaceQT") +sys.path.append(INSTALLDIR+"/Editeur") + # Ce chemin permet d'importer les modules Noyau et Validation # représentant le code utilisé (si fourni) -if prefs.CODE_PATH: - sys.path[:0]=[prefs.CODE_PATH] - import Noyau,Validation - del sys.path[0] - # Ensuite on utilise les packages de l'intallation +if hasattr(prefs,'CODE_PATH'): + if prefs.CODE_PATH: + sys.path[:0]=[prefs.CODE_PATH] + import Noyau,Validation + del sys.path[0] sys.path[:0]=[prefs.INSTALLDIR] + +# Ensuite on surcharge eventuellement +#if hasattr(prefs,'CODE_PATH_SURCHARGE'): +# if prefs.CODE_PATH_SURCHARGE: +# sys.path.insert(0,prefs.CODE_PATH_SURCHARGE) + import Accas diff --git a/Editeur/listePatrons.py b/Editeur/listePatrons.py index fe54d854..d6dbe89b 100644 --- a/Editeur/listePatrons.py +++ b/Editeur/listePatrons.py @@ -2,7 +2,8 @@ import os import re sous_menus={"ASTER" : {0:{"3D":"3D.comm"},1:{"poutre":"pou.comm"},2:{"salome":"salome.comm"},3:{"divers":"comm"}}, - "OPENTURNS" : {0:{"Anne":"Anne.comm"}} + "OPENTURNS_STUDY" : {0:{"Anne":"Std.comm"}}, + "OPENTURNS_WRAPPER" : {0:{"Anne":"wrapper_exemple.comm"}} } class listePatrons : @@ -16,6 +17,7 @@ class listePatrons : self.traite_liste() def traite_liste(self): + if not (os.path.exists(self.rep_patrons)) : return for file in os.listdir(self.rep_patrons): for i in range(len(self.sous_menu)): clef=self.sous_menu[i].keys()[0] diff --git a/Editeur/styles.py b/Editeur/styles.py new file mode 100644 index 00000000..2d5fc4a2 --- /dev/null +++ b/Editeur/styles.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +import os +import prefs +import basestyle +from basestyle import STYLE,style + +inistylefile=os.path.join(prefs.REPINI,"style.py") +if os.path.isfile(inistylefile): + execfile(inistylefile) + +userstylefile=os.path.expanduser("~/Eficas_install/style.py") +if os.path.isfile(userstylefile): + execfile(userstylefile) + +import fontes +for attr in dir(style): + if attr[0]=='_':continue + if not hasattr(fontes,attr):continue + setattr(fontes,attr,getattr(style,attr)) + + diff --git a/Editeur/utils.py b/Editeur/utils.py index ecb01bb3..ca20260a 100644 --- a/Editeur/utils.py +++ b/Editeur/utils.py @@ -54,7 +54,7 @@ def get_rep_user(): except: rep_user_eficas = os.path.join('C:','Eficas_install') else : - rep_user_eficas = os.path.join(os.environ['HOME'],'Eficas_install') + rep_user_eficas= os.path.join(os.environ['HOME'],'.Eficas_install') if os.path.exists(rep_user_eficas): if os.path.isfile(rep_user_eficas) : print "Un fichier de nom %s existe déjà : impossible de créer un répertoire de même nom" %rep_user_eficas diff --git a/Ihm/I_JDC.py b/Ihm/I_JDC.py index 70b26efd..2b39f2a4 100644 --- a/Ihm/I_JDC.py +++ b/Ihm/I_JDC.py @@ -723,20 +723,20 @@ class JDC(I_OBJECT.OBJECT): def supprime(self): #print "supprime",self Noyau.N_JDC.JDC.supprime(self) - # self.appli=None - # self.g_context={} - # self.const_context={} - # self.sds=[] - # self.sds_dict={} - # self.mc_globaux={} - # self.current_context={} - # self.condition_context={} - # self.etapes_niveaux=[] - # self.niveau=None - # self.params=[] - # self.fonctions=[] - # self._etape_context=None - # self.etapes=[] + self.appli=None + self.g_context={} + self.const_context={} + self.sds=[] + self.sds_dict={} + self.mc_globaux={} + self.current_context={} + self.condition_context={} + self.etapes_niveaux=[] + self.niveau=None + self.params=[] + self.fonctions=[] + self._etape_context=None + self.etapes=[] #ATTENTION SURCHARGE : cette methode doit etre gardée en synchronisation avec celle de Noyau def register(self,etape): diff --git a/Ihm/I_MACRO_ETAPE.py b/Ihm/I_MACRO_ETAPE.py index 7e58aa03..5aab780a 100644 --- a/Ihm/I_MACRO_ETAPE.py +++ b/Ihm/I_MACRO_ETAPE.py @@ -111,7 +111,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE): self.text_error="" if self.nom != "INCLUDE_MATERIAU": if self.parent.appli.ihm == "QT" : - format=self.jdc.appli.format_fichier + format=self.parent.appli.appliEficas.format_fichier else : format=self.jdc.appli.format_fichier.get() if convert.plugins.has_key(format): @@ -127,6 +127,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE): else: self.text_converted=1 + j=self.JdC_aux( procedure=text, nom=fichier, appli=self.jdc.appli, cata=self.jdc.cata, @@ -758,6 +759,91 @@ class MACRO_ETAPE(I_ETAPE.ETAPE): f,text=None,None return f,text + + def make_include2(self,fichier=None): + # gestion de l unicite SVP + unite=999 + if hasattr(self,'fichier_ini') : return + #print "je passe le if" + if fichier == None : + fichier=str(self.jdc.appli.get_file_variable()) + #print fichier + if fichier == str("") : + self.fichier_ini="badfile" + self.fichier_text="" + self.fichier_err="Le fichier INCLUDE n est pas defini" + self.parent.record_unit(999,self) + try : + MCFils=self.get_child('FICHIER') + MCFils.set_valeur(None) + except : + pass + raise Exception(self.fichier_err) + + # On memorise le fichier retourne + self.fichier_ini = fichier + self.fichier_text = "" + self.contexte_fichier_init={} + self.fichier_unite=999 + self.fichier_err=None + try : + from openturns import WrapperFile + monWrapper=WrapperFile(fichier) + data=monWrapper.getWrapperData() + maVariableListe=data.getVariableList() + nbVariables=maVariableListe.getSize() + for i in range(nbVariables) : + nom=maVariableListe[i].id_ + type=maVariableListe[i].type_ + if type : + ligneTexte=nom+"=VARI(type='IN',);\n" + else : + ligneTexte=nom+"=VARI(type='OUT',);\n" + self.fichier_text = self.fichier_text + ligneTexte + except: + self.make_incl2_except() + raise + + try: + import Extensions.jdc_include + except: + traceback.print_exc() + self.make_incl2_except() + raise + self.JdC_aux=Extensions.jdc_include.JdC_include + + try: + self.make_contexte_include(self.fichier_ini ,self.fichier_text) + self.parent.record_unit(unite,self) + try : + MCFils=self.get_child('FICHIER') + MCFils.set_valeur(fichier) + except : + pass + except: + self.make_incl2_except() + raise + + def make_incl2_except(self): + #print "make_incl2_except" + l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1]) + if self.jdc.appli: + self.jdc.appli.affiche_alerte("Erreur lors de l'evaluation du fichier inclus", + message="Le contenu de ce fichier ne sera pas pris en compte\n"+string.join(l) + ) + self.parent.record_unit(unite,self) + self.g_context={} + self.etapes=[] + self.jdc_aux=None + self.fichier_err = string.join(l) + self.contexte_fichier_init={} + try : + MCFils=self.get_child('FICHIER') + MCFils.set_valeur(None) + except : + pass + + #ATTENTION SURCHARGE : cette methode surcharge celle de Noyau (a garder en synchro) def make_include(self,unite=None): """ @@ -798,7 +884,6 @@ class MACRO_ETAPE(I_ETAPE.ETAPE): try: self.make_contexte_include(self.fichier_ini ,self.fichier_text) self.parent.record_unit(unite,self) - #print "make_include.context_ini",self.jdc_aux.context_ini except: l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1]) if self.jdc.appli: diff --git a/InterfaceQT/browser.py b/InterfaceQT/browser.py index e149adc5..2b11541e 100644 --- a/InterfaceQT/browser.py +++ b/InterfaceQT/browser.py @@ -22,7 +22,7 @@ class JDCTree( QListView ): self.addColumn(self.trUtf8('Commande')) self.addColumn(self.trUtf8('Concept/Valeur')) - self.setMinimumSize(QSize(400,500)) + #self.setMinimumSize(QSize(400,500)) self.connect(self,SIGNAL('contextMenuRequested(QListViewItem *, const QPoint &, int)'), self.handleContextMenu) diff --git a/InterfaceQT/editor.py b/InterfaceQT/editor.py index 3e282300..b2391368 100644 --- a/InterfaceQT/editor.py +++ b/InterfaceQT/editor.py @@ -18,7 +18,7 @@ import readercata import prefs import qtCommun -VERSION_EFICAS = "EFICAS v1.14" +VERSION_EFICAS = "EFICAS v1.15" # -------------------------- # @@ -52,7 +52,7 @@ class JDCEditor(QSplitter): self.jdc_openturn_std="" self.ihm="QT" - from Editeur import configuration + import configuration self.CONFIGURATION = self.appliEficas.CONFIGURATION self.CONFIGStyle = self.appliEficas.CONFIGStyle self.test=0 @@ -267,15 +267,15 @@ class JDCEditor(QSplitter): if unite : titre = "Choix unite %d " %unite texte = "Le fichier %s contient une commande INCLUDE \n" % fic_origine - texte = texte+'Donnez le nom du fichier correspondant\n à l unité logique %d' % unite + texte = texte+'Donnez le nom du fichier correspondant à l unité logique %d' % unite labeltexte = 'Fichier pour unite %d :' % unite else: titre = "Choix d'un fichier de poursuite" texte = "Le fichier %s contient une commande %s\n" %(fic_origine,'POURSUITE') - texte = texte+'Donnez le nom du fichier dont vous \n voulez faire une poursuite' + texte = texte+'Donnez le nom du fichier dont vous voulez faire une poursuite' QMessageBox.information( self, titre,texte) - fn = QFileDialog.getOpenFileName( None, "", self, None, titre ) + fn = QFileDialog.getOpenFileName( self.CONFIGURATION.savedir,"", self, titre, "" ) if fn.isNull(): return @@ -644,25 +644,25 @@ class JDCEditor(QSplitter): if saveas or self.fileName is None: if path is None and self.fileName is not None: path = os.path.dirname(unicode(self.fileName)) - selectedFilter = QString('') + else : + path=self.CONFIGURATION.savedir fn = QFileDialog.getSaveFileName(path, - self.trUtf8("JDC (*.comm);;" - "All Files (*)"), self, None, - self.trUtf8("Save File"), selectedFilter, 0) - + self.trUtf8("JDC (*.comm);;" "All Files (*)"),self, None, + self.trUtf8("Save File"), '', 0) + if not fn.isNull(): ext = QFileInfo(fn).extension() if ext.isEmpty(): - ex = selectedFilter.section('(*',1,1).section(')',0,0) - if not ex.isEmpty(): - fn.append(ex) + ex = ".comm" + fn.append(ex) if QFileInfo(fn).exists(): - abort = QMessageBox.warning(self, + abort = QMessageBox.warning( + self, self.trUtf8("Save File"), - self.trUtf8("The file %1 already exists.") - .arg(fn), + self.trUtf8("The file %1 already exists.").arg(fn), self.trUtf8("&Overwrite"), - self.trUtf8("&Abort"), None, 1) + self.trUtf8("&Abort") ) + print abort if abort: return (0, None) fn = unicode(QDir.convertSeparators(fn)) diff --git a/InterfaceQT/monFonctionPanel.py b/InterfaceQT/monFonctionPanel.py index b69d3819..e38ed07b 100644 --- a/InterfaceQT/monFonctionPanel.py +++ b/InterfaceQT/monFonctionPanel.py @@ -52,8 +52,7 @@ class MonFonctionPanel(MonPlusieursBasePanel): l_valeurs=[] if (len(liste)% self.nbValeurs != 0): message="La cardinalité n'est pas correcte, la dernière valeur est ignorée" - #self.Commentaire.setText(QString(commentaire)) - self.editor.affiche_infos(commentaire) + self.editor.affiche_infos(message) for i in range(len(liste)/ self.nbValeurs) : if (self.nbValeurs==2): t=(liste[i*self.nbValeurs], liste[i*self.nbValeurs+1]) @@ -66,12 +65,22 @@ class MonFonctionPanel(MonPlusieursBasePanel): self.LBValeurs.clear() listeValeurs=self.node.item.GetListeValeurs() for valeur in self.DecoupeListeValeurs(listeValeurs): - self.LBValeurs.insertItem(str(valeur)) + if type(valeur) == types.TupleType: + TupleEnTexte="(" + for val in valeur : + TupleEnTexte = TupleEnTexte + str(self.politique.GetValeurTexte(val)) +", " + TupleEnTexte = TupleEnTexte[0:-2] +")" + self.LBValeurs.insertItem(TupleEnTexte) + else : + self.LBValeurs.insertItem(QString(str(valeur))) def Ajout1Valeur(self,liste=[]): # Pour être appele a partir du Panel Importer (donc plusieurs fois par AjouterNValeur) if liste == [] : - liste,validite=SaisieValeur.TraiteLEValeur(self) + liste,validite,texteBrut=SaisieValeur.TraiteLEValeur(self) + if validite : + for val in texteBrut.split(',') : + self.politique.AjoutDsDictReel(val) else : validite=1 if validite == 0 : return @@ -90,12 +99,12 @@ class MonFonctionPanel(MonPlusieursBasePanel): index=self.LBValeurs.currentItem() +1 indexListe=index*self.nbValeurs if index == 0 : - index = -1 + index = len(self.listeValeursCourantes) indexListe=len(self.listeValeursCourantes) listeVal=[] for valeur in self.listeValeursCourantes : listeVal.append(valeur) - validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index,listeVal) + validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index+1,listeVal) self.Commentaire.setText(comm2) if not validite : self.editor.affiche_infos(comm) @@ -104,7 +113,14 @@ class MonFonctionPanel(MonPlusieursBasePanel): l1=self.listeValeursCourantes[:indexListe] l3=self.listeValeursCourantes[indexListe:] for valeur in self.DecoupeListeValeurs(listeRetour): - self.LBValeurs.insertItem(QString(str(valeur)),index) + if type(valeur) == types.TupleType: + TupleEnTexte="(" + for val in valeur : + TupleEnTexte = TupleEnTexte + str(self.politique.GetValeurTexte(val)) +", " + TupleEnTexte = TupleEnTexte[0:-2] +")" + self.LBValeurs.insertItem(TupleEnTexte,index) + else : + self.LBValeurs.insertItem(QString(str(valeur)),index) index=index+1 self.listeValeursCourantes=l1+listeRetour+l3 diff --git a/InterfaceQT/monIncludePanel.py b/InterfaceQT/monIncludePanel.py index b2e925bd..cec4661c 100644 --- a/InterfaceQT/monIncludePanel.py +++ b/InterfaceQT/monIncludePanel.py @@ -41,7 +41,7 @@ class MonIncludePanel(MonMacroPanel): MonMacroPanel.__init__(self,node,parent,name,fl) #Version TK ?? #if not hasattr(self.node.item.object,'fichier_ini'): - if not hasattr(self.node.item.object,'fichier_unite'): + if not hasattr(self.node.item.object,'fichier_ini'): self.ajoutPageBad() else: self.ajoutPageOk() @@ -68,7 +68,7 @@ class MonIncludePanel(MonMacroPanel): self.BChangeFile = QPushButton(self.TabPage,"BChangeFile") self.BChangeFile.setGeometry(QRect(290,350,161,41)) - self.BChangeFile.setSizePolicy(QSizePolicy(0,0,0,0,self.BChangeFile.sizePolicy().hasHeightForWidth())) + #self.BChangeFile.setSizePolicy(QSizePolicy(0,0,0,0,self.BChangeFile.sizePolicy().hasHeightForWidth())) self.BChangeFile.setText(self._DMacro__tr("Autre Fichier")) self.connect(self.BBrowse,SIGNAL("clicked()"),self.BBrowsePressed) diff --git a/InterfaceQT/monOptionsEditeur.py b/InterfaceQT/monOptionsEditeur.py index 89c4510c..70c0dbdb 100644 --- a/InterfaceQT/monOptionsEditeur.py +++ b/InterfaceQT/monOptionsEditeur.py @@ -124,13 +124,13 @@ class Options(desOptions): if res == 1 : return appli=self.configuration.appli - rep_ini=self.configuration.rep_ini + repIni=self.configuration.repIni fic_ini_util=self.configuration.fic_ini_utilisateur old_fic_ini_util=fic_ini_util+"_old" commande="mv "+fic_ini_util+" "+old_fic_ini_util os.system(commande) - from Editeur import configuration - configNew=configuration.CONFIG(appli,rep_ini) + import configuration + configNew=configuration.CONFIG(appli,repIni) self.configuration=configNew appli.CONFIGURATION=configNew self.configuration.save_params() diff --git a/InterfaceQT/monPlusieursBasePanel.py b/InterfaceQT/monPlusieursBasePanel.py index 0907cbed..f10f1e76 100644 --- a/InterfaceQT/monPlusieursBasePanel.py +++ b/InterfaceQT/monPlusieursBasePanel.py @@ -51,7 +51,6 @@ class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur): def detruitBouton(self): mc = self.node.item.get_definition() type = mc.type[0] - print self.editor.salome if not(('grma' in repr(type)) or ('grno' in repr(type))) or not(self.editor.salome) : self.BSalome.close() self.BView2D.close() @@ -61,7 +60,7 @@ class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur): def BuildLBValeurs(self): # redefinit en raison de l heritage par monFonctionPanel - SaisieValeur.BuildLBValeurs(self) + SaisieValeur.BuildLBValeurs(self,politique=self.politique) def BOkPourListePressed(self): if self.listeValeursCourantes == [] : @@ -92,9 +91,11 @@ class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur): def Ajout1Valeur(self,valeur=None): - liste,validite=SaisieValeur.TraiteLEValeur(self,valeur) + liste,validite,texteBrut=SaisieValeur.TraiteLEValeur(self,valeur) if validite == 0 : return if liste ==[] : return + for val in texteBrut.split(',') : + self.politique.AjoutDsDictReel(val) index=self.LBValeurs.currentItem() + 1 listeVal=[] @@ -110,11 +111,13 @@ class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur): l3=self.listeValeursCourantes[index:] for valeur in listeRetour: self.LBValeurs.insertItem(QString(str(valeur)),index) + self.LBValeurs.setCurrentItem(index) index=index+1 self.listeValeursCourantes=l1+listeRetour+l3 + self.editor.modified=1 def BImportPressed(self): - init=QString( self.editor.CONFIGURATION.rep_user) + init=QString( self.editor.CONFIGURATION.savedir) fn = QFileDialog.getOpenFileName(init, self.trUtf8('All Files (*)',)) if fn == None : return if fn == "" : return diff --git a/InterfaceQT/monPlusieursIntoPanel.py b/InterfaceQT/monPlusieursIntoPanel.py index 80fa4235..4a738c7f 100644 --- a/InterfaceQT/monPlusieursIntoPanel.py +++ b/InterfaceQT/monPlusieursIntoPanel.py @@ -91,6 +91,7 @@ class MonPlusieursIntoPanel(DPlusInto,QTPanel,SaisieValeur): l3=self.listeValeursCourantes[index:] for valeur in listeRetour: self.LBValeurs.insertItem(QString(str(valeur)),index) + self.LBValeurs.setCurrentItem(index) index=index+1 self.listeValeursCourantes=l1+listeRetour+l3 SaisieValeur.RemplitPanel(self,self.listeValeursCourantes) diff --git a/InterfaceQT/monRacinePanel.py b/InterfaceQT/monRacinePanel.py index bf8f3a8e..678fc089 100644 --- a/InterfaceQT/monRacinePanel.py +++ b/InterfaceQT/monRacinePanel.py @@ -40,6 +40,7 @@ class MonRacinePanel(DRac,QTPanelTBW2): DRac.__init__(self,parent,name,fl) QTPanel.__init__(self,node,parent) QTPanelTBW2.__init__(self,node,parent,racine=1) + self.setMinimumSize(0,0) def BSupPressed(self): QTPanel.BSupPressed(self) diff --git a/InterfaceQT/monSelectVal.py b/InterfaceQT/monSelectVal.py index c3c64148..d0f03f8e 100644 --- a/InterfaceQT/monSelectVal.py +++ b/InterfaceQT/monSelectVal.py @@ -44,6 +44,7 @@ class MonSelectVal(DSelVal): self.initVal() def readVal(self): + if self.file == "" : return f = open(self.file, "rb") self.texte = f.read() f.close() @@ -62,6 +63,7 @@ class MonSelectVal(DSelVal): def BImportSelPressed(self): text=str(self.TBtext.selectedText()) self.textTraite=text + if self.textTraite == "" : return self.Traitement() def BImportToutPressed(self): @@ -75,10 +77,11 @@ class MonSelectVal(DSelVal): liste1=self.textTraite.split(self.separateur) liste=[] for val in liste1 : - val=str(val) - try : - val=eval(val,{}) - except : - pass - liste.append(val) + if val != '' and val != ' ' and val != self.separateur : + val=str(val) + try : + val2=eval(val,{}) + liste.append(val) + except : + pass self.FonctPanel.AjoutNValeur(liste) diff --git a/InterfaceQT/politiquesValidation.py b/InterfaceQT/politiquesValidation.py index 539f6113..65e9df18 100644 --- a/InterfaceQT/politiquesValidation.py +++ b/InterfaceQT/politiquesValidation.py @@ -59,7 +59,7 @@ class Validation : def SetValeurTexte(self,texteValeur) : try : if "R" in self.node.item.object.definition.type: - if texteValeur[0] != "'": + if str(texteValeur)[0] != "'": clef=eval(texteValeur) if str(clef) != str(texteValeur) : self.node.item.object.init_modif() @@ -72,6 +72,23 @@ class Validation : except: pass + def AjoutDsDictReel(self,texteValeur): + try : + #if 1 : + if "R" in self.node.item.object.definition.type: + if str(texteValeur)[0] != "'": + clef=eval(texteValeur) + if str(clef) != str(texteValeur) : + clefobj=self.node.item.object.GetNomConcept() + if not self.parent.dict_reels.has_key(clefobj): + self.parent.dict_reels[clefobj] = {} + self.parent.dict_reels[clefobj][clef]=texteValeur + self.parent.dict_reels[clefobj] + except: + #else: + #print "pb ds try de AjoutDsDictReel" + pass + def GetValeurTexte(self,valeur) : valeurTexte=valeur if "R" in self.node.item.object.definition.type: @@ -106,9 +123,9 @@ class PolitiqueUnique(Validation) : return validite, commentaire -#------------------------ -class PolitiquePlusieurs: -#------------------------ +#------------------------------------- +class PolitiquePlusieurs (Validation): +#------------------------------------- """ classe servant pour les entrees ne demandant qu un mot clef """ @@ -127,11 +144,10 @@ class PolitiquePlusieurs: if not( type(listevaleur) in (types.ListType,types.TupleType)) : listevaleur=tuple(listevaleur) for valeur in listevaleur : + valeurScientifique=valeur # On teste le type de la valeur valide=self.node.item.valide_item(valeur) if not valide : - #print self.__class__ - #if not testtype : try : valeur,valide=self.node.item.eval_valeur(valeur) valide,commentaire = self.node.item.object.verif_type(valeur) @@ -153,8 +169,10 @@ class PolitiquePlusieurs: commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé" return valide,commentaire,commentaire2,listeRetour if len(listecourante) + 1 > min : + commentaire="" return valide,commentaire,commentaire2,listeRetour # On ajoute la valeur testee a la liste courante et a la liste acceptee + self.AjoutDsDictReel(valeurScientifique) listecourante.insert(index,valeur) index=index+1 listeRetour.append(valeur) diff --git a/InterfaceQT/qtCommun.py b/InterfaceQT/qtCommun.py index e89ffc22..99a9afca 100644 --- a/InterfaceQT/qtCommun.py +++ b/InterfaceQT/qtCommun.py @@ -311,7 +311,7 @@ class ViewText(QDialog): def saveFile(self): #recuperation du nom du fichier - fn = QFileDialog.getSaveFileName(None, + fn = QFileDialog.getSaveFileName("", self.trUtf8("All Files (*)"), self, None, self.trUtf8("Save File"), '', 0) if not fn.isNull(): diff --git a/InterfaceQT/qtEficas.py b/InterfaceQT/qtEficas.py index 0e537d87..df16582a 100644 --- a/InterfaceQT/qtEficas.py +++ b/InterfaceQT/qtEficas.py @@ -3,15 +3,13 @@ import os, sys REPINI=os.path.dirname(os.path.abspath(__file__)) INSTALLDIR=os.path.join(REPINI,'..') -sys.path.append(INSTALLDIR) -sys.path.append(INSTALLDIR+"/Ui") -sys.path.append(INSTALLDIR+"/InterfaceQT") +from Editeur import import_code from qt import * from myMain import Eficas from viewManager import MyTabview -from Editeur import configuration +import configuration from Editeur import session import utilIcons @@ -132,7 +130,7 @@ class Appli(Eficas): titre = "version " monVisu=DVisu(parent=self.viewmanager,fl=Qt.WType_Dialog) monVisu.setCaption(titre) - monVisu.TB.setText("Eficas V1.14") + monVisu.TB.setText("Eficas V1.15") monVisu.adjustSize() monVisu.show() diff --git a/InterfaceQT/qtSaisie.py b/InterfaceQT/qtSaisie.py index 7c3c86e6..938ff077 100644 --- a/InterfaceQT/qtSaisie.py +++ b/InterfaceQT/qtSaisie.py @@ -45,11 +45,14 @@ class SaisieValeur: self.listBoxASSD.setCurrentItem(0) - def BuildLBValeurs(self): + def BuildLBValeurs(self,politique=None): self.LBValeurs.clear() listeValeurs=self.node.item.GetListeValeurs() for valeur in listeValeurs: - self.LBValeurs.insertItem(str(valeur)) + if politique : + self.LBValeurs.insertItem(str(self.politique.GetValeurTexte(valeur))) + else : + self.LBValeurs.insertItem(str(valeur)) if listeValeurs != None and listeValeurs != [] : self.LBValeurs.setCurrentItem(len(listeValeurs) - 1) @@ -116,7 +119,7 @@ class SaisieValeur: valeurBrute=str(self.LEValeur.text()) else : valeurBrute=valeurTraitee - if valeurBrute == str("") : return 1, listeValeurs + if valeurBrute == str("") : return listeValeurs,1,valeurBrute try : valeur=eval(valeurBrute,{}) except : @@ -134,7 +137,7 @@ class SaisieValeur: except : commentaire = "Veuillez entrer le complexe sous forme aster ou sous forme python" self.editor.affiche_infos(commentaire) - return listeValeurs,0 + return listeValeurs,0,valeurBrute else : # ce n'est pas un tuple à la mode aster @@ -150,7 +153,7 @@ class SaisieValeur: else: listeValeurs.append(valeur) - return listeValeurs,1 + return listeValeurs,1,valeurBrute class SaisieSDCO : diff --git a/InterfaceQT/readercata.py b/InterfaceQT/readercata.py index 1f2dac87..b6f4c535 100644 --- a/InterfaceQT/readercata.py +++ b/InterfaceQT/readercata.py @@ -42,7 +42,7 @@ from monChoixCata import MonChoixCata from qt import * -version="14" +version="15" class READERCATA: @@ -51,6 +51,7 @@ class READERCATA: self.parent=parent self.code=self.appli.code self.appli.format_fichier='python' + self.appli.appliEficas.format_fichier='python' self.version_code=self.appli.version_code self.version_cata=None self.fic_cata=None @@ -81,10 +82,12 @@ class READERCATA: if self.version_code == cata[1]: self.fic_cata = cata[2] self.appli.format_fichier=cata[3] + self.appli.appliEficas.format_fichier=cata[3] elif len(liste_cata_possibles)==1: self.fic_cata = liste_cata_possibles[0][2] self.version_code = liste_cata_possibles[0][1] self.appli.format_fichier=liste_cata_possibles[0][3] + self.appli.appliEficas.format_fichier=liste_cata_possibles[0][3] lab=QString("Eficas V1.") lab+=QString(version) lab+=QString(" pour ") @@ -326,6 +329,7 @@ class READERCATA: self.fic_cata = self.dico_catalogues[self.version_cata][2] self.version_code = self.version_cata self.appli.format_fichier = self.dico_catalogues[self.version_cata][3] + self.appli.appliEficas.format_fichier = self.dico_catalogues[self.version_cata][3] lab+=self.version_cata self.appli.parent.ui.setCaption(lab) #qApp.mainWidget().setCaption(lab) diff --git a/InterfaceQT/viewManager.py b/InterfaceQT/viewManager.py index c4542f10..01938695 100644 --- a/InterfaceQT/viewManager.py +++ b/InterfaceQT/viewManager.py @@ -2482,10 +2482,13 @@ class MyTabview(Tabview): else: # None will cause open dialog to start with cwd try : - userDir=os.path.expanduser("~/Eficas_install/") - return userDir - except : - return "" + userDir=self.appli.CONFIGURATION.savedir + except : + try : + userDir=os.path.expanduser("~") + except : + userDir="" + return userDir def handleEditorOpened(self): diff --git a/InterfaceQT4/browser.py b/InterfaceQT4/browser.py index 8d2c165f..dc260e10 100644 --- a/InterfaceQT4/browser.py +++ b/InterfaceQT4/browser.py @@ -29,7 +29,9 @@ from PyQt4.QtCore import * class JDCTree( QTreeWidget ): def __init__( self, jdc_item, QWParent): QListView.__init__( self, QWParent ) + print QWParent.__class__ + print "je suis dans JDCTree et voilà ", jdc_item self.item = jdc_item self.tree = self self.editor = QWParent diff --git a/InterfaceQT4/compooper.py b/InterfaceQT4/compooper.py index 66bd646f..14d05da7 100644 --- a/InterfaceQT4/compooper.py +++ b/InterfaceQT4/compooper.py @@ -51,7 +51,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode): return child def view3D(self) : - import TroisDPal + from Editeur import TroisDPal troisD=TroisDPal.TroisDPilote(self.item,self.editor.parent.appliEficas) troisD.envoievisu() diff --git a/InterfaceQT4/composimp.py b/InterfaceQT4/composimp.py index 2d7364fd..d1422bf5 100644 --- a/InterfaceQT4/composimp.py +++ b/InterfaceQT4/composimp.py @@ -10,8 +10,6 @@ from Editeur import Objecttreeitem import browser from Noyau.N_CR import justify_text -import prefs - class Node(browser.JDCNode): def getPanel(self): """ diff --git a/InterfaceQT4/editor.py b/InterfaceQT4/editor.py index 7b8c937b..7ab8dc62 100644 --- a/InterfaceQT4/editor.py +++ b/InterfaceQT4/editor.py @@ -18,6 +18,7 @@ # # ====================================================================== +print "INTERFACEQT4" import types,sys,os import traceback from PyQt4 import * @@ -30,14 +31,12 @@ import convert,generator from Editeur import session from Editeur import comploader from Editeur import Objecttreeitem -#import panelsQT import browser import readercata import qtCommun -import prefs -VERSION_EFICAS = "EFICAS v1.14" +VERSION_EFICAS = "EFICAS v1.15" class JDCEditor(QSplitter): @@ -46,11 +45,10 @@ class JDCEditor(QSplitter): Editeur de jdc """ - def __init__ (self,fichier = None, jdc = None, QWParent=None, units = None, include=0 ,appli=None, vm=None): + def __init__ (self,appli,fichier = None, jdc = None, QWParent=None, units = None, include=0 , vm=None): #----------------------------------------------------------------------------------------------------------# - #print "debut JDCEditor __init__" - print "fichier", fichier,"jdc",jdc,"units",units,"include",include + #print "fichier", fichier,"jdc",jdc,"units",units,"include",include QSplitter.__init__(self, QWParent) self.appliEficas = appli self.appli = appli #---- attendu par IHM @@ -63,21 +61,20 @@ class JDCEditor(QSplitter): VERSION_CODE = session.d_env.cata if appli != None : self.salome = self.appliEficas.salome + self.format = self.appliEficas.format_fichier else : self.salome=0 + print "dans JDC pas d appli ????????" - self.code = prefs.code + self.code = self.appliEficas.CONFIGURATION.code self.version_code = VERSION_CODE self.titre=VERSION_EFICAS + ' pour '+ self.code self.dict_reels={} self.liste_simp_reel=[] - self.format_fichier='python' # par defaut - self.jdc_openturn_xml="" - self.jdc_openturn_std="" self.ihm="QT" - from Editeur import configuration + import configuration self.CONFIGURATION = self.appliEficas.CONFIGURATION self.CONFIGStyle = self.appliEficas.CONFIGStyle @@ -167,7 +164,6 @@ class JDCEditor(QSplitter): """ import Extensions.jdc_include JdC_aux=Extensions.jdc_include.JdC_include - print JdC_aux CONTEXT.unset_current_step() jaux=self.readercata.cata[0].JdC( procedure="", @@ -206,17 +202,20 @@ class JDCEditor(QSplitter): jdcName=os.path.basename(fn) # Il faut convertir le contenu du fichier en fonction du format - if convert.plugins.has_key( self.format_fichier ): + if convert.plugins.has_key( self.appliEficas.format_fichier ): # Le convertisseur existe on l'utilise appli = self - p=convert.plugins[self.format_fichier]() + p=convert.plugins[self.appliEficas.format_fichier]() p.readfile(fn) text=p.convert('exec',appli) if not p.cr.estvide(): self.affiche_infos("Erreur à la conversion") + else : + self.affiche_infos("Type de fichier non reconnu") + QMessageBox.critical( self, "Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier") + return None CONTEXT.unset_current_step() - ## os.chdir(self.initialdir) jdc=self.readercata.cata[0].JdC(procedure=text, appli=self, cata=self.readercata.cata, @@ -236,10 +235,11 @@ class JDCEditor(QSplitter): self.lastModified = 1 return jdc + #-----------------------# def get_source(self,file): #-----------------------# - format=self.format_fichier + format=self.appliEficas.format_fichier # Il faut convertir le contenu du fichier en fonction du format if convert.plugins.has_key(format): @@ -267,7 +267,7 @@ class JDCEditor(QSplitter): #-----------------------# def viewJdcSource(self): #-----------------------# - format = self.format_fichier + format = self.appliEficas.format_fichier f=open(self.fichier,'r') texteSource=f.read() f.close() @@ -276,7 +276,7 @@ class JDCEditor(QSplitter): #-----------------------# def viewJdcPy(self): #-----------------------# - format = self.format_fichier + format = self.appliEficas.format_fichier strSource = str( self.get_text_JDC(format) ) self._viewText(strSource, "JDC_RESULTAT") @@ -299,6 +299,16 @@ class JDCEditor(QSplitter): #------------------------------# def affiche_infos(self,message): #------------------------------# + if self.salome : + if not hasattr(self.appliEficas,'MessageLabel') : + self.appliEficas.leLayout=QDockWindow(self.appliEficas) + self.appliEficas.MessageLabel = QLabel(self.appliEficas.leLayout,"MessageLabel") + self.appliEficas.MessageLabel.setAlignment(Qt.AlignBottom) + self.appliEficas.leLayout.setWidget(self.appliEficas.MessageLabel) + self.appliEficas.moveDockWindow(self.appliEficas.leLayout,Qt.DockBottom) + self.appliEficas.MessageLabel.setText(message) + self.appliEficas.MessageLabel.show() + self.appliEficas.leLayout.show() if self.sb: self.sb.showMessage(message)#,2000) @@ -368,8 +378,7 @@ class JDCEditor(QSplitter): Ne permet que la copie d'objets de type Commande ou MCF """ self.chercheNoeudSelectionne() - print "noeud a copier", self.node_selected.item.GetLabelText()[0] - print "noued apres " ,self.QWParent.noeud_a_editer.item.GetLabelText()[0] + index_noeud_a_couper=self.QWParent.noeud_a_editer.treeParent.children.index(self.QWParent.noeud_a_editer) if self.QWParent.noeud_a_editer == None : QMessageBox.information( self, "Copie impossible", @@ -398,10 +407,13 @@ class JDCEditor(QSplitter): # si possible on renomme l objet comme le noeud couper if self.QWParent.edit == "couper": - #nom = self.QWParent.noeud_a_editer.item.object.sd.nom - print self.QWParent.noeud_a_editer.item.object.sd.nom + print self.QWParent.noeud_a_editer.child + index_ajoute=child.treeParent.children.index(child) + if index_ajoute <= index_noeud_a_couper : + index_noeud_a_couper=index_noeud_a_couper + 1 item=self.QWParent.noeud_a_editer.item - self.QWParent.noeud_a_editer.delete() + noeud_a_supprimer=self.QWParent.noeud_a_editer.treeParent.children[index_noeud_a_couper] + noeud_a_supprimer.delete() child.item.update(item) #test,mess = child.item.nomme_sd(nom) child.select() @@ -413,10 +425,25 @@ class JDCEditor(QSplitter): def getFileName(self): #---------------------# return self.fichier - + #---------------------------# + def get_file_variable(self) : + #---------------------------# + titre = "Choix d'un fichier XML" + texte = "Le fichier contient une commande INCLUDE\n" + texte = texte+'Donnez le nom du fichier XML qui contient la description des variables' + QMessageBox.information( self, titre,texte) + + fichier = QFileDialog.getOpenFileName(self.appliEficas, + self.appliEficas.trUtf8('Ouvrir Fichier'), + self.appliEficas.CONFIGURATION.savedir, + self.appliEficas.trUtf8('Wrapper Files (*.xml);;''All Files (*)')) + print fichier + return fichier + + #----------------------------------# def writeFile(self, fn, txt = None): - #------------------------------# + #----------------------------------# """ Public slot to write the text to a file. @@ -427,14 +454,13 @@ class JDCEditor(QSplitter): fn = unicode(fn) if txt == None : - txt = self.get_text_JDC(self.format_fichier) + txt = self.get_text_JDC(self.appliEficas.format_fichier) eol = '\n' if len(txt) >= len(eol): if txt[-len(eol):] != eol: txt += eol else: txt += eol - try: f = open(fn, 'wb') f.write(txt) @@ -446,37 +472,24 @@ class JDCEditor(QSplitter): .arg(unicode(fn)).arg(str(why))) return 0 -# #------------------------------------ -# def writeFilesOpenturns(self,fn) : -# #------------------------------------ -# base=fn[:fn.rfind(".")] -# fileXML=base + '.xml' -# fileSTD=base + '_std.py' -# self.writeFile(fileXML,self.jdc_openturn_xml) -# self.writeFile(fileSTD,self.jdc_openturn_std) -# -# #-----------------------------# def get_text_JDC(self,format): #-----------------------------# if generator.plugins.has_key(format): # Le generateur existe on l'utilise - g=generator.plugins[format]() - jdc_formate=g.gener(self.jdc,format='beautifie') - if format == "openturns" : - self.jdc_openturn_xml=g.getOpenturnsXML() - self.jdc_openturn_std=g.getOpenturnsSTD() - if not g.cr.estvide(): + self.generator=generator.plugins[format]() + jdc_formate=self.generator.gener(self.jdc,format='beautifie') + if not self.generator.cr.estvide(): self.affiche_infos("Erreur à la generation") QMessageBox.critical( self, "Erreur a la generation","EFICAS ne sait pas convertir ce JDC") - return + return "" else: return jdc_formate else: # Il n'existe pas c'est une erreur self.affiche_infos("Format %s non reconnu" % format) - QMessageBox.critical( self, "Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC en format %s "% format) - return + QMessageBox.critical( self, "Format "+format+" non reconnu","EFICAS ne sait pas convertir le JDC selon le format "+format) + return "" #-----------------------------------------# @@ -496,8 +509,7 @@ class JDCEditor(QSplitter): newName = None if self.fichier is None or saveas: if path is None: - #PN --> modifier selon les prefs - path="/tmp" + path=self.CONFIGURATION.savedir selectedFilter = QString('') fn = QFileDialog.getSaveFileName( self, self.trUtf8("sauvegarde"), path, @@ -533,8 +545,22 @@ class JDCEditor(QSplitter): self.appliEficas.addToRecentList(newName) self.tree.racine.item.getObject().nom=os.path.basename(newName) self.tree.racine.update_node_label() -# if self.code == "OPENTURNS" : -# self.writeFilesOpenturns(fn) + + try : + #if 1 : + fileXML = fn[:fn.rfind(".")] + '.xml' + self.generator.writeOpenturnsXML( fileXML ) + except : + #else : + pass + + #PNPNPNPN A ecrire + try : + fileSTD = fn[:fn.rfind(".")] + '.py' + self.generator.writeOpenturnsSTD( fileSTD ) + except : + pass + # if self.salome : # self.QWParent.appli.addJdcInSalome( self.fichier) # if self.code == 'ASTER': @@ -579,8 +605,8 @@ class JDCEditor(QSplitter): texte = texte+'Donnez le nom du fichier dont vous \n voulez faire une poursuite' QMessageBox.information( self, titre,texte) - #PN --> les prefs - fn = QFileDialog.getOpenFileName( self, titre) + path=self.CONFIGURATION.savedir + fn = QFileDialog.getOpenFileName( self, titre,path) if fn.isNull(): # ce retour est impose par le get_file d'I_JDC @@ -596,8 +622,10 @@ class JDCEditor(QSplitter): # Une erreur a été rencontrée jdcText = '' return ulfile, jdcText + if __name__=='__main__': + import prefs # dans main if hasattr(prefs,'encoding'): # Hack pour changer le codage par defaut des strings import sys @@ -616,7 +644,7 @@ if __name__=='__main__': # code=options.code # app = QApplication(sys.argv) - mw = JDCEditor('azAster.comm') + mw = JDCEditor(None,'azAster.comm') app.setMainWidget(mw) app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()")) mw.show() diff --git a/InterfaceQT4/eficas_go.py b/InterfaceQT4/eficas_go.py index daaf8bf7..e79bea8b 100644 --- a/InterfaceQT4/eficas_go.py +++ b/InterfaceQT4/eficas_go.py @@ -24,38 +24,25 @@ """ # Modules Python import sys -from qt import * +from PyQt4.QtGui import * -# Modules Eficas -import prefs -if hasattr(prefs,'encoding'): - # Hack pour changer le codage par defaut des strings - import sys - reload(sys) - sys.setdefaultencoding(prefs.encoding) - del sys.setdefaultencoding - # Fin hack - -from Editeur import import_code -from Editeur import session +from Editeur import import_code +from Editeur import session +from qtEficas import Appli def lance_eficas(code=None,fichier=None): """ Lance l'appli EFICAS """ # Analyse des arguments de la ligne de commande - if code !=None : prefs.code=code - import qtEficas options=session.parse(sys.argv) code=options.code app = QApplication(sys.argv) - mw = qtEficas.Appli(code=code) - app.setMainWidget(mw) - app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()")) - mw.show() - mw.ouvreFichiers() - res = app.exec_loop() - sys.exit(res) + Eficas=Appli(code=code) + Eficas.show() + res=app.exec_() + sys.exit(res) + diff --git a/InterfaceQT4/monIncludePanel.py b/InterfaceQT4/monIncludePanel.py index 15a0408c..4d78b8d6 100644 --- a/InterfaceQT4/monIncludePanel.py +++ b/InterfaceQT4/monIncludePanel.py @@ -83,7 +83,6 @@ class MonIncludePanel(DInc,QTPanelTBW1,QTPanelTBW2,QTPanelTBW3): self.TWChoix.setCurrentIndex(2) def BBrowsePressed(self): - print self.node.makeEdit self.node.makeEdit() def BOkIncPressed (self): @@ -103,6 +102,8 @@ class MonIncludePanel(DInc,QTPanelTBW1,QTPanelTBW2,QTPanelTBW3): if not text: return + self.editor.init_modif() + try : self.node.item.object.change_fichier_init(nomFichier,text) commentaire = "Fichier modifie : " + self.node.item.get_nom() @@ -121,7 +122,7 @@ class MonIncludePanel(DInc,QTPanelTBW1,QTPanelTBW2,QTPanelTBW3): """ Methode pour convertir le fichier file dans le format courant """ - format=self.editor.format_fichier + format=self.editor.format text=None if convert.plugins.has_key(format): # Le convertisseur existe on l'utilise @@ -136,9 +137,10 @@ class MonIncludePanel(DInc,QTPanelTBW1,QTPanelTBW2,QTPanelTBW3): def BChangeFilePressed(self): - userDir=os.path.expanduser("~/Eficas_install/") + userDir=self.node.appliEficas.CONFIGURATION.savedir fn = QFileDialog.getOpenFileName(self.node.appliEficas, self.node.appliEficas.trUtf8('Fichier Include'), + userDir, self.node.appliEficas.trUtf8('All Files (*);;''JDC Files (*.comm);;')) if fn.isNull(): diff --git a/InterfaceQT4/monOptionsEditeur.py b/InterfaceQT4/monOptionsEditeur.py index e307158b..d5542a1a 100644 --- a/InterfaceQT4/monOptionsEditeur.py +++ b/InterfaceQT4/monOptionsEditeur.py @@ -149,13 +149,13 @@ class Options(desOptions): if res == 1 : return appli=self.configuration.appli - rep_ini=self.configuration.rep_ini + repIni=self.configuration.REPINI fic_ini_util=self.configuration.fic_ini_utilisateur old_fic_ini_util=fic_ini_util+"_old" commande="mv "+fic_ini_util+" "+old_fic_ini_util os.system(commande) - from Editeur import configuration - configNew=configuration.CONFIG(appli,rep_ini) + import configuration + configNew=configuration.CONFIG(appli,repIni) self.configuration=configNew appli.CONFIGURATION=configNew self.configuration.save_params() diff --git a/InterfaceQT4/monParamPanel.py b/InterfaceQT4/monParamPanel.py index a77f9439..ccc25e7a 100644 --- a/InterfaceQT4/monParamPanel.py +++ b/InterfaceQT4/monParamPanel.py @@ -22,7 +22,6 @@ import string,types,os,re # Modules Eficas -import prefs from PyQt4 import * from PyQt4.QtGui import * diff --git a/InterfaceQT4/monPlusieursASSDPanel.py b/InterfaceQT4/monPlusieursASSDPanel.py index 48942483..3af461a8 100644 --- a/InterfaceQT4/monPlusieursASSDPanel.py +++ b/InterfaceQT4/monPlusieursASSDPanel.py @@ -21,17 +21,15 @@ # Modules Python import string,types,os -# Modules Eficas -import prefs - from PyQt4 import * from PyQt4.QtGui import * from PyQt4.QtCore import * + +# Modules Eficas from monPlusieursIntoPanel import MonPlusieursIntoPanel from monPlusieursIntoPanel import DPlusInto from qtCommun import QTPanel from politiquesValidation import PolitiquePlusieurs -# Import des panels class MonPlusieursASSDPanel(MonPlusieursIntoPanel): """ diff --git a/InterfaceQT4/monPlusieursBasePanel.py b/InterfaceQT4/monPlusieursBasePanel.py index 4a67d947..6dd3588a 100644 --- a/InterfaceQT4/monPlusieursBasePanel.py +++ b/InterfaceQT4/monPlusieursBasePanel.py @@ -156,10 +156,10 @@ class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur): self.editor.affiche_infos("Valeurs Ajoutées") def BImportPressed(self): - init=QString( self.editor.CONFIGURATION.rep_user) + init=QString( self.editor.CONFIGURATION.savedir) fn = QFileDialog.getOpenFileName(self.node.appliEficas, self.node.appliEficas.trUtf8('Fichier de données'), - QString(), + init, self.trUtf8('All Files (*)',)) if fn == None : return if fn == "" : return diff --git a/InterfaceQT4/monRacinePanel.py b/InterfaceQT4/monRacinePanel.py index 5b9fa79b..2e542999 100644 --- a/InterfaceQT4/monRacinePanel.py +++ b/InterfaceQT4/monRacinePanel.py @@ -107,8 +107,6 @@ class MonRacinePanel(DRac,QTPanelTBW2): name=str(self.LBNouvCommande.currentItem().text()) if name==QString(" "): return if name.find("GROUPE :")==0 : return - print self.editor - print self.editor.__class__ self.editor.init_modif() print self.node.__class__ new_node = self.node.append_child(name,'first') diff --git a/InterfaceQT4/monUniqueBasePanel.py b/InterfaceQT4/monUniqueBasePanel.py index 24792e45..b53c79cb 100644 --- a/InterfaceQT4/monUniqueBasePanel.py +++ b/InterfaceQT4/monUniqueBasePanel.py @@ -80,7 +80,8 @@ class MonUniqueBasePanel(DUnBase,QTPanel,SaisieValeur): def detruitBouton(self): mc = self.node.item.get_definition() type = mc.type[0] - if not('grma' in repr(type)) or not(self.editor.salome) : + #if not('grma' in repr(type)) or not(self.editor.salome) : + if not(('grma' in repr(type)) or ('grno' in repr(type))) or not(self.editor.salome) : self.BSalome.close() self.BView2D.close() @@ -111,12 +112,18 @@ class MonUniqueBasePanel(DUnBase,QTPanel,SaisieValeur): def BOk2Pressed(self): SaisieValeur.BOk2Pressed(self) + if self.node.item.parent.nom == "FICXML" : + self.node.item.parent.change_fichier="1" + self.node.item.parent.build_include(None,"") def BSupPressed(self): QTPanel.BSupPressed(self) def LEValeurPressed(self): SaisieValeur.LEValeurPressed(self) + if self.node.item.parent.nom == "FICXML" : + self.node.item.parent.change_fichier="1" + self.node.item.parent.build_include(None,"") def BParametresPressed(self): QTPanel.BParametresPressed(self) diff --git a/InterfaceQT4/monUniqueSDCOIntoPanel.py b/InterfaceQT4/monUniqueSDCOIntoPanel.py index c968b0f7..8c5e45dc 100644 --- a/InterfaceQT4/monUniqueSDCOIntoPanel.py +++ b/InterfaceQT4/monUniqueSDCOIntoPanel.py @@ -22,8 +22,6 @@ import string,types,os # Modules Eficas -import prefs - from PyQt4 import * from PyQt4.QtGui import * diff --git a/InterfaceQT4/prefsQT.py b/InterfaceQT4/prefsQT.py deleted file mode 100644 index ef1aa899..00000000 --- a/InterfaceQT4/prefsQT.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -# ====================================================================== -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. -# -# -# ====================================================================== - -lang='fr' - diff --git a/InterfaceQT4/qtCommun.py b/InterfaceQT4/qtCommun.py index 5a9ed167..ad7b6df2 100644 --- a/InterfaceQT4/qtCommun.py +++ b/InterfaceQT4/qtCommun.py @@ -25,7 +25,6 @@ import traceback from PyQt4 import * from PyQt4.QtGui import * from PyQt4.QtCore import * -import prefsQT # Import des panels @@ -281,6 +280,7 @@ class ViewText(Ui_dView,QDialog): """ def __init__(self,parent): QDialog.__init__(self,parent) + self.parent=parent self.setupUi(self) self.resize( QSize(600,507).expandedTo(self.minimumSizeHint()) ) @@ -292,25 +292,10 @@ class ViewText(Ui_dView,QDialog): def saveFile(self): #recuperation du nom du fichier + userDir=os.path.expanduser("~/.Eficas_install/") fn = QFileDialog.getSaveFileName(None, self.trUtf8("Save File"), - self.trUtf8("/tmp")) - #if not fn.isNull(): - # print "hhhhhhhhhhhhhhjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkk" - # if QFileInfo(fn).exists(): - # abort = QMessageBox.warning(self, - # self.trUtf8("Save File"), - # self.trUtf8("The file %1 already exists.") - # .arg(fn), - # self.trUtf8("&Overwrite"), - # self.trUtf8("&Abort")) - # if abort: - # return - # fn = unicode(QDir.convertSeparators(fn)) - #else: - # return - - #ecriture du fichier + self.trUtf8(userDir)) if fn.isNull() : return try: f = open(fn, 'wb') diff --git a/InterfaceQT4/qtEficas.py b/InterfaceQT4/qtEficas.py index 5f633e6e..54921093 100644 --- a/InterfaceQT4/qtEficas.py +++ b/InterfaceQT4/qtEficas.py @@ -1,11 +1,6 @@ # -*- coding: iso-8859-1 -*- import os, sys -REPINI=os.path.dirname(os.path.abspath(__file__)) -INSTALLDIR=os.path.join(REPINI,'..') -sys.path.append(INSTALLDIR) -sys.path.append(INSTALLDIR+"/UiQT4") -sys.path.append(INSTALLDIR+"/InterfaceQT4") from PyQt4.QtGui import * from PyQt4.QtCore import * @@ -13,9 +8,9 @@ from PyQt4.QtAssistant import * from myMain import Ui_Eficas from viewManager import MyTabview -from Editeur import configuration from Editeur import session +dirCode={"ASTER":"Aster","OPENTURNS_WRAPPER":"Openturns_Wrapper"} class Appli(Ui_Eficas,QMainWindow): @@ -29,11 +24,18 @@ class Appli(Ui_Eficas,QMainWindow): self.ihm="QT" self.code=code self.salome=salome + self.format_fichier="python" #par defaut self.top = self #(pour CONFIGURATION) - self.initPrefs() + import prefs + self.REPINI=prefs.REPINI + import configuration self.CONFIGURATION = configuration.make_config(self,prefs.REPINI) self.CONFIGStyle = configuration.make_config_style(self,prefs.REPINI) + if hasattr(prefs,'encoding'): + import sys + reload(sys) + sys.setdefaultencoding(prefs.encoding) QMainWindow.__init__(self) Ui_Eficas.__init__(self) @@ -44,19 +46,17 @@ class Appli(Ui_Eficas,QMainWindow): #self.monAssistant=QAssistantClient(QString(""), self.viewmanager) - #if self.salome : # from Editeur import session # self.ouvreFichiers() - from Editeur import session - self.ouvreFichiers() + self.recent = QStringList() self.ficPatrons={} self.initPatrons() - - self.recent = QStringList() self.ficRecents={} self.initRecents() + + self.ouvreFichiers() def OPENTURNS(self) : self.MenuBar.removeItem(5) @@ -130,8 +130,7 @@ class Appli(Ui_Eficas,QMainWindow): idx=idx+1 def initRecents(self): - #try : - if 1 : + try : rep=self.CONFIGURATION.rep_user monFichier=rep+"/listefichiers_"+self.code index=0 @@ -142,8 +141,7 @@ class Appli(Ui_Eficas,QMainWindow): l=(ligne.split("\n"))[0] self.recent.append(l) index=index+1 - #except : pass - else : + except : pass try : f.close() @@ -227,7 +225,7 @@ class Appli(Ui_Eficas,QMainWindow): def handleOpenPatrons(self): idx=self.sender() - fichier=REPINI+"/../Editeur/Patrons/"+self.code+"/"+self.ficPatrons[idx] + fichier=self.REPINI+"/../Editeur/Patrons/"+self.code+"/"+self.ficPatrons[idx] self.viewmanager.handleOpen(fichier=fichier, patron = 1) def handleOpenRecent(self): @@ -289,23 +287,6 @@ class Appli(Ui_Eficas,QMainWindow): def NewInclude(self): self.viewmanager.newIncludeEditor() - def initPrefs(self): - if code == "ASTER" : - from Aster import prefs - import sys - sys.path.append(INSTALLDIR+"/Aster") - else : - import prefs - #try : - if 1 : - apply(Appli.__dict__[code],(self,)) - #except : - else: - pass - if hasattr(prefs,'encoding'): - import sys - reload(sys) - sys.setdefaultencoding(prefs.encoding) if __name__=='__main__': diff --git a/InterfaceQT4/qtSaisie.py b/InterfaceQT4/qtSaisie.py index 53144721..c0fd8a43 100644 --- a/InterfaceQT4/qtSaisie.py +++ b/InterfaceQT4/qtSaisie.py @@ -44,7 +44,7 @@ class SaisieValeur: if (min == 1 and min == max and len(listeNomsSD)==1 and (l==[] or l==None)): if ('R' not in self.node.item.get_type()) : - self.listBoxASSD.setCurrentItem(0) + self.listBoxASSD.setCurrentRow(0) def BuildLBValeurs(self): diff --git a/InterfaceQT4/readercata.py b/InterfaceQT4/readercata.py index 052d2f1d..8a2f645c 100644 --- a/InterfaceQT4/readercata.py +++ b/InterfaceQT4/readercata.py @@ -31,20 +31,19 @@ import cPickle import re # Modules Eficas -import prefs from Noyau.N_CR import CR from Editeur.utils import init_rep_cata_dev -from Editeur import analyse_catalogue -from Editeur import autre_analyse_cata -from Editeur import uiinfo +import analyse_catalogue +import autre_analyse_cata +import uiinfo from monChoixCata import MonChoixCata from PyQt4 import * from PyQt4.QtGui import * from PyQt4.QtCore import * -version="14" +VERSION_EFICAS="Eficas V1.15" class READERCATA: @@ -52,7 +51,7 @@ class READERCATA: self.QWParent=QWParent self.appliEficas=self.QWParent.appliEficas self.code=self.QWParent.code - self.QWParent.format_fichier='python' + self.appliEficas.format_fichier='python' self.version_code=self.QWParent.version_code self.version_cata=None self.fic_cata=None @@ -85,9 +84,9 @@ class READERCATA: elif len(liste_cata_possibles)==1: self.fic_cata = liste_cata_possibles[0][2] self.version_code = liste_cata_possibles[0][1] - self.QWParent.format_fichier=liste_cata_possibles[0][3] + self.appliEficas.format_fichier=liste_cata_possibles[0][3] lab=QString("Eficas V1.") - lab+=QString(version) + lab+=QString(VERSION_EFICAS) lab+=QString(" pour ") lab+=QString(self.code) lab+=QString(" avec le catalogue ") @@ -136,29 +135,8 @@ class READERCATA: # traitement des clefs documentaires # self.traite_clefs_documentaires() - - # chargement et analyse des catalogues développeur (le cas échéant) - # - if self.appliEficas.CONFIGURATION.isdeveloppeur == 'OUI' : - init_rep_cata_dev(self.fic_cata,self.appliEficas.CONFIGURATION.path_cata_dev) - fic_cata_dev = os.path.join(self.appliEficas.CONFIGURATION.path_cata_dev,'cata_developpeur.py') - if os.path.isfile(fic_cata_dev): - # il y a bien un catalogue développeur : il faut récupérer le module_object associé ... - test = self.compile_cata(fic_cata_dev,fic_cata_dev+'c') - if not test : - showinfo("Compilation catalogue développeur", - "Erreur dans la compilation du catalogue développeur") - self.cata = (self.cata,) - else: - self.cata_dev =self.import_cata(fic_cata_dev) - #self.Retrouve_Ordre_Cata_Developpeur() - self.Retrouve_Ordre_Cata_Developpeur_autre() - self.cata = (self.cata,self.cata_dev) - else: - self.cata = (self.cata,) - else: - self.cata = (self.cata,) - titre="Eficas V1.14 avec le catalogue " + os.path.basename(self.fic_cata) + self.cata=(self.cata,) + titre=VERSION_EFICAS + " avec le catalogue " + os.path.basename(self.fic_cata) if self.appliEficas.top: self.appliEficas.setWindowTitle(titre) self.appliEficas.titre=titre @@ -181,7 +159,7 @@ class READERCATA: def import_cata(self,cata): """ - Réalise l'import du catalogue dont le chemin d'acca¨s est donné par cata + Réalise l'import du catalogue dont le chemin d'acces est donné par cata """ nom_cata = os.path.splitext(os.path.basename(cata))[0] rep_cata = os.path.dirname(cata) @@ -223,34 +201,6 @@ class READERCATA: self.Get_Ordre_Cata(mode='cata') self.appliEficas.affiche_infos("Catalogue standard chargé") - def Retrouve_Ordre_Cata_Developpeur(self): - """ - Retrouve l'ordre des mots-clés dans le catalogue, cad : - - si ce dernier a été modifié, relance l'analyse du catalogue pour déterminer - l'ordre des mots-clés dans le catalogue - - s'il n'a pas été modifié, relie le fichier pickle - """ - if self.code != 'ASTER' : return - fic_cata = os.path.join(self.appliEficas.CONFIGURATION.path_cata_dev,'cata_developpeur.py') - message="Chargement catalogue développeur présent dans :\n %s..." % self.appliEficas.CONFIGURATION.path_cata_dev - cata_dev_ordonne = analyse_cata.analyse_catalogue(self,self.fic_cata) - self.cata_dev_ordonne_cr = cata_dev_ordonne.cr - cata_dev_ordonne_dico = cata_dev_ordonne.entites - self.cata_ordonne_dico.update(cata_dev_ordonne_dico) - self.appliEficas.affiche_infos(" catalogue(s) développeur(s) chargé(s)" ) - - def Retrouve_Ordre_Cata_Developpeur_autre(self): - """ - Retrouve l'ordre des mots-clés dans le catalogue, cad : - - si ce dernier a été modifié, relance l'analyse du catalogue pour déterminer - l'ordre des mots-clés dans le catalogue - - s'il n'a pas été modifié, relie le fichier pickle - """ - if self.code != 'ASTER' : return - message="Chargement catalogue développeur présent dans :\n %s..." % self.appliEficas.CONFIGURATION.path_cata_dev - cata_dev_ordonne_dico,self.appliEficas.liste_simp_reel=autre_analyse_cata.analyse_catalogue(self.cata) - self.cata_ordonne_dico.update(cata_dev_ordonne_dico) - self.appliEficas.affiche_infos(" catalogue(s) développeur(s) chargé(s)" ) def Get_Ordre_Cata(self,mode='pickle'): """ diff --git a/InterfaceQT4/viewManager.py b/InterfaceQT4/viewManager.py index 52650ead..12a9f825 100644 --- a/InterfaceQT4/viewManager.py +++ b/InterfaceQT4/viewManager.py @@ -44,16 +44,16 @@ class MyTabview: if fichier is None: fichier = QFileDialog.getOpenFileName(self.appliEficas, self.appliEficas.trUtf8('Ouvrir Fichier'), - self.getOpenStartDir(), + self.appliEficas.CONFIGURATION.savedir, self.appliEficas.trUtf8('JDC Files (*.comm);;''All Files (*)')) if fichier.isNull(): return - from utilitaires import normabspath - fichier = normabspath(unicode(fichier)) + fichier = os.path.abspath(unicode(fichier)) + self.appliEficas.addToRecentList(fichier) maPage=self.getEditor( fichier,units=units) def handleClose(self,doitSauverRecent = 1): - print "passage dans handleClose" - print self.dict_editors + #print "passage dans handleClose" + #print self.dict_editors if doitSauverRecent : self.appliEficas.sauveRecents() index=self.myQtab.currentIndex() if index < 0 : return @@ -165,8 +165,7 @@ class MyTabview: indexEditor=0 for indexEditor in self.dict_editors.keys(): editor=self.dict_editors[indexEditor] - from utilitaires import samepath - if samepath(fichier, editor.getFileName()): + if self.samepath(fichier, editor.getFileName()): abort = QMessageBox.warning(self.appliEficas, self.appliEficas.trUtf8("Fichier"), self.appliEficas.trUtf8("Le fichier %1 est deja ouvert.").arg(fichier), @@ -176,8 +175,8 @@ class MyTabview: double=editor else : from editor import JDCEditor - editor = JDCEditor(fichier, jdc, self.myQtab,units=units,appli=self.appliEficas,vm = self,include=include) - if double != None : + editor = JDCEditor(self.appliEficas,fichier, jdc, self.myQtab,units=units,vm = self,include=include) + if double != None : self.doubles[editor]=double if editor.jdc: # le fichier est bien un jdc self.editors.append(editor) @@ -217,6 +216,14 @@ class MyTabview: except : return "" + def samepath(self,f1, f2): + """ + compare two paths. + """ + if f1 is None or f2 is None: return 0 + if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1 + return 0 + def checkDirty(self, editor): """ diff --git a/InterfaceTK/appli.py b/InterfaceTK/appli.py index 147a560f..f08b160d 100644 --- a/InterfaceTK/appli.py +++ b/InterfaceTK/appli.py @@ -55,7 +55,7 @@ import listePatronsTK REPTK=os.path.dirname(os.path.abspath(__file__)) sys.path[:0]=[REPTK] -VERSION="EFICAS v1.14" +VERSION="EFICAS v1.15" class APPLI: def __init__ (self,master,code=prefs.code,fichier=None,test=0,ihm="TK",salome=0) : @@ -137,7 +137,7 @@ class APPLI: """ if (self.test == 0): splash._splash.configure(text = "Chargement des paramètres utilisateur") - from Editeur import configuration + import configuration self.CONFIGURATION = configuration.make_config(self,prefs.REPINI) self.CONFIGStyle = configuration.make_config_style(self,prefs.REPINI) diff --git a/InterfaceTK/bureau.py b/InterfaceTK/bureau.py index 5921a2d5..59b0ab86 100644 --- a/InterfaceTK/bureau.py +++ b/InterfaceTK/bureau.py @@ -42,6 +42,7 @@ from fenetre_mc_inconnus import fenetre_mc_inconnus from Ihm import CONNECTOR try : from Traducteur import traduitV7V8 + from Traducteur import traduitV8V9 except : pass @@ -122,7 +123,7 @@ class BUREAU: self.charger_composants() self.cree_cataitem() self.text_reel="" - self.initialdir = self.appli.CONFIGURATION.initialdir + self.savedir = self.appli.CONFIGURATION.savedir def charger_composants(self): comploader.charger_composants() @@ -225,7 +226,7 @@ class BUREAU: if enregistre != "non" : self.JDCDisplay_courant.fichier=self.fileName else : - self.initialdir = self.appli.CONFIGURATION.rep_user + self.savedir = self.appli.CONFIGURATION.rep_user self.nb.selectpage(label_onglet) self.nb.setnaturalsize() self.nb.bind_all("",lambda e,s=self:s.selectArbreDown()) @@ -340,19 +341,19 @@ class BUREAU: filetypes = ( ("format "+self.appli.format_fichier.get(), ".com*"),("Tous",'*')) else: filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),) - if not hasattr(self,'initialdir'): - self.initialdir = self.appli.CONFIGURATION.initialdir + if not hasattr(self,'savedir'): + self.savedir = self.appli.CONFIGURATION.savedir if not file : file = askopenfilename(title="Ouverture d'un fichier de commandes Aster", defaultextension=".comm", filetypes = filetypes, - initialdir = self.initialdir) + initialdir = self.savedir) if file : self.fileName = file e=extension_fichier(file) self.JDCName=stripPath(file) - self.initialdir = os.path.dirname(os.path.abspath(file)) + self.savedir = os.path.dirname(os.path.abspath(file)) else : return @@ -380,7 +381,7 @@ class BUREAU: # On se met dans le repertoire ou se trouve le fichier de commandes # pour trouver les eventuels fichiers include ou autres # localises a cote du fichier de commandes - os.chdir(self.initialdir) + os.chdir(self.savedir) CONTEXT.unset_current_step() J=self.cata[0].JdC(procedure=text,appli=self.appli, cata=self.cata,cata_ord_dico=self.cata_ordonne_dico, @@ -504,7 +505,7 @@ class BUREAU: from panelsSalome import SALOME_UNIQUE_BASE_Panel if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 : print 'CS_pbruno if len(SALOMchier_unite) > 0 :???????' - self.appli.creeConfigTxt( self.appli.CONFIGURATION.initialdir, SALOME_UNIQUE_BASE_Panel.dict_fichier_unite ) + self.appli.creeConfigTxt( self.appli.CONFIGURATION.savedir, SALOME_UNIQUE_BASE_Panel.dict_fichier_unite ) #3)creation/mise a jours d'un maillage dans Salome if self.code == 'ASTER': @@ -523,9 +524,7 @@ class BUREAU: sauvegarde = asksaveasfilename(title=titre, defaultextension=defext, filetypes = filtyp, - initialdir = self.initialdir) - #initialdir = self.appli.CONFIGURATION.initialdir) - #initialdir = self.appli.CONFIGURATION.rep_user) + initialdir = self.savedir) if sauvegarde : if not save_in_file(sauvegarde,self.jdc_fini,None) : showinfo("Erreur","Probleme a la sauvegarde du fichier "+`sauvegarde`) @@ -781,21 +780,29 @@ class BUREAU: def update_jdc_courant(self): self.JDCDisplay_courant.update() - def TraduitFichier(self,event=None): - directory = self.appli.CONFIGURATION.rep_user + def TraduitFichier7(self,event=None): + self.TraduitFichier(7) + + def TraduitFichier8(self,event=None): + self.TraduitFichier(8) + + def TraduitFichier(self,version): FichieraTraduire = askopenfilename(title="Nom du Fichier a Traduire", defaultextension=".comm", - initialdir = directory + initialdir = self.savedir ) if (FichieraTraduire == "" or FichieraTraduire == () ) : return i=FichieraTraduire.rfind(".") Feuille=FichieraTraduire[0:i] FichierTraduit=Feuille+"v8.comm" - log=self.initialdir+"/convert.log" + log=self.savedir+"/convert.log" os.system("rm -rf "+log) os.system("rm -rf "+FichierTraduit) Pmw.showbusycursor() - traduitV7V8.traduc(FichieraTraduire,FichierTraduit,log) + if version == 7 : + traduitV7V8.traduc(FichieraTraduire,FichierTraduit,log) + else : + traduitV8V9.traduc(FichieraTraduire,FichierTraduit,log) Pmw.hidebusycursor() Entete="Fichier Traduit : "+FichierTraduit +"\n\n" titre = "conversion de "+ FichieraTraduire diff --git a/InterfaceTK/catabrowser.py b/InterfaceTK/catabrowser.py index 7ce303ed..cfa2d9c6 100644 --- a/InterfaceTK/catabrowser.py +++ b/InterfaceTK/catabrowser.py @@ -36,8 +36,8 @@ from Accas import OPER,PROC,MACRO,FORM from Accas import FACT,BLOC,SIMP # -__version__="$Name: V1_14 $" -__Id__="$Id: catabrowser.py,v 1.1.4.3.4.1 2008-10-10 13:46:35 pnoyret Exp $" +__version__="$Name: $" +__Id__="$Id: catabrowser.py,v 1.2.4.1 2008-11-13 10:35:11 cchris Exp $" # class Tableau: incr = 10 diff --git a/InterfaceTK/cataediteur.py b/InterfaceTK/cataediteur.py index e7e4499e..31d15b03 100644 --- a/InterfaceTK/cataediteur.py +++ b/InterfaceTK/cataediteur.py @@ -39,8 +39,8 @@ from Accas import ASSD,GEOM import definition_cata # -__version__="$Name: V1_14 $" -__Id__="$Id: cataediteur.py,v 1.1.4.3.4.1 2008-10-10 13:47:11 pnoyret Exp $" +__version__="$Name: $" +__Id__="$Id: cataediteur.py,v 1.2.4.1 2008-11-13 10:35:11 cchris Exp $" # Fonte_Niveau = fontes.canvas_gras_italique diff --git a/InterfaceTK/change_comm.py b/InterfaceTK/change_comm.py index 5fb53226..ab125f95 100755 --- a/InterfaceTK/change_comm.py +++ b/InterfaceTK/change_comm.py @@ -46,7 +46,7 @@ class DUP : self.top=None self.test=2 - from Editeur import configuration + import configuration self.CONFIGURATION=configuration.make_config(self,prefs.REPINI) self.load_readercata() @@ -69,7 +69,7 @@ class DUP : self.fichier = fichier e=extension_fichier(fichier) self.JDCName=stripPath(fichier) - self.initialdir = os.path.dirname(os.path.abspath(fichier)) + self.savedir = os.path.dirname(os.path.abspath(fichier)) else : return @@ -88,7 +88,7 @@ class DUP : # On se met dans le repertoire ou se trouve le fichier de commandes # pour trouver les eventuels fichiers include ou autres # localises a cote du fichier de commandes - os.chdir(self.initialdir) + os.chdir(self.savedir) CONTEXT.unset_current_step() J=self.cata[0].JdC(procedure=text,appli=self, cata=self.cata,cata_ord_dico=self.readercata.cata_ordonne_dico, diff --git a/InterfaceTK/compomacro.py b/InterfaceTK/compomacro.py index e8f05053..61ab20c9 100644 --- a/InterfaceTK/compomacro.py +++ b/InterfaceTK/compomacro.py @@ -36,8 +36,8 @@ from widgets import Fenetre,FenetreYesNo from widgets import showinfo,showerror # -__version__="$Name: V1_14 $" -__Id__="$Id: compomacro.py,v 1.1.4.4.4.1 2008-10-10 13:47:11 pnoyret Exp $" +__version__="$Name: $" +__Id__="$Id: compomacro.py,v 1.2.4.1 2008-11-13 10:35:11 cchris Exp $" # class MACROPanel(panels.OngletPanel): diff --git a/InterfaceTK/componuplet.py b/InterfaceTK/componuplet.py index 474b643e..1ed92b6e 100644 --- a/InterfaceTK/componuplet.py +++ b/InterfaceTK/componuplet.py @@ -30,8 +30,8 @@ from Editeur import Objecttreeitem import panels # -__version__="$Name: V1_14 $" -__Id__="$Id: componuplet.py,v 1.1.4.2.4.1 2008-10-10 13:47:11 pnoyret Exp $" +__version__="$Name: $" +__Id__="$Id: componuplet.py,v 1.2.4.1 2008-11-13 10:35:11 cchris Exp $" # myrepr = Repr() diff --git a/InterfaceTK/treewidget.py b/InterfaceTK/treewidget.py index 9768ada6..55dd6cea 100644 --- a/InterfaceTK/treewidget.py +++ b/InterfaceTK/treewidget.py @@ -27,8 +27,8 @@ import images from Ihm import CONNECTOR # -__version__="$Name: V1_14 $" -__Id__="$Id: treewidget.py,v 1.1.4.4.4.1 2008-10-10 13:47:11 pnoyret Exp $" +__version__="$Name: $" +__Id__="$Id: treewidget.py,v 1.2.4.1 2008-11-13 10:35:11 cchris Exp $" # Fonte_Standard = fontes.standard diff --git a/InterfaceTK/widgets.py b/InterfaceTK/widgets.py index c0dda777..e978db2a 100644 --- a/InterfaceTK/widgets.py +++ b/InterfaceTK/widgets.py @@ -146,7 +146,7 @@ class Fenetre : à l'utilisateur """ file = asksaveasfilename(parent=self.fenetre,defaultextension = '.comm', #initialdir = self.appli.CONFIGURATION.rep_user, - initialdir = self.appli.CONFIGURATION.initialdir, + initialdir = self.appli.CONFIGURATION.savedir, title="Sauvegarde du "+self.titre) if file : if not save_in_file(file,self.texte,None) : diff --git a/Noyau/N_MCSIMP.py b/Noyau/N_MCSIMP.py index 2f42ae93..5a4093f7 100644 --- a/Noyau/N_MCSIMP.py +++ b/Noyau/N_MCSIMP.py @@ -1,4 +1,4 @@ -#@ MODIF N_MCSIMP Noyau DATE 30/11/2007 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_MCSIMP Noyau DATE 13/10/2008 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -88,7 +88,13 @@ class MCSIMP(N_OBJECT.OBJECT): Cette valeur est utilisée lors de la création d'un contexte d'évaluation d'expressions à l'aide d'un interpréteur Python """ - return self.valeur + v = self.valeur + # Singleton : on retourne l'element + # Permet aussi d'ignorer l'erreur : concept=COMMANDE(), + # ou 'concept' est un tuple de longueur 1 a cause de la virgule. + if type(v) in (list, tuple) and len(v) == 1: + v = v[0] + return v def get_val(self): """ diff --git a/Noyau/ascheckers.py b/Noyau/ascheckers.py index 0f191246..9f7799fa 100644 --- a/Noyau/ascheckers.py +++ b/Noyau/ascheckers.py @@ -1,4 +1,4 @@ -#@ MODIF ascheckers Noyau DATE 28/11/2007 AUTEUR COURTOIS M.COURTOIS +#@ MODIF ascheckers Noyau DATE 07/10/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -44,13 +44,16 @@ class CheckLog(object): à la celle de la dernière vérification. Si on incrémentait "marq" à chaque étape, on revérifie à chaque fois. """ + def __init__(self): self.msg = [] self.names = {} + self.cksums = {} self.optional = False self._marq = 1 self._lastmarq = self._marq self._debug = False + self._profond = False # True pour forcer des vérifications plus profondes def log(self, level, obj, msg ): if obj : @@ -68,6 +71,29 @@ class CheckLog(object): key = obj.nomj() self.names[key] = self._marq + def checkSumOJB(self, obj, sd, maj='non'): + # vérifie que le checksum de obj n'a pas changé + # sd : concept qui contient obj + # maj='maj', l'opérateur a le droit de modifier ojb + if obj.exists : + import md5 + m=md5.new() + m.update(str(obj.get())) + cksum=m.digest() + nom=obj.nomj() + if not self.cksums.has_key(nom) : + self.cksums[nom]=cksum + else : + if self.cksums[nom] != cksum : + self.cksums[nom] = cksum + #if maj.strip()=='maj' and nom[0:8].strip()==sd.nomj.nomj[0:8].strip() : + # Remarque : ne pas tester 'maj' premet de résoudre (un peu) le problème + # posé par la commande DETRUIRE + if nom[0:8].strip()==sd.nomj.nomj[0:8].strip() : + pass + else : + self.err(obj,'Le checksum a changé') + def visitAsBase(self, obj): key = (obj.nomj(), obj.__class__.__name__) self.names[key] = self._marq diff --git a/Noyau/asojb.py b/Noyau/asojb.py index adc4b85e..8d2820ca 100644 --- a/Noyau/asojb.py +++ b/Noyau/asojb.py @@ -1,4 +1,4 @@ -#@ MODIF asojb Noyau DATE 07/04/2008 AUTEUR COURTOIS M.COURTOIS +#@ MODIF asojb Noyau DATE 07/10/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -75,10 +75,10 @@ class AsBase(Type): try : v( checker ) except : - UTMESS("E", 'SDVERI_45') # AJACOT NON - print 40*'-' - traceback.print_exc(file=sys.stdout) - print self + mess=60*'-'+'\n' + mess=mess+'Erreur SDVERI_45 (Attention : vérification incomplète)'+'\n' + mess=mess.join(traceback.format_tb(sys.exc_traceback)) + checker.err(self,mess) checker.optional = optional return checker diff --git a/Noyau/context.py b/Noyau/context.py index bec83219..7ce9db7d 100644 --- a/Noyau/context.py +++ b/Noyau/context.py @@ -32,6 +32,7 @@ def set_current_step(step): global _root if _root : raise "Impossible d'affecter _root. Il devrait valoir None" _root=step + #print "dans set_current_step", step def get_current_step(): """ diff --git a/Openturns_Study/OpenTURNS_Cata_Study_V1.py b/Openturns_Study/OpenTURNS_Cata_Study_V1.py new file mode 100644 index 00000000..2ce3bf41 --- /dev/null +++ b/Openturns_Study/OpenTURNS_Cata_Study_V1.py @@ -0,0 +1,1436 @@ +# -*- coding: utf-8 -*- + +# -------------------------------------------------- +# debut entete +# -------------------------------------------------- + +import Accas +from Accas import * + +class loi ( ASSD ) : pass +class variable ( ASSD ) : pass + + +#CONTEXT.debug = 1 +JdC = JDC_CATA ( code = 'OPENTURNS_STUDY', + execmodul = None, + regles = ( AU_MOINS_UN ( 'CRITERIA' ), ), + ) # Fin JDC_CATA + +# -------------------------------------------------- +# fin entete +# -------------------------------------------------- + + + + + + +#================================ +# 1. Definition des LOIS +#================================ + +# Nota : les variables de type OPER doivent etre en majuscules ! +# Nota : les variables de type OPER doivent etre de premier niveau (pas imbriquees dans un autre type) +DISTRIBUTION = OPER ( nom = "DISTRIBUTION", + sd_prod = loi, + op = 68, + fr = "Definitions des lois marginales utilisees par les variables d'entree", + + +#==== +# Type de distribution +#==== + + Kind = SIMP ( statut = "o", typ = "TXM", + into = ( "Beta", + "Exponential", + "Gamma", + "Geometric", + "Gumbel", + "Histogram", + "Logistic", + "LogNormal", + "MultiNomial", + "Normal", + "TruncatedNormal", + "Poisson", + "Student", + "Triangular", + "Uniform", + "UserDefined", + "Weibull", + ), + fr = "Choix du type de la loi marginale", + ang = "1D marginal distribution", + ), + +#==== +# Definition des parametres selon le type de la loi +#==== + + BETA = BLOC ( condition = " Kind in ( 'Beta', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "RT", "MuSigma" ), + defaut = "RT", + fr = "Parametrage de la loi beta", + ang = "Beta distribution parameter set", + ), + + RT_Parameters = BLOC ( condition = " Settings in ( 'RT', ) ", + + R = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre R de la loi", + ang = "R parameter", + ), + + # T > R + T = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre T de la loi | T > R", + ang = "T parameter | T > R", + ), + + ), # Fin BLOC RT_Parameters + + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC MuSigma_Parameters + + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre A de la loi", + ang = "A parameter", + ), + + # B > A + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre B de la loi | B > A", + ang = "B parameter | B > A", + ), + + ), # Fin BLOC BETA + + + + EXPONENTIAL = BLOC ( condition = " Kind in ( 'Exponential', ) ", + + Lambda = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Lambda | Lambda > 0", + ang = "Lambda parameter | Lambda > 0", + ), + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Gamma", + ang = "Gamma parameter", + ), + + ), # Fin BLOC EXPONENTIAL + + + + GAMMA = BLOC ( condition = " Kind in ( 'Gamma', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "KLambda", "MuSigma" ), + defaut = "KLambda", + fr = "Parametrage de la loi gamma", + ang = "Gamma distribution parameter set", + ), + + KLambda_Parameters = BLOC ( condition = " Settings in ( 'KLambda', ) ", + + K = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre K de la loi | K > 0", + ang = "K parameter | K > 0", + ), + + Lambda = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Lambda de la loi | Lambda > 0", + ang = "Lambda parameter | Lambda > 0", + ), + + ), # Fin BLOC KLambda_Parameters + + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + defaut = 0.0, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + defaut = 1.0, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC MuSigma_Parameters + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Gamma", + ang = "Gamma parameter", + ), + + + ), # Fin BLOC GAMMA + + + + GEOMETRIC = BLOC ( condition = " Kind in ( 'Geometric', ) ", + + P = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + val_max = 1., + fr = "Parametre P | 0 < P < 1", + ang = "P parameter | 0 < P < 1", + ), + + ), # Fin BLOC GEOMETRIC + + + + GUMBEL = BLOC ( condition = " Kind in ( 'Gumbel', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "AlphaBeta", "MuSigma" ), + defaut = "AlphaBeta", + fr = "Parametrage de la loi gumbel", + ang = "Gumbel distribution parameter set", + ), + + AlphaBeta_Parameters = BLOC ( condition = " Settings in ( 'AlphaBeta', ) ", + + Alpha = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Alpha de la loi | Alpha > 0", + ang = "Alpha parameter | Alpha > 0", + ), + + Beta = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Beta de la loi", + ang = "Beta parameter", + ), + + ), # Fin BLOC AlphaBeta_Parameters + + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC MuSigma_Parameters + + ), # Fin BLOC GUMBEL + + + + HISTOGRAM = BLOC ( condition = " Kind in ( 'Histogram', ) ", + + Sup = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure de la distribution", + ang = "Upper bound", + ), + + # Il faut definir une collection de couples ( x,p ) + Values = SIMP ( statut = 'o', + typ = 'R', + max = '**', + ), + + ), # Fin BLOC HISTOGRAM + + + + LOGNORMAL = BLOC ( condition = " Kind in ( 'LogNormal', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "MuSigmaLog", "MuSigma", "MuSigmaOverMu" ), + defaut = "MuSigmaLog", + fr = "Parametrage de la loi lognormale", + ang = "Lognormal distribution parameter set", + ), + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi | Mu > Gamma", + ang = "Mu parameter | Mu > Gamma", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC MuSigma_Parameters + + MuSigmaOverMu_Parameters = BLOC ( condition = " Settings in ( 'MuSigmaOverMu', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi | Mu > Gamma", + ang = "Mu parameter | Mu > Gamma", + ), + + SigmaOverMu = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre SigmaOverMu de la loi | SigmaOverMu > 0", + ang = "SigmaOverMu parameter | SigmaOverMu > 0", + ), + + ), # Fin BLOC MuSigmaOverMu_Parameters + + MuSigmaLog_Parameters = BLOC ( condition = " Settings in ( 'MuSigmaLog', ) ", + + MuLog = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu log de la loi", + ang = "Mu log parameter", + ), + + SigmaLog = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma log de la loi | SigmaLog > 0", + ang = "Sigma log parameter | SigmaLog > 0", + ), + + ), # Fin BLOC MuSigmaLog_Parameters + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Gamma", + ang = "Gamma parameter", + ), + + ), # Fin BLOC LOGNORMAL + + + + LOGISTIC = BLOC ( condition = " Kind in ( 'Logistic', ) ", + + Alpha = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Alpha de la loi", + ang = "Alpha parameter", + ), + + Beta = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Beta de la loi | Beta > = 0", + ang = "Beta parameter | Beta > = 0", + ), + + ), # Fin BLOC LOGISTIC + + + + MULTINOMIAL = BLOC ( condition = " Kind in ( 'MultiNomial', ) ", + + N = SIMP ( statut = "o", + typ = "I", + max = 1, + fr = "Dimension de la loi", + ang = "Distribution dimension", + ), + + # Il faut un vecteur P de taille N + Values = SIMP ( statut = 'o', + typ = 'R', + max = '**', + ), + + ), # Fin BLOC MULTINOMIAL + + + + NORMAL = BLOC ( condition = " Kind in ( 'Normal', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC NORMAL + + + + POISSON = BLOC ( condition = " Kind in ( 'Poisson', ) ", + + Lambda = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Lambda de la loi | Lambda > 0", + ang = "Lambda parameter | Lambda > 0", + ), + + ), # Fin BLOC POISSON + + + + STUDENT = BLOC ( condition = " Kind in ( 'Student', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Nu = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 2., + fr = "Parametre Nu de la loi | V > = 2", + ang = "Nu parameter | V > = 2", + ), + + ), # Fin BLOC STUDENT + + + + TRIANGULAR = BLOC ( condition = " Kind in ( 'Triangular', ) ", + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure de la loi | A < = M < = B", + ang = "Lower bound | A < = M < = B", + ), + + M = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Mode de la loi | A < = M < = B", + ang = "Mode | A < = M < = B", + ), + + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure de la loi | A < = M < = B", + ang = "Upper bound | A < = M < = B", + ), + + ), # Fin BLOC TRIANGULAR + + + + TRUNCATEDNORMAL = BLOC ( condition = " Kind in ( 'TruncatedNormal', ) ", + + MuN = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + SigmaN = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre SigmaN de la loi | SigmaN > 0", + ang = "SigmaN parameter | SigmaN> 0", + ), + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure de la loi | A < = B", + ang = "Lower bound | A < = B", + ), + + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure de la loi | A < = B", + ang = "Upper bound | A < = B", + ), + + ), # Fin BLOC TRUNCATEDNORMAL + + + + UNIFORM = BLOC ( condition = " Kind in ( 'Uniform', ) ", + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure de la loi | A < = B", + ang = "Lower bound | A < = B", + ), + + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure de la loi | A < = B", + ang = "Upper bound | A < = B", + ), + + ), # Fin BLOC UNIFORM + + + + USERDEFINED = BLOC ( condition = " Kind in ( 'UserDefined', ) ", + + # Il faut definir une collection de couples ( x,p ) + Values = SIMP ( statut = 'o', + typ = 'R', + max = '**', + ), + + ), # Fin BLOC USERDEFINED + + + + WEIBULL = BLOC ( condition = " Kind in ( 'Weibull', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "AlphaBeta", "MuSigma" ), + defaut = "AlphaBeta", + fr = "Parametrage de la loi weibull", + ang = "Weibull distribution parameter set", + ), + + AlphaBeta_Parameters = BLOC ( condition = " Settings in ( 'AlphaBeta', ) ", + + Alpha = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Alpha de la loi | Alpha > 0", + ang = "Alpha parameter | Alpha > 0", + ), + + Beta = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Beta de la loi | Beta > 0", + ang = "Beta parameter | Beta > 0", + ), + + ), # Fin BLOC AlphaBeta_Parameters + + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC MuSigma_Parameters + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Gamma", + ang = "Gamma parameter", + ), + + ), # Fin BLOC WEIBULL + +) # Fin OPER DISTRIBUTION + + + + + + +#================================ +# 3. Definition de l'etude +#================================ + +# Nota : les variables de type PROC doivent etre en majuscules ! +CRITERIA = PROC ( nom = "CRITERIA", + op = None, + docu = "", + fr = "Mise en donnee pour le fichier de configuration de OPENTURNS.", + ang = "Writes the configuration file for OPENTURNS.", + + + + Type = SIMP ( statut = "o", + typ = "TXM", + into = ( "Min/Max", "Central Uncertainty", "Threshold Exceedence" ), + fr = "Type d'Analyse", + ang = "Analysis", + ), + + + + + MinMax = BLOC ( condition = " Type in ( 'Min/Max', ) ", + + Method = SIMP ( statut = "o", + typ = "TXM", + into = ( "Experiment Plane", "Random Sampling" ), + fr = "Methode", + ang = "Method", + ), + # UC 3.1.1 + ExperimentPlaneSettings = BLOC ( condition = " Method in ( 'Experiment Plane', ) ", + + ExperimentPlane = SIMP ( statut = "o", + typ = "TXM", + into = ( "Axial", "Factorial", "Composite", ), + fr = "Methode", + ang = "Method", + ), + + Levels = SIMP ( statut = "o", + typ = "R", + val_min = 0.0, + max = '**', + fr = "Nombre de niveaux dans chaque direction", + ang = "Levels in each direction", + ), + + # Scaled Vector + UnitsPerDimension = SIMP ( statut = "o", + typ = "R", + max = '**', + fr = "Unite par dimension (autant que de variables declarees)", + ang = "Units per dimension (as much as declared variables)", + ), + + # Translation Vector + Center = SIMP ( statut = "o", + typ = "R", + max = '**', + fr = "Unite par dimension", + ang = "Units per dimension", + ), + + ), # Fin BLOC ExperimentPlaneSettings + + + + RandomSamplingSettings = BLOC ( condition = " Method in ( 'Random Sampling', ) ", + + PointsNumber = SIMP ( statut = "o", + typ = "I", + val_min = 1, + fr = "Nombre de points", + ang = "Points number", + ), + + ), # Fin BLOC RandomSamplingSettings + + Result = SIMP ( statut = "o", + typ = "TXM", + into = ( "Min/Max", ), + defaut = "Min/Max", + fr = "Le minimum et le maximum", + ang = "The min and max values", + ), + + + ), # Fin BLOC MinMax + + + + + CentralUncertainty = BLOC ( condition = " Type in ( 'Central Uncertainty', ) ", + + Method = SIMP ( statut = "o", + typ = "TXM", + into = ( "Taylor Variance Decomposition", "Random Sampling" ), + fr = "Methode", + ang = "Method", + ), + + # UC 3.2. + TaylorVarianceDecompositionSettings = BLOC ( condition = " Method in ( 'Taylor Variance Decomposition', ) ", + + Result = FACT ( statut = "o", + min = 1, + max = "**", + + MeanFirstOrder = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Moyenne au premier ordre", + ang = "MeanFirstOrder", + ), + + StandardDeviationFirstOrder = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Ecart-type au premier ordre", + ang = "StandardDeviationFirstOrder", + ), + + MeanSecondOrder = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Moyenne au second ordre", + ang = "MeanSecondOrder", + ), + + ImportanceFactor = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Facteur d'importance pour variable de sortie scalaire", + ang = "ImportanceFactor", + ), + + ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ", + + NumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + GraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC ImportanceFactorSettings + + ), # Fin FACT Result + + ), # Fin BLOC TaylorVarianceDecompositionSettings + + + + RandomSamplingSettings = BLOC ( condition = " Method in ( 'Random Sampling', ) ", + + PointsNumber = SIMP ( statut = "o", + typ = "I", + val_min = 1, + fr = "Nombre de points", + ang = "Points number", + ), + + Result = FACT ( statut = "o", + min = 1, + max = "**", + + EmpiricalMean = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Moyenne empirique", + ang = "Empirical mean", + ), + + EmpiricalStandardDeviation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Ecart-type empirique", + ang = "Empirical standard deviation", + ), + + EmpiricalQuantile = SIMP ( statut = "o", + typ = 'R', + defaut = 0.0, + max = 1, + val_min = 0.0, + val_max = 1.0, + fr = "Quantile empirique", + ang = "Empirical quantile", + ), + + AnalysedCorrelations = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Correlations analysees", + ang = "Analysed correlations", + ), + + KernelSmoothing = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Kernel smoothing de l'echantillon", + ang = "Kernel smoothing of the sample", + ), + + ), # Fin FACT Result + + ), # Fin BLOC RandomSamplingSettings + + ), # Fin BLOC CentralUncertainty + + + + + ThresholdExceedence = BLOC ( condition = " Type in ( 'Threshold Exceedence', ) ", + + Event = FACT ( statut = "o", + min = 1, + max = 1, + + Threshold = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Le seuil de defaillance", + ang = "Failure threshold", + ), + + ComparisonOperator = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "Less", "LessOrEqual", "Equal", "GreaterOrEqual", "Greater" ), + fr = "Que faut-il ne pas depasser : un maximum ou un minimum", + ang = "What is the failure threshold : maximum or minimum", + ), + ), # Fin FACT Event + + + Method = SIMP ( statut = "o", + typ = "TXM", + into = ( "Simulation", "Analytical" ), + fr = "Methode", + ang = "Method", + ), + + SimulationSettings = BLOC ( condition = " Method in ( 'Simulation', ) ", + + Algorithm = SIMP ( statut = "o", + typ = "TXM", + into = ( "MonteCarlo", "LHS", "ImportanceSampling" ), + fr = "Algorithme de simulation", + ang = "Simulation algorithm", + ), + + + RandomGenerator = FACT ( statut = "o", + min = 1, + max = 1, + + SeedToBeSet = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "La racine du generateur aleatoire doit-elle etre positionnee ?", + ang = "Does the random generator seed need to be set ?", + ), + + SeedSettings = BLOC ( condition = " SeedToBeSet in ( 'yes', ) ", + + RandomGeneratorSeed = SIMP ( statut = "o", + typ = "I", + max = 1, + fr = "Racine du generateur aleatoire", + ang = "Random generator seed", + ), + + ), # Fin BLOC SeedSettings + + ), # Fin FACT RandomGenerator + + + BlockSize = SIMP ( statut = "f", + typ = "I", + max = 1, + val_min = 1, + defaut = 1, + fr = "Nombre de calculs realises en bloc", + ang = "Number of computations as a block", + ), + + MaximumOuterSampling = SIMP ( statut = "o", + typ = "I", + max = 1, + val_min = 1, + fr = "Maximum d'iterations externes", + ang = "Maximum outer Sampling value", + ), + + MaximumCoefficientOfVariation = SIMP ( statut = "f", + typ = "R", + max = 1, + defaut = 0.1, + val_min = 0.0, + fr = " maximum ...", + ang = "Absolute maximum ...." + ), + + ImportanceSamplingSettings = BLOC ( condition = " Algorithm in ( 'ImportanceSampling', ) ", + + MeanVector = SIMP ( statut = "o", + typ = "R", + max = "**", + fr = "Moyenne", + ang = "Mean vector", + ), + + Correlation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'Independent', 'Linear' ), + defaut = 'Linear', + max = 1, + fr = "Le type de correlation entre les variables", + ang = "Correlation between variables", + ), + + ), # Fin BLOC ImportanceSamplingSettings + + Result = FACT ( statut = "o", + min = 1, + max = "**", + + Probability = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', ), + defaut = 'yes', + max = 1, + fr = "Probabiblite", + ang = "Probability", + ), + + ConfidenceInterval = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Ecart-type empirique", + ang = "Empirical standard deviation", + ), + + ConfidenceIntervalSettings = BLOC ( condition = " ConfidenceInterval in ( 'yes', ) ", + + Level = SIMP ( statut = "o", + typ = 'R', + defaut = 0.0, + max = 1, + val_min = 0.0, + val_max = 1.0, + fr = "Niveau de confiance", + ang = "Confidence level", + ), + + ), # Fin BLOC ConfidenceIntervalSettings + + VariationCoefficient = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Coefficient de variation", + ang = "VariationCoefficient", + ), + + IterationNumber = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Nombre d'iterations", + ang = "Iteration number", + ), + + ConvergenceGraph = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Graphe de convergence", + ang = "Convergence graph", + ), + + ), # Fin FACT Result + + + + ), # Fin BLOC SimulationSettings + + + + AnalyticalSettings = BLOC ( condition = " Method in ( 'Analytical', ) ", + + Approximation = SIMP ( statut = "o", + typ = "TXM", + into = ( "FORM", "SORM" ), + fr = "Approximation", + ang = "Approximation", + ), + + OptimizationAlgorithm = SIMP ( statut = "o", + typ = "TXM", + into = ( "Cobyla", "AbdoRackwitz" ), + fr = "Methode d'optimisation", + ang = "Optimisation method", + ), + + + PhysicalStartingPoint = SIMP ( statut = "f", + typ = "R", + max = "**", + fr = "Point de demarrage de l'algorithme iteratif", + ang = "Initial point for iterative process", + ), + + MaximumIterationsNumber = SIMP ( statut = "f", + typ = "I", + max = 1, + val_min = 1, + fr = "Nombre maximum d iterations", + ang = "Maximum number of iterations", + ), + + regles = ( EXCLUS ( "MaximumAbsoluteError", "RelativeAbsoluteError" ), ), + + MaximumAbsoluteError = SIMP ( statut = "f", + typ = "R", + max = 1, + defaut = 1E-6, + val_min = 0.0, + fr = "Distance maximum absolue entre 2 iterations successifs", + ang = "Absolute maximum distance between 2 successive iterates", + ), + + RelativeAbsoluteError = SIMP ( statut = "f", + typ = "R", + max = 1, + defaut = 1E-6, + val_min = 0.0, + fr = "Distance maximum relative entre 2 iterations successives", + ang = "Relative maximum distance between 2 successive iterates", + ), + + MaximumConstraintError = SIMP ( statut = "f", + typ = "R", + max = 1, + val_min = 0.0, + fr = "Valeur maximum absolue de la fonction moins la valeur du niveau", + ang = "Maximum absolute value of the constraint function minus the level value", + ), + + ImportanceSampling = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Tirage d'importance au point de conception", + ang = "Importance sampling at design point", + ), + + FORM = BLOC ( condition = " Approximation in ( 'FORM', ) ", + + Probability = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', ), + defaut = 'yes', + max = 1, + fr = "Probabiblite", + ang = "Probability", + ), + + DesignPoint = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Point de conception", + ang = "Design point", + ), + + HasReliabilityIndex = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Indice de fiabilite", + ang = "Reliability index", + ), + + ImportanceFactor = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Facteur d'importance pour variable de sortie scalaire", + ang = "ImportanceFactor", + ), + + ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ", + + NumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + GraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC ImportanceFactorSettings + + + SensitivityAnalysis = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Analyse de sensibilite", + ang = "Sensitivity analysis", + ), + + SensitivityAnalysisSettings = BLOC ( condition = " SensitivityAnalysis in ( 'yes', ) ", + + HasoferReliabilityIndex = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Indice de fiabilite de Hasofer", + ang = "Hasofer reliability index", + ), + + HasoferReliabilityIndexSettings = BLOC ( condition = " HasoferReliabilityIndex in ( 'yes', ) ", + + NumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + GraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC HasoferReliabilityIndexSettings + + ), # Fin BLOC SensitivityAnalysisSettings + + FunctionCallsNumber = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Nombre d'appels a la fonction", + ang = "Function calls number", + ), + + + ), # Fin BLOC FORM + + + SORM = BLOC ( condition = " Approximation in ( 'SORM', ) ", + + + TvedtApproximation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Approximation de Tvedt", + ang = "Tvedt approximation", + ), + + HohenBichlerApproximation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Approximation de HohenBichler", + ang = "HohenBichler approximation", + ), + + BreitungApproximation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Approximation de Breitung", + ang = "Breitung approximation", + ), + + DesignPoint = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Point de conception", + ang = "Design point", + ), + + ImportanceFactor = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Facteur d'importance pour variable de sortie scalaire", + ang = "ImportanceFactor", + ), + + ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ", + + NumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + GraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC ImportanceFactorSettings + + + SensitivityAnalysis = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Analyse de sensibilite", + ang = "Sensitivity analysis", + ), + + SensitivityAnalysisSettings = BLOC ( condition = " SensitivityAnalysis in ( 'yes', ) ", + + HasoferReliabilityIndex = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Indice de fiabilite de Hasofer", + ang = "Hasofer reliability index", + ), + + HasoferReliabilityIndexSettings = BLOC ( condition = " HasoferReliabilityIndex in ( 'yes', ) ", + + NumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + GraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC HasoferReliabilityIndexSettings + + ), # Fin BLOC SensitivityAnalysisSettings + + FunctionCallsNumber = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Nombre d'appels a la fonction", + ang = "Function calls number", + ), + + + ), # Fin BLOC SORM + + + + ), # Fin BLOC AnalyticalSettings + + + + ), # Fin BLOC ThresholdExceedence + + + +) # Fin PROC CRITERIA + + +#=============================== +# 5. Definition des parametres +#=============================== +VARI = OPER ( nom = "VARI", + sd_prod = variable, + op = None, + fr = "Definitions des lois marginales utilisees par les variables d'entree", + type=SIMP(statut='f',defaut="IN",into=("IN","OUT"), typ = "TXM",) + ) + +AAA=PROC(nom="AAA", + op=None, + fr="Essai", + ang = "Test", + + MALOI = SIMP(statut='o',typ=(loi,),), + MAVARIABLE = SIMP(statut='o',typ=(variable,),), +) ; + + + +import ops +FICXML=MACRO(nom="FICXML", + op=None, + UIinfo={"groupes":("Gestion du travail",)}, + fr="Débranchement vers un fichier de commandes secondaires", + sd_prod=ops.INCLUDE,op_init=ops.INCLUDE_context,fichier_ini=1, + FICHIER = SIMP(statut='o',typ='TXM',), +); + diff --git a/Openturns_Study/OpenTURNS_Cata_Study_V2.py b/Openturns_Study/OpenTURNS_Cata_Study_V2.py new file mode 100644 index 00000000..58128f14 --- /dev/null +++ b/Openturns_Study/OpenTURNS_Cata_Study_V2.py @@ -0,0 +1,1486 @@ +# -*- coding: utf-8 -*- + +# -------------------------------------------------- +# debut entete +# -------------------------------------------------- + +import Accas +from Accas import * + +class loi ( ASSD ) : pass + + +#CONTEXT.debug = 1 +JdC = JDC_CATA ( code = 'OPENTURNS_STUDY', + execmodul = None, + regles = ( AU_MOINS_UN ( 'CRITERIA' ), AU_MOINS_UN ( 'MODEL' ), ), + ) # Fin JDC_CATA + +# -------------------------------------------------- +# fin entete +# -------------------------------------------------- + +LOG = PROC ( nom = "LOG", + op = None, + docu = "", + + DebugMessages = SIMP ( statut = "o", + typ = "TXM", + into = ( 'yes', 'no' ), + defaut = 'no', + fr = "Affichage du niveau de debug de la bibliotheque Open TURNS", + ang = "Open TURNS library debug level print", + ), + + WrapperMessages = SIMP ( statut = "o", + typ = "TXM", + into = ( 'yes', 'no' ), + defaut = 'no', + fr = "Affichage du niveau de wrapper de la bibliotheque Open TURNS", + ang = "Open TURNS library debug level print", + ), + + UserMessages = SIMP ( statut = "o", + typ = "TXM", + into = ( 'yes', 'no' ), + defaut = 'no', + fr = "Affichage du niveau de user de la bibliotheque Open TURNS", + ang = "Open TURNS library user level print", + ), + + InfoMessages = SIMP ( statut = "o", + typ = "TXM", + into = ( 'yes', 'no' ), + defaut = 'yes', + fr = "Affichage du niveau de info de la bibliotheque Open TURNS", + ang = "Open TURNS library info level print", + ), + + WarningMessages = SIMP ( statut = "o", + typ = "TXM", + into = ( 'yes', 'no' ), + defaut = 'yes', + fr = "Affichage du niveau de warning de la bibliotheque Open TURNS", + ang = "Open TURNS library warning level print", + ), + + ErrorMessages = SIMP ( statut = "o", + typ = "TXM", + into = ( 'yes', 'no' ), + defaut = 'yes', + fr = "Affichage du niveau de error de la bibliotheque Open TURNS", + ang = "Open TURNS library error level print", + ), + +) # Fin PROC LOG + + + + +#================================ +# 0. Definition du modele physique +#================================ + +MODEL = PROC ( nom = "MODEL", + op = None, + docu = "", + + Name = SIMP ( statut = "o", + typ = "TXM", + fr = "Nom du modele physique", + ang = "Physical model identifier", + ), + +) # Fin PROC MODEL + + + + + + +#================================ +# 1. Definition des LOIS +#================================ + +# Nota : les variables de type OPER doivent etre en majuscules ! +# Nota : les variables de type OPER doivent etre de premier niveau (pas imbriquees dans un autre type) +DISTRIBUTION = OPER ( nom = "DISTRIBUTION", + sd_prod = loi, + op = 68, + fr = "Definitions des lois marginales utilisees par les variables d'entree", + + +#==== +# Type de distribution +#==== + + Kind = SIMP ( statut = "o", typ = "TXM", + into = ( "Beta", + "Exponential", + "Gamma", + "Geometric", + "Gumbel", + "Histogram", + "Logistic", + "LogNormal", + "MultiNomial", + "Normal", + "TruncatedNormal", + "Poisson", + "Student", + "Triangular", + "Uniform", + "UserDefined", + "Weibull", + ), + fr = "Choix du type de la loi marginale", + ang = "1D marginal distribution", + ), + +#==== +# Definition des parametres selon le type de la loi +#==== + + BETA = BLOC ( condition = " Kind in ( 'Beta', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "RT", "MuSigma" ), + defaut = "RT", + fr = "Parametrage de la loi beta", + ang = "Beta distribution parameter set", + ), + + RT_Parameters = BLOC ( condition = " Settings in ( 'RT', ) ", + + R = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre R de la loi", + ang = "R parameter", + ), + + # T > R + T = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre T de la loi | T > R", + ang = "T parameter | T > R", + ), + + ), # Fin BLOC RT_Parameters + + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC MuSigma_Parameters + + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre A de la loi", + ang = "A parameter", + ), + + # B > A + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre B de la loi | B > A", + ang = "B parameter | B > A", + ), + + ), # Fin BLOC BETA + + + + EXPONENTIAL = BLOC ( condition = " Kind in ( 'Exponential', ) ", + + Lambda = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Lambda | Lambda > 0", + ang = "Lambda parameter | Lambda > 0", + ), + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Gamma", + ang = "Gamma parameter", + ), + + ), # Fin BLOC EXPONENTIAL + + + + GAMMA = BLOC ( condition = " Kind in ( 'Gamma', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "KLambda", "MuSigma" ), + defaut = "KLambda", + fr = "Parametrage de la loi gamma", + ang = "Gamma distribution parameter set", + ), + + KLambda_Parameters = BLOC ( condition = " Settings in ( 'KLambda', ) ", + + K = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre K de la loi | K > 0", + ang = "K parameter | K > 0", + ), + + Lambda = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Lambda de la loi | Lambda > 0", + ang = "Lambda parameter | Lambda > 0", + ), + + ), # Fin BLOC KLambda_Parameters + + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + defaut = 0.0, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + defaut = 1.0, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC MuSigma_Parameters + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Gamma", + ang = "Gamma parameter", + ), + + + ), # Fin BLOC GAMMA + + + + GEOMETRIC = BLOC ( condition = " Kind in ( 'Geometric', ) ", + + P = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + val_max = 1., + fr = "Parametre P | 0 < P < 1", + ang = "P parameter | 0 < P < 1", + ), + + ), # Fin BLOC GEOMETRIC + + + + GUMBEL = BLOC ( condition = " Kind in ( 'Gumbel', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "AlphaBeta", "MuSigma" ), + defaut = "AlphaBeta", + fr = "Parametrage de la loi gumbel", + ang = "Gumbel distribution parameter set", + ), + + AlphaBeta_Parameters = BLOC ( condition = " Settings in ( 'AlphaBeta', ) ", + + Alpha = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Alpha de la loi | Alpha > 0", + ang = "Alpha parameter | Alpha > 0", + ), + + Beta = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Beta de la loi", + ang = "Beta parameter", + ), + + ), # Fin BLOC AlphaBeta_Parameters + + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC MuSigma_Parameters + + ), # Fin BLOC GUMBEL + + + + HISTOGRAM = BLOC ( condition = " Kind in ( 'Histogram', ) ", + + Sup = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure de la distribution", + ang = "Upper bound", + ), + + # Il faut definir une collection de couples ( x,p ) + Values = SIMP ( statut = 'o', + typ = 'R', + max = '**', + ), + + ), # Fin BLOC HISTOGRAM + + + + LOGNORMAL = BLOC ( condition = " Kind in ( 'LogNormal', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "MuSigmaLog", "MuSigma", "MuSigmaOverMu" ), + defaut = "MuSigmaLog", + fr = "Parametrage de la loi lognormale", + ang = "Lognormal distribution parameter set", + ), + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi | Mu > Gamma", + ang = "Mu parameter | Mu > Gamma", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC MuSigma_Parameters + + MuSigmaOverMu_Parameters = BLOC ( condition = " Settings in ( 'MuSigmaOverMu', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi | Mu > Gamma", + ang = "Mu parameter | Mu > Gamma", + ), + + SigmaOverMu = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre SigmaOverMu de la loi | SigmaOverMu > 0", + ang = "SigmaOverMu parameter | SigmaOverMu > 0", + ), + + ), # Fin BLOC MuSigmaOverMu_Parameters + + MuSigmaLog_Parameters = BLOC ( condition = " Settings in ( 'MuSigmaLog', ) ", + + MuLog = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu log de la loi", + ang = "Mu log parameter", + ), + + SigmaLog = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma log de la loi | SigmaLog > 0", + ang = "Sigma log parameter | SigmaLog > 0", + ), + + ), # Fin BLOC MuSigmaLog_Parameters + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Gamma", + ang = "Gamma parameter", + ), + + ), # Fin BLOC LOGNORMAL + + + + LOGISTIC = BLOC ( condition = " Kind in ( 'Logistic', ) ", + + Alpha = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Alpha de la loi", + ang = "Alpha parameter", + ), + + Beta = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Beta de la loi | Beta > = 0", + ang = "Beta parameter | Beta > = 0", + ), + + ), # Fin BLOC LOGISTIC + + + + MULTINOMIAL = BLOC ( condition = " Kind in ( 'MultiNomial', ) ", + + N = SIMP ( statut = "o", + typ = "I", + max = 1, + fr = "Dimension de la loi", + ang = "Distribution dimension", + ), + + # Il faut un vecteur P de taille N + Values = SIMP ( statut = 'o', + typ = 'R', + max = '**', + ), + + ), # Fin BLOC MULTINOMIAL + + + + NORMAL = BLOC ( condition = " Kind in ( 'Normal', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC NORMAL + + + + POISSON = BLOC ( condition = " Kind in ( 'Poisson', ) ", + + Lambda = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Lambda de la loi | Lambda > 0", + ang = "Lambda parameter | Lambda > 0", + ), + + ), # Fin BLOC POISSON + + + + STUDENT = BLOC ( condition = " Kind in ( 'Student', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Nu = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 2., + fr = "Parametre Nu de la loi | V > = 2", + ang = "Nu parameter | V > = 2", + ), + + ), # Fin BLOC STUDENT + + + + TRIANGULAR = BLOC ( condition = " Kind in ( 'Triangular', ) ", + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure de la loi | A < = M < = B", + ang = "Lower bound | A < = M < = B", + ), + + M = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Mode de la loi | A < = M < = B", + ang = "Mode | A < = M < = B", + ), + + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure de la loi | A < = M < = B", + ang = "Upper bound | A < = M < = B", + ), + + ), # Fin BLOC TRIANGULAR + + + + TRUNCATEDNORMAL = BLOC ( condition = " Kind in ( 'TruncatedNormal', ) ", + + MuN = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + SigmaN = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre SigmaN de la loi | SigmaN > 0", + ang = "SigmaN parameter | SigmaN> 0", + ), + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure de la loi | A < = B", + ang = "Lower bound | A < = B", + ), + + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure de la loi | A < = B", + ang = "Upper bound | A < = B", + ), + + ), # Fin BLOC TRUNCATEDNORMAL + + + + UNIFORM = BLOC ( condition = " Kind in ( 'Uniform', ) ", + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure de la loi | A < = B", + ang = "Lower bound | A < = B", + ), + + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure de la loi | A < = B", + ang = "Upper bound | A < = B", + ), + + ), # Fin BLOC UNIFORM + + + + USERDEFINED = BLOC ( condition = " Kind in ( 'UserDefined', ) ", + + # Il faut definir une collection de couples ( x,p ) + Values = SIMP ( statut = 'o', + typ = 'R', + max = '**', + ), + + ), # Fin BLOC USERDEFINED + + + + WEIBULL = BLOC ( condition = " Kind in ( 'Weibull', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "AlphaBeta", "MuSigma" ), + defaut = "AlphaBeta", + fr = "Parametrage de la loi weibull", + ang = "Weibull distribution parameter set", + ), + + AlphaBeta_Parameters = BLOC ( condition = " Settings in ( 'AlphaBeta', ) ", + + Alpha = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Alpha de la loi | Alpha > 0", + ang = "Alpha parameter | Alpha > 0", + ), + + Beta = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Beta de la loi | Beta > 0", + ang = "Beta parameter | Beta > 0", + ), + + ), # Fin BLOC AlphaBeta_Parameters + + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC MuSigma_Parameters + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Gamma", + ang = "Gamma parameter", + ), + + ), # Fin BLOC WEIBULL + +) # Fin OPER DISTRIBUTION + + + + + + +#================================ +# 3. Definition de l'etude +#================================ + +# Nota : les variables de type PROC doivent etre en majuscules ! +CRITERIA = PROC ( nom = "CRITERIA", + op = None, + docu = "", + fr = "Mise en donnee pour le fichier de configuration de OPENTURNS.", + ang = "Writes the configuration file for OPENTURNS.", + + + + Type = SIMP ( statut = "o", + typ = "TXM", + into = ( "Min/Max", "Central Uncertainty", "Threshold Exceedence" ), + fr = "Type d'Analyse", + ang = "Analysis", + ), + + + + + + + + MinMax = BLOC ( condition = " Type in ( 'Min/Max', ) ", + + Method = SIMP ( statut = "o", + typ = "TXM", + into = ( "Experiment Plane", "Random Sampling" ), + fr = "Methode", + ang = "Method", + ), + # UC 3.1.1 + ExperimentPlaneSettings = BLOC ( condition = " Method in ( 'Experiment Plane', ) ", + + ExperimentPlane = SIMP ( statut = "o", + typ = "TXM", + into = ( "Axial", "Factorial", "Composite", ), + fr = "Methode", + ang = "Method", + ), + + Levels = SIMP ( statut = "o", + typ = "R", + val_min = 0.0, + max = '**', + fr = "Nombre de niveaux dans chaque direction", + ang = "Levels in each direction", + ), + + # Scaled Vector + UnitsPerDimension = SIMP ( statut = "o", + typ = "R", + max = '**', + fr = "Unite par dimension (autant que de variables declarees)", + ang = "Units per dimension (as much as declared variables)", + ), + + # Translation Vector + Center = SIMP ( statut = "o", + typ = "R", + max = '**', + fr = "Unite par dimension", + ang = "Units per dimension", + ), + + ), # Fin BLOC ExperimentPlaneSettings + + + + RandomSamplingSettings = BLOC ( condition = " Method in ( 'Random Sampling', ) ", + + PointsNumber = SIMP ( statut = "o", + typ = "I", + val_min = 1, + fr = "Nombre de points", + ang = "Points number", + ), + + ), # Fin BLOC RandomSamplingSettings + + Result = SIMP ( statut = "o", + typ = "TXM", + into = ( "Min/Max", ), + defaut = "Min/Max", + fr = "Le minimum et le maximum", + ang = "The min and max values", + ), + + + ), # Fin BLOC MinMax + + + + + CentralUncertainty = BLOC ( condition = " Type in ( 'Central Uncertainty', ) ", + + Method = SIMP ( statut = "o", + typ = "TXM", + into = ( "Taylor Variance Decomposition", "Random Sampling" ), + fr = "Methode", + ang = "Method", + ), + + # UC 3.2. + TaylorVarianceDecompositionSettings = BLOC ( condition = " Method in ( 'Taylor Variance Decomposition', ) ", + + Result = FACT ( statut = "o", + min = 1, + max = "**", + + MeanFirstOrder = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Moyenne au premier ordre", + ang = "MeanFirstOrder", + ), + + StandardDeviationFirstOrder = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Ecart-type au premier ordre", + ang = "StandardDeviationFirstOrder", + ), + + MeanSecondOrder = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Moyenne au second ordre", + ang = "MeanSecondOrder", + ), + + ImportanceFactor = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Facteur d'importance pour variable de sortie scalaire", + ang = "ImportanceFactor", + ), + + ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ", + + NumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + GraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC ImportanceFactorSettings + + ), # Fin FACT Result + + ), # Fin BLOC TaylorVarianceDecompositionSettings + + + + RandomSamplingSettings = BLOC ( condition = " Method in ( 'Random Sampling', ) ", + + PointsNumber = SIMP ( statut = "o", + typ = "I", + val_min = 1, + fr = "Nombre de points", + ang = "Points number", + ), + + Result = FACT ( statut = "o", + min = 1, + max = "**", + + EmpiricalMean = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Moyenne empirique", + ang = "Empirical mean", + ), + + EmpiricalStandardDeviation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Ecart-type empirique", + ang = "Empirical standard deviation", + ), + + EmpiricalQuantile = SIMP ( statut = "o", + typ = 'R', + defaut = 0.0, + max = 1, + val_min = 0.0, + val_max = 1.0, + fr = "Quantile empirique", + ang = "Empirical quantile", + ), + + AnalysedCorrelations = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Correlations analysees", + ang = "Analysed correlations", + ), + + KernelSmoothing = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Kernel smoothing de l'echantillon", + ang = "Kernel smoothing of the sample", + ), + + ), # Fin FACT Result + + ), # Fin BLOC RandomSamplingSettings + + ), # Fin BLOC CentralUncertainty + + + + + ThresholdExceedence = BLOC ( condition = " Type in ( 'Threshold Exceedence', ) ", + + Event = FACT ( statut = "o", + min = 1, + max = 1, + + Threshold = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Le seuil de defaillance", + ang = "Failure threshold", + ), + + ComparisonOperator = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "Less", "LessOrEqual", "Equal", "GreaterOrEqual", "Greater" ), + fr = "Que faut-il ne pas depasser : un maximum ou un minimum", + ang = "What is the failure threshold : maximum or minimum", + ), + ), # Fin FACT Event + + + Method = SIMP ( statut = "o", + typ = "TXM", + into = ( "Simulation", "Analytical" ), + fr = "Methode", + ang = "Method", + ), + + SimulationSettings = BLOC ( condition = " Method in ( 'Simulation', ) ", + + Algorithm = SIMP ( statut = "o", + typ = "TXM", + into = ( "MonteCarlo", "LHS", "ImportanceSampling" ), + fr = "Algorithme de simulation", + ang = "Simulation algorithm", + ), + + + RandomGenerator = FACT ( statut = "o", + min = 1, + max = 1, + + SeedToBeSet = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "La racine du generateur aleatoire doit-elle etre positionnee ?", + ang = "Does the random generator seed need to be set ?", + ), + + SeedSettings = BLOC ( condition = " SeedToBeSet in ( 'yes', ) ", + + RandomGeneratorSeed = SIMP ( statut = "o", + typ = "I", + max = 1, + fr = "Racine du generateur aleatoire", + ang = "Random generator seed", + ), + + ), # Fin BLOC SeedSettings + + ), # Fin FACT RandomGenerator + + + BlockSize = SIMP ( statut = "f", + typ = "I", + max = 1, + val_min = 1, + defaut = 1, + fr = "Nombre de calculs realises en bloc", + ang = "Number of computations as a block", + ), + + MaximumOuterSampling = SIMP ( statut = "o", + typ = "I", + max = 1, + val_min = 1, + fr = "Maximum d'iterations externes", + ang = "Maximum outer Sampling value", + ), + + MaximumCoefficientOfVariation = SIMP ( statut = "f", + typ = "R", + max = 1, + defaut = 0.1, + val_min = 0.0, + fr = " maximum ...", + ang = "Absolute maximum ...." + ), + + ImportanceSamplingSettings = BLOC ( condition = " Algorithm in ( 'ImportanceSampling', ) ", + + MeanVector = SIMP ( statut = "o", + typ = "R", + max = "**", + fr = "Moyenne", + ang = "Mean vector", + ), + + Correlation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'Independent', 'Linear' ), + defaut = 'Linear', + max = 1, + fr = "Le type de correlation entre les variables", + ang = "Correlation between variables", + ), + + ), # Fin BLOC ImportanceSamplingSettings + + Result = FACT ( statut = "o", + min = 1, + max = "**", + + Probability = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', ), + defaut = 'yes', + max = 1, + fr = "Probabiblite", + ang = "Probability", + ), + + ConfidenceInterval = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Ecart-type empirique", + ang = "Empirical standard deviation", + ), + + ConfidenceIntervalSettings = BLOC ( condition = " ConfidenceInterval in ( 'yes', ) ", + + Level = SIMP ( statut = "o", + typ = 'R', + defaut = 0.0, + max = 1, + val_min = 0.0, + val_max = 1.0, + fr = "Niveau de confiance", + ang = "Confidence level", + ), + + ), # Fin BLOC ConfidenceIntervalSettings + + VariationCoefficient = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Coefficient de variation", + ang = "VariationCoefficient", + ), + + IterationNumber = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Nombre d'iterations", + ang = "Iteration number", + ), + + ConvergenceGraph = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Graphe de convergence", + ang = "Convergence graph", + ), + + ), # Fin FACT Result + + + + ), # Fin BLOC SimulationSettings + + + + AnalyticalSettings = BLOC ( condition = " Method in ( 'Analytical', ) ", + + Approximation = SIMP ( statut = "o", + typ = "TXM", + into = ( "FORM", "SORM" ), + fr = "Approximation", + ang = "Approximation", + ), + + OptimizationAlgorithm = SIMP ( statut = "o", + typ = "TXM", + into = ( "Cobyla", "AbdoRackwitz" ), + fr = "Methode d'optimisation", + ang = "Optimisation method", + ), + + + PhysicalStartingPoint = SIMP ( statut = "f", + typ = "R", + max = "**", + fr = "Point de demarrage de l'algorithme iteratif", + ang = "Initial point for iterative process", + ), + + MaximumIterationsNumber = SIMP ( statut = "f", + typ = "I", + max = 1, + val_min = 1, + fr = "Nombre maximum d iterations", + ang = "Maximum number of iterations", + ), + + regles = ( EXCLUS ( "MaximumAbsoluteError", "RelativeAbsoluteError" ), ), + + MaximumAbsoluteError = SIMP ( statut = "f", + typ = "R", + max = 1, + defaut = 1E-6, + val_min = 0.0, + fr = "Distance maximum absolue entre 2 iterations successifs", + ang = "Absolute maximum distance between 2 successive iterates", + ), + + RelativeAbsoluteError = SIMP ( statut = "f", + typ = "R", + max = 1, + defaut = 1E-6, + val_min = 0.0, + fr = "Distance maximum relative entre 2 iterations successives", + ang = "Relative maximum distance between 2 successive iterates", + ), + + MaximumConstraintError = SIMP ( statut = "f", + typ = "R", + max = 1, + val_min = 0.0, + fr = "Valeur maximum absolue de la fonction moins la valeur du niveau", + ang = "Maximum absolute value of the constraint function minus the level value", + ), + + ImportanceSampling = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Tirage d'importance au point de conception", + ang = "Importance sampling at design point", + ), + + FORM = BLOC ( condition = " Approximation in ( 'FORM', ) ", + + Probability = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', ), + defaut = 'yes', + max = 1, + fr = "Probabiblite", + ang = "Probability", + ), + + DesignPoint = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Point de conception", + ang = "Design point", + ), + + HasReliabilityIndex = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Indice de fiabilite", + ang = "Reliability index", + ), + + ImportanceFactor = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Facteur d'importance pour variable de sortie scalaire", + ang = "ImportanceFactor", + ), + + ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ", + + NumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + GraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC ImportanceFactorSettings + + + SensitivityAnalysis = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Analyse de sensibilite", + ang = "Sensitivity analysis", + ), + + SensitivityAnalysisSettings = BLOC ( condition = " SensitivityAnalysis in ( 'yes', ) ", + + HasoferReliabilityIndex = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Indice de fiabilite de Hasofer", + ang = "Hasofer reliability index", + ), + + HasoferReliabilityIndexSettings = BLOC ( condition = " HasoferReliabilityIndex in ( 'yes', ) ", + + NumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + GraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC HasoferReliabilityIndexSettings + + ), # Fin BLOC SensitivityAnalysisSettings + + FunctionCallsNumber = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Nombre d'appels a la fonction", + ang = "Function calls number", + ), + + + ), # Fin BLOC FORM + + + SORM = BLOC ( condition = " Approximation in ( 'SORM', ) ", + + + TvedtApproximation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Approximation de Tvedt", + ang = "Tvedt approximation", + ), + + HohenBichlerApproximation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Approximation de HohenBichler", + ang = "HohenBichler approximation", + ), + + BreitungApproximation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Approximation de Breitung", + ang = "Breitung approximation", + ), + + DesignPoint = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Point de conception", + ang = "Design point", + ), + + ImportanceFactor = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Facteur d'importance pour variable de sortie scalaire", + ang = "ImportanceFactor", + ), + + ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ", + + NumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + GraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC ImportanceFactorSettings + + + SensitivityAnalysis = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Analyse de sensibilite", + ang = "Sensitivity analysis", + ), + + SensitivityAnalysisSettings = BLOC ( condition = " SensitivityAnalysis in ( 'yes', ) ", + + HasoferReliabilityIndex = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Indice de fiabilite de Hasofer", + ang = "Hasofer reliability index", + ), + + HasoferReliabilityIndexSettings = BLOC ( condition = " HasoferReliabilityIndex in ( 'yes', ) ", + + NumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + GraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC HasoferReliabilityIndexSettings + + ), # Fin BLOC SensitivityAnalysisSettings + + FunctionCallsNumber = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Nombre d'appels a la fonction", + ang = "Function calls number", + ), + + + ), # Fin BLOC SORM + + + + ), # Fin BLOC AnalyticalSettings + + + + ), # Fin BLOC ThresholdExceedence + + + +) # Fin PROC CRITERIA + + + + + + + diff --git a/Openturns_Study/OpenTURNS_Cata_Study_V3.py b/Openturns_Study/OpenTURNS_Cata_Study_V3.py new file mode 100644 index 00000000..80dbe832 --- /dev/null +++ b/Openturns_Study/OpenTURNS_Cata_Study_V3.py @@ -0,0 +1,1598 @@ +# -*- coding: utf-8 -*- + +# -------------------------------------------------- +# debut entete +# -------------------------------------------------- + +from Accas import ASSD, JDC_CATA, AU_MOINS_UN, PROC, SIMP, FACT, OPER, MACRO, BLOC + +class loi ( ASSD ) : pass +class variable ( ASSD ) : pass + + +#CONTEXT.debug = 1 +JdC = JDC_CATA ( code = 'OPENTURNS_STUDY', + execmodul = None, + regles = ( AU_MOINS_UN ( 'CRITERIA' ), AU_MOINS_UN ( 'MODEL' ), ), + ) # Fin JDC_CATA + +# -------------------------------------------------- +# fin entete +# -------------------------------------------------- + +LOG = PROC ( nom = "LOG", + op = None, + docu = "", + + DebugMessages = SIMP ( statut = "o", + typ = "TXM", + into = ( 'yes', 'no' ), + defaut = 'no', + fr = "Affichage du niveau de debug de la bibliotheque Open TURNS", + ang = "Open TURNS library debug level print", + ), + + WrapperMessages = SIMP ( statut = "o", + typ = "TXM", + into = ( 'yes', 'no' ), + defaut = 'no', + fr = "Affichage du niveau de wrapper de la bibliotheque Open TURNS", + ang = "Open TURNS library debug level print", + ), + + UserMessages = SIMP ( statut = "o", + typ = "TXM", + into = ( 'yes', 'no' ), + defaut = 'no', + fr = "Affichage du niveau de user de la bibliotheque Open TURNS", + ang = "Open TURNS library user level print", + ), + + InfoMessages = SIMP ( statut = "o", + typ = "TXM", + into = ( 'yes', 'no' ), + defaut = 'yes', + fr = "Affichage du niveau de info de la bibliotheque Open TURNS", + ang = "Open TURNS library info level print", + ), + + WarningMessages = SIMP ( statut = "o", + typ = "TXM", + into = ( 'yes', 'no' ), + defaut = 'yes', + fr = "Affichage du niveau de warning de la bibliotheque Open TURNS", + ang = "Open TURNS library warning level print", + ), + + ErrorMessages = SIMP ( statut = "o", + typ = "TXM", + into = ( 'yes', 'no' ), + defaut = 'yes', + fr = "Affichage du niveau de error de la bibliotheque Open TURNS", + ang = "Open TURNS library error level print", + ), + +) # Fin PROC LOG + + + + +#================================ +# 0. Definition du modele physique +#================================ + + +DETERMINISTICVARIABLE = OPER ( nom = "DETERMINISTICVARIABLE", + sd_prod = variable, + op = None, + fr = "Variable deterministe", + ang = "Deterministic variable", + + N = SIMP ( statut = 'o', + typ = "TXM", + fr = "Nom", + ang = "Name", + ), + + T = SIMP ( statut = 'o', + defaut = "in", + into = ( "in" , "out", ), + typ = "TXM", + fr = "Type", + ang = "Type", + ), + + R = SIMP ( statut = 'o', + defaut = 0, + typ = "I", + fr = "Rang", + ang = "Rank", + ), + +) # Fin OPER DETERMINISTICVARIABLE + + + +import ops +MODEL = MACRO ( nom = "MODEL", + op = None, + UIinfo = { "groupes" : ( "Gestion du travail", ) }, + fr = "Chargement du wrapper du modele physique", + ang = "Physical model wrapper load", + sd_prod = ops.INCLUDE, + op_init = ops.INCLUDE_context, + fichier_ini = 1, + + FileName = SIMP ( statut = "o", + typ = "TXM", + fr = "Nom du modele physique", + ang = "Physical model identifier", + ), + +) # Fin PROC MODEL + + + + +VARIABLE = PROC ( nom = "VARIABLE", + op = None, + docu = "", + fr = "Variable probabiliste", + ang = "Probabilistic variable", + + ModelVariable = SIMP ( statut = "o", + typ = ( variable, ), + ), + + Distribution = SIMP ( statut = "o", + typ = ( loi, ), + ), + +) # Fin PROC VARIABLE + + + + +#================================ +# 1. Definition des LOIS +#================================ + +# Nota : les variables de type OPER doivent etre en majuscules ! +# Nota : les variables de type OPER doivent etre de premier niveau (pas imbriquees dans un autre type) +DISTRIBUTION = OPER ( nom = "DISTRIBUTION", + sd_prod = loi, + op = 68, + fr = "Definitions des lois marginales utilisees par les variables d'entree", + + +#==== +# Type de distribution +#==== + + Kind = SIMP ( statut = "o", typ = "TXM", + into = ( "Beta", + "Exponential", + "Gamma", + "Geometric", + "Gumbel", + "Histogram", + "Logistic", + "LogNormal", + "MultiNomial", + "Normal", + "TruncatedNormal", + "Poisson", + "Student", + "Triangular", + "Uniform", + "UserDefined", + "Weibull", + ), + fr = "Choix du type de la loi marginale", + ang = "1D marginal distribution", + ), + +#==== +# Definition des parametres selon le type de la loi +#==== + + BETA = BLOC ( condition = " Kind in ( 'Beta', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "RT", "MuSigma" ), + defaut = "RT", + fr = "Parametrage de la loi beta", + ang = "Beta distribution parameter set", + ), + + RT_Parameters = BLOC ( condition = " Settings in ( 'RT', ) ", + + R = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre R de la loi", + ang = "R parameter", + ), + + # T > R + T = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre T de la loi | T > R", + ang = "T parameter | T > R", + ), + + ), # Fin BLOC RT_Parameters + + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC MuSigma_Parameters + + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre A de la loi", + ang = "A parameter", + ), + + # B > A + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre B de la loi | B > A", + ang = "B parameter | B > A", + ), + + ), # Fin BLOC BETA + + + + EXPONENTIAL = BLOC ( condition = " Kind in ( 'Exponential', ) ", + + Lambda = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Lambda | Lambda > 0", + ang = "Lambda parameter | Lambda > 0", + ), + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Gamma", + ang = "Gamma parameter", + ), + + ), # Fin BLOC EXPONENTIAL + + + + GAMMA = BLOC ( condition = " Kind in ( 'Gamma', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "KLambda", "MuSigma" ), + defaut = "KLambda", + fr = "Parametrage de la loi gamma", + ang = "Gamma distribution parameter set", + ), + + KLambda_Parameters = BLOC ( condition = " Settings in ( 'KLambda', ) ", + + K = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre K de la loi | K > 0", + ang = "K parameter | K > 0", + ), + + Lambda = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Lambda de la loi | Lambda > 0", + ang = "Lambda parameter | Lambda > 0", + ), + + ), # Fin BLOC KLambda_Parameters + + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + defaut = 0.0, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + defaut = 1.0, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC MuSigma_Parameters + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Gamma", + ang = "Gamma parameter", + ), + + + ), # Fin BLOC GAMMA + + + + GEOMETRIC = BLOC ( condition = " Kind in ( 'Geometric', ) ", + + P = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + val_max = 1., + fr = "Parametre P | 0 < P < 1", + ang = "P parameter | 0 < P < 1", + ), + + ), # Fin BLOC GEOMETRIC + + + + GUMBEL = BLOC ( condition = " Kind in ( 'Gumbel', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "AlphaBeta", "MuSigma" ), + defaut = "AlphaBeta", + fr = "Parametrage de la loi gumbel", + ang = "Gumbel distribution parameter set", + ), + + AlphaBeta_Parameters = BLOC ( condition = " Settings in ( 'AlphaBeta', ) ", + + Alpha = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Alpha de la loi | Alpha > 0", + ang = "Alpha parameter | Alpha > 0", + ), + + Beta = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Beta de la loi", + ang = "Beta parameter", + ), + + ), # Fin BLOC AlphaBeta_Parameters + + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC MuSigma_Parameters + + ), # Fin BLOC GUMBEL + + + + HISTOGRAM = BLOC ( condition = " Kind in ( 'Histogram', ) ", + + Sup = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure de la distribution", + ang = "Upper bound", + ), + + # Il faut definir une collection de couples ( x,p ) + Values = SIMP ( statut = 'o', + typ = 'R', + max = '**', + ), + + ), # Fin BLOC HISTOGRAM + + + + LOGNORMAL = BLOC ( condition = " Kind in ( 'LogNormal', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "MuSigmaLog", "MuSigma", "MuSigmaOverMu" ), + defaut = "MuSigmaLog", + fr = "Parametrage de la loi lognormale", + ang = "Lognormal distribution parameter set", + ), + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi | Mu > Gamma", + ang = "Mu parameter | Mu > Gamma", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC MuSigma_Parameters + + MuSigmaOverMu_Parameters = BLOC ( condition = " Settings in ( 'MuSigmaOverMu', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi | Mu > Gamma", + ang = "Mu parameter | Mu > Gamma", + ), + + SigmaOverMu = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre SigmaOverMu de la loi | SigmaOverMu > 0", + ang = "SigmaOverMu parameter | SigmaOverMu > 0", + ), + + ), # Fin BLOC MuSigmaOverMu_Parameters + + MuSigmaLog_Parameters = BLOC ( condition = " Settings in ( 'MuSigmaLog', ) ", + + MuLog = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu log de la loi", + ang = "Mu log parameter", + ), + + SigmaLog = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma log de la loi | SigmaLog > 0", + ang = "Sigma log parameter | SigmaLog > 0", + ), + + ), # Fin BLOC MuSigmaLog_Parameters + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Gamma", + ang = "Gamma parameter", + ), + + ), # Fin BLOC LOGNORMAL + + + + LOGISTIC = BLOC ( condition = " Kind in ( 'Logistic', ) ", + + Alpha = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Alpha de la loi", + ang = "Alpha parameter", + ), + + Beta = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Beta de la loi | Beta > = 0", + ang = "Beta parameter | Beta > = 0", + ), + + ), # Fin BLOC LOGISTIC + + + + MULTINOMIAL = BLOC ( condition = " Kind in ( 'MultiNomial', ) ", + + N = SIMP ( statut = "o", + typ = "I", + max = 1, + fr = "Dimension de la loi", + ang = "Distribution dimension", + ), + + # Il faut un vecteur P de taille N + Values = SIMP ( statut = 'o', + typ = 'R', + max = '**', + ), + + ), # Fin BLOC MULTINOMIAL + + + + NORMAL = BLOC ( condition = " Kind in ( 'Normal', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC NORMAL + + + + POISSON = BLOC ( condition = " Kind in ( 'Poisson', ) ", + + Lambda = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Lambda de la loi | Lambda > 0", + ang = "Lambda parameter | Lambda > 0", + ), + + ), # Fin BLOC POISSON + + + + STUDENT = BLOC ( condition = " Kind in ( 'Student', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Nu = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 2., + fr = "Parametre Nu de la loi | V > = 2", + ang = "Nu parameter | V > = 2", + ), + + ), # Fin BLOC STUDENT + + + + TRIANGULAR = BLOC ( condition = " Kind in ( 'Triangular', ) ", + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure de la loi | A < = M < = B", + ang = "Lower bound | A < = M < = B", + ), + + M = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Mode de la loi | A < = M < = B", + ang = "Mode | A < = M < = B", + ), + + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure de la loi | A < = M < = B", + ang = "Upper bound | A < = M < = B", + ), + + ), # Fin BLOC TRIANGULAR + + + + TRUNCATEDNORMAL = BLOC ( condition = " Kind in ( 'TruncatedNormal', ) ", + + MuN = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + SigmaN = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre SigmaN de la loi | SigmaN > 0", + ang = "SigmaN parameter | SigmaN> 0", + ), + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure de la loi | A < = B", + ang = "Lower bound | A < = B", + ), + + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure de la loi | A < = B", + ang = "Upper bound | A < = B", + ), + + ), # Fin BLOC TRUNCATEDNORMAL + + + + UNIFORM = BLOC ( condition = " Kind in ( 'Uniform', ) ", + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure de la loi | A < = B", + ang = "Lower bound | A < = B", + ), + + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure de la loi | A < = B", + ang = "Upper bound | A < = B", + ), + + ), # Fin BLOC UNIFORM + + + + USERDEFINED = BLOC ( condition = " Kind in ( 'UserDefined', ) ", + + # Il faut definir une collection de couples ( x,p ) + Values = SIMP ( statut = 'o', + typ = 'R', + max = '**', + ), + + ), # Fin BLOC USERDEFINED + + + + WEIBULL = BLOC ( condition = " Kind in ( 'Weibull', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "AlphaBeta", "MuSigma" ), + defaut = "AlphaBeta", + fr = "Parametrage de la loi weibull", + ang = "Weibull distribution parameter set", + ), + + AlphaBeta_Parameters = BLOC ( condition = " Settings in ( 'AlphaBeta', ) ", + + Alpha = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Alpha de la loi | Alpha > 0", + ang = "Alpha parameter | Alpha > 0", + ), + + Beta = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Beta de la loi | Beta > 0", + ang = "Beta parameter | Beta > 0", + ), + + ), # Fin BLOC AlphaBeta_Parameters + + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Mu de la loi", + ang = "Mu parameter", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + ), # Fin BLOC MuSigma_Parameters + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Gamma", + ang = "Gamma parameter", + ), + + ), # Fin BLOC WEIBULL + +) # Fin OPER DISTRIBUTION + + + + + + + +#================================ +# 3. Definition de l'etude +#================================ + +# Nota : les variables de type PROC doivent etre en majuscules ! +CRITERIA = PROC ( nom = "CRITERIA", + op = None, + docu = "", + fr = "Mise en donnee pour le fichier de configuration de OPENTURNS.", + ang = "Writes the configuration file for OPENTURNS.", + + + + Type = SIMP ( statut = "o", + typ = "TXM", + into = ( "Min/Max", "Central Uncertainty", "Threshold Exceedence" ), + fr = "Type d'Analyse", + ang = "Analysis", + ), + + + + + + + + MinMax = BLOC ( condition = " Type in ( 'Min/Max', ) ", + + Method = SIMP ( statut = "o", + typ = "TXM", + into = ( "Experiment Plane", "Random Sampling" ), + fr = "Methode", + ang = "Method", + ), + # UC 3.1.1 + ExperimentPlaneSettings = BLOC ( condition = " Method in ( 'Experiment Plane', ) ", + + ExperimentPlane = SIMP ( statut = "o", + typ = "TXM", + into = ( "Axial", "Factorial", "Composite", ), + fr = "Methode", + ang = "Method", + ), + + Levels = SIMP ( statut = "o", + typ = "R", + val_min = 0.0, + max = '**', + fr = "Nombre de niveaux dans chaque direction", + ang = "Levels in each direction", + ), + + # Scaled Vector + UnitsPerDimension = SIMP ( statut = "o", + typ = "R", + max = '**', + fr = "Unite par dimension (autant que de variables declarees)", + ang = "Units per dimension (as much as declared variables)", + ), + + # Translation Vector + Center = SIMP ( statut = "o", + typ = "R", + max = '**', + fr = "Unite par dimension", + ang = "Units per dimension", + ), + + ), # Fin BLOC ExperimentPlaneSettings + + + + RandomSamplingSettings = BLOC ( condition = " Method in ( 'Random Sampling', ) ", + + PointsNumber = SIMP ( statut = "o", + typ = "I", + val_min = 1, + fr = "Nombre de points", + ang = "Points number", + ), + + ), # Fin BLOC RandomSamplingSettings + + Result = SIMP ( statut = "o", + typ = "TXM", + into = ( "Min/Max", ), + defaut = "Min/Max", + fr = "Le minimum et le maximum", + ang = "The min and max values", + ), + + + ), # Fin BLOC MinMax + + + + + CentralUncertainty = BLOC ( condition = " Type in ( 'Central Uncertainty', ) ", + + Method = SIMP ( statut = "o", + typ = "TXM", + into = ( "Taylor Variance Decomposition", "Random Sampling" ), + fr = "Methode", + ang = "Method", + ), + + # UC 3.2. + TaylorVarianceDecompositionSettings = BLOC ( condition = " Method in ( 'Taylor Variance Decomposition', ) ", + + Result = FACT ( statut = "o", + min = 1, + max = "**", + + MeanFirstOrder = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Moyenne au premier ordre", + ang = "MeanFirstOrder", + ), + + StandardDeviationFirstOrder = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Ecart-type au premier ordre", + ang = "StandardDeviationFirstOrder", + ), + + MeanSecondOrder = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Moyenne au second ordre", + ang = "MeanSecondOrder", + ), + + ImportanceFactor = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Facteur d'importance pour variable de sortie scalaire", + ang = "ImportanceFactor", + ), + + ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ", + + NumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + GraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC ImportanceFactorSettings + + ), # Fin FACT Result + + ), # Fin BLOC TaylorVarianceDecompositionSettings + + + + RandomSamplingSettings = BLOC ( condition = " Method in ( 'Random Sampling', ) ", + + PointsNumber = SIMP ( statut = "o", + typ = "I", + val_min = 1, + fr = "Nombre de points", + ang = "Points number", + ), + + Result = FACT ( statut = "o", + min = 1, + max = "**", + + EmpiricalMean = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Moyenne empirique", + ang = "Empirical mean", + ), + + EmpiricalStandardDeviation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Ecart-type empirique", + ang = "Empirical standard deviation", + ), + + EmpiricalQuantile = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Quantile empirique", + ang = "Empirical quantile", + ), + + EmpiricalQuantileSettings = BLOC ( condition = " EmpiricalQuantile in ( 'yes', ) ", + + EmpiricalQuantile_Order = SIMP ( statut = "o", + typ = 'R', + defaut = 0.95, + max = 1, + val_min = 0.0, + val_max = 1.0, + fr = "Ordre du quantile empirique", + ang = "Empirical quantile order", + ), + + ), # Fin BLOC EmpiricalQuantileSettings + + AnalysedCorrelations = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Correlations analysees", + ang = "Analysed correlations", + ), + + KernelSmoothing = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Kernel smoothing de l'echantillon", + ang = "Kernel smoothing of the sample", + ), + + ), # Fin FACT Result + + ), # Fin BLOC RandomSamplingSettings + + ), # Fin BLOC CentralUncertainty + + + + + ThresholdExceedence = BLOC ( condition = " Type in ( 'Threshold Exceedence', ) ", + + Event = FACT ( statut = "o", + min = 1, + max = 1, + + Threshold = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Le seuil de defaillance", + ang = "Failure threshold", + ), + + ComparisonOperator = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "Less", "LessOrEqual", "Equal", "GreaterOrEqual", "Greater" ), + fr = "Que faut-il ne pas depasser : un maximum ou un minimum", + ang = "What is the failure threshold : maximum or minimum", + ), + ), # Fin FACT Event + + + Method = SIMP ( statut = "o", + typ = "TXM", + into = ( "Simulation", "Analytical" ), + fr = "Methode", + ang = "Method", + ), + + SimulationSettings = BLOC ( condition = " Method in ( 'Simulation', ) ", + + Algorithm = SIMP ( statut = "o", + typ = "TXM", + into = ( "MonteCarlo", "LHS", "ImportanceSampling" ), + fr = "Algorithme de simulation", + ang = "Simulation algorithm", + ), + + + RandomGenerator = FACT ( statut = "o", + min = 1, + max = 1, + + SeedToBeSet = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "La racine du generateur aleatoire doit-elle etre positionnee ?", + ang = "Does the random generator seed need to be set ?", + ), + + SeedSettings = BLOC ( condition = " SeedToBeSet in ( 'yes', ) ", + + RandomGeneratorSeed = SIMP ( statut = "o", + typ = "I", + max = 1, + fr = "Racine du generateur aleatoire", + ang = "Random generator seed", + ), + + ), # Fin BLOC SeedSettings + + ), # Fin FACT RandomGenerator + + + BlockSize = SIMP ( statut = "f", + typ = "I", + max = 1, + val_min = 1, + defaut = 1, + fr = "Nombre de calculs realises en bloc", + ang = "Number of computations as a block", + ), + + MaximumOuterSampling = SIMP ( statut = "o", + typ = "I", + max = 1, + val_min = 1, + fr = "Maximum d'iterations externes", + ang = "Maximum outer Sampling value", + ), + + MaximumCoefficientOfVariation = SIMP ( statut = "f", + typ = "R", + max = 1, + defaut = 0.1, + val_min = 0.0, + fr = " maximum ...", + ang = "Absolute maximum ...." + ), + + ImportanceSamplingSettings = BLOC ( condition = " Algorithm in ( 'ImportanceSampling', ) ", + + MeanVector = SIMP ( statut = "o", + typ = "R", + max = "**", + fr = "Moyenne", + ang = "Mean vector", + ), + + Correlation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'Independent', 'Linear' ), + defaut = 'Linear', + max = 1, + fr = "Le type de correlation entre les variables", + ang = "Correlation between variables", + ), + + ), # Fin BLOC ImportanceSamplingSettings + + Result = FACT ( statut = "o", + min = 1, + max = "**", + + Probability = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', ), + defaut = 'yes', + max = 1, + fr = "Probabiblite", + ang = "Probability", + ), + + StandardDeviation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', ), + defaut = 'yes', + max = 1, + fr = "Ecart type", + ang = "Standard deviation", + ), + + ConfidenceInterval = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Ecart-type empirique", + ang = "Empirical standard deviation", + ), + + ConfidenceIntervalSettings = BLOC ( condition = " ConfidenceInterval in ( 'yes', ) ", + + Level = SIMP ( statut = "o", + typ = 'R', + defaut = 0.9, + max = 1, + val_min = 0.0, + val_max = 1.0, + fr = "Niveau de confiance", + ang = "Confidence level", + ), + + ), # Fin BLOC ConfidenceIntervalSettings + + VariationCoefficient = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Coefficient de variation", + ang = "VariationCoefficient", + ), + + IterationNumber = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Nombre d'iterations", + ang = "Iteration number", + ), + + ConvergenceGraph = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Graphe de convergence", + ang = "Convergence graph", + ), + + ), # Fin FACT Result + + + + ), # Fin BLOC SimulationSettings + + + + AnalyticalSettings = BLOC ( condition = " Method in ( 'Analytical', ) ", + + Approximation = SIMP ( statut = "o", + typ = "TXM", + defaut = "FirstOrder", + into = ( "FirstOrder", "SecondOrder" ), + max = 1, + fr = "Approximation", + ang = "Approximation", + ), + + OptimizationAlgorithm = SIMP ( statut = "o", + typ = "TXM", + defaut = "Cobyla", + into = ( "Cobyla", "AbdoRackwitz" ), + max = 1, + fr = "Methode d'optimisation", + ang = "Optimisation method", + ), + + + PhysicalStartingPoint = SIMP ( statut = "f", + typ = "R", + max = "**", + fr = "Point de demarrage de l'algorithme iteratif", + ang = "Initial point for iterative process", + ), + + MaximumIterationsNumber = SIMP ( statut = "f", + typ = "I", + max = 1, + val_min = 1, + fr = "Nombre maximum d iterations", + ang = "Maximum number of iterations", + ), + + + MaximumAbsoluteError = SIMP ( statut = "f", + typ = "R", + max = 1, + defaut = 1E-4, + val_min = 0.0, + fr = "Distance maximum absolue entre 2 iterations successifs", + ang = "Absolute maximum distance between 2 successive iterates", + ), + + MaximumRelativeError = SIMP ( statut = "f", + typ = "R", + max = 1, + defaut = 1E-4, + val_min = 0.0, + fr = "Distance maximum relative entre 2 iterations successives", + ang = "Relative maximum distance between 2 successive iterates", + ), + + MaximumConstraintError = SIMP ( statut = "f", + typ = "R", + max = 1, + defaut = 1E-4, + val_min = 0.0, + fr = "Valeur maximum absolue de la fonction moins la valeur du niveau", + ang = "Maximum absolute value of the constraint function minus the level value", + ), + + ImportanceSampling = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Tirage d'importance au point de conception", + ang = "Importance sampling at design point", + ), + + FirstOrder = BLOC ( condition = " Approximation in ( 'FirstOrder', ) ", + + Probability = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', ), + defaut = 'yes', + max = 1, + fr = "Probabiblite", + ang = "Probability", + ), + + DesignPoint = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Point de conception", + ang = "Design point", + ), + + HasoferReliabilityIndex = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Indice de fiabilite", + ang = "Reliability index", + ), + + ImportanceFactor = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Facteur d'importance pour variable de sortie scalaire", + ang = "ImportanceFactor", + ), + + ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ", + + ImportanceFactorNumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + ImportanceFactorGraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC ImportanceFactorSettings + + + SensitivityAnalysis = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Analyse de sensibilite", + ang = "Sensitivity analysis", + ), + + SensitivityAnalysisSettings = BLOC ( condition = " SensitivityAnalysis in ( 'yes', ) ", + + FORMEventProbabilitySensitivity = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Indice de fiabilite de Hasofer", + ang = "Hasofer reliability index", + ), + + FORMEventProbabilitySensitivitySettings = BLOC ( condition = " FORMEventProbabilitySensitivity in ( 'yes', ) ", + + FORMEventProbabilitySensitivityNumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + FORMEventProbabilitySensitivityGraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC FORMEventProbabilitySensitivitySettings + + HasoferReliabilityIndexSensitivity = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Indice de fiabilite de Hasofer", + ang = "Hasofer reliability index", + ), + + HasoferReliabilityIndexSensitivitySettings = BLOC ( condition = " HasoferReliabilityIndexSensitivity in ( 'yes', ) ", + + HasoferReliabilityIndexSensitivityNumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + HasoferReliabilityIndexSensitivityGraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC HasoferReliabilityIndexSettings + + ), # Fin BLOC SensitivityAnalysisSettings + + FunctionCallsNumber = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Nombre d'appels a la fonction", + ang = "Function calls number", + ), + + + ), # Fin BLOC FirstOrder + + + SecondOrder = BLOC ( condition = " Approximation in ( 'SecondOrder', ) ", + + + TvedtApproximation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Approximation de Tvedt", + ang = "Tvedt approximation", + ), + + HohenBichlerApproximation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Approximation de HohenBichler", + ang = "HohenBichler approximation", + ), + + BreitungApproximation = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Approximation de Breitung", + ang = "Breitung approximation", + ), + + DesignPoint = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Point de conception", + ang = "Design point", + ), + + ImportanceFactor = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Facteur d'importance pour variable de sortie scalaire", + ang = "ImportanceFactor", + ), + + ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ", + + ImportanceFactorNumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + ImportanceFactorGraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC ImportanceFactorSettings + + SensitivityAnalysis = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Analyse de sensibilite", + ang = "Sensitivity analysis", + ), + + SensitivityAnalysisSettings = BLOC ( condition = " SensitivityAnalysis in ( 'yes', ) ", + + HasoferReliabilityIndexSensitivity = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Indice de fiabilite de Hasofer", + ang = "Hasofer reliability index", + ), + + HasoferReliabilityIndexSensitivitySettings = BLOC ( condition = " HasoferReliabilityIndexSensitivity in ( 'yes', ) ", + + HasoferReliabilityIndexSensitivityNumericalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'yes', + max = 1, + fr = "Resultats numeriques", + ang = "NumericalResults", + ), + + HasoferReliabilityIndexSensitivityGraphicalResults = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Resultats graphiques", + ang = "GraphicalResults", + ), + + ), # Fin BLOC HasoferReliabilityIndexSettings + + ), # Fin BLOC SensitivityAnalysisSettings + + FunctionCallsNumber = SIMP ( statut = "o", + typ = 'TXM', + into = ( 'yes', 'no' ), + defaut = 'no', + max = 1, + fr = "Nombre d'appels a la fonction", + ang = "Function calls number", + ), + + + ), # Fin BLOC SecondOrder + + + + ), # Fin BLOC AnalyticalSettings + + + + ), # Fin BLOC ThresholdExceedence + + + +) # Fin PROC CRITERIA + + + + + + + diff --git a/Openturns_Study/catalogues_openturns.ini b/Openturns_Study/catalogues_openturns.ini new file mode 100644 index 00000000..7cd5b3c1 --- /dev/null +++ b/Openturns_Study/catalogues_openturns.ini @@ -0,0 +1,12 @@ +# Choix des catalogues +import os +#rep_cata=os.path.dirname(os.path.abspath(__file__)) +rep_cata=os.getcwd() + +catalogues = ( +# (code,version,catalogue,formatIn,formatOut) + #('OPENTURNS_WRAPPER','V1',os.path.join(rep_cata,'OpenTURNS_Cata_Wrapper_V1.py'),'openturns_wrapper','wrapper'), + ('OPENTURNS_STUDY','V3',os.path.join(rep_cata,'OpenTURNS_Cata_Study_V3.py'),'openturns_study','wrapper'), + #('OPENTURNS','Wrapper',os.path.join(rep_cata,'OpenTURNS_Cata_Wrapper_V1.py'),'openturns'), +) + diff --git a/Openturns_Study/configuration.py b/Openturns_Study/configuration.py new file mode 100644 index 00000000..32d6ff7b --- /dev/null +++ b/Openturns_Study/configuration.py @@ -0,0 +1,194 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +""" + Ce module sert pour charger les paramètres de configuration d'EFICAS +""" +# Modules Python +print "passage dans la surcharge de configuration pour OTW" +import os, sys, string, types, re +import traceback +from PyQt4.QtGui import * + +# Modules Eficas +from Editeur import utils + +class CONFIG: + + #----------------------------------- + def __init__(self,appli,repIni): + #----------------------------------- + + # Classe de base permettant de lire, afficher + # et sauvegarder les fichiers utilisateurs + # On a deux directories : la directory generale (Repertoire d instal + Nom du code + # Par exemple : ~/Install_Eficas/EficasV1_14/Openturns_Wrapper + # et la directorie de l utilisateur + # HOME/.Eficas_Openturns + # Le fichier prefs.py va etre lu dans la directory generale puis surcharge eventuellement + # par celui de l utilisateur + # le fichier de catalogue va etre lu dans la directory de l utilisateur s il exite + # dans le fichier general sinon + self.appli = appli + self.code = appli.code + self.salome = appli.salome + self.repIni = repIni + self.fic_prefs ="prefs.py" + + if self.appli: + self.parent=appli.top + #self.appli.format_fichier="openturns_study" + else: self.parent=None + + + self.labels=("OpenTURNS_path","rep_user","INSTALLDIR","path_doc","exec_acrobat","rep_cata","initialdir","savedir") + + # Valeurs par defaut + self.rep_user = os.path.join(os.environ['HOME'],'.Eficas_Openturns') + self.initialdir = self.rep_user + self.path_doc = self.rep_user + self.savedir = self.rep_user + self.exec_acrobat = self.rep_user + + #Lecture des fichiers utilisateurs + self.lecture_fichier_ini_standard() + self.lecture_fichier_ini_utilisateur() + self.lecture_catalogues() + print self.initialdir + + #-------------------------------------- + def lecture_fichier_ini_standard(self): + #-------------------------------------- + # Verifie l'existence du fichier "standard" + # appelle la lecture de ce fichier + self.fic_ini = os.path.join(self.repIni,self.fic_prefs) + if not os.path.isfile(self.fic_ini): + QMessageBox.critical( None, "Import du fichier de Configuration", + "Erreur à la lecture du fichier de configuration "+self.fic_ini+".py" ) + sys.exit(0) + import prefs + for k in self.labels : + try : + valeur=getattr(prefs,k) + setattr(self,k,valeur) + except : + pass + + + #-------------------------------------- + def lecture_fichier_ini_utilisateur(self): + #-------------------------------------- + # Surcharge les paramètres standards par les paramètres utilisateur s'ils existent + self.fic_ini_utilisateur = os.path.join(self.rep_user,self.fic_prefs) + #if not os.path.isfile(self.fic_ini_utilisateur+".py"): + if not os.path.isfile(self.fic_ini_utilisateur): + return + from utils import read_file + txt = utils.read_file(self.fic_ini_utilisateur) + from styles import style + d=locals() + try: + exec txt in d + except : + l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) + QMessageBox.critical( None, "Import du fichier de Configuration", + "Erreur à la lecture du fichier de configuration " + self.fic_ini_utilisateur ) + sys.exit(0) + for k in self.labels : + try : + setattr(self,k,d[k]) + except : + pass + + + + #-------------------------------------- + def lecture_catalogues(self): + #-------------------------------------- + rep_mat=" " # Compatbilite Aster + fic_cata ="catalogues_openturns.ini" + fic_ini = os.path.join(self.repIni,fic_cata) + fic_user= os.path.join(self.rep_user,fic_cata) + if os.path.isfile(fic_user): + fichier = fic_user + else : + fichier = fic_ini + if not os.path.isfile(fic_ini) : + QMessageBox.critical( None, "Erreur a l'import du fichier des Catalogues", + "Le fichier de configuration des catalogues "+fic_ini+" n a pas été trouvé" ) + sys.exit(0) + + from utils import read_file + txt = utils.read_file(fichier) + d=locals() + try: + exec txt in d + self.catalogues=d["catalogues"] + except : + l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) + QMessageBox.critical( None, "Import du fichier de Configuration", + "Erreur à la lecture du fichier de configuration " + fichier ) + sys.exit(0) + + + + #-------------------------------------- + def save_params(self): + #-------------------------------------- + # sauvegarde + # les nouveaux paramètres dans le fichier de configuration utilisateur + # + print "a ecrire PNPNPN" +# l_param=('exec_acrobat', 'repIni','catalogues','rep_travail','rep_mat','path_doc') +# texte="" +# for clef in l_param : +# if hasattr(self,clef): +# valeur=getattr(self,clef) +# texte= texte + clef+" = " + repr(valeur) +"\n" +# +# +# # recuperation des repertoires materiaux +# try : +# for item in self.catalogues : +# try : +# (code,version,cata,format,defaut)=item +# except : +# (code,version,cata,format)=item +# codeSansPoint=re.sub("\.","",version) +# chaine="rep_mat_"+codeSansPoint +# if hasattr(self,chaine): +# valeur=getattr(self,chaine) +# texte= texte + chaine+" = '" + str(valeur) +"'\n" +# except : +# pass +# +# f=open(self.fic_ini_utilisateur,'w+') +# f.write(texte) +# f.close() +# + + +def make_config(appli,rep): + return CONFIG(appli,rep) + +def make_config_style(appli,rep): + return None + + diff --git a/Openturns_Study/ops.py b/Openturns_Study/ops.py new file mode 100644 index 00000000..28db9a95 --- /dev/null +++ b/Openturns_Study/ops.py @@ -0,0 +1,21 @@ +# -*- coding: iso-8859-1 -*- + +def INCLUDE(self,FileName,**args): + """ + Fonction sd_prod pour la macro INCLUDE + """ + if hasattr(self,'change_fichier'): + delattr(self,'change_fichier') + delattr(self,'fichier_ini') + + self.make_include2(fichier=FileName) + +def INCLUDE_context(self,d): + """ + Fonction op_init pour macro INCLUDE + """ + for k,v in self.g_context.items(): + print "IDM: ops.py k=%s v=%s" % (k,v) + d[k]=v + + diff --git a/Openturns_Study/prefs.py b/Openturns_Study/prefs.py new file mode 100644 index 00000000..5fff47f6 --- /dev/null +++ b/Openturns_Study/prefs.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== + +import os, sys +# Les variables pouvant positionnees sont : +# "CODE_PATH_SURCHARGE","DTDDirectory","rep_user","INSTALLDIR","path_doc","exec_acrobat","rep_cata" +print "import des prefs de OPENTURNS_STUDY" + +code = "OPENTURNS_STUDY" + +# REPINI sert à localiser le fichier +# initialdir sert comme directory initial des QFileDialog +# positionnee a repin au debut mise a jour dans configuration +REPINI=os.path.dirname(os.path.abspath(__file__)) +initialdir=REPINI + +# INSTALLDIR sert à localiser l'installation d'Eficas +INSTALLDIR=os.path.join(REPINI,'..') + + +# Codage des strings qui accepte les accents (en remplacement de 'ascii') +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +lang='fr' +encoding='iso-8859-1' + +# Acces a la documentation +rep_cata = INSTALLDIR +path_doc = os.path.join(rep_cata,'Doc') +exec_acrobat = "/usr/bin/xpdf" + +# Repertoire initial +DTDDirectory="/local00/home/dutka/OpenTURNS/dutka/devel/build/install/share/openturns/wrappers/" + +# Choix des catalogues +sys.path[:0]=[INSTALLDIR] + diff --git a/Openturns_Study/properties.py b/Openturns_Study/properties.py new file mode 100644 index 00000000..8ba0ed7e --- /dev/null +++ b/Openturns_Study/properties.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +#@ MODIF properties Accas DATE 10/10/2002 AUTEUR gcbhhhh M.ADMINISTRATEUR +# CONFIGURATION MANAGEMENT OF EDF VERSION +# RESPONSABLE D6BHHHH J-P.LEFEBVRE +# ====================================================================== +# 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. +# ====================================================================== +# IDENTIFICATION DU GESTIONNAIRE DE COMMANDE ACCAS A PARTIR +# DE LA VERSION DU CODE_ASTER ASSOCIE +#---------------------------------------------------------------------- +version = "7.1.0" +date = "23/04/2003" diff --git a/Openturns_Study/qtEficas_openturns_study.py b/Openturns_Study/qtEficas_openturns_study.py new file mode 100755 index 00000000..76e0ad8a --- /dev/null +++ b/Openturns_Study/qtEficas_openturns_study.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== + +""" + Ce module sert à lancer EFICAS configuré pour Openturns +""" +# Modules Python + +# Modules Eficas +import prefs +prefs.code="OPENTURNS_STUDY" +from InterfaceQT4 import eficas_go + +eficas_go.lance_eficas(code=prefs.code) diff --git a/Openturns_Study/sdistOTqt.py b/Openturns_Study/sdistOTqt.py new file mode 100644 index 00000000..acf75c26 --- /dev/null +++ b/Openturns_Study/sdistOTqt.py @@ -0,0 +1,103 @@ +# -*- coding: utf-8 -*- +""" + Ce module sert à construire les distributions d'EFICAS pour Openturns + en fonction du tag CVS courant + Les distributions sont : + - un tar.gz pour UNIX ne contenant pas mxTextTools + L'utilisation de ce module est la suivante : + 1- Se mettre dans un répertoire de travail + 2- Configurer son environnement pour utiliser le référentiel CVS EFICAS + 3- Exporter les sources d'EficasV1 par la commande : + cvs export -r TAG -d Eficas_export EficasV1 + ou TAG est le tag CVS de la version que l'on veut distribuer (par exemple V1_1p1) + 5- Aller dans le répertoire Eficas_export + 6- Executer le script sdist.py + python sdist.py + Ce qui a pour effet de creer un repertoire dist contenant la distribution + et de la copier dans le répertoire indiqué par dir_download s'il est accessible + +""" +import os,shutil,glob,sys +import types + +nom_distrib="QTEficasOpenturns_V1_0" +path_distrib=os.path.join("dist",nom_distrib) +path_TextTools="/home/eficas/pkg/mxTools/egenix2.0.2pourWindows/mx/TextTools" +dir_download= "/home/eficas/WWW/telechargement/eficas" + +def main(): + if os.path.isdir('dist'):shutil.rmtree('dist') + + copyfiles('.',path_distrib,['LICENSE.TERMS','INSTALL','NEWS']) + + copyfiles('../Editeur',os.path.join(path_distrib,'Editeur'),['*.py','faqs.txt']) + copyfiles('../InterfaceTK',os.path.join(path_distrib,'InterfaceTK'),['*.py','faqs.txt']) + copyfiles('../InterfaceQT',os.path.join(path_distrib,'InterfaceQT'),['*.py','faqs.txt']) + copyfiles('../Ui',os.path.join(path_distrib,'Ui'),['*.ui','makefile']) + copyfiles('../Openturns',os.path.join(path_distrib,'Openturns'),['*.py','*.ini']) + copyfiles('../Ihm',os.path.join(path_distrib,'Ihm'),['*.py']) + copyfiles('../Extensions',os.path.join(path_distrib,'Extensions'),['*.py']) + copyfiles('../Misc',os.path.join(path_distrib,'Misc'),['*.py']) + copyfiles('../Accas',os.path.join(path_distrib,'Accas'),['*.py']) + copyfiles('../Accas',os.path.join(path_distrib,'Noyau'),['*.py']) + copyfiles('../Accas',os.path.join(path_distrib,'Validation'),['*.py']) + # AIDE + copyfiles('../AIDE',os.path.join(path_distrib,'AIDE'),['*.py']) + copyfiles('../AIDE/fichiers',os.path.join(path_distrib,'AIDE','fichiers'),['*']) + copyfiles('.',os.path.join(path_distrib,'AIDE','fichiers'),['INSTALL','NEWS']) + copyfiles('../Editeur',os.path.join(path_distrib,'AIDE','fichiers'),['faqs.txt']) + # ______________________ + + copyfiles('../convert',os.path.join(path_distrib,'convert'),['*.py']) + copyfiles('../convert/Parserv5',os.path.join(path_distrib,'convert','Parserv5'),['*.py']) + copyfiles('../generator',os.path.join(path_distrib,'generator'),['*.py']) + copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.gif']) + copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.png']) + copyfiles('../Editeur/Patrons/',os.path.join(path_distrib,'Editeur','Patrons'),['*.com*']) + copyfiles('../Editeur/Patrons/OPENTURNS',os.path.join(path_distrib,'Editeur','Patrons','OPENTURNS'),['*.com*']) + + copyfiles('../Noyau',os.path.join(path_distrib,'Noyau'),['*.py']) + copyfiles('../Validation',os.path.join(path_distrib,'Validation'),['*.py']) + + + tarball= maketarball('dist',nom_distrib,nom_distrib) + try: + shutil.copy(tarball,dir_download) + except: + print "Repertoire de download inconnu : ",dir_download + + + +def make_dir(dir_cible): + if type(dir_cible) is not types.StringType: + raise "make_dir : dir_cible doit etre une string (%s)" % `dir_cible` + head,tail=os.path.split(dir_cible) + tails=[tail] + while head and tail and not os.path.isdir(head): + head,tail=os.path.split(head) + tails.insert(0, tail) + + for d in tails: + head = os.path.join(head, d) + if not os.path.isdir(head):os.mkdir(head) + + +def copyfiles(dir_origin,dir_cible,listfiles): + if not os.path.isdir(dir_cible):make_dir(dir_cible) + for glob_files in listfiles: + for file in glob.glob(os.path.join(dir_origin,glob_files)): + shutil.copy(file,dir_cible) + + +def maketarball(dir_trav,dir_cible,nom_tar): + prev=os.getcwd() + print prev + os.chdir(dir_trav) + os.system("tar -cf "+nom_tar+".tar "+dir_cible) + os.system("gzip -f9 "+nom_tar+".tar ") + os.chdir(prev) + return os.path.join(dir_trav,nom_tar+".tar.gz") + + +main() + diff --git a/Openturns_Study/style.py b/Openturns_Study/style.py new file mode 100644 index 00000000..7da9d534 --- /dev/null +++ b/Openturns_Study/style.py @@ -0,0 +1 @@ +# Necessaire pour compatibilite avec Aster diff --git a/Openturns_Study/test/MinMax_ExpPlane.comm b/Openturns_Study/test/MinMax_ExpPlane.comm new file mode 100644 index 00000000..6f671ab3 --- /dev/null +++ b/Openturns_Study/test/MinMax_ExpPlane.comm @@ -0,0 +1,17 @@ + +LOG(DebugMessages='no', + WrapperMessages='no', + UserMessages='no', + InfoMessages='yes', + WarningMessages='yes', + ErrorMessages='yes',); + +MODEL(Name='poutre',); + +CRITERIA(Type='Min/Max', + Method='Experiment Plane', + ExperimentPlane='Axial', + Levels=(1.0,2.0,5.0,), + UnitsPerDimension=(100.0,5.0,0.5,1e-07,), + Center=(3000000000.0,300.0,2.5,4e-06,), + Result='Min/Max',); diff --git a/Openturns_Study/test/MinMax_ExpPlane.py b/Openturns_Study/test/MinMax_ExpPlane.py new file mode 100644 index 00000000..098c853e --- /dev/null +++ b/Openturns_Study/test/MinMax_ExpPlane.py @@ -0,0 +1,68 @@ +#! /usr/bin/env python + +# Chargement du module systeme +import sys +sys.path.append( '/local00/home/dutka/OpenTURNS/trunk/build/install/lib/python2.4/site-packages/openturns' ) + +# Chargement du module Open TURNS +from openturns import * + +# Definit le niveau d'affichage de la log +flags = Log.NONE +flags = flags + Log.WARN +flags = flags + Log.ERROR +flags = flags - Log.WRAPPER +flags = flags + Log.INFO +flags = flags - Log.USER +flags = flags - Log.DBG +Log.Show( flags ) + +# Etude 'Min/Max' +# Charge le modele physique +model = NumericalMathFunction( 'poutre' ) +n = model.getInputNumericalPointDimension() + +# Etude par plan d'experience +# Definit les niveaux de la structure de grille +levels = NumericalPoint( 3 ) +levels[0] = 1 +levels[1] = 2 +levels[2] = 5 + +# Cree le plan d'experience centre reduit +myCenteredReductedGrid = Axial(n, levels) +myExperimentPlane = myCenteredReductedGrid.generate() + +# Definit les facteurs d'echelle dans chaque direction +scaledVector = NumericalPoint( n ) +scaledVector[0] = 100 +scaledVector[1] = 5 +scaledVector[2] = 0.5 +scaledVector[3] = 1e-07 +myExperimentPlane.scale( scaledVector ) + +# Definit le vecteur de translation +translationVector = NumericalPoint( n ) +translationVector[0] = 3e+09 +translationVector[1] = 300 +translationVector[2] = 2.5 +translationVector[3] = 4e-06 +myExperimentPlane.translate( translationVector ) + + +inputSample = myExperimentPlane + +# Calcul +outputSample = model( inputSample ) + +# Resultats +minValue = outputSample.getMin() +maxValue = outputSample.getMax() + +print 'minValue = ', minValue +print 'maxValue = ', maxValue + + + +# Terminaison du fichier +sys.exit( 0 ) diff --git a/Openturns_Study/test/MinMax_RandomSampling.comm b/Openturns_Study/test/MinMax_RandomSampling.comm new file mode 100644 index 00000000..e9ed474b --- /dev/null +++ b/Openturns_Study/test/MinMax_RandomSampling.comm @@ -0,0 +1,30 @@ + +LOG(DebugMessages='no', + WrapperMessages='no', + UserMessages='no', + InfoMessages='yes', + WarningMessages='yes', + ErrorMessages='yes',); + +MODEL(Name='poutre',); + +L_E=DISTRIBUTION(Kind='Normal', + Mu=0.1, + Sigma=0.1,); + +L_F=DISTRIBUTION(Kind='Exponential', + Lambda=1.0, + Gamma=2.0,); + +L_L=DISTRIBUTION(Kind='MultiNomial', + N=1, + Values=1.0,); + +L_I=DISTRIBUTION(Kind='Uniform', + A=10.0, + B=20.0,); + +CRITERIA(Type='Min/Max', + Method='Random Sampling', + PointsNumber=1000, + Result='Min/Max',); diff --git a/Openturns_Wrapper/OpenTURNS_Cata_Wrapper_V1.py b/Openturns_Wrapper/OpenTURNS_Cata_Wrapper_V1.py new file mode 100644 index 00000000..7bad7c17 --- /dev/null +++ b/Openturns_Wrapper/OpenTURNS_Cata_Wrapper_V1.py @@ -0,0 +1,216 @@ +# -*- coding: utf-8 -*- + +# -------------------------------------------------- +# debut entete +# -------------------------------------------------- + +import Accas +from Accas import * + + +#CONTEXT.debug = 1 +JdC = JDC_CATA ( code = 'OPENTURNS_WRAPPER', + execmodul = None, + regles = ( AU_MOINS_UN ( 'WRAPPER' ), ), + ) # Fin JDC_CATA + +# -------------------------------------------------- +# fin entete +# -------------------------------------------------- + + +#================================ +# 2. Definition des variables +#================================ + +VARIABLEPOOL = PROC ( nom = "VARIABLEPOOL", + op = None, + docu = "", + fr = "L'ensemble des variables probabilistes", + ang = "The pool of probabilistic variables", + + + Variables = FACT ( statut = "o", + min = 1, + max = "**", + + + + Name = SIMP ( statut = "o", + typ = "TXM", + max = 1, + fr = "Nom de la variable, identique au nom dans le solver.", + ang = "Name of the variable, identical to the name in solver." + ), + + Type = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "in", "out", ), + defaut = "in", + fr = "variable d'entree ou de sortie du solver", + ang = "Input or Output variable", + ), + + Unit = SIMP ( statut = "f", + typ = "TXM", + max = 1, + fr = "Unite", + ang = "Unit", + ), + + Comment = SIMP ( statut = "f", + typ = "TXM", + max = 1, + fr = "Commentaire", + ang = "Comment", + ), + + Regexp = SIMP ( statut = "f", + typ = "TXM", + max = 1, + fr = "Expression reguliere", + ang = "Regular expression", + ), + + Format = SIMP ( statut = "f", + typ = "TXM", + max = 1, + fr = "Format d'ecriture", + ang = "Format", + ), + + + ), # Fin FACT Variables + +) # Fin PROC VARIABLEPOOL + + +#================================ +# Definition des parametres du wrapper +#================================ + +# Nota : les variables de type PROC doivent etre en majuscules ! +WRAPPER = PROC ( nom = "WRAPPER", + op = None, + docu = "", + fr = "Mise en donnee pour le fichier de configuration de OPENTURNS.", + ang = "Writes the configuration file for OPENTURNS.", + + + WrapperPath = SIMP ( statut = "o", + typ = "TXM", + max = 1, + fr = "Chemin d acces au wrapper", + ang = "Wrapper library path", + ), + + FunctionName = SIMP ( statut = "o", + typ = "TXM", + max = 1, + fr = "Nom de la fonction dans le wrapper", + ang = "Function's name in wrapper", + ), + + GradientName = SIMP ( statut = "f", + typ = "TXM", + max = 1, + fr = "Nom du gradient dans le wrapper", + ang = "Gradient's name in wrapper", + ), + + HessianName = SIMP ( statut = "f", + typ = "TXM", + max = 1, + fr = "Nom du hessian dans le wrapper", + ang = "Hessian's name in wrapper", + ), + + WrapCouplingMode = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "static-link", "dynamic-link", "fork", ), + fr = "Mode de couplage du solver", + ang = "Solver coupling mode", + ), + + Fork = BLOC ( condition = " WrapCouplingMode in ( 'fork', ) ", + + Command = SIMP ( statut = "o", + max = 1, + typ = "TXM", + fr = "Chemin du solver", + ang = "solver path", + ), + ), # Fin BLOC Fork + + State = SIMP ( statut = "f", + typ = "TXM", + max = 1, + into = ( "shared", "specific" ), + fr = "Partage de l'etat interne entre les fonctions", + ang = "Internal state sharing", + ), + + InDataTransfer = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "files", "arguments", ), + fr = "Mode de transfert des donnees d'entree", + ang = "Input transfering mode", + ), + + OutDataTransfer = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "files", "arguments", ), + fr = "Mode de transfert des donnees de sortie", + ang = "Output transfering mode", + ), + + + + + Files = FACT ( statut = "f", + min = 1, + max = "**", + + Id = SIMP ( statut = "o", + typ = "TXM", + max = 1, + fr = "Identificateur du fichier", + ang = "File id", + ), + + Type = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "in", "out", ), + fr = "Fichier d entree ou de sortie du solveur ?", + ang = "Input or Output file ?", + ), + + Name = SIMP ( statut = "f", + typ = "TXM", + max = 1, + fr = "Nom du fichier", + ang = "File name", + ), + + Path = SIMP ( statut = "o", + typ = "TXM", + max = 1, + fr = "Chemin du fichier", + ang = "Path file ", + ), + + Subst = SIMP ( statut = "f", + typ = "TXM", + max = "**", + fr = "Liste de variables", + ang = "List", + ), + + ), # Fin FACT Files + +) # Fin PROC WRAPPER diff --git a/Openturns_Wrapper/OpenTURNS_Cata_Wrapper_V2.py b/Openturns_Wrapper/OpenTURNS_Cata_Wrapper_V2.py new file mode 100644 index 00000000..a3895d3f --- /dev/null +++ b/Openturns_Wrapper/OpenTURNS_Cata_Wrapper_V2.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- + +# -------------------------------------------------- +# debut entete +# -------------------------------------------------- + +import Accas +from Accas import * + +class variable(ASSD ) : pass + + +#CONTEXT.debug = 1 +JdC = JDC_CATA ( code = 'OPENTURNS_WRAPPER', + execmodul = None, + regles = ( AU_MOINS_UN ( 'WRAPPER' ), ), + ) # Fin JDC_CATA + +# -------------------------------------------------- +# fin entete +# -------------------------------------------------- + + +#================================ +# 2. Definition des variables +#================================ + + + +VARIABLE = OPER ( nom = "VARIABLE", + sd_prod = variable, + op = None, + fr = "Definitions des lois marginales utilisees par les variables d'entree", + + + Type = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "in", "out", ), + defaut = "in", + fr = "variable d'entree ou de sortie du solver", + ang = "Input or Output variable", + ), + + Unit = SIMP ( statut = "f", + typ = "TXM", + max = 1, + fr = "Unite", + ang = "Unit", + ), + + Comment = SIMP ( statut = "f", + typ = "TXM", + max = 1, + fr = "Commentaire", + ang = "Comment", + ), + + Regexp = SIMP ( statut = "f", + typ = "TXM", + max = 1, + fr = "Expression reguliere", + ang = "Regular expression", + ), + + Format = SIMP ( statut = "f", + typ = "TXM", + max = 1, + fr = "Format d'ecriture", + ang = "Format", + ), + + + ) # Fin FACT Variables +# + + +#================================ +# Definition des parametres du wrapper +#================================ + +# Nota : les variables de type PROC doivent etre en majuscules ! +WRAPPER = PROC ( nom = "WRAPPER", + op = None, + docu = "", + fr = "Mise en donnee pour le fichier de configuration de OPENTURNS.", + ang = "Writes the configuration file for OPENTURNS.", + + + WrapperPath = SIMP ( statut = "o", + typ = "TXM", + max = 1, + fr = "Chemin d acces au wrapper", + ang = "Wrapper library path", + ), + + FunctionName = SIMP ( statut = "o", + typ = "TXM", + max = 1, + fr = "Nom de la fonction dans le wrapper", + ang = "Function's name in wrapper", + ), + + GradientName = SIMP ( statut = "f", + typ = "TXM", + max = 1, + fr = "Nom du gradient dans le wrapper", + ang = "Gradient's name in wrapper", + ), + + HessianName = SIMP ( statut = "f", + typ = "TXM", + max = 1, + fr = "Nom du hessian dans le wrapper", + ang = "Hessian's name in wrapper", + ), + + WrapCouplingMode = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "static-link", "dynamic-link", "fork", ), + defaut = "fork", + fr = "Mode de couplage du solver", + ang = "Solver coupling mode", + ), + + Fork = BLOC ( condition = " WrapCouplingMode in ( 'fork', ) ", + + Command = SIMP ( statut = "o", + max = 1, + typ = "TXM", + fr = "Chemin du solver", + ang = "solver path", + ), + ), # Fin BLOC Fork + + State = SIMP ( statut = "f", + typ = "TXM", + max = 1, + into = ( "shared", "specific" ), + fr = "Partage de l'etat interne entre les fonctions", + ang = "Internal state sharing", + ), + + InDataTransfer = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "files", "arguments", ), + fr = "Mode de transfert des donnees d'entree", + ang = "Input transfering mode", + ), + + OutDataTransfer = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "files", "arguments", ), + fr = "Mode de transfert des donnees de sortie", + ang = "Output transfering mode", + ), + + + + + Files = FACT ( statut = "f", + min = 1, + max = "**", + + Id = SIMP ( statut = "o", + typ = "TXM", + max = 1, + fr = "Identificateur du fichier", + ang = "File id", + ), + + Type = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "in", "out", ), + fr = "Fichier d entree ou de sortie du solveur ?", + ang = "Input or Output file ?", + ), + + Name = SIMP ( statut = "f", + typ = "TXM", + max = 1, + fr = "Nom du fichier", + ang = "File name", + ), + + Path = SIMP ( statut = "o", + typ = "TXM", + max = 1, + fr = "Chemin du fichier", + ang = "Path file ", + ), + + Subst = SIMP ( statut = "f", + typ = "TXM", + max = "**", + fr = "Liste de variables", + ang = "List", + ), + + ), # Fin FACT Files + +) # Fin PROC WRAPPER diff --git a/Openturns_Wrapper/catalogues_openturns.ini b/Openturns_Wrapper/catalogues_openturns.ini new file mode 100644 index 00000000..9593c04d --- /dev/null +++ b/Openturns_Wrapper/catalogues_openturns.ini @@ -0,0 +1,12 @@ +# Choix des catalogues +import os +#rep_cata=os.path.dirname(os.path.abspath(__file__)) +rep_cata=os.getcwd() + +catalogues = ( +# (code,version,catalogue,formatIn,formatOut) + #('OPENTURNS_WRAPPER','V1',os.path.join(rep_cata,'OpenTURNS_Cata_Wrapper_V1.py'),'openturns_wrapper','wrapper'), + ('OPENTURNS_WRAPPER','V2',os.path.join(rep_cata,'OpenTURNS_Cata_Wrapper_V2.py'),'openturns_wrapper','wrapper'), + #('OPENTURNS','Wrapper',os.path.join(rep_cata,'OpenTURNS_Cata_Wrapper_V1.py'),'openturns'), +) + diff --git a/Openturns_Wrapper/configuration.py b/Openturns_Wrapper/configuration.py new file mode 100644 index 00000000..4fc3ef1a --- /dev/null +++ b/Openturns_Wrapper/configuration.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +""" + Ce module sert pour charger les paramètres de configuration d'EFICAS +""" +# Modules Python +print "passage dans la surcharge de configuration pour OTW" +import os, sys, string, types, re +import traceback +from PyQt4.QtGui import * + +# Modules Eficas +from Editeur import utils + +class CONFIG: + + #----------------------------------- + def __init__(self,appli,repIni): + #----------------------------------- + + # Classe de base permettant de lire, afficher + # et sauvegarder les fichiers utilisateurs + # On a deux directories : la directory generale (Repertoire d instal + Nom du code + # Par exemple : ~/Install_Eficas/EficasV1_14/Openturns_Wrapper + # et la directorie de l utilisateur + # HOME/.Eficas_Openturns + # Le fichier prefs.py va etre lu dans la directory generale puis surcharge eventuellement + # par celui de l utilisateur + # le fichier de catalogue va etre lu dans la directory de l utilisateur s il exite + # dans le fichier general sinon + self.appli = appli + self.code = appli.code + self.salome = appli.salome + self.repIni = repIni + self.fic_prefs ="prefs.py" + + if self.appli: + self.parent=appli.top + else: self.parent=None + + + self.labels=("OpenTURNS_path","rep_user","INSTALLDIR","path_doc","exec_acrobat","rep_cata","initialdir","savedir") + + # Valeurs par defaut + self.rep_user = os.path.join(os.environ['HOME'],'.Eficas_Openturns') + self.initialdir = self.rep_user + self.path_doc = self.rep_user + self.savedir = self.rep_user + self.exec_acrobat = self.rep_user + + #Lecture des fichiers utilisateurs + self.lecture_fichier_ini_standard() + self.lecture_fichier_ini_utilisateur() + self.lecture_catalogues() + print self.initialdir + + #-------------------------------------- + def lecture_fichier_ini_standard(self): + #-------------------------------------- + # Verifie l'existence du fichier "standard" + # appelle la lecture de ce fichier + self.fic_ini = os.path.join(self.repIni,self.fic_prefs) + if not os.path.isfile(self.fic_ini): + QMessageBox.critical( None, "Import du fichier de Configuration", + "Erreur à la lecture du fichier de configuration "+self.fic_ini+".py" ) + sys.exit(0) + import prefs + for k in self.labels : + try : + valeur=getattr(prefs,k) + setattr(self,k,valeur) + except : + pass + + + #-------------------------------------- + def lecture_fichier_ini_utilisateur(self): + #-------------------------------------- + # Surcharge les paramètres standards par les paramètres utilisateur s'ils existent + self.fic_ini_utilisateur = os.path.join(self.rep_user,self.fic_prefs) + #if not os.path.isfile(self.fic_ini_utilisateur+".py"): + if not os.path.isfile(self.fic_ini_utilisateur): + return + from utils import read_file + txt = utils.read_file(self.fic_ini_utilisateur) + from styles import style + d=locals() + try: + exec txt in d + except : + l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) + QMessageBox.critical( None, "Import du fichier de Configuration", + "Erreur à la lecture du fichier de configuration " + self.fic_ini_utilisateur ) + sys.exit(0) + for k in self.labels : + try : + setattr(self,k,d[k]) + except : + pass + + + + #-------------------------------------- + def lecture_catalogues(self): + #-------------------------------------- + rep_mat=" " # Compatbilite Aster + fic_cata ="catalogues_openturns.ini" + fic_ini = os.path.join(self.repIni,fic_cata) + fic_user= os.path.join(self.rep_user,fic_cata) + if os.path.isfile(fic_user): + fichier = fic_user + else : + fichier = fic_ini + if not os.path.isfile(fic_ini) : + QMessageBox.critical( None, "Erreur a l'import du fichier des Catalogues", + "Le fichier de configuration des catalogues "+fic_ini+" n a pas été trouvé" ) + sys.exit(0) + + from utils import read_file + txt = utils.read_file(fichier) + d=locals() + try: + exec txt in d + self.catalogues=d["catalogues"] + except : + l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) + QMessageBox.critical( None, "Import du fichier de Configuration", + "Erreur à la lecture du fichier de configuration " + fichier ) + sys.exit(0) + + + + #-------------------------------------- + def save_params(self): + #-------------------------------------- + # sauvegarde + # les nouveaux paramètres dans le fichier de configuration utilisateur + # + print "a ecrire PNPNPN" +# l_param=('exec_acrobat', 'repIni','catalogues','rep_travail','rep_mat','path_doc') +# texte="" +# for clef in l_param : +# if hasattr(self,clef): +# valeur=getattr(self,clef) +# texte= texte + clef+" = " + repr(valeur) +"\n" +# +# +# # recuperation des repertoires materiaux +# try : +# for item in self.catalogues : +# try : +# (code,version,cata,format,defaut)=item +# except : +# (code,version,cata,format)=item +# codeSansPoint=re.sub("\.","",version) +# chaine="rep_mat_"+codeSansPoint +# if hasattr(self,chaine): +# valeur=getattr(self,chaine) +# texte= texte + chaine+" = '" + str(valeur) +"'\n" +# except : +# pass +# +# f=open(self.fic_ini_utilisateur,'w+') +# f.write(texte) +# f.close() +# + + +def make_config(appli,rep): + return CONFIG(appli,rep) + +def make_config_style(appli,rep): + return None + + diff --git a/Openturns_Wrapper/prefs.py b/Openturns_Wrapper/prefs.py new file mode 100644 index 00000000..e3141852 --- /dev/null +++ b/Openturns_Wrapper/prefs.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== + +import os, sys +# Les variables pouvant positionnees sont : +# "CODE_PATH_SURCHARGE","OpenTURNS_path","rep_user","INSTALLDIR","path_doc","exec_acrobat","rep_cata" +print "import des prefs de OPENTURNS_WRAPPER" + +code = "OPENTURNS_WRAPPER" + +# REPINI sert à localiser le fichier +# initialdir sert comme directory initial des QFileDialog +# positionnee a repin au debut mise a jour dans configuration +REPINI=os.path.dirname(os.path.abspath(__file__)) +initialdir=REPINI + +# INSTALLDIR sert à localiser l'installation d'Eficas +INSTALLDIR=os.path.join(REPINI,'..') + + +# Codage des strings qui accepte les accents (en remplacement de 'ascii') +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +lang='fr' +encoding='iso-8859-1' + +# Acces a la documentation +rep_cata = INSTALLDIR +path_doc = os.path.join(rep_cata,'Doc') +exec_acrobat = "/usr/bin/xpdf" + +# OpenTURNS Python module +OpenTURNS_path="/opt/OpenTURNS/install/lib/python2.4/site-packages" + +# Choix des catalogues +sys.path[:0]=[INSTALLDIR] +sys.path.append( OpenTURNS_path ) + + diff --git a/Openturns_Wrapper/properties.py b/Openturns_Wrapper/properties.py new file mode 100644 index 00000000..8ba0ed7e --- /dev/null +++ b/Openturns_Wrapper/properties.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +#@ MODIF properties Accas DATE 10/10/2002 AUTEUR gcbhhhh M.ADMINISTRATEUR +# CONFIGURATION MANAGEMENT OF EDF VERSION +# RESPONSABLE D6BHHHH J-P.LEFEBVRE +# ====================================================================== +# 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. +# ====================================================================== +# IDENTIFICATION DU GESTIONNAIRE DE COMMANDE ACCAS A PARTIR +# DE LA VERSION DU CODE_ASTER ASSOCIE +#---------------------------------------------------------------------- +version = "7.1.0" +date = "23/04/2003" diff --git a/Openturns_Wrapper/qtEficas_openturns_wrapper.py b/Openturns_Wrapper/qtEficas_openturns_wrapper.py new file mode 100755 index 00000000..8da18067 --- /dev/null +++ b/Openturns_Wrapper/qtEficas_openturns_wrapper.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== + +""" + Ce module sert à lancer EFICAS configuré pour Openturns +""" +# Modules Python + +# Modules Eficas +import prefs +prefs.code="OPENTURNS_WRAPPER" +from InterfaceQT4 import eficas_go + +eficas_go.lance_eficas(code=prefs.code) diff --git a/Openturns_Wrapper/sdistOTqt.py b/Openturns_Wrapper/sdistOTqt.py new file mode 100644 index 00000000..acf75c26 --- /dev/null +++ b/Openturns_Wrapper/sdistOTqt.py @@ -0,0 +1,103 @@ +# -*- coding: utf-8 -*- +""" + Ce module sert à construire les distributions d'EFICAS pour Openturns + en fonction du tag CVS courant + Les distributions sont : + - un tar.gz pour UNIX ne contenant pas mxTextTools + L'utilisation de ce module est la suivante : + 1- Se mettre dans un répertoire de travail + 2- Configurer son environnement pour utiliser le référentiel CVS EFICAS + 3- Exporter les sources d'EficasV1 par la commande : + cvs export -r TAG -d Eficas_export EficasV1 + ou TAG est le tag CVS de la version que l'on veut distribuer (par exemple V1_1p1) + 5- Aller dans le répertoire Eficas_export + 6- Executer le script sdist.py + python sdist.py + Ce qui a pour effet de creer un repertoire dist contenant la distribution + et de la copier dans le répertoire indiqué par dir_download s'il est accessible + +""" +import os,shutil,glob,sys +import types + +nom_distrib="QTEficasOpenturns_V1_0" +path_distrib=os.path.join("dist",nom_distrib) +path_TextTools="/home/eficas/pkg/mxTools/egenix2.0.2pourWindows/mx/TextTools" +dir_download= "/home/eficas/WWW/telechargement/eficas" + +def main(): + if os.path.isdir('dist'):shutil.rmtree('dist') + + copyfiles('.',path_distrib,['LICENSE.TERMS','INSTALL','NEWS']) + + copyfiles('../Editeur',os.path.join(path_distrib,'Editeur'),['*.py','faqs.txt']) + copyfiles('../InterfaceTK',os.path.join(path_distrib,'InterfaceTK'),['*.py','faqs.txt']) + copyfiles('../InterfaceQT',os.path.join(path_distrib,'InterfaceQT'),['*.py','faqs.txt']) + copyfiles('../Ui',os.path.join(path_distrib,'Ui'),['*.ui','makefile']) + copyfiles('../Openturns',os.path.join(path_distrib,'Openturns'),['*.py','*.ini']) + copyfiles('../Ihm',os.path.join(path_distrib,'Ihm'),['*.py']) + copyfiles('../Extensions',os.path.join(path_distrib,'Extensions'),['*.py']) + copyfiles('../Misc',os.path.join(path_distrib,'Misc'),['*.py']) + copyfiles('../Accas',os.path.join(path_distrib,'Accas'),['*.py']) + copyfiles('../Accas',os.path.join(path_distrib,'Noyau'),['*.py']) + copyfiles('../Accas',os.path.join(path_distrib,'Validation'),['*.py']) + # AIDE + copyfiles('../AIDE',os.path.join(path_distrib,'AIDE'),['*.py']) + copyfiles('../AIDE/fichiers',os.path.join(path_distrib,'AIDE','fichiers'),['*']) + copyfiles('.',os.path.join(path_distrib,'AIDE','fichiers'),['INSTALL','NEWS']) + copyfiles('../Editeur',os.path.join(path_distrib,'AIDE','fichiers'),['faqs.txt']) + # ______________________ + + copyfiles('../convert',os.path.join(path_distrib,'convert'),['*.py']) + copyfiles('../convert/Parserv5',os.path.join(path_distrib,'convert','Parserv5'),['*.py']) + copyfiles('../generator',os.path.join(path_distrib,'generator'),['*.py']) + copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.gif']) + copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.png']) + copyfiles('../Editeur/Patrons/',os.path.join(path_distrib,'Editeur','Patrons'),['*.com*']) + copyfiles('../Editeur/Patrons/OPENTURNS',os.path.join(path_distrib,'Editeur','Patrons','OPENTURNS'),['*.com*']) + + copyfiles('../Noyau',os.path.join(path_distrib,'Noyau'),['*.py']) + copyfiles('../Validation',os.path.join(path_distrib,'Validation'),['*.py']) + + + tarball= maketarball('dist',nom_distrib,nom_distrib) + try: + shutil.copy(tarball,dir_download) + except: + print "Repertoire de download inconnu : ",dir_download + + + +def make_dir(dir_cible): + if type(dir_cible) is not types.StringType: + raise "make_dir : dir_cible doit etre une string (%s)" % `dir_cible` + head,tail=os.path.split(dir_cible) + tails=[tail] + while head and tail and not os.path.isdir(head): + head,tail=os.path.split(head) + tails.insert(0, tail) + + for d in tails: + head = os.path.join(head, d) + if not os.path.isdir(head):os.mkdir(head) + + +def copyfiles(dir_origin,dir_cible,listfiles): + if not os.path.isdir(dir_cible):make_dir(dir_cible) + for glob_files in listfiles: + for file in glob.glob(os.path.join(dir_origin,glob_files)): + shutil.copy(file,dir_cible) + + +def maketarball(dir_trav,dir_cible,nom_tar): + prev=os.getcwd() + print prev + os.chdir(dir_trav) + os.system("tar -cf "+nom_tar+".tar "+dir_cible) + os.system("gzip -f9 "+nom_tar+".tar ") + os.chdir(prev) + return os.path.join(dir_trav,nom_tar+".tar.gz") + + +main() + diff --git a/Openturns_Wrapper/style.py b/Openturns_Wrapper/style.py new file mode 100644 index 00000000..7da9d534 --- /dev/null +++ b/Openturns_Wrapper/style.py @@ -0,0 +1 @@ +# Necessaire pour compatibilite avec Aster diff --git a/Tests/README b/Tests/README index ae0b62f6..3b28d765 100644 --- a/Tests/README +++ b/Tests/README @@ -16,3 +16,22 @@ des limites actuelles d'Accas. Certains tests doivent etre exécutés séparément à cause d'un problème d'import de catalogue. En particulier, les tests d'ihm (testihm*.py) entrent dans cette catégorie. + +Par ordre de complexité : + + - testelem7 + - testelem + + - testcomm7 + - testcomm9 + - testcomm + + - testastest + - testastest9 + + - testihm9 + - testihm + - testihm7 + +Les tests suffixés 7 ou 9 sont spécifiques d'une version d'ASTER + diff --git a/Tests/prefs.py b/Tests/prefs.py index 28a5c8ed..7f943db9 100644 --- a/Tests/prefs.py +++ b/Tests/prefs.py @@ -24,6 +24,7 @@ import os,sys # REPINI sert à localiser le fichier editeur.ini # Obligatoire REPINI=os.path.dirname(os.path.abspath(__file__)) +repIni=REPINI # INSTALLDIR sert à localiser l'installation d'Eficas # Obligatoire @@ -34,29 +35,47 @@ INSTALLDIR=os.path.join(REPINI,'..') # Par défaut on utilise les modules de INSTALLDIR # Peut valoir None (defaut) CODE_PATH = None -#CODE_PATH = os.path.join(REPINI,'../../Superv') # la variable code donne le nom du code a selectionner code="ASTER" -# ICONDIR sert à localiser le répertoire contenant les icones -# Par défaut on utilise le répertoire icons dans Editeur -ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') - # lang indique la langue utilisée pour les chaines d'aide : fr ou ang lang='fr' # Codage des strings qui accepte les accents (en remplacement de 'ascii') encoding='iso-8859-1' + +EditeurDir=INSTALLDIR+"/Editeur" +sys.path[:0]=[INSTALLDIR] +sys.path[:0]=[INSTALLDIR+"/Aster"] + +ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') + +# Preference +if os.name == 'nt': + userprefs = os.sep.join( [ os.environ['HOMEDRIVE'], os.environ['HOMEPATH'], 'Eficas_install', 'prefs.py' ]) +else : + userprefs=os.path.expanduser("~/.Eficas_install/prefs.py") + +if os.path.isfile(userprefs): + try: + execfile(userprefs) + except: + pass + + +#------------------------------------------------------------------- +# Partie pour TK +#------------------------------------------------------------------- + labels= ('Fichier','Edition','Jeu de commandes', -# 'Catalogue','Browsers', 'Options', 'Aide', + 'Traduction', ) appli_composants=['readercata','bureau', -# 'browser', 'options', ] @@ -84,21 +103,14 @@ menu_defs={ 'bureau': [ #('Paramètres Eficas','affichage_fichier_ini'), ] ), + ('Traduction',[ + ('Traduction v7 en v8','TraduitFichier7'), + ('Traduction v8 en v9','TraduitFichier8','','Ctrl+T'), + ] + ), ('Aide',[ ('Aide EFICAS','aideEFICAS','','Ctrl+A'), ] ), ] } - -if os.name == 'nt': - userprefs = os.sep.join( [ os.environ['HOMEDRIVE'], os.environ['HOMEPATH'], 'Eficas_install', 'prefs.py' ]) -else : - userprefs=os.path.expanduser("~/Eficas_install/prefs.py") -if os.path.isfile(userprefs): - try: - execfile(userprefs) - except: - pass - -sys.path[:0]=[INSTALLDIR] diff --git a/Tests/testcomm9/efica01a.com0 b/Tests/testcomm9/efica01a.com0 index 34a71cc8..35fe5404 100755 --- a/Tests/testcomm9/efica01a.com0 +++ b/Tests/testcomm9/efica01a.com0 @@ -39,7 +39,7 @@ TRAN_GE2=DYNA_TRAN_MODAL( MASS_GENE=MGEN_BIC, RIGI_GENE=RGEN_BIC, LISTIMP=DEFI_LIST_REEL( DEBUT=0., INTERVALLE=_F( JUSQU_A = 1., NOMBRE = 500)) -RESUA1=REST_BASE_PHYS( RESU_GENE=TRAN_GE1, +RESUA1=REST_GENE_PHYS( RESU_GENE=TRAN_GE1, LIST_INST=LISTIMP, INTERPOL='LIN', NOM_CHAM='DEPL', diff --git a/Tests/testcomm9/forma12c.comm b/Tests/testcomm9/forma12c.comm index af7db1de..5e74e201 100755 --- a/Tests/testcomm9/forma12c.comm +++ b/Tests/testcomm9/forma12c.comm @@ -349,7 +349,7 @@ GSCR=DYNA_TRAN_MODAL( #-------------------------------------------------------------- # RESTITUTION GLOBALE DU CHAMP DE DEPLACEMENT RELATIF A CHAQUE INSTANT # DE LA LISTE L_RECU -RGSCR=REST_BASE_PHYS( +RGSCR=REST_GENE_PHYS( RESU_GENE=GSCR, INTERPOL='LIN', LIST_INST=L_RECU, @@ -533,7 +533,7 @@ GSCA=DYNA_TRAN_MODAL( # RESTITUTION GRANDEURS ABSOLUES #------------------------------- -RGSCA=REST_BASE_PHYS( +RGSCA=REST_GENE_PHYS( RESU_GENE=GSCA, INTERPOL='LIN', LIST_INST=L_RECU, @@ -612,7 +612,7 @@ IMPR_TABLE( # DEPLACEMENTS -RGSCR2=REST_BASE_PHYS( +RGSCR2=REST_GENE_PHYS( RESU_GENE=GSCA, INTERPOL='LIN', LIST_INST=L_RECU, diff --git a/Tests/testelem/testvalidator1.py b/Tests/testelem/testvalidator1.py index 80a2881f..da260a84 100644 --- a/Tests/testelem/testvalidator1.py +++ b/Tests/testelem/testvalidator1.py @@ -207,7 +207,7 @@ class TestValidCase(unittest.TestCase): def test016(self): """Test du validateur ET : pas de doublon ET valeur paire """ cata=SIMP(statut='o',typ='I',min=1,max=6,validators=[NoRepeat(),PairVal()]) - liste=( ((2,),1),(None,0),((1,3,5),0), + liste=( (2,1),(None,0),((1,3,5),0), ((2,4,6),1), ((1,3,5),0), ((2,4,4),0), diff --git a/Tests/testelem/testvalidator2.py b/Tests/testelem/testvalidator2.py index e9b06022..f78f8433 100644 --- a/Tests/testelem/testvalidator2.py +++ b/Tests/testelem/testvalidator2.py @@ -72,10 +72,10 @@ Fin Mot-cl (("aaaa","aaaaa","axyzaa","bbbbaaa","zzz"),OK), (("aaaa","aaaa","axyz","bbbb","zzz"), """Mot-clé simple : mcs - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! Mot-clé mcs invalide : aaaa est un doublon ! - ! Critere de validite: pas de présence de doublon dans la liste ! - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! Mot-clé mcs invalide : aaaa est un doublon ! + ! Critere de validite: : pas de présence de doublon dans la liste ! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fin Mot-clé simple : mcs """), (("aaaa","axyz","bbbb","zzz"),OK), @@ -84,19 +84,19 @@ Fin Mot-cl (("aaa",Variable('x',"bbb")),OK), (("aaa",Variable('x',"aaa")), """Mot-clé simple : mcs - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! Mot-clé mcs invalide : aaa est un doublon ! - ! Critere de validite: pas de présence de doublon dans la liste ! - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! Mot-clé mcs invalide : aaa est un doublon ! + ! Critere de validite: : pas de présence de doublon dans la liste ! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fin Mot-clé simple : mcs """), (Variable('x',("aaa","bbb")),OK), (Variable('x',("aaa","bbb","bbb")), """Mot-clé simple : mcs - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! Mot-clé mcs invalide : bbb est un doublon ! - ! Critere de validite: pas de présence de doublon dans la liste ! - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! Mot-clé mcs invalide : bbb est un doublon ! + ! Critere de validite: : pas de présence de doublon dans la liste ! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fin Mot-clé simple : mcs """), ) @@ -109,10 +109,10 @@ Fin Mot-cl (("TUTU","TATA","CCCC"),OK), (("TUTU","TATA","CCCC","TUTU","TATA","CCCC"), """Mot-clé simple : mcs - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! Mot-clé mcs invalide : TUTU est un doublon ! - ! Critere de validite: pas de présence de doublon dans la liste ! - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! Mot-clé mcs invalide : TUTU est un doublon ! + ! Critere de validite: : pas de présence de doublon dans la liste ! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fin Mot-clé simple : mcs """), (("TUTU","TATA","CCCC","TUTU","TATA","CCCC","TUTU","TATA","CCCC"), @@ -142,7 +142,7 @@ Fin Mot-cl """Mot-clé simple : mcs !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Mot-clé mcs invalide : (1, 3, 5) contient des valeurs non paires ! - ! Critere de validite: pas de présence de doublon dans la liste ! + ! Critere de validite: : pas de présence de doublon dans la liste ! ! et valeur paire ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fin Mot-clé simple : mcs @@ -150,11 +150,11 @@ Fin Mot-cl ((2,4,6),OK), ((2,4,4), """Mot-clé simple : mcs - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! Mot-clé mcs invalide : 4 est un doublon ! - ! Critere de validite: pas de présence de doublon dans la liste ! - ! et valeur paire ! - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! Mot-clé mcs invalide : 4 est un doublon ! + ! Critere de validite: : pas de présence de doublon dans la liste ! + ! et valeur paire ! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fin Mot-clé simple : mcs """), ) @@ -170,10 +170,10 @@ Fin Mot-cl ((i,1,i,i),OK), ((1,1,i,i), """Mot-clé simple : mcs - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! Mot-clé mcs invalide : 1 est un doublon ! - ! Critere de validite: pas de présence de doublon dans la liste ! - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! Mot-clé mcs invalide : 1 est un doublon ! + ! Critere de validite: : pas de présence de doublon dans la liste ! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fin Mot-clé simple : mcs """ ), ) @@ -241,7 +241,7 @@ Fin Mot-cl !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Mot-clé mcs invalide : (, 5, 7, ) ne contient ! ! pas les elements obligatoires : [6] ! - ! Critere de validite: pas de présence de doublon dans la liste ! + ! Critere de validite: : pas de présence de doublon dans la liste ! ! et valeur (5, 6, 7) obligatoire ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fin Mot-clé simple : mcs @@ -293,7 +293,7 @@ Fin Mot-cl ! pas les elements obligatoires : [6] ! ! Critere de validite: valeur (5, 6, 7) obligatoire ! ! et liste croissant ! - ! et pas de présence de doublon dans la liste ! + ! et : pas de présence de doublon dans la liste ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fin Mot-clé simple : mcs """ ), @@ -304,7 +304,7 @@ Fin Mot-cl ! par valeurs croissantes ! ! Critere de validite: valeur (5, 6, 7) obligatoire ! ! et liste croissant ! - ! et pas de présence de doublon dans la liste ! + ! et : pas de présence de doublon dans la liste ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fin Mot-clé simple : mcs """ ), @@ -314,7 +314,7 @@ Fin Mot-cl ! Mot-clé mcs invalide : 7 est un doublon ! ! Critere de validite: valeur (5, 6, 7) obligatoire ! ! et liste croissant ! - ! et pas de présence de doublon dans la liste ! + ! et : pas de présence de doublon dans la liste ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fin Mot-clé simple : mcs """ ), diff --git a/Traducteur/dictErreurs.py b/Traducteur/dictErreurs.py index f6d1d0c7..a66aa137 100644 --- a/Traducteur/dictErreurs.py +++ b/Traducteur/dictErreurs.py @@ -65,6 +65,7 @@ dict_erreurs={ "IMPR_FICO_HOMARD":"IMPR_FICO_HOMARD a ete integre dans MACR_ADPA_MAIL", # STA9.2 "POST_RCCM_SITUATION_NUME_PASSAGE":"Utilisation de NUME_PASSAGE pour le type TUYAUTERIE impossible en 9.2. On ne traite pour le moment que les chemins de passage simples.", + "POST_RCCM_SITUATION_NB_CYCL_SEISME":"POST_RCCM : maintenant les SITUATIONS sismiques ont leur propre mot clef facteur SEISME, attention, traduction incomplete", "DEFI_MATERIAU_BAZANT_FD" : "le materiau BAZANT_FD a ete supprime", "DEFI_MATERIAU_APPUI_ELAS" : "le materiau APPUI_ELAS a ete supprime", "DEFI_MATERIAU_PORO_JOINT" : "le materiau PORO_JOINT a ete supprime", @@ -75,6 +76,9 @@ dict_erreurs={ "CALC_G_OPTION=G_LAGR" : "l'OPTION G_LAGR de CALC_G a ete supprimee", "CALC_G_OPTION=G_LAGR_GLOB" : "l'OPTION G_LAGR_GLOB de CALC_G a ete supprimee", "CALC_MATR_ELEM_THETA" : "l'OPTION RIGI_MECA_LAGR de CALC_MATR_ELEM a ete supprimee", + "TEST_FICHIER_NB_CHIFFRE" : "le fonctionnement de TEST_FICHIER a change entre la V8 et la V9, consultez la doc, en particulier pour entrer la bonne valeur de NB_VALE", + "DYNA_NON_LINE_PILOTAGE" : "le PILOTAGE n'est pas actif dans DYNA_NON_LINE ", + "DYNA_NON_LINE_RECH_LINEAIRE" : "la RECH_LINEAIRE n'est pas active dans DYNA_NON_LINE ", } def EcritErreur(listeGena,ligne=None) : diff --git a/Traducteur/regles.py b/Traducteur/regles.py index 9cddcfda..d07c7b9c 100644 --- a/Traducteur/regles.py +++ b/Traducteur/regles.py @@ -113,6 +113,27 @@ class existe : if bool == None : bool = 0 return bool +#------------- +class nexistepas : +#-------------- + def __init__(self,list_arg): + self.genea=list_arg + + def cherche_mot(self,niveau,commande): + if commande == None : return 0 + if niveau == len(self.genea) : return 1 + texte=self.genea[niveau] + for c in commande.childNodes : + if c.name == texte : + niveau = niveau+1 + return self.cherche_mot(niveau,c) + return None + + def verif(self,commande): + bool=self.cherche_mot(0,commande) + if bool : return 0 + return 1 + #------------------------------- class MCsousMCFaPourValeur : #------------------------------ @@ -156,5 +177,5 @@ class MCaPourValeur : bool=1 return bool -dictionnaire_regle={"existe":existe,"existeMCFParmi":existeMCFParmi,"existeMCsousMCF":existeMCsousMCF,"nexistepasMCsousMCF":nexistepasMCsousMCF,"MCsousMCFaPourValeur":MCsousMCFaPourValeur,"MCaPourValeur":MCaPourValeur} +dictionnaire_regle={"existe":existe,"nexistepas":nexistepas,"existeMCFParmi":existeMCFParmi,"existeMCsousMCF":existeMCsousMCF,"nexistepasMCsousMCF":nexistepasMCsousMCF,"MCsousMCFaPourValeur":MCsousMCFaPourValeur,"MCaPourValeur":MCaPourValeur} SansRegle=pasDeRegle() diff --git a/Traducteur/traduitV8V9.py b/Traducteur/traduitV8V9.py index 80d2ede4..13647f1e 100644 --- a/Traducteur/traduitV8V9.py +++ b/Traducteur/traduitV8V9.py @@ -23,7 +23,7 @@ from dictErreurs import GenereErreurPourCommande import calcG -atraiter=( "DEFI_MAILLAGE","CALC_VECT_ELEM","DYNA_NON_LINE","STAT_NON_LINE","FACT_LDLT","FACT_GRAD","RESO_LDLT","RESO_GRAD","DYNA_TRAN_MODAL","NORM_MODE","MACRO_MODE_MECA","POST_RCCM","THER_NON_LINE","THER_LINEAIRE","THER_NON_LINE_MO","DEFI_CABLE_BP","GENE_VARI_ALEA","DEFI_MATERIAU","IMPR_MATRICE","CALC_G","CALC_MATR_ELEM") +atraiter=( "DEFI_MAILLAGE","CALC_VECT_ELEM","DYNA_TRAN_EXPLI","DYNA_NON_LINE","STAT_NON_LINE","FACT_LDLT","FACT_GRAD","RESO_LDLT","RESO_GRAD","DYNA_TRAN_MODAL","NORM_MODE","MACRO_MODE_MECA","POST_RCCM","THER_NON_LINE","THER_LINEAIRE","THER_NON_LINE_MO","DEFI_CABLE_BP","GENE_VARI_ALEA","DEFI_MATERIAU","IMPR_MATRICE","CALC_G","CALC_MATR_ELEM","MACR_ADAP_MAIL","MACR_INFO_MAIL","REST_BASE_PHYS","COMB_SISM_MODAL","TEST_FICHIER","MACR_ELEM_DYNA","CREA_CHAMP","AFFE_CHAR_MECA","AFE_CHAR_MECA_F") def traduc(infile,outfile,flog=None): @@ -35,7 +35,7 @@ def traduc(infile,outfile,flog=None): parseKeywords(root) ####################### traitement erreurs ######################## - GenereErreurPourCommande(jdc,("POST_RCCM")) + GenereErreurPourCommande(jdc,("POST_RCCM","DEFI_MATERIAU","TEST_FICHIER","DYNA_NON_LINE")) ####################### traitement Sous-Structuration ####################### renameMotCleInFact(jdc,"DEFI_MAILLAGE","DEFI_SUPER_MAILLE","MACR_ELEM_STAT","MACR_ELEM") @@ -44,6 +44,10 @@ def traduc(infile,outfile,flog=None): renameMotCleInFact(jdc,"CALC_VECT_ELEM","SOUS_STRUC","MAILLE","SUPER_MAILLE") ######################################################################### + ####################### traitement MACR_ELEM_DYNA ####################### + removeMotCle(jdc,"MACR_ELEM_DYNA","OPTION") + ######################################################################### + ####################### traitement Resolution lineaire ###################### renameMotCle(jdc,"RESO_LDLT","MATR_FACT","MATR") renameMotCle(jdc,"RESO_GRAD","MATR_ASSE","MATR") @@ -58,13 +62,21 @@ def traduc(infile,outfile,flog=None): removeMotCle(jdc,"DYNA_TRAN_MODAL","NB_MODE_DIAG") ######################################################################### - ####################### traitement MASS_INER dans NORM_MODE ########## - removeMotCle(jdc,"NORM_MODE","MASSE_INER") - removeMotCleInFact(jdc,"MACRO_MODE_MECA","NORM_MODE","MASSE_INER") + ############# traitement MASS_INER dans NORM_MODE/MACRO_MODE_MECA ########## + removeMotCle(jdc,"NORM_MODE","MASS_INER") + removeMotCleInFact(jdc,"MACRO_MODE_MECA","NORM_MODE","MASS_INER") ######################################################################### ####################### traitement POST_RCCM ############################ removeMotCleInFactSiRegleAvecErreur(jdc,"POST_RCCM","SITUATION","NUME_PASSAGE",((("TYPE_RESU_MECA","TUYAUTERIE",jdc),"MCaPourValeur"),)) + chercheOperInsereFacteurSiRegle(jdc,"POST_RCCM","SEISME", ((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),)) + moveMotCleFromFactToFact(jdc,"POST_RCCM","SITUATION","NB_CYCL_SEISME","SEISME") +# AjouteMotClefDansFacteurSiRegle(jdc,"POST_RCCM","SITUATION", "transferez_au_bloc_SEISME_CHAR_ETAT_NB_OCCUR,NUME_SITU,NUME_GROUP_et_eventuellement_NOM_SITU_et_NUME_RESU_THER",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),)) + AjouteMotClefDansFacteurSiRegle(jdc,"POST_RCCM","SITUATION","supprimez_a_la_main_ce_bloc",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),)) +# removeMotCleInFactSiRegleAvecErreur(jdc,"POST_RCCM","SITUATION","NB_CYCL_SEISME",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),)) + removeMotCleInFactSiRegle(jdc,"POST_RCCM","SITUATION","NB_CYCL_SEISME",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),)) + removeMotCleInFact(jdc,"POST_RCCM","CHAR_MECA","TYPE_CHAR",) + removeMotCleInFact(jdc,"POST_RCCM","RESU_MECA","TYPE_CHAR",) ######################################################################### ####################### traitement THER_NON_LINE ############################ @@ -100,6 +112,33 @@ def traduc(infile,outfile,flog=None): removeMotCleAvecErreur(jdc,"DEFI_MATERIAU","APPUI_ELAS") removeMotCleAvecErreur(jdc,"DEFI_MATERIAU","ZIRC_EPRI") removeMotCleAvecErreur(jdc,"DEFI_MATERIAU","ZIRC_CYRA2") + # BARCELONE + moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","MU","BARCELONE") + moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","PORO","BARCELONE") + moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","LAMBDA","BARCELONE") + moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","KAPPA","BARCELONE") + moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","M","BARCELONE") + moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","PRES_CRIT","BARCELONE") + moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","PA","BARCELONE") + renameMotCleInFact(jdc,"DEFI_MATERIAU","CAM_CLAY","PA","KCAM") + # CAM_CLAY + AjouteMotClefDansFacteur(jdc,"DEFI_MATERIAU","CAM_CLAY","MU=xxx",) + AjouteMotClefDansFacteurSiRegle(jdc,"DEFI_MATERIAU","CAM_CLAY","PTRAC=XXX",((("CAM_CLAY","KCAM"),"existeMCsousMCF"),)) + # VENDOCHAB + renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","S_VP","S") + renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","N_VP","N") + renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","M_VP","UN_SUR_M", erreur=1) + renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","K_VP","UN_SUR_K") + renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","SEDVP1","ALPHA_D") + renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","SEDVP2","BETA_D") + renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB_FO","S_VP","S") + renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB_FO","N_VP","N") + renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB_FO","M_VP","UN_SUR_M", erreur=1) + renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB_FO","K_VP","UN_SUR_K") + renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB_FO","SEDVP1","ALPHA_D") + renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB_FO","SEDVP2","BETA_D") + # GLRC + renameCommandeSiRegle(jdc,"DEFI_MATERIAU","DEFI_GLRC", ((("GLRC_DAMAGE","GLRC_ACIER",),"existeMCFParmi"),)) ######################################################################### ####################### traitement IMPR_MATRICE ###################### @@ -107,6 +146,17 @@ def traduc(infile,outfile,flog=None): removeCommandeSiRegleAvecErreur(jdc,"IMPR_MATRICE",((("MATR_ASSE","FORMAT","RESULTAT",jdc),"MCsousMCFaPourValeur"),)) ######################################################################### + ####################### traitement MACR_ADAP/INFO_MAIL ###################### + dadap_mail={"V8_11":"V9_5", "V8_N":"V9_N", "V8_N_PERSO":"V9_N_PERSO"} + ChangementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",dadap_mail) + ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",dadap_mail) + ######################################################################### + + ####################### traitement REST_BASE_PHYS ###################### + renameCommandeSiRegle(jdc,"REST_BASE_PHYS","REST_SOUS_STRUC", ((("RESULTAT","SQUELETTE","SOUS_STRUC","BASE_MODALE","CYCLIQUE","SECTEUR"),"existeMCFParmi"),)) + renameCommandeSiRegle(jdc,"REST_BASE_PHYS","REST_COND_TRAN", ((("MACR_ELEM_DYNA","RESU_PHYS"),"existeMCFParmi"),)) + renameCommande(jdc,"REST_BASE_PHYS","REST_GENE_PHYS", ) + ######################################################################### ####################### traitement CALC_G ###################### removeMotCleSiRegleAvecErreur(jdc,"CALC_G","OPTION",((("OPTION","G_LAGR",jdc),"MCaPourValeur"),)) @@ -116,12 +166,58 @@ def traduc(infile,outfile,flog=None): removeMotCle(jdc,"CALC_G","DIRE_THETA_LAGR") ######################################################################### + ####################### traitement COMB_SISM_MODAL ###################### + AjouteMotClefDansFacteurSiRegle(jdc,"COMB_SISM_MODAL","EXCIT","MULTI_APPUI='DECORRELE'", ((("EXCIT","MONO_APPUI"),"nexistepasMCsousMCF"),)) + ######################################################################### + + ####################### traitement TEST_FICHIER ###################### + renameMotCleAvecErreur(jdc,"TEST_FICHIER","NB_CHIFFRE","NB_VALE") + removeMotCle(jdc,"TEST_FICHIER","EPSILON") + ######################################################################### + ####################### traitement CALC_MATR_ELEM ###################### removeMotCleSiRegle(jdc,"CALC_MATR_ELEM","OPTION",((("OPTION","RIGI_MECA_LAGR",jdc),"MCaPourValeur"),)) removeMotCleAvecErreur(jdc,"CALC_MATR_ELEM","PROPAGATION") removeMotCle(jdc,"CALC_MATR_ELEM","THETA") ######################################################################### + ####################### traitement ITER_INTE_PAS ###################### + removeMotCleInFactSiRegle(jdc,"STAT_NON_LINE","COMP_INCR","ITER_INTE_PAS",((("COMP_INCR","DEFORMATION","SIMO_MIEHE",jdc),"MCsousMCFaPourValeur"),)) + removeMotCleInFactSiRegle(jdc,"DYNA_NON_LINE","COMP_INCR","ITER_INTE_PAS",((("COMP_INCR","DEFORMATION","SIMO_MIEHE",jdc),"MCsousMCFaPourValeur"),)) + ######################################################################### + + ################## traitement RECH_LINEAIRE et PILOTAGE dans DYNA_NON_LINE ################# + removeMotCleAvecErreur(jdc,"DYNA_NON_LINE","RECH_LINEAIRE") + removeMotCleAvecErreur(jdc,"DYNA_NON_LINE","PILOTAGE") + ######################################################################### + + ####################### traitement DYNA_TRAN_EXPLI ###################### + renameOper(jdc,"DYNA_TRAN_EXPLI","DYNA_NON_LINE") + AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","TCHAMWA","FORMULATION='ACCELERATION'") + AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","DIFF_CENT","FORMULATION='ACCELERATION'") + ######################################################################### + + ####################### traitement SCHEMA_TEMPS dans DYNA_NON_LINE ###################### + AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","NEWMARK","FORMULATION='DEPLACEMENT'") + AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","HHT","FORMULATION='DEPLACEMENT'") + AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","TETA_METHODE","FORMULATION='DEPLACEMENT'") + renameMotCleInFact(jdc,"DYNA_NON_LINE","NEWMARK","ALPHA","BETA",) + renameMotCleInFact(jdc,"DYNA_NON_LINE","NEWMARK","DELTA","GAMMA",) + renameMotCleInFact(jdc,"DYNA_NON_LINE","TETA_METHODE","TETA","THETA",) + AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","NEWMARK","SCHEMA='NEWMARK'",((("NEWMARK",),"existeMCFParmi"),)) + AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","TETA_METHODE","SCHEMA='THETA_METHODE'",((("TETA_METHODE",),"existeMCFParmi"),)) + AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","HHT","SCHEMA='HHT'",((("HHT",),"existeMCFParmi"),)) + AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","TCHAMWA","SCHEMA='TCHAMWA'",((("TCHAMWA",),"existeMCFParmi"),)) + AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","DIFF_CENT","SCHEMA='DIFF_CENT'",((("DIFF_CENT",),"existeMCFParmi"),)) + renameMotCle(jdc,"DYNA_NON_LINE","NEWMARK","SCHEMA_TEMPS") + renameMotCle(jdc,"DYNA_NON_LINE","TETA_METHODE","SCHEMA_TEMPS") + renameMotCle(jdc,"DYNA_NON_LINE","HHT","SCHEMA_TEMPS") + renameMotCle(jdc,"DYNA_NON_LINE","DIFF_CENT","SCHEMA_TEMPS") + renameMotCle(jdc,"DYNA_NON_LINE","TCHAMWA","SCHEMA_TEMPS") + removeMotCleInFact(jdc,"DYNA_NON_LINE","INCREMENT","EVOLUTION") + moveMotClefInOperToFact(jdc,"DYNA_NON_LINE","STOP_CFL","SCHEMA_TEMPS") + ######################################################################### + ####################### traitement CONTACT ###################### removeMotCleInFact(jdc,"DEFI_MATERIAU","DIS_CONTACT","KT_ULTM") removeMotCleInFact(jdc,"DEFI_MATERIAU","DIS_CONTACT","EFFO_N_INIT") @@ -146,19 +242,19 @@ def traduc(infile,outfile,flog=None): ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dGrilles) ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dGrilles) + renameCommandeSiRegle(jdc,"AFFE_CHAR_MECA_F","AFFE_CHAR_MECA",((("CONTACT",),"existeMCFParmi"),)) removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","RECHERCHE") + removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","PROJECTION") removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","VECT_Y") removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","VECT_ORIE_POU") + removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","MODL_AXIS") + dAppariement={"MAIT_ESCL_SYME":"MAIT_ESCL"} + ChangementValeurDsMCF(jdc,"AFFE_CHAR_MECA","CONTACT","APPARIEMENT",dAppariement) - renameCommandeSiRegle(jdc,"AFFE_CHAR_MECA_F","AFFE_CHAR_MECA",((("CONTACT",),"existeMCFParmi"),)) - ######################################################################### - - ####################### traitement CAM_CLAY ###################### - AjouteMotClefDansFacteur(jdc,"DEFI_MATERIAU","CAM_CLAY","MU=xxx",) ######################################################################### - ####################### traitement GLRC ###################### - renameCommandeSiRegle(jdc,"DEFI_MATERIAU","DEFI_GLRC", ((("GLRC_DAMAGE","GLRC_ACIER",),"existeMCFParmi"),)) + ####################### traitement CREA_CHAMP ###################### + chercheOperInsereFacteurSiRegle(jdc,"CREA_CHAMP","PRECISION=1.E-3,", ((("PRECISION",),"nexistepas"),(("CRITERE",),"existe"),),0) ######################################################################### f=open(outfile,'w') diff --git a/Ui/OptionsEditeur.py b/Ui/OptionsEditeur.py deleted file mode 100644 index f828bdfc..00000000 --- a/Ui/OptionsEditeur.py +++ /dev/null @@ -1,138 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'OptionsEditeur.ui' -# -# Created: Tue Jun 10 18:23:53 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.16 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class desOptions(QDialog): - def __init__(self,parent = None,name = None,modal = 0,fl = 0): - QDialog.__init__(self,parent,name,modal,fl) - - if not name: - self.setName("desOptions") - - - - self.groupBox1 = QGroupBox(self,"groupBox1") - self.groupBox1.setGeometry(QRect(11,11,548,191)) - - self.textLabel1_3 = QLabel(self.groupBox1,"textLabel1_3") - self.textLabel1_3.setGeometry(QRect(30,60,280,20)) - - self.textLabel1_2_2 = QLabel(self.groupBox1,"textLabel1_2_2") - self.textLabel1_2_2.setGeometry(QRect(30,120,280,20)) - - self.CBVersions = QComboBox(0,self.groupBox1,"CBVersions") - self.CBVersions.setGeometry(QRect(30,20,90,30)) - - self.LERepMat = QLineEdit(self.groupBox1,"LERepMat") - self.LERepMat.setGeometry(QRect(30,140,501,31)) - - self.LERepCata = QLineEdit(self.groupBox1,"LERepCata") - self.LERepCata.setGeometry(QRect(30,80,501,31)) - - self.Bok = QPushButton(self.groupBox1,"Bok") - self.Bok.setGeometry(QRect(440,20,90,31)) - self.Bok.setAutoDefault(0) - - self.groupBox2 = QGroupBox(self,"groupBox2") - self.groupBox2.setGeometry(QRect(11,208,548,90)) - - self.LEVersionAjout = QLineEdit(self.groupBox2,"LEVersionAjout") - self.LEVersionAjout.setGeometry(QRect(120,31,101,30)) - - self.LEVersionSup = QLineEdit(self.groupBox2,"LEVersionSup") - self.LEVersionSup.setGeometry(QRect(410,30,101,30)) - - self.PBSup = QPushButton(self.groupBox2,"PBSup") - self.PBSup.setGeometry(QRect(300,20,101,41)) - - self.PBajout = QPushButton(self.groupBox2,"PBajout") - self.PBajout.setGeometry(QRect(10,20,101,41)) - - self.PBQuit = QPushButton(self,"PBQuit") - self.PBQuit.setGeometry(QRect(400,420,151,31)) - self.PBQuit.setMinimumSize(QSize(0,30)) - - self.groupBox3 = QGroupBox(self,"groupBox3") - self.groupBox3.setGeometry(QRect(10,310,548,90)) - - self.LERepDoc = QLineEdit(self.groupBox3,"LERepDoc") - self.LERepDoc.setGeometry(QRect(20,50,520,31)) - - self.textLabel1 = QLabel(self.groupBox3,"textLabel1") - self.textLabel1.setGeometry(QRect(20,20,280,30)) - - self.Bdefaut = QCheckBox(self,"Bdefaut") - self.Bdefaut.setGeometry(QRect(10,430,340,20)) - Bdefaut_font = QFont(self.Bdefaut.font()) - Bdefaut_font.setPointSize(12) - self.Bdefaut.setFont(Bdefaut_font) - - self.languageChange() - - self.resize(QSize(570,474).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.CBVersions,SIGNAL("activated(int)"),self.VersionChoisie) - self.connect(self.Bdefaut,SIGNAL("clicked()"),self.BdefautChecked) - self.connect(self.LEVersionAjout,SIGNAL("returnPressed()"),self.AjoutVersion) - self.connect(self.LERepDoc,SIGNAL("returnPressed()"),self.ChangePathDoc) - self.connect(self.Bok,SIGNAL("clicked()"),self.BokClicked) - self.connect(self.LEVersionSup,SIGNAL("returnPressed()"),self.SupVersion) - self.connect(self.PBajout,SIGNAL("clicked()"),self.AjoutVersion) - self.connect(self.PBSup,SIGNAL("clicked()"),self.SupVersion) - self.connect(self.PBQuit,SIGNAL("clicked()"),self.close) - self.connect(self.LERepDoc,SIGNAL("textChanged(const QString&)"),self.ChangePathDoc) - - - def languageChange(self): - self.setCaption(self.__tr("Options Aster")) - self.groupBox1.setTitle(self.__tr("Configurer une Version")) - self.textLabel1_3.setText(self.__trUtf8("\x52\xc3\xa9\x70\x65\x72\x74\x6f\x69\x72\x65\x20\x64\x27\x61\x63\x63\xc3\xa8\x73\x20\x61\x75\x20\x63\x61\x74\x61\x6c\x6f\x67\x75\x65\x20\x3a")) - self.textLabel1_2_2.setText(self.__trUtf8("\x52\xc3\xa9\x70\x65\x72\x74\x6f\x69\x72\x65\x20\x64\x27\x61\x63\x63\xc3\xa8\x73\x20\x61\x75\x78\x20\x6d\x61\x74\xc3\xa9\x72\x69\x61\x75\x78\x20\x3a")) - self.LERepMat.setText(QString.null) - self.LERepCata.setText(QString.null) - self.Bok.setText(self.__tr("Valider")) - self.groupBox2.setTitle(self.__trUtf8("\x47\xc3\xa9\x72\x65\x72\x20\x6c\x65\x73\x20\x76\x65\x72\x73\x69\x6f\x6e\x73")) - self.PBSup.setText(self.__tr("Supprimer\n" -"Version :")) - self.PBajout.setText(self.__tr("Ajouter\n" -"Version :")) - self.PBQuit.setText(self.__tr("Quitter")) - self.groupBox3.setTitle(self.__tr("Doc")) - self.LERepDoc.setText(QString.null) - self.textLabel1.setText(self.__trUtf8("\x52\x65\x70\x65\x72\x74\x6f\x69\x72\x65\x20\x64\x27\x61\x63\x63\x65\x73\x20\xc3\xa0\x20\x6c\x61\x20\x64\x6f\x63\x75\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x3a")) - self.Bdefaut.setText(self.__tr("Reinitialiser avec les valeurs par defaut")) - - - def VersionChoisie(self): - print "desOptions.VersionChoisie(): Not implemented yet" - - def BdefautChecked(self): - print "desOptions.BdefautChecked(): Not implemented yet" - - def AjoutVersion(self): - print "desOptions.AjoutVersion(): Not implemented yet" - - def SupVersion(self): - print "desOptions.SupVersion(): Not implemented yet" - - def ChangePathDoc(self): - print "desOptions.ChangePathDoc(): Not implemented yet" - - def BokClicked(self): - print "desOptions.BokClicked(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("desOptions",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("desOptions",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/OptionsPdf.py b/Ui/OptionsPdf.py deleted file mode 100644 index c5c3c891..00000000 --- a/Ui/OptionsPdf.py +++ /dev/null @@ -1,63 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'OptionsPdf.ui' -# -# Created: lun avr 7 09:36:07 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class desPdf(QDialog): - def __init__(self,parent = None,name = None,modal = 0,fl = 0): - QDialog.__init__(self,parent,name,modal,fl) - - if not name: - self.setName("desPdf") - - - - self.textLabel1_2 = QLabel(self,"textLabel1_2") - self.textLabel1_2.setGeometry(QRect(20,10,280,20)) - - self.BCancel = QPushButton(self,"BCancel") - self.BCancel.setGeometry(QRect(450,90,70,31)) - - self.LERepPdf = QLineEdit(self,"LERepPdf") - self.LERepPdf.setGeometry(QRect(20,40,501,31)) - - self.Bok = QPushButton(self,"Bok") - self.Bok.setGeometry(QRect(350,90,70,31)) - - self.languageChange() - - self.resize(QSize(538,142).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.BCancel,SIGNAL("clicked()"),self.reject) - self.connect(self.LERepPdf,SIGNAL("returnPressed()"),self.LeRepPdfPressed) - self.connect(self.Bok,SIGNAL("clicked()"),self.BokClicked) - - self.setTabOrder(self.LERepPdf,self.Bok) - self.setTabOrder(self.Bok,self.BCancel) - - - def languageChange(self): - self.setCaption(self.__tr("desPdf")) - self.textLabel1_2.setText(self.__tr("Lecteur Pdf")) - self.BCancel.setText(self.__tr("Cancel")) - self.LERepPdf.setText(self.__tr("acroread")) - self.Bok.setText(self.__tr("Ok")) - - - def LeRepPdfPressed(self): - print "desPdf.LeRepPdfPressed(): Not implemented yet" - - def BokClicked(self): - print "desPdf.BokClicked(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("desPdf",s,c) diff --git a/Ui/aideQT.py b/Ui/aideQT.py deleted file mode 100644 index a60c7609..00000000 --- a/Ui/aideQT.py +++ /dev/null @@ -1,78 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'aideQT.ui' -# -# Created: mar mar 25 10:05:07 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class Aide(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("Aide") - - - AideLayout = QGridLayout(self,1,1,11,6,"AideLayout") - - layout2 = QHBoxLayout(None,0,6,"layout2") - - self.PBIndex = QPushButton(self,"PBIndex") - self.PBIndex.setMinimumSize(QSize(0,30)) - layout2.addWidget(self.PBIndex) - - self.PBBack = QPushButton(self,"PBBack") - self.PBBack.setEnabled(1) - self.PBBack.setMinimumSize(QSize(0,30)) - layout2.addWidget(self.PBBack) - - self.PBForward = QPushButton(self,"PBForward") - self.PBForward.setEnabled(1) - self.PBForward.setMinimumSize(QSize(0,30)) - layout2.addWidget(self.PBForward) - - AideLayout.addLayout(layout2,1,0) - - self.TB1 = QTextBrowser(self,"TB1") - - AideLayout.addMultiCellWidget(self.TB1,0,0,0,1) - spacer1 = QSpacerItem(311,20,QSizePolicy.Expanding,QSizePolicy.Minimum) - AideLayout.addItem(spacer1,1,1) - - self.languageChange() - - self.resize(QSize(602,480).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.PBBack,SIGNAL("clicked()"),self.TB1.backward) - self.connect(self.PBForward,SIGNAL("clicked()"),self.TB1.forward) - self.connect(self.PBIndex,SIGNAL("clicked()"),self.TB1.home) - - - def languageChange(self): - self.setCaption(self.__tr("Aide")) - self.PBIndex.setText(self.__tr("Index")) - self.PBBack.setText(self.__tr("Back")) - self.PBForward.setText(self.__tr("Forward")) - - - def PBIndexPushed(self): - print "Aide.PBIndexPushed(): Not implemented yet" - - def PBBackPushed(self): - print "Aide.PBBackPushed(): Not implemented yet" - - def PBForwardPushed(self): - print "Aide.PBForwardPushed(): Not implemented yet" - - def SlotSourceChanged(self): - print "Aide.SlotSourceChanged(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("Aide",s,c) diff --git a/Ui/desChoixCata.py b/Ui/desChoixCata.py deleted file mode 100644 index 22e37b83..00000000 --- a/Ui/desChoixCata.py +++ /dev/null @@ -1,85 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desChoixCata.ui' -# -# Created: mar mar 25 10:05:07 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DChoixCata(QDialog): - def __init__(self,parent = None,name = None,modal = 0,fl = 0): - QDialog.__init__(self,parent,name,modal,fl) - - if not name: - self.setName("DChoixCata") - - self.setSizeGripEnabled(1) - - DChoixCataLayout = QGridLayout(self,1,1,11,6,"DChoixCataLayout") - - self.frame3 = QFrame(self,"frame3") - self.frame3.setFrameShape(QFrame.StyledPanel) - self.frame3.setFrameShadow(QFrame.Raised) - - self.buttonCancel = QPushButton(self.frame3,"buttonCancel") - self.buttonCancel.setGeometry(QRect(380,6,90,30)) - self.buttonCancel.setAutoDefault(1) - - self.buttonOk = QPushButton(self.frame3,"buttonOk") - self.buttonOk.setGeometry(QRect(40,6,90,30)) - self.buttonOk.setAutoDefault(1) - self.buttonOk.setDefault(1) - - DChoixCataLayout.addMultiCellWidget(self.frame3,2,2,0,1) - - self.TLNb = QLabel(self,"TLNb") - self.TLNb.setMinimumSize(QSize(30,0)) - - DChoixCataLayout.addWidget(self.TLNb,0,0) - - self.CBChoixCata = QComboBox(0,self,"CBChoixCata") - self.CBChoixCata.setEnabled(1) - - DChoixCataLayout.addWidget(self.CBChoixCata,1,1) - - self.textLabel1_2 = QLabel(self,"textLabel1_2") - self.textLabel1_2.setMinimumSize(QSize(380,60)) - - DChoixCataLayout.addWidget(self.textLabel1_2,1,0) - - self.languageChange() - - self.resize(QSize(547,172).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.buttonOk,SIGNAL("clicked()"),self.BOkPressed) - self.connect(self.buttonCancel,SIGNAL("clicked()"),self.BCancelPressed) - self.connect(self.CBChoixCata,SIGNAL("activated(const QString&)"),self.CataChoisi) - - - def languageChange(self): - self.setCaption(self.__tr("Choix d'une version du code Aster")) - self.buttonCancel.setText(self.__tr("&Cancel")) - self.buttonCancel.setAccel(QString.null) - self.buttonOk.setText(self.__tr("&OK")) - self.buttonOk.setAccel(QString.null) - self.TLNb.setText(self.__tr("2")) - self.textLabel1_2.setText(self.__tr("Veuillez choisir celle avec laquelle vous souhaitez travailler")) - - - def CataChoisi(self): - print "DChoixCata.CataChoisi(): Not implemented yet" - - def BOkPressed(self): - print "DChoixCata.BOkPressed(): Not implemented yet" - - def BCancelPressed(self): - print "DChoixCata.BCancelPressed(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DChoixCata",s,c) diff --git a/Ui/desChoixCata.ui b/Ui/desChoixCata.ui index 8f6eff55..62392866 100644 --- a/Ui/desChoixCata.ui +++ b/Ui/desChoixCata.ui @@ -8,7 +8,7 @@ 0 0 - 547 + 523 172 @@ -94,21 +94,21 @@ 2 - - - CBChoixCata - - - true - - textLabel1_2 + + + 2 + 5 + 0 + 0 + + - 380 + 30 60 @@ -116,6 +116,22 @@ <font size="+1">Veuillez choisir celle avec laquelle vous souhaitez travailler</font> + + + CBChoixCata + + + true + + + + 0 + 0 + 0 + 0 + + + diff --git a/Ui/desCommande.py b/Ui/desCommande.py deleted file mode 100644 index 2a4cc274..00000000 --- a/Ui/desCommande.py +++ /dev/null @@ -1,228 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desCommande.ui' -# -# Created: ven mai 16 13:30:38 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DComm(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DComm") - - self.setMinimumSize(QSize(505,0)) - - DCommLayout = QGridLayout(self,1,1,11,6,"DCommLayout") - - self.Commentaire = QLabel(self,"Commentaire") - self.Commentaire.setFrameShape(QLabel.NoFrame) - self.Commentaire.setFrameShadow(QLabel.Plain) - - DCommLayout.addMultiCellWidget(self.Commentaire,1,1,0,2) - - self.bOk = QPushButton(self,"bOk") - self.bOk.setMinimumSize(QSize(0,30)) - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - - DCommLayout.addWidget(self.bOk,2,1) - - self.bSup = QPushButton(self,"bSup") - self.bSup.setMinimumSize(QSize(0,30)) - self.bSup.setAutoDefault(1) - - DCommLayout.addWidget(self.bSup,2,0) - - self.bHelp = QPushButton(self,"bHelp") - self.bHelp.setMinimumSize(QSize(0,30)) - self.bHelp.setAutoDefault(1) - - DCommLayout.addWidget(self.bHelp,2,2) - - self.TWChoix = QTabWidget(self,"TWChoix") - - self.MotClef = QWidget(self.TWChoix,"MotClef") - - self.textLabel1 = QLabel(self.MotClef,"textLabel1") - self.textLabel1.setGeometry(QRect(11,11,226,18)) - self.textLabel1.setMinimumSize(QSize(0,0)) - - self.LBMCPermis = QListBox(self.MotClef,"LBMCPermis") - self.LBMCPermis.setGeometry(QRect(11,35,226,342)) - self.LBMCPermis.setMinimumSize(QSize(0,0)) - - self.textLabel1_2 = QLabel(self.MotClef,"textLabel1_2") - self.textLabel1_2.setGeometry(QRect(243,11,225,18)) - - self.LBRegles = QListBox(self.MotClef,"LBRegles") - self.LBRegles.setGeometry(QRect(243,35,225,342)) - self.TWChoix.insertTab(self.MotClef,QString("")) - - self.Concept = QWidget(self.TWChoix,"Concept") - ConceptLayout = QGridLayout(self.Concept,1,1,11,6,"ConceptLayout") - - self.groupBox1 = QGroupBox(self.Concept,"groupBox1") - - self.textLabel1_3 = QLabel(self.groupBox1,"textLabel1_3") - self.textLabel1_3.setGeometry(QRect(80,50,130,31)) - - self.textLabel1_3_2 = QLabel(self.groupBox1,"textLabel1_3_2") - self.textLabel1_3_2.setGeometry(QRect(80,170,150,31)) - - self.LENomConcept = QLineEdit(self.groupBox1,"LENomConcept") - self.LENomConcept.setGeometry(QRect(80,110,310,30)) - - self.textLabel3 = QLabel(self.groupBox1,"textLabel3") - self.textLabel3.setGeometry(QRect(10,200,290,31)) - - self.typeConcept = QLabel(self.groupBox1,"typeConcept") - self.typeConcept.setGeometry(QRect(310,200,130,31)) - - ConceptLayout.addWidget(self.groupBox1,0,0) - self.TWChoix.insertTab(self.Concept,QString("")) - - self.Commande = QWidget(self.TWChoix,"Commande") - CommandeLayout = QGridLayout(self.Commande,1,1,11,6,"CommandeLayout") - - self.buttonGroup1 = QButtonGroup(self.Commande,"buttonGroup1") - - self.RBalpha = QRadioButton(self.buttonGroup1,"RBalpha") - self.RBalpha.setGeometry(QRect(20,20,120,20)) - self.RBalpha.setChecked(1) - - self.RBGroupe = QRadioButton(self.buttonGroup1,"RBGroupe") - self.RBGroupe.setGeometry(QRect(20,40,110,20)) - - CommandeLayout.addMultiCellWidget(self.buttonGroup1,0,1,3,3) - - self.LBNouvCommande = QListBox(self.Commande,"LBNouvCommande") - - CommandeLayout.addMultiCellWidget(self.LBNouvCommande,2,2,0,3) - - self.textLabel1_4 = QLabel(self.Commande,"textLabel1_4") - self.textLabel1_4.setMaximumSize(QSize(32767,20)) - - CommandeLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,2) - - self.textLabel4 = QLabel(self.Commande,"textLabel4") - - CommandeLayout.addMultiCellWidget(self.textLabel4,3,3,0,3) - - self.textLabel6 = QLabel(self.Commande,"textLabel6") - self.textLabel6.setMinimumSize(QSize(40,40)) - - CommandeLayout.addWidget(self.textLabel6,1,0) - - self.LEFiltre = QLineEdit(self.Commande,"LEFiltre") - self.LEFiltre.setMinimumSize(QSize(0,40)) - - CommandeLayout.addWidget(self.LEFiltre,1,1) - - self.BNext = QToolButton(self.Commande,"BNext") - self.BNext.setMinimumSize(QSize(70,40)) - self.BNext.setIconSet(QIconSet()) - - CommandeLayout.addWidget(self.BNext,1,2) - self.TWChoix.insertTab(self.Commande,QString("")) - - DCommLayout.addMultiCellWidget(self.TWChoix,0,0,0,2) - - self.languageChange() - - self.resize(QSize(505,483).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) - self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged) - self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed) - self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) - self.connect(self.LENomConcept,SIGNAL("returnPressed()"),self.LENomConceptReturnPressed) - self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - self.connect(self.BNext,SIGNAL("pressed()"),self.BNextPressed) - - self.setTabOrder(self.LEFiltre,self.LBRegles) - self.setTabOrder(self.LBRegles,self.LENomConcept) - self.setTabOrder(self.LENomConcept,self.TWChoix) - self.setTabOrder(self.TWChoix,self.LBMCPermis) - self.setTabOrder(self.LBMCPermis,self.RBalpha) - self.setTabOrder(self.RBalpha,self.LBNouvCommande) - self.setTabOrder(self.LBNouvCommande,self.bOk) - self.setTabOrder(self.bOk,self.bSup) - self.setTabOrder(self.bSup,self.bHelp) - - - def languageChange(self): - self.setCaption(self.__tr("DComm")) - self.Commentaire.setText(QString.null) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(self.__tr("Alt+D")) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - self.textLabel1.setText(self.__tr("

Mots Clefs Permis

")) - self.textLabel1_2.setText(self.__trUtf8("\x3c\x68\x33\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x3c\x75\x3e\x3c\x62\x3e\x52\xc3\xa8\x67\x6c\x65\x73\x3c\x2f\x62\x3e\x3c\x2f\x75\x3e\x3c\x2f\x70\x3e\x3c\x2f\x68\x33\x3e")) - self.TWChoix.changeTab(self.MotClef,self.__tr("Ajouter Mot-Clef")) - self.groupBox1.setTitle(self.__tr("Concept")) - self.textLabel1_3.setText(self.__tr("Nom du concept :")) - self.textLabel1_3_2.setText(self.__tr("Type du concept :")) - self.textLabel3.setText(self.__trUtf8("\x4c\x27\x6f\x70\xc3\xa9\x72\x61\x74\x65\x75\x72\x20\x72\x65\x74\x6f\x75\x72\x6e\x65\x20\x75\x6e\x20\x63\x6f\x6e\x63\x65\x70\x74\x20\x64\x65\x20\x74\x79\x70\x65\x20\x3a")) - self.typeConcept.setText(self.__tr("TypeDuConcept")) - self.TWChoix.changeTab(self.Concept,self.__tr("Nommer Concept")) - self.buttonGroup1.setTitle(self.__tr("Affichage")) - self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65")) - self.RBGroupe.setText(self.__tr("par groupe")) - self.textLabel1_4.setText(self.__tr("Commandes :")) - self.textLabel4.setText(self.__trUtf8("\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x68\x6f\x69\x73\x69\x65\x20\x73\x65\x72\x61\x20\x61\x6a\x6f\x75\x74\xc3\xa9\x65\x20\x41\x50\x52\x45\x53\x20\x6c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x6f\x75\x72\x61\x6e\x74\x65")) - self.textLabel6.setText(self.__tr("Filtre")) - self.BNext.setText(self.__tr("Suivant")) - QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence")) - self.TWChoix.changeTab(self.Commande,self.__tr("Nouvelle Commande")) - - - def LBNouvCommandeClicked(self): - print "DComm.LBNouvCommandeClicked(): Not implemented yet" - - def LEFiltreTextChanged(self): - print "DComm.LEFiltreTextChanged(): Not implemented yet" - - def LEfiltreReturnPressed(self): - print "DComm.LEfiltreReturnPressed(): Not implemented yet" - - def BSupPressed(self): - print "DComm.BSupPressed(): Not implemented yet" - - def LENomConceptReturnPressed(self): - print "DComm.LENomConceptReturnPressed(): Not implemented yet" - - def BOkPressed(self): - print "DComm.BOkPressed(): Not implemented yet" - - def BuildTabCommand(self): - print "DComm.BuildTabCommand(): Not implemented yet" - - def ViewDoc(self): - print "DComm.ViewDoc(): Not implemented yet" - - def BNextPressed(self): - print "DComm.BNextPressed(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DComm",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DComm",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desCommande.ui b/Ui/desCommande.ui index 1ebda2c3..204e76ea 100644 --- a/Ui/desCommande.ui +++ b/Ui/desCommande.ui @@ -8,13 +8,21 @@ 0 0 - 505 + 506 483 + + + 3 + 3 + 0 + 0 + + - 505 + 0 0 @@ -25,7 +33,113 @@ unnamed - + + + layout1 + + + + unnamed + + + + bSup + + + + 2 + 0 + 0 + 0 + + + + + 0 + 30 + + + + &Supprimer + + + Alt+S + + + true + + + suppression du mot clef + + + + + bOk + + + + 2 + 0 + 0 + 0 + + + + + 0 + 30 + + + + &Valider + + + Shift+A, Alt+A, Alt+A, Alt+A + + + true + + + true + + + validation de la saisie + + + + + bHelp + + + + 2 + 0 + 0 + 0 + + + + + 0 + 30 + + + + &Documentation + + + Alt+D + + + true + + + affichage documentation aster + + + + + Commentaire @@ -39,79 +153,7 @@ - - - bOk - - - - 0 - 30 - - - - &Valider - - - Shift+A, Alt+A, Alt+A, Alt+A - - - true - - - true - - - validation de la saisie - - - - - bSup - - - - 0 - 30 - - - - &Supprimer - - - Alt+S - - - true - - - suppression du mot clef - - - - - bHelp - - - - 0 - 30 - - - - &Documentation - - - Alt+D - - - true - - - affichage documentation aster - - - + TWChoix @@ -122,147 +164,185 @@ Ajouter Mot-Clef - + - unnamed + textLabel1 - + + + 11 + 11 + 226 + 23 + + + + + 0 + 0 + + + + <h3><p align="center"><u><b>Mots Clefs Permis</b></u></p></h3> + + + + + textLabel1_2 + + + + 243 + 11 + 225 + 23 + + + + <h3><p align="center"><u><b>Règles</b></u></p></h3> + + + + + LBRegles + + + + 243 + 40 + 230 + 318 + + + + + + LBMCPermis + + + + 11 + 40 + 220 + 318 + + + + + 0 + 0 + + + + + + + Concept + + + Nommer Concept + + + + groupBox1 + + + + 11 + 11 + 460 + 340 + + + + Concept + + - textLabel1 + textLabel1_3 - - - 0 - 0 - + + + 80 + 50 + 130 + 31 + - <h3><p align="center"><u><b>Mots Clefs Permis</b></u></p></h3> + <u>Nom du concept :</u> - + - LBRegles + textLabel1_3_2 + + + + 80 + 170 + 150 + 31 + + + + <u>Type du concept :</u> - + - LBMCPermis + typeConcept - - - 0 - 0 - + + + 310 + 200 + 130 + 31 + + + + TypeDuConcept - + - textLabel1_2 + textLabel3 + + + + 10 + 200 + 290 + 31 + + + + + 2 + 5 + 0 + 0 + - <h3><p align="center"><u><b>Règles</b></u></p></h3> + L'opérateur retourne un concept de type : - - - - - Concept - - - Nommer Concept - - - - unnamed - - + - groupBox1 + LENomConcept - - Concept + + + 80 + 110 + 310 + 30 + - - - textLabel1_3 - - - - 80 - 50 - 130 - 31 - - - - <u>Nom du concept :</u> - - - - - textLabel1_3_2 - - - - 80 - 170 - 150 - 31 - - - - <u>Type du concept :</u> - - - - - LENomConcept - - - - 80 - 110 - 310 - 30 - - - - - - textLabel3 - - - - 10 - 200 - 290 - 31 - - - - L'opérateur retourne un concept de type : - - - - - typeConcept - - - - 310 - 200 - 130 - 31 - - - - TypeDuConcept - - - + @@ -341,6 +421,14 @@ textLabel4 + + + 2 + 5 + 0 + 0 + + La commande choisie sera ajoutée APRES la commande courante diff --git a/Ui/desCommentaire.py b/Ui/desCommentaire.py deleted file mode 100644 index 2ad37170..00000000 --- a/Ui/desCommentaire.py +++ /dev/null @@ -1,186 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desCommentaire.ui' -# -# Created: Thu Jun 19 16:49:50 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.16 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DComment(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DComment") - - self.setMinimumSize(QSize(505,0)) - - DCommentLayout = QGridLayout(self,1,1,11,6,"DCommentLayout") - - self.TWChoix = QTabWidget(self,"TWChoix") - - self.Valeur_Parametre = QWidget(self.TWChoix,"Valeur_Parametre") - - self.textCommentaire = QTextEdit(self.Valeur_Parametre,"textCommentaire") - self.textCommentaire.setGeometry(QRect(0,0,480,390)) - self.TWChoix.insertTab(self.Valeur_Parametre,QString.fromLatin1("")) - - self.Commande = QWidget(self.TWChoix,"Commande") - CommandeLayout = QGridLayout(self.Commande,1,1,11,6,"CommandeLayout") - - self.LBNouvCommande = QListBox(self.Commande,"LBNouvCommande") - - CommandeLayout.addMultiCellWidget(self.LBNouvCommande,2,2,0,3) - - self.buttonGroup1 = QButtonGroup(self.Commande,"buttonGroup1") - - self.RBGroupe = QRadioButton(self.buttonGroup1,"RBGroupe") - self.RBGroupe.setGeometry(QRect(20,40,101,20)) - - self.RBalpha = QRadioButton(self.buttonGroup1,"RBalpha") - self.RBalpha.setGeometry(QRect(20,20,120,20)) - self.RBalpha.setChecked(1) - - CommandeLayout.addMultiCellWidget(self.buttonGroup1,0,1,3,3) - - self.textLabel1_4 = QLabel(self.Commande,"textLabel1_4") - - CommandeLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,2) - - self.textLabel4 = QLabel(self.Commande,"textLabel4") - - CommandeLayout.addMultiCellWidget(self.textLabel4,3,3,0,3) - - self.LEFiltre = QLineEdit(self.Commande,"LEFiltre") - self.LEFiltre.setMinimumSize(QSize(160,30)) - - CommandeLayout.addWidget(self.LEFiltre,1,1) - - self.BNext = QToolButton(self.Commande,"BNext") - self.BNext.setMinimumSize(QSize(60,30)) - self.BNext.setIconSet(QIconSet()) - - CommandeLayout.addWidget(self.BNext,1,2) - - self.textLabel6 = QLabel(self.Commande,"textLabel6") - self.textLabel6.setMinimumSize(QSize(50,30)) - - CommandeLayout.addWidget(self.textLabel6,1,0) - self.TWChoix.insertTab(self.Commande,QString.fromLatin1("")) - - DCommentLayout.addMultiCellWidget(self.TWChoix,0,0,0,2) - - self.bOk = QPushButton(self,"bOk") - self.bOk.setMinimumSize(QSize(0,30)) - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - - DCommentLayout.addWidget(self.bOk,2,1) - - self.bSup = QPushButton(self,"bSup") - self.bSup.setMinimumSize(QSize(0,30)) - self.bSup.setAutoDefault(1) - - DCommentLayout.addWidget(self.bSup,2,0) - - self.bHelp = QPushButton(self,"bHelp") - self.bHelp.setMinimumSize(QSize(0,30)) - self.bHelp.setAutoDefault(1) - - DCommentLayout.addWidget(self.bHelp,2,2) - - self.Commentaire = QLabel(self,"Commentaire") - self.Commentaire.setFrameShape(QLabel.NoFrame) - self.Commentaire.setFrameShadow(QLabel.Plain) - - DCommentLayout.addMultiCellWidget(self.Commentaire,1,1,0,2) - - self.languageChange() - - self.resize(QSize(505,483).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) - self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged) - self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed) - self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) - self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - self.connect(self.BNext,SIGNAL("pressed()"),self.BNextPressed) - self.connect(self.textCommentaire,SIGNAL("textChanged()"),self.TexteCommentaireEntre) - - self.setTabOrder(self.LEFiltre,self.TWChoix) - self.setTabOrder(self.TWChoix,self.textCommentaire) - self.setTabOrder(self.textCommentaire,self.LBNouvCommande) - self.setTabOrder(self.LBNouvCommande,self.RBalpha) - self.setTabOrder(self.RBalpha,self.bOk) - self.setTabOrder(self.bOk,self.bSup) - self.setTabOrder(self.bSup,self.bHelp) - - - def languageChange(self): - self.setCaption(self.__tr("DComm")) - self.TWChoix.changeTab(self.Valeur_Parametre,self.__tr("Commentaire")) - self.buttonGroup1.setTitle(self.__tr("Affichage")) - self.RBGroupe.setText(self.__tr("par groupe")) - self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65")) - self.textLabel1_4.setText(self.__tr("Commandes :")) - self.textLabel4.setText(self.__trUtf8("\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x68\x6f\x69\x73\x69\x65\x20\x73\x65\x72\x61\x20\x61\x6a\x6f\x75\x74\xc3\xa9\x65\x20\x41\x50\x52\x45\x53\x20\x6c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x6f\x75\x72\x61\x6e\x74\x65")) - self.BNext.setText(self.__tr("Suivant")) - QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence")) - self.textLabel6.setText(self.__tr("Filtre")) - self.TWChoix.changeTab(self.Commande,self.__tr("Nouvelle Commande")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(QKeySequence(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(QKeySequence(self.__tr("Alt+S"))) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(QKeySequence(self.__tr("Alt+D"))) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - self.Commentaire.setText(QString.null) - - - def LBNouvCommandeClicked(self): - print "DComment.LBNouvCommandeClicked(): Not implemented yet" - - def LEFiltreTextChanged(self): - print "DComment.LEFiltreTextChanged(): Not implemented yet" - - def LEfiltreReturnPressed(self): - print "DComment.LEfiltreReturnPressed(): Not implemented yet" - - def BSupPressed(self): - print "DComment.BSupPressed(): Not implemented yet" - - def LENomConceptReturnPressed(self): - print "DComment.LENomConceptReturnPressed(): Not implemented yet" - - def BOkPressed(self): - print "DComment.BOkPressed(): Not implemented yet" - - def BuildTabCommand(self): - print "DComment.BuildTabCommand(): Not implemented yet" - - def ViewDoc(self): - print "DComment.ViewDoc(): Not implemented yet" - - def BNextPressed(self): - print "DComment.BNextPressed(): Not implemented yet" - - def textCommentaireChanged(self): - print "DComment.textCommentaireChanged(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DComment",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DComment",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desCommentaire.ui b/Ui/desCommentaire.ui index 63210082..5c1f0ea9 100644 --- a/Ui/desCommentaire.ui +++ b/Ui/desCommentaire.ui @@ -8,13 +8,13 @@ 0 0 - 505 + 478 483 - 505 + 0 0 @@ -25,7 +25,127 @@ unnamed - + + + layout3 + + + + unnamed + + + + bSup + + + + 3 + 0 + 0 + 0 + + + + + 0 + 30 + + + + &Supprimer + + + Alt+S + + + true + + + suppression du mot cle30 + + + + + bOk + + + + 3 + 0 + 0 + 0 + + + + + 0 + 30 + + + + &Valider + + + Shift+A, Alt+A, Alt+A, Alt+A + + + true + + + true + + + validation de la saisie + + + + + bHelp + + + + 3 + 0 + 0 + 0 + + + + + 0 + 30 + + + + &Documentation + + + Alt+D + + + true + + + affichage documentation aster + + + + + + + Commentaire + + + NoFrame + + + Plain + + + + + + TWChoix @@ -42,12 +162,20 @@ - 0 - 0 - 480 - 390 + 11 + 11 + 425 + 347 + + + 3 + 3 + 0 + 0 + + @@ -57,208 +185,190 @@ Nouvelle Commande - + unnamed - + - LBNouvCommande + layout2 - - - - buttonGroup1 - - - Affichage - - - - RBGroupe - - - - 20 - 40 - 101 - 20 - - - - par groupe - - - + - RBalpha + unnamed - - - 20 - 20 - 120 - 20 - - - - alphabétique - - - true - - + + + layout1 + + + + unnamed + + + + textLabel1_4 + + + + 3 + 5 + 0 + 0 + + + + <b><u>Commandes :</u></b> + + + + + textLabel6 + + + + 5 + 5 + 0 + 0 + + + + + 50 + 30 + + + + Filtre + + + + + LEFiltre + + + + 3 + 0 + 0 + 0 + + + + + 30 + 30 + + + + + + BNext + + + + 3 + 1 + 0 + 0 + + + + + 20 + 30 + + + + Suivant + + + + + + affiche la prochaine occurence + + + + + + + buttonGroup1 + + + Affichage + + + + RBalpha + + + + 20 + 20 + 110 + 20 + + + + + 3 + 0 + 0 + 0 + + + + alphabétique + + + true + + + + + RBGroupe + + + + 20 + 40 + 101 + 20 + + + + par groupe + + + + - + - textLabel1_4 - - - <b><u>Commandes :</u></b> + LBNouvCommande - + textLabel4 - - La commande choisie sera ajoutée APRES la commande courante - - - - - LEFiltre - - - - 160 - 30 - - - - - - BNext - - - - 60 - 30 - + + + 2 + 5 + 0 + 0 + - Suivant - - - - - - affiche la prochaine occurence - - - - - textLabel6 - - - - 50 - 30 - - - - Filtre + La commande choisie sera ajoutée APRES la commande courante - + - - - bOk - - - - 0 - 30 - - - - &Valider - - - Shift+A, Alt+A, Alt+A, Alt+A - - - true - - - true - - - validation de la saisie - - - - - bSup - - - - 0 - 30 - - - - &Supprimer - - - Alt+S - - - true - - - suppression du mot clef - - - - - bHelp - - - - 0 - 30 - - - - &Documentation - - - Alt+D - - - true - - - affichage documentation aster - - - - - Commentaire - - - NoFrame - - - Plain - - - - - @@ -316,12 +426,6 @@ DComment BNextPressed() - - textCommentaire - textChanged() - DComment - TexteCommentaireEntre() - LEFiltre diff --git a/Ui/desError.py b/Ui/desError.py deleted file mode 100644 index b9c59795..00000000 --- a/Ui/desError.py +++ /dev/null @@ -1,70 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desError.ui' -# -# Created: mar mar 25 10:05:08 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DError(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DError") - - self.setMinimumSize(QSize(350,0)) - - DErrorLayout = QGridLayout(self,1,1,11,6,"DErrorLayout") - - self.textLabel1_3 = QLabel(self,"textLabel1_3") - - DErrorLayout.addWidget(self.textLabel1_3,0,0) - - layout1 = QHBoxLayout(None,0,6,"layout1") - spacer1_2 = QSpacerItem(171,20,QSizePolicy.Expanding,QSizePolicy.Minimum) - layout1.addItem(spacer1_2) - - self.bSup = QPushButton(self,"bSup") - self.bSup.setAutoDefault(1) - layout1.addWidget(self.bSup) - spacer1 = QSpacerItem(171,20,QSizePolicy.Expanding,QSizePolicy.Minimum) - layout1.addItem(spacer1) - - DErrorLayout.addLayout(layout1,1,0) - - self.languageChange() - - self.resize(QSize(482,480).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed) - - - def languageChange(self): - self.setCaption(self.__tr("DInactif")) - self.textLabel1_3.setText(self.__trUtf8("\x3c\x66\x6f\x6e\x74\x20\x73\x69\x7a\x65\x3d\x22\x2b\x34\x22\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x4c\x65\x20\x6e\x6f\x65\x75\x64\x20\x73\xc3\xa9\x6c\x65\x63\x74\x69\x6f\x6e\x6e\xc3\xa9\x20\x6e\x65\x20\x63\x6f\x72\x72\x65\x73\x70\x6f\x6e\x64\x20\x70\x61\x73\x20\xc3\xa0\x20\x75\x6e\x20\x6f\x62\x6a\x65\x74\x20\x61\x63\x74\x69\x66\x2e\x3c\x2f\x70\x3e\x3c\x2f\x66\x6f\x6e\x74\x3e")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - - - def BSupPressed(self): - print "DError.BSupPressed(): Not implemented yet" - - def ViewDoc(self): - print "DError.ViewDoc(): Not implemented yet" - - def BOkPressed(self): - print "DError.BOkPressed(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DError",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DError",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desError.ui b/Ui/desError.ui index 9dd94bbd..0d524928 100644 --- a/Ui/desError.ui +++ b/Ui/desError.ui @@ -8,7 +8,7 @@ 0 0 - 482 + 538 480 @@ -29,6 +29,14 @@ textLabel1_3 + + + 2 + 5 + 0 + 0 + + <font size="+4"><p align="center">Le noeud sélectionné ne correspond pas à un objet actif.</p></font> diff --git a/Ui/desFormule.py b/Ui/desFormule.py deleted file mode 100644 index 6d7b72c2..00000000 --- a/Ui/desFormule.py +++ /dev/null @@ -1,260 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desFormule.ui' -# -# Created: ven mai 16 13:30:38 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DFormule(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DFormule") - - self.setMinimumSize(QSize(505,0)) - - DFormuleLayout = QGridLayout(self,1,1,11,6,"DFormuleLayout") - - layout4 = QHBoxLayout(None,0,6,"layout4") - - self.bSup = QPushButton(self,"bSup") - self.bSup.setMinimumSize(QSize(0,30)) - self.bSup.setAutoDefault(1) - layout4.addWidget(self.bSup) - - self.bOk = QPushButton(self,"bOk") - self.bOk.setMinimumSize(QSize(0,30)) - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - layout4.addWidget(self.bOk) - - self.bHelp = QPushButton(self,"bHelp") - self.bHelp.setMinimumSize(QSize(0,30)) - self.bHelp.setAutoDefault(1) - layout4.addWidget(self.bHelp) - - DFormuleLayout.addLayout(layout4,2,0) - - self.Commentaire = QLabel(self,"Commentaire") - - DFormuleLayout.addWidget(self.Commentaire,1,0) - - self.TWChoix = QTabWidget(self,"TWChoix") - - self.Formule = QWidget(self.TWChoix,"Formule") - FormuleLayout = QGridLayout(self.Formule,1,1,11,6,"FormuleLayout") - - self.textLabel1 = QLabel(self.Formule,"textLabel1") - self.textLabel1.setMinimumSize(QSize(0,0)) - - FormuleLayout.addWidget(self.textLabel1,0,0) - - self.textLabel1_3 = QLabel(self.Formule,"textLabel1_3") - - FormuleLayout.addMultiCellWidget(self.textLabel1_3,6,6,0,1) - - layout6 = QHBoxLayout(None,0,6,"layout6") - - self.LENomFormule = QLineEdit(self.Formule,"LENomFormule") - self.LENomFormule.setMinimumSize(QSize(0,40)) - layout6.addWidget(self.LENomFormule) - - layout4_2 = QHBoxLayout(None,0,6,"layout4_2") - - self.textLabel1_6 = QLabel(self.Formule,"textLabel1_6") - layout4_2.addWidget(self.textLabel1_6) - - self.LENomsArgs = QLineEdit(self.Formule,"LENomsArgs") - self.LENomsArgs.setMinimumSize(QSize(230,40)) - layout4_2.addWidget(self.LENomsArgs) - - self.textLabel1_6_2 = QLabel(self.Formule,"textLabel1_6_2") - layout4_2.addWidget(self.textLabel1_6_2) - layout6.addLayout(layout4_2) - - FormuleLayout.addMultiCellLayout(layout6,2,2,0,1) - - self.textLabel2 = QLabel(self.Formule,"textLabel2") - - FormuleLayout.addWidget(self.textLabel2,1,1) - - self.textLabel1_3_2 = QLabel(self.Formule,"textLabel1_3_2") - - FormuleLayout.addMultiCellWidget(self.textLabel1_3_2,7,7,0,1) - - self.textLabel2_2 = QLabel(self.Formule,"textLabel2_2") - - FormuleLayout.addMultiCellWidget(self.textLabel2_2,3,3,0,1) - - self.textLabel1_5 = QLabel(self.Formule,"textLabel1_5") - self.textLabel1_5.setMinimumSize(QSize(0,0)) - - FormuleLayout.addMultiCellWidget(self.textLabel1_5,4,4,0,1) - - self.LECorpsFormule = QLineEdit(self.Formule,"LECorpsFormule") - self.LECorpsFormule.setMinimumSize(QSize(0,30)) - - FormuleLayout.addMultiCellWidget(self.LECorpsFormule,5,5,0,1) - - self.textLabel1_2 = QLabel(self.Formule,"textLabel1_2") - - FormuleLayout.addWidget(self.textLabel1_2,0,1) - self.TWChoix.insertTab(self.Formule,QString("")) - - self.Commande = QWidget(self.TWChoix,"Commande") - CommandeLayout = QGridLayout(self.Commande,1,1,11,6,"CommandeLayout") - - self.textLabel4 = QLabel(self.Commande,"textLabel4") - - CommandeLayout.addMultiCellWidget(self.textLabel4,3,3,0,3) - - self.buttonGroup1 = QButtonGroup(self.Commande,"buttonGroup1") - - LayoutWidget = QWidget(self.buttonGroup1,"layout1") - LayoutWidget.setGeometry(QRect(20,20,113,48)) - layout1 = QVBoxLayout(LayoutWidget,11,6,"layout1") - - self.RBalpha = QRadioButton(LayoutWidget,"RBalpha") - self.RBalpha.setChecked(1) - layout1.addWidget(self.RBalpha) - - self.RBGroupe = QRadioButton(LayoutWidget,"RBGroupe") - layout1.addWidget(self.RBGroupe) - - CommandeLayout.addMultiCellWidget(self.buttonGroup1,0,1,3,3) - - self.LBNouvCommande = QListBox(self.Commande,"LBNouvCommande") - - CommandeLayout.addMultiCellWidget(self.LBNouvCommande,2,2,0,3) - - self.textLabel1_4 = QLabel(self.Commande,"textLabel1_4") - - CommandeLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,2) - - self.textLabel6 = QLabel(self.Commande,"textLabel6") - self.textLabel6.setMinimumSize(QSize(40,0)) - - CommandeLayout.addWidget(self.textLabel6,1,0) - - self.LEFiltre = QLineEdit(self.Commande,"LEFiltre") - self.LEFiltre.setMinimumSize(QSize(160,40)) - - CommandeLayout.addWidget(self.LEFiltre,1,1) - - self.BNext = QToolButton(self.Commande,"BNext") - self.BNext.setMinimumSize(QSize(60,40)) - self.BNext.setIconSet(QIconSet()) - - CommandeLayout.addWidget(self.BNext,1,2) - self.TWChoix.insertTab(self.Commande,QString("")) - - DFormuleLayout.addWidget(self.TWChoix,0,0) - - self.languageChange() - - self.resize(QSize(529,493).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) - self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged) - self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed) - self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) - self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.BNext,SIGNAL("clicked()"),self.BNextPressed) - self.connect(self.LENomFormule,SIGNAL("returnPressed()"),self.NomFormuleSaisi) - self.connect(self.LENomsArgs,SIGNAL("returnPressed()"),self.argsSaisis) - self.connect(self.LECorpsFormule,SIGNAL("returnPressed()"),self.FormuleSaisie) - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - - self.setTabOrder(self.LEFiltre,self.LENomFormule) - self.setTabOrder(self.LENomFormule,self.LENomsArgs) - self.setTabOrder(self.LENomsArgs,self.LECorpsFormule) - self.setTabOrder(self.LECorpsFormule,self.bSup) - self.setTabOrder(self.bSup,self.bOk) - self.setTabOrder(self.bOk,self.bHelp) - self.setTabOrder(self.bHelp,self.TWChoix) - self.setTabOrder(self.TWChoix,self.RBalpha) - self.setTabOrder(self.RBalpha,self.RBGroupe) - self.setTabOrder(self.RBGroupe,self.LBNouvCommande) - - - def languageChange(self): - self.setCaption(self.__tr("DMacro")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(self.__tr("Alt+D")) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - self.Commentaire.setText(QString.null) - self.textLabel1.setText(self.__tr("

Nom de la formule

")) - self.textLabel1_3.setText(self.__trUtf8("\x52\x65\x74\x6f\x75\x72\x2d\x43\x68\x61\x72\x69\x6f\x74\x20\x70\x65\x72\x6d\x65\x74\x20\x64\x65\x20\x76\xc3\xa9\x72\x69\x66\x69\x65\x72\x20\x71\x75\x65\x20\x6c\x27\x65\x78\x70\x72\x65\x73\x73\x69\x6f\x6e\x20\x65\x73\x74\x20\x76\x61\x6c\x69\x64\x65\x2e")) - self.textLabel1_6.setText(self.__tr("

(

")) - self.textLabel1_6_2.setText(self.__tr("

)

")) - self.textLabel2.setText(self.__trUtf8("\x76\x61\x72\x69\x61\x62\x6c\x65\x73\x20\x73\xc3\xa9\x70\x61\x72\xc3\xa9\x65\x73\x20\x70\x61\x72\x20\x64\x65\x73\x20\x22\x2c\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x72\x20\x65\x78\x2e\x20\x3a\x20\x78\x2c\x79\x2c\x7a")) - self.textLabel1_3_2.setText(self.__trUtf8("\x43\x65\x20\x6e\x27\x65\x73\x74\x20\x71\x75\x27\x61\x70\x72\xc3\xa8\x73\x20\x61\x76\x6f\x69\x72\x20\x61\x70\x70\x75\x79\xc3\xa9\x20\x73\x75\x72\x20\x6c\x65\x20\x62\x6f\x75\x74\x6f\x6e\x20\x56\x61\x6c\x69\x64\x65\x72\x20\x71\x75\x65\x20\x6c\x65\x73\x20\x6e\x6f\x75\x76\x65\x6c\x6c\x65\x73\x0a\x76\x61\x6c\x65\x75\x72\x73\x20\x73\x65\x72\x6f\x6e\x74\x20\x65\x66\x66\x65\x63\x74\x69\x76\x65\x6d\x65\x6e\x74\x20\x70\x72\x69\x73\x65\x73\x20\x65\x6e\x20\x63\x6f\x6d\x70\x74\x65")) - self.textLabel2_2.setText(self.__tr("=")) - self.textLabel1_5.setText(self.__tr("

Expression

")) - self.textLabel1_2.setText(self.__tr("

Arguments

")) - self.TWChoix.changeTab(self.Formule,self.__trUtf8("\x44\xc3\xa9\x66\x69\x6e\x69\x74\x69\x6f\x6e\x20\x46\x6f\x72\x6d\x75\x6c\x65")) - self.textLabel4.setText(self.__trUtf8("\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x6c\x65\x66\x74\x22\x3e\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x68\x6f\x69\x73\x69\x65\x20\x73\x65\x72\x61\x20\x61\x6a\x6f\x75\x74\xc3\xa9\x65\x20\x41\x50\x52\x45\x53\x20\x6c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x6f\x75\x72\x61\x6e\x74\x65\x3c\x2f\x70\x3e")) - self.buttonGroup1.setTitle(self.__tr("Affichage")) - self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65")) - self.RBGroupe.setText(self.__tr("par groupe")) - self.textLabel1_4.setText(self.__tr("Commandes :")) - self.textLabel6.setText(self.__tr("Filtre")) - self.BNext.setText(self.__tr("Suivant")) - QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence")) - self.TWChoix.changeTab(self.Commande,self.__tr("Nouvelle Commande")) - - - def LBNouvCommandeClicked(self): - print "DFormule.LBNouvCommandeClicked(): Not implemented yet" - - def LEFiltreTextChanged(self): - print "DFormule.LEFiltreTextChanged(): Not implemented yet" - - def LEfiltreReturnPressed(self): - print "DFormule.LEfiltreReturnPressed(): Not implemented yet" - - def BSupPressed(self): - print "DFormule.BSupPressed(): Not implemented yet" - - def BOkPressed(self): - print "DFormule.BOkPressed(): Not implemented yet" - - def BuildTabCommand(self): - print "DFormule.BuildTabCommand(): Not implemented yet" - - def BNextPressed(self): - print "DFormule.BNextPressed(): Not implemented yet" - - def NomFormuleSaisi(self): - print "DFormule.NomFormuleSaisi(): Not implemented yet" - - def argsSaisis(self): - print "DFormule.argsSaisis(): Not implemented yet" - - def FormuleSaisie(self): - print "DFormule.FormuleSaisie(): Not implemented yet" - - def ViewDoc(self): - print "DFormule.ViewDoc(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DFormule",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DFormule",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desFormule.ui b/Ui/desFormule.ui index 37d5e0a2..e9041bf1 100644 --- a/Ui/desFormule.ui +++ b/Ui/desFormule.ui @@ -8,7 +8,7 @@ 0 0 - 529 + 537 493 @@ -126,150 +126,233 @@ Définition Formule - + - unnamed + textLabel1 - - - textLabel1 - - - - 0 - 0 - - - - <h3><p align="center"><u><b>Nom de la formule</b></u></p></h3> - - - - - textLabel1_3 - - - Retour-Chariot permet de vérifier que l'expression est valide. - - - + + + 11 + 11 + 242 + 40 + + + + + 0 + 0 + + + + <h3><p align="center"><u><b>Nom de la formule</b></u></p></h3> + + + + + layout6 + + + + 11 + 103 + 489 + 44 + + + - layout6 + unnamed - + - unnamed + LENomFormule - - - LENomFormule - - - - 0 - 40 - - - - + + + 0 + 40 + + + + + + layout4 + + - layout4 + unnamed - + - unnamed + textLabel1_6 - - - textLabel1_6 - - - <h1><b>(</b></h1> - - - - - LENomsArgs - - - - 230 - 40 - - - - - - textLabel1_6_2 - - - <h1><b>)</b></h1> - - - - - - - - - textLabel2 - - - variables séparées par des "," + + <h1><b>(</b></h1> + + + + + LENomsArgs + + + + 230 + 40 + + + + + + textLabel1_6_2 + + + <h1><b>)</b></h1> + + + + + + + + + textLabel2 + + + + 259 + 57 + 241 + 40 + + + + variables séparées par des "," par ex. : x,y,z - - - - - textLabel1_3_2 - - - Ce n'est qu'après avoir appuyé sur le bouton Valider que les nouvelles + + + + + textLabel2_2 + + + + 11 + 153 + 489 + 39 + + + + <font size="+4" face="Helvetica"><b>=</b></font> + + + + + textLabel1_5 + + + + 11 + 198 + 489 + 40 + + + + + 0 + 0 + + + + <h3><p align="center"><u><b>Expression</b></u></p></h3> + + + + + LECorpsFormule + + + + 11 + 244 + 489 + 30 + + + + + 0 + 30 + + + + + + textLabel1_2 + + + + 259 + 11 + 241 + 40 + + + + <h3><p align="center"><u><b>Arguments</b></u></p></h3> + + + + + textLabel1_3_2 + + + + 11 + 326 + 470 + 40 + + + + + 3 + 5 + 0 + 0 + + + + Ce n'est qu'après avoir appuyé sur le bouton Valider que les nouvelles valeurs seront effectivement prises en compte - - - - - textLabel2_2 - - - <font size="+4" face="Helvetica"><b>=</b></font> - - - - - textLabel1_5 - - - - 0 - 0 - - - - <h3><p align="center"><u><b>Expression</b></u></p></h3> - - - - - LECorpsFormule - - - - 0 - 30 - - - - - - textLabel1_2 - - - <h3><p align="center"><u><b>Arguments</b></u></p></h3> - - - + + + + + textLabel1_3 + + + + 11 + 280 + 460 + 40 + + + + + 2 + 5 + 0 + 0 + + + + Retour-Chariot permet de vérifier que l'expression est valide. + + @@ -278,37 +361,143 @@ valeurs seront effectivement prises en compte Nouvelle Commande - + - unnamed + textLabel6 - - - textLabel4 - - - <p align="left">La commande choisie sera ajoutée APRES la commande courante</p> - - - + + + 11 + 59 + 40 + 40 + + + + + 40 + 0 + + + + Filtre + + + + + BNext + + + + 249 + 59 + 60 + 40 + + + + + 60 + 40 + + + + Suivant + + + + + + affiche la prochaine occurence + + + + + LBNouvCommande + + + + 11 + 105 + 490 + 234 + + + + + + LEFiltre + + + + 57 + 59 + 180 + 40 + + + + + 20 + 40 + + + + + + textLabel1_4 + + + + 11 + 11 + 260 + 42 + + + + + 2 + 2 + 0 + 0 + + + + <b><u>Commandes :</u></b> + + + + + buttonGroup1 + + + + 315 + 11 + 180 + 86 + + + + + 3 + 5 + 0 + 0 + + + + Affichage + + - buttonGroup1 - - - Affichage + unnamed - + layout1 - - - 20 - 20 - 113 - 48 - - unnamed @@ -334,66 +523,32 @@ valeurs seront effectivement prises en compte - - - - LBNouvCommande - - - - - textLabel1_4 - - - <b><u>Commandes :</u></b> - - - - - textLabel6 - - - - 40 - 0 - - - - Filtre - - - - - LEFiltre - - - - 160 - 40 - - - - - - BNext - - - - 60 - 40 - - - - Suivant - - - - - - affiche la prochaine occurence - - - + + + + + textLabel4 + + + + 10 + 340 + 480 + 21 + + + + + 3 + 5 + 0 + 0 + + + + <p align="left">La commande choisie sera ajoutée APRES la commande courante</p> + + diff --git a/Ui/desInactif.py b/Ui/desInactif.py deleted file mode 100644 index 39e7cce7..00000000 --- a/Ui/desInactif.py +++ /dev/null @@ -1,75 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desInactif.ui' -# -# Created: mar mar 25 10:05:08 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DInactif(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DInactif") - - self.setMinimumSize(QSize(350,0)) - - DInactifLayout = QGridLayout(self,1,1,11,6,"DInactifLayout") - - self.textLabel1_3 = QLabel(self,"textLabel1_3") - - DInactifLayout.addWidget(self.textLabel1_3,0,0) - - self.textLabel1 = QLabel(self,"textLabel1") - - DInactifLayout.addWidget(self.textLabel1,1,0) - - layout1 = QHBoxLayout(None,0,6,"layout1") - spacer2 = QSpacerItem(171,20,QSizePolicy.Expanding,QSizePolicy.Minimum) - layout1.addItem(spacer2) - - self.bSup = QPushButton(self,"bSup") - self.bSup.setAutoDefault(1) - layout1.addWidget(self.bSup) - spacer1 = QSpacerItem(171,20,QSizePolicy.Expanding,QSizePolicy.Minimum) - layout1.addItem(spacer1) - - DInactifLayout.addLayout(layout1,2,0) - - self.languageChange() - - self.resize(QSize(482,480).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed) - - - def languageChange(self): - self.setCaption(self.__tr("DInactif")) - self.textLabel1_3.setText(self.__trUtf8("\x3c\x66\x6f\x6e\x74\x20\x73\x69\x7a\x65\x3d\x22\x2b\x32\x22\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x4c\x65\x20\x6e\x6f\x65\x75\x64\x20\x73\xc3\xa9\x6c\x65\x63\x74\x69\x6f\x6e\x6e\xc3\xa9\x20\x6e\x65\x20\x63\x6f\x72\x72\x65\x73\x70\x6f\x6e\x64\x20\x70\x61\x73\x20\xc3\xa0\x20\x75\x6e\x20\x6f\x62\x6a\x65\x74\x20\x61\x63\x74\x69\x66\x2e\x3c\x2f\x70\x3e\x3c\x2f\x66\x6f\x6e\x74\x3e")) - self.textLabel1.setText(self.__trUtf8("\x3c\x66\x6f\x6e\x74\x20\x73\x69\x7a\x65\x3d\x22\x2b\x32\x22\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x0a\x53\x65\x75\x6c\x65\x73\x20\x6c\x65\x73\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x73\x20\x70\x6c\x61\x63\xc3\xa9\x65\x73\x20\x65\x6e\x74\x72\x65\x20\x3a\x0a\x0a\x44\x45\x42\x55\x54\x20\x2f\x20\x46\x49\x4e\x0a\x0a\x73\x6f\x6e\x74\x20\x61\x63\x74\x69\x76\x65\x73\x0a\x3c\x2f\x70\x3e\x3c\x2f\x66\x6f\x6e\x74\x3e")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - - - def BSupPressed(self): - print "DInactif.BSupPressed(): Not implemented yet" - - def ViewDoc(self): - print "DInactif.ViewDoc(): Not implemented yet" - - def BOkPressed(self): - print "DInactif.BOkPressed(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DInactif",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DInactif",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desInactif.ui b/Ui/desInactif.ui index 1b8f7f32..e9731e9a 100644 --- a/Ui/desInactif.ui +++ b/Ui/desInactif.ui @@ -8,7 +8,7 @@ 0 0 - 482 + 635 480 @@ -29,6 +29,14 @@ textLabel1_3 + + + 2 + 5 + 0 + 0 + + <font size="+2"><p align="center">Le noeud sélectionné ne correspond pas à un objet actif.</p></font> @@ -37,6 +45,14 @@ textLabel1 + + + 2 + 5 + 0 + 0 + + <font size="+2"><p align="center"> Seules les commandes placées entre : diff --git a/Ui/desInclude.py b/Ui/desInclude.py deleted file mode 100644 index dfe0d625..00000000 --- a/Ui/desInclude.py +++ /dev/null @@ -1,240 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desInclude.ui' -# -# Created: ven mai 16 13:30:38 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DInc1(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DInc1") - - self.setMinimumSize(QSize(505,0)) - - DInc1Layout = QGridLayout(self,1,1,11,6,"DInc1Layout") - - self.bOk = QPushButton(self,"bOk") - self.bOk.setMinimumSize(QSize(0,30)) - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - - DInc1Layout.addWidget(self.bOk,2,1) - - self.bHelp = QPushButton(self,"bHelp") - self.bHelp.setMinimumSize(QSize(0,30)) - self.bHelp.setAutoDefault(1) - - DInc1Layout.addWidget(self.bHelp,2,2) - - self.bSup = QPushButton(self,"bSup") - self.bSup.setMinimumSize(QSize(0,30)) - self.bSup.setAutoDefault(1) - - DInc1Layout.addWidget(self.bSup,2,0) - - self.Commentaire = QLabel(self,"Commentaire") - - DInc1Layout.addMultiCellWidget(self.Commentaire,1,1,0,2) - - self.TWChoix = QTabWidget(self,"TWChoix") - - self.MotClef = QWidget(self.TWChoix,"MotClef") - MotClefLayout = QGridLayout(self.MotClef,1,1,11,6,"MotClefLayout") - - self.LBMCPermis = QListBox(self.MotClef,"LBMCPermis") - self.LBMCPermis.setMinimumSize(QSize(0,0)) - - MotClefLayout.addWidget(self.LBMCPermis,1,0) - - self.textLabel1 = QLabel(self.MotClef,"textLabel1") - self.textLabel1.setMinimumSize(QSize(0,0)) - - MotClefLayout.addWidget(self.textLabel1,0,0) - - self.LBRegles = QListBox(self.MotClef,"LBRegles") - - MotClefLayout.addWidget(self.LBRegles,1,1) - - self.textLabel1_2 = QLabel(self.MotClef,"textLabel1_2") - - MotClefLayout.addWidget(self.textLabel1_2,0,1) - self.TWChoix.insertTab(self.MotClef,QString("")) - - self.Commande = QWidget(self.TWChoix,"Commande") - CommandeLayout = QGridLayout(self.Commande,1,1,11,6,"CommandeLayout") - - self.LBNouvCommande = QListBox(self.Commande,"LBNouvCommande") - - CommandeLayout.addMultiCellWidget(self.LBNouvCommande,2,2,0,3) - - self.buttonGroup1 = QButtonGroup(self.Commande,"buttonGroup1") - - self.RBGroupe = QRadioButton(self.buttonGroup1,"RBGroupe") - self.RBGroupe.setGeometry(QRect(20,40,101,20)) - - self.RBalpha = QRadioButton(self.buttonGroup1,"RBalpha") - self.RBalpha.setGeometry(QRect(20,20,120,20)) - self.RBalpha.setChecked(1) - - CommandeLayout.addMultiCellWidget(self.buttonGroup1,0,1,3,3) - - self.textLabel4 = QLabel(self.Commande,"textLabel4") - - CommandeLayout.addMultiCellWidget(self.textLabel4,3,3,0,3) - - self.textLabel1_4 = QLabel(self.Commande,"textLabel1_4") - - CommandeLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,2) - - self.textLabel6 = QLabel(self.Commande,"textLabel6") - self.textLabel6.setMinimumSize(QSize(40,0)) - - CommandeLayout.addWidget(self.textLabel6,1,0) - - self.LEFiltre = QLineEdit(self.Commande,"LEFiltre") - self.LEFiltre.setMinimumSize(QSize(160,40)) - - CommandeLayout.addWidget(self.LEFiltre,1,1) - - self.BNext = QToolButton(self.Commande,"BNext") - self.BNext.setMinimumSize(QSize(60,0)) - self.BNext.setIconSet(QIconSet()) - - CommandeLayout.addWidget(self.BNext,1,2) - self.TWChoix.insertTab(self.Commande,QString("")) - - self.TabPage = QWidget(self.TWChoix,"TabPage") - - self.textLabel1_3 = QLabel(self.TabPage,"textLabel1_3") - self.textLabel1_3.setGeometry(QRect(30,40,440,41)) - - self.LENomFichier = QLineEdit(self.TabPage,"LENomFichier") - self.LENomFichier.setGeometry(QRect(18,117,450,40)) - self.LENomFichier.setSizePolicy(QSizePolicy(0,0,0,0,self.LENomFichier.sizePolicy().hasHeightForWidth())) - self.LENomFichier.setMinimumSize(QSize(450,40)) - - self.BBrowse = QPushButton(self.TabPage,"BBrowse") - self.BBrowse.setGeometry(QRect(288,306,161,41)) - self.BBrowse.setSizePolicy(QSizePolicy(0,0,0,0,self.BBrowse.sizePolicy().hasHeightForWidth())) - - self.BChangeFile = QPushButton(self.TabPage,"BChangeFile") - self.BChangeFile.setGeometry(QRect(290,350,161,41)) - self.BChangeFile.setSizePolicy(QSizePolicy(0,0,0,0,self.BChangeFile.sizePolicy().hasHeightForWidth())) - self.TWChoix.insertTab(self.TabPage,QString("")) - - self.TabPage_2 = QWidget(self.TWChoix,"TabPage_2") - TabPageLayout = QGridLayout(self.TabPage_2,1,1,11,6,"TabPageLayout") - - self.textLabel1_5 = QLabel(self.TabPage_2,"textLabel1_5") - - TabPageLayout.addWidget(self.textLabel1_5,0,0) - self.TWChoix.insertTab(self.TabPage_2,QString("")) - - DInc1Layout.addMultiCellWidget(self.TWChoix,0,0,0,2) - - self.languageChange() - - self.resize(QSize(521,511).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) - self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged) - self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed) - self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) - self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.BNext,SIGNAL("clicked()"),self.BNextPressed) - self.connect(self.BBrowse,SIGNAL("clicked()"),self.BBrowsePressed) - self.connect(self.LENomFichier,SIGNAL("returnPressed()"),self.LENomFichReturnPressed) - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - - self.setTabOrder(self.LEFiltre,self.LENomFichier) - self.setTabOrder(self.LENomFichier,self.bHelp) - self.setTabOrder(self.bHelp,self.bSup) - self.setTabOrder(self.bSup,self.bOk) - self.setTabOrder(self.bOk,self.TWChoix) - self.setTabOrder(self.TWChoix,self.LBMCPermis) - self.setTabOrder(self.LBMCPermis,self.LBRegles) - self.setTabOrder(self.LBRegles,self.LBNouvCommande) - self.setTabOrder(self.LBNouvCommande,self.RBalpha) - self.setTabOrder(self.RBalpha,self.BBrowse) - self.setTabOrder(self.BBrowse,self.BChangeFile) - - - def languageChange(self): - self.setCaption(self.__tr("DMacro")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(self.__tr("Alt+D")) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.Commentaire.setText(QString.null) - self.textLabel1.setText(self.__tr("

Mots Clefs Permis

")) - self.textLabel1_2.setText(self.__trUtf8("\x3c\x68\x33\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x3c\x75\x3e\x3c\x62\x3e\x52\xc3\xa9\x67\x6c\x65\x73\x3c\x2f\x62\x3e\x3c\x2f\x75\x3e\x3c\x2f\x70\x3e\x3c\x2f\x68\x33\x3e")) - self.TWChoix.changeTab(self.MotClef,self.__tr("Ajouter Mot-Clef")) - self.buttonGroup1.setTitle(self.__tr("Affichage")) - self.RBGroupe.setText(self.__tr("par groupe")) - self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65")) - self.textLabel4.setText(self.__trUtf8("\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x68\x6f\x69\x73\x69\x65\x20\x73\x65\x72\x61\x20\x61\x6a\x6f\x75\x74\xc3\xa9\x65\x20\x41\x50\x52\x45\x53\x20\x6c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x6f\x75\x72\x61\x6e\x74\x65")) - self.textLabel1_4.setText(self.__tr("Commandes :")) - self.textLabel6.setText(self.__tr("Filtre")) - self.BNext.setText(self.__tr("Suivant")) - QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence")) - self.TWChoix.changeTab(self.Commande,self.__tr("Nouvelle Commande")) - self.textLabel1_3.setText(self.__tr("La commande INCLUDE requiert un nom de Fichier :")) - self.BBrowse.setText(self.__tr("Edit")) - self.BChangeFile.setText(self.__tr("Autre Fichier")) - self.TWChoix.changeTab(self.TabPage,self.__tr("Fichier Include")) - self.textLabel1_5.setText(self.__trUtf8("\x3c\x66\x6f\x6e\x74\x20\x73\x69\x7a\x65\x3d\x22\x2b\x31\x22\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x49\x4e\x43\x4c\x55\x44\x45\x20\x6e\x27\x61\x20\x70\x61\x73\x20\x64\x65\x20\x66\x69\x63\x68\x69\x65\x72\x20\x61\x73\x73\x6f\x63\x69\xc3\xa9\x2e\x0a\x49\x6c\x20\x66\x61\x75\x74\x20\x64\x27\x61\x62\x6f\x72\x64\x20\x63\x68\x6f\x69\x73\x69\x72\x20\x75\x6e\x20\x6e\x75\x6d\xc3\xa9\x72\x6f\x20\x64\x27\x75\x6e\x69\x74\xc3\xa9\x3c\x2f\x70\x3e\x3c\x2f\x66\x6f\x6e\x74\x3e")) - self.TWChoix.changeTab(self.TabPage_2,self.__tr("Fichier Inc")) - - - def LBNouvCommandeClicked(self): - print "DInc1.LBNouvCommandeClicked(): Not implemented yet" - - def LEFiltreTextChanged(self): - print "DInc1.LEFiltreTextChanged(): Not implemented yet" - - def LEfiltreReturnPressed(self): - print "DInc1.LEfiltreReturnPressed(): Not implemented yet" - - def BSupPressed(self): - print "DInc1.BSupPressed(): Not implemented yet" - - def BOkPressed(self): - print "DInc1.BOkPressed(): Not implemented yet" - - def BuildTabCommand(self): - print "DInc1.BuildTabCommand(): Not implemented yet" - - def BNextPressed(self): - print "DInc1.BNextPressed(): Not implemented yet" - - def BBrowsePressed(self): - print "DInc1.BBrowsePressed(): Not implemented yet" - - def LENomFichReturnPressed(self): - print "DInc1.LENomFichReturnPressed(): Not implemented yet" - - def ViewDoc(self): - print "DInc1.ViewDoc(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DInc1",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DInc1",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desInclude.ui b/Ui/desInclude.ui index 9edfc3e7..13a459b4 100644 --- a/Ui/desInclude.ui +++ b/Ui/desInclude.ui @@ -8,7 +8,7 @@ 0 0 - 521 + 570 511
@@ -21,114 +21,145 @@ DMacro - + - unnamed + layout1 - - - bOk - - - - 0 - 30 - - - - &Valider - - - Shift+A, Alt+A, Alt+A, Alt+A - - - true - - - true - - - validation de la saisie - - - - - bHelp - - - - 0 - 30 - - - - &Documentation - - - Alt+D - - - true - - - affichage documentation aster - - - - - bSup - - - - 0 - 30 - - - - &Supprimer - - - Alt+S - - - true - - - suppression du mot clef - - - + + + 11 + 447 + 550 + 55 + + + - Commentaire + unnamed - - - - - + + + Commentaire + + + + + + + + bSup + + + + 0 + 30 + + + + &Supprimer + + + Alt+S + + + true + + + suppression du mot clef + + + + + bHelp + + + + 0 + 30 + + + + &Documentation + + + Alt+D + + + true + + + affichage documentation aster + + + + + bOk + + + + 0 + 30 + + + + &Valider + + + Shift+A, Alt+A, Alt+A, Alt+A + + + true + + + true + + + validation de la saisie + + + + + + + TWChoix + + + + 10 + 10 + 550 + 430 + + + - TWChoix + MotClef - + + Ajouter Mot-Clef + + - MotClef + layout2 + + + + 11 + 11 + 520 + 380 + - - Ajouter Mot-Clef - unnamed - + - LBMCPermis + textLabel1_2 - - - 0 - 0 - + + <h3><p align="center"><u><b>Régles</b></u></p></h3> @@ -145,266 +176,368 @@ <h3><p align="center"><u><b>Mots Clefs Permis</b></u></p></h3> - - - LBRegles - - - - - textLabel1_2 - - - <h3><p align="center"><u><b>Régles</b></u></p></h3> - - - - - - - Commande - - - Nouvelle Commande - - - - unnamed - - - - LBNouvCommande - - - - - buttonGroup1 - - - Affichage - - - - RBGroupe - - - - 20 - 40 - 101 - 20 - - - - par groupe - - - - - RBalpha - - - - 20 - 20 - 120 - 20 - - - - alphabétique - - - true - - - - - - textLabel4 - - - La commande choisie sera ajoutée APRES la commande courante - - - - - textLabel1_4 - - - <b><u>Commandes :</u></b> - - - + - textLabel6 + LBMCPermis - 40 + 0 0 - - Filtre - - - - LEFiltre - - - - 160 - 40 - - - - + - BNext - - - - 60 - 0 - - - - Suivant - - - + LBRegles - - affiche la prochaine occurence + + + 3 + 3 + 0 + 0 + - + + + + Commande + + + Nouvelle Commande + + + + LBNouvCommande + + + + 11 + 97 + 524 + 266 + + + + + 3 + 7 + 0 + 0 + + + + - TabPage + buttonGroup1 - - Fichier Include - - + + + 375 + 11 + 160 + 80 + + + + Affichage + + - textLabel1_3 + RBGroupe - 30 + 20 40 - 440 - 41 + 101 + 20 - <font size="+1">La commande INCLUDE requiert un nom de Fichier :</font> - - - - - LENomFichier - - - - 18 - 117 - 450 - 40 - - - - - 0 - 0 - 0 - 0 - - - - - 450 - 40 - + par groupe - + - BBrowse + RBalpha - 288 - 306 - 161 - 41 + 20 + 20 + 120 + 20 - - - 0 - 0 - 0 - 0 - - - Edit + alphabétique + + + true - + + + + textLabel4 + + + + 11 + 369 + 524 + 17 + + + + + 2 + 5 + 0 + 0 + + + + La commande choisie sera ajoutée APRES la commande courante + + + + + BNext + + + + 309 + 51 + 60 + 40 + + + + + 60 + 0 + + + + Suivant + + + + + + affiche la prochaine occurence + + + + + LEFiltre + + + + 57 + 51 + 240 + 40 + + + + + 3 + 0 + 0 + 0 + + + + + 20 + 40 + + + + + + textLabel6 + + + + 11 + 51 + 40 + 40 + + + + + 40 + 0 + + + + Filtre + + + + + textLabel1_4 + + + + 11 + 11 + 358 + 34 + + + + <b><u>Commandes :</u></b> + + + + + + TabPage + + + Fichier Include + + + + BBrowse + + + + 288 + 306 + 161 + 41 + + + + + 0 + 0 + 0 + 0 + + + + Edit + + + + + BChangeFile + + + + 290 + 350 + 161 + 41 + + + + + 0 + 0 + 0 + 0 + + + + Autre Fichier + + + + + textLabel1_3 + + + + 30 + 40 + 440 + 41 + + + + + 5 + 2 + 0 + 0 + + + + <font size="+1">La commande INCLUDE requiert un nom de Fichier :</font> + + + + + LENomFichier + + + + 18 + 117 + 500 + 40 + + + + + 3 + 0 + 0 + 0 + + + + + 40 + 40 + + + + + + + TabPage + + + Fichier Inc + + + + unnamed + + - BChangeFile - - - - 290 - 350 - 161 - 41 - + textLabel1_5 - 0 - 0 + 3 + 5 0 0 - Autre Fichier + <font size="+1"><p align="center">La commande INCLUDE n'a pas de fichier associé. +Il faut d'abord choisir un numéro d'unité</p></font> - - - - TabPage - - - Fichier Inc - - - - unnamed - - - - textLabel1_5 - - - <font size="+1"><p align="center">La commande INCLUDE n'a pas de fichier associé. -Il faut d'abord choisir un numéro d'unité</p></font> - - - - + - + diff --git a/Ui/desListeParam.py b/Ui/desListeParam.py deleted file mode 100644 index d8326749..00000000 --- a/Ui/desListeParam.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desListeParam.ui' -# -# Created: mar mar 25 10:05:08 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DLisParam(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DLisParam") - - - DLisParamLayout = QGridLayout(self,1,1,11,6,"DLisParamLayout") - - self.LBParam = QListBox(self,"LBParam") - - DLisParamLayout.addWidget(self.LBParam,0,0) - - self.languageChange() - - self.resize(QSize(413,394).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.LBParam,SIGNAL("clicked(QListBoxItem*)"),self.LBParamItemPressed) - - - def languageChange(self): - self.setCaption(self.__trUtf8("\x53\xc3\xa9\x6c\x65\x63\x74\x69\x6f\x6e\x20\x64\x65\x20\x70\x61\x72\x61\x6d\xc3\xa9\x74\x72\x65\x73")) - - - def LBParamItemPressed(self): - print "DLisParam.LBParamItemPressed(): Not implemented yet" - - def __trUtf8(self,s,c = None): - return qApp.translate("DLisParam",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desMCFact.py b/Ui/desMCFact.py deleted file mode 100644 index 50c7de55..00000000 --- a/Ui/desMCFact.py +++ /dev/null @@ -1,111 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desMCFact.ui' -# -# Created: mar mar 25 10:05:08 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DMCFact(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DMCFact") - - self.setMinimumSize(QSize(505,0)) - - DMCFactLayout = QGridLayout(self,1,1,11,6,"DMCFactLayout") - - self.TWChoix = QTabWidget(self,"TWChoix") - - self.MotClef = QWidget(self.TWChoix,"MotClef") - MotClefLayout = QGridLayout(self.MotClef,1,1,11,6,"MotClefLayout") - - self.textLabel1 = QLabel(self.MotClef,"textLabel1") - self.textLabel1.setMinimumSize(QSize(0,0)) - - MotClefLayout.addWidget(self.textLabel1,0,0) - - self.LBMCPermis = QListBox(self.MotClef,"LBMCPermis") - self.LBMCPermis.setMinimumSize(QSize(0,0)) - - MotClefLayout.addWidget(self.LBMCPermis,1,0) - - self.LBRegles = QListBox(self.MotClef,"LBRegles") - - MotClefLayout.addWidget(self.LBRegles,1,1) - - self.textLabel1_2 = QLabel(self.MotClef,"textLabel1_2") - - MotClefLayout.addWidget(self.textLabel1_2,0,1) - self.TWChoix.insertTab(self.MotClef,QString("")) - - DMCFactLayout.addMultiCellWidget(self.TWChoix,0,0,0,2) - - self.bSup = QPushButton(self,"bSup") - self.bSup.setAutoDefault(1) - - DMCFactLayout.addWidget(self.bSup,2,0) - - self.Commentaire = QLabel(self,"Commentaire") - - DMCFactLayout.addMultiCellWidget(self.Commentaire,1,1,0,2) - - self.bHelp = QPushButton(self,"bHelp") - self.bHelp.setAutoDefault(1) - - DMCFactLayout.addWidget(self.bHelp,2,2) - - self.bOk = QPushButton(self,"bOk") - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - - DMCFactLayout.addWidget(self.bOk,2,1) - - self.languageChange() - - self.resize(QSize(511,499).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - - - def languageChange(self): - self.setCaption(self.__tr("DMacro")) - self.textLabel1.setText(self.__tr("

Mots Clefs Permis

")) - self.textLabel1_2.setText(self.__trUtf8("\x3c\x68\x33\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x3c\x75\x3e\x3c\x62\x3e\x52\xc3\xa9\x67\x6c\x65\x73\x3c\x2f\x62\x3e\x3c\x2f\x75\x3e\x3c\x2f\x70\x3e\x3c\x2f\x68\x33\x3e")) - self.TWChoix.changeTab(self.MotClef,self.__tr("Ajouter Mot-Clef")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.Commentaire.setText(QString.null) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(self.__tr("Alt+D")) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - - - def ViewDoc(self): - print "DMCFact.ViewDoc(): Not implemented yet" - - def BSupPressed(self): - print "DMCFact.BSupPressed(): Not implemented yet" - - def BOkPressed(self): - print "DMCFact.BOkPressed(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DMCFact",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DMCFact",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desMCFact.ui b/Ui/desMCFact.ui index 433df5f9..06563625 100644 --- a/Ui/desMCFact.ui +++ b/Ui/desMCFact.ui @@ -8,7 +8,7 @@ 0 0 - 511 + 592 499 @@ -29,6 +29,14 @@ TWChoix + + + 3 + 7 + 0 + 0 + + MotClef @@ -36,55 +44,118 @@ Ajouter Mot-Clef - + - unnamed + layout1 - - - textLabel1 - - - - 0 - 0 - - - - <h3><p align="center"><u><b>Mots Clefs Permis</b></u></p></h3> - - - - - LBMCPermis - - - - 0 - 0 - - - - + + + 10 + 40 + 550 + 330 + + + - LBRegles + unnamed - - + + + LBMCPermis + + + + 3 + 7 + 0 + 0 + + + + + 0 + 0 + + + + + + LBRegles + + + + + + + layout2 + + + + 11 + -4 + 560 + 40 + + + - textLabel1_2 + unnamed - - <h3><p align="center"><u><b>Régles</b></u></p></h3> - - - + + + textLabel1 + + + + 3 + 5 + 0 + 0 + + + + + 0 + 0 + + + + <h3><p align="center"><u><b>Mots Clefs Permis</b></u></p></h3> + + + + + textLabel1_2 + + + + 3 + 5 + 0 + 0 + + + + <h3><p align="center"><u><b>Régles</b></u></p></h3> + + + +
bSup + + + 3 + 0 + 0 + 0 + + &Supprimer @@ -110,6 +181,14 @@ bHelp + + + 3 + 0 + 0 + 0 + + &Documentation @@ -127,6 +206,14 @@ bOk + + + 3 + 0 + 0 + 0 + + &Valider diff --git a/Ui/desMCListAjout.py b/Ui/desMCListAjout.py deleted file mode 100644 index bb0d5986..00000000 --- a/Ui/desMCListAjout.py +++ /dev/null @@ -1,121 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desMCListAjout.ui' -# -# Created: mar mar 25 10:05:08 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DMCListAjout(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DMCListAjout") - - self.setMinimumSize(QSize(350,0)) - - DMCListAjoutLayout = QGridLayout(self,1,1,11,6,"DMCListAjoutLayout") - - self.textLabel1 = QLabel(self,"textLabel1") - - DMCListAjoutLayout.addMultiCellWidget(self.textLabel1,1,1,0,2) - - self.textLabel1_2 = QLabel(self,"textLabel1_2") - - DMCListAjoutLayout.addMultiCellWidget(self.textLabel1_2,2,2,0,2) - - layout9 = QHBoxLayout(None,0,6,"layout9") - spacer4 = QSpacerItem(60,21,QSizePolicy.Expanding,QSizePolicy.Minimum) - layout9.addItem(spacer4) - - self.bAjout = QPushButton(self,"bAjout") - self.bAjout.setAutoDefault(1) - self.bAjout.setDefault(1) - layout9.addWidget(self.bAjout) - spacer2 = QSpacerItem(80,21,QSizePolicy.Expanding,QSizePolicy.Minimum) - layout9.addItem(spacer2) - - DMCListAjoutLayout.addMultiCellLayout(layout9,8,8,0,2) - spacer1 = QSpacerItem(21,40,QSizePolicy.Minimum,QSizePolicy.Expanding) - DMCListAjoutLayout.addItem(spacer1,9,1) - - self.textLabel1_2_2 = QLabel(self,"textLabel1_2_2") - - DMCListAjoutLayout.addMultiCellWidget(self.textLabel1_2_2,6,6,0,2) - spacer5 = QSpacerItem(20,20,QSizePolicy.Minimum,QSizePolicy.Expanding) - DMCListAjoutLayout.addItem(spacer5,7,1) - - self.MCFacteur = QLabel(self,"MCFacteur") - - DMCListAjoutLayout.addMultiCellWidget(self.MCFacteur,4,4,0,2) - spacer6 = QSpacerItem(21,31,QSizePolicy.Minimum,QSizePolicy.Expanding) - DMCListAjoutLayout.addItem(spacer6,5,1) - spacer7 = QSpacerItem(21,51,QSizePolicy.Minimum,QSizePolicy.Expanding) - DMCListAjoutLayout.addItem(spacer7,3,1) - spacer8 = QSpacerItem(41,51,QSizePolicy.Minimum,QSizePolicy.Expanding) - DMCListAjoutLayout.addItem(spacer8,0,1) - - self.bSup = QPushButton(self,"bSup") - self.bSup.setAutoDefault(1) - - DMCListAjoutLayout.addWidget(self.bSup,10,0) - - self.bOk = QPushButton(self,"bOk") - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - - DMCListAjoutLayout.addWidget(self.bOk,10,1) - - self.bHelp = QPushButton(self,"bHelp") - self.bHelp.setAutoDefault(1) - - DMCListAjoutLayout.addWidget(self.bHelp,10,2) - - self.languageChange() - - self.resize(QSize(459,472).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.bOk,SIGNAL("clicked()"),self.BAjoutClicked) - self.connect(self.bAjout,SIGNAL("clicked()"),self.BAjoutClicked) - self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed) - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - - - def languageChange(self): - self.setCaption(self.__tr("Form1")) - self.textLabel1.setText(self.__tr("

Pour ajouter une autre occurrence

")) - self.textLabel1_2.setText(self.__tr("

du mot clef-facteur

")) - self.bAjout.setText(self.__tr("&Ajouter")) - self.bAjout.setAccel(self.__tr("Alt+A")) - QToolTip.add(self.bAjout,self.__tr("validation de la saisie")) - self.textLabel1_2_2.setText(self.__tr("

cliquez ci-dessous

")) - self.MCFacteur.setText(self.__tr("

AFFE

")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(self.__tr("Alt+D")) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - - - def BAjoutClicked(self): - print "DMCListAjout.BAjoutClicked(): Not implemented yet" - - def BSupPressed(self): - print "DMCListAjout.BSupPressed(): Not implemented yet" - - def ViewDoc(self): - print "DMCListAjout.ViewDoc(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DMCListAjout",s,c) diff --git a/Ui/desMCListAjout.ui b/Ui/desMCListAjout.ui index ff58dbcd..6458e905 100644 --- a/Ui/desMCListAjout.ui +++ b/Ui/desMCListAjout.ui @@ -8,13 +8,21 @@ 0 0 - 459 + 509 472 + + + 3 + 5 + 0 + 0 + + - 350 + 50 0 diff --git a/Ui/desMacro.py b/Ui/desMacro.py deleted file mode 100644 index 4850e072..00000000 --- a/Ui/desMacro.py +++ /dev/null @@ -1,228 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desMacro.ui' -# -# Created: Mon Jun 2 15:35:12 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.16 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DMacro(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DMacro") - - self.setMinimumSize(QSize(505,0)) - - DMacroLayout = QGridLayout(self,1,1,11,6,"DMacroLayout") - - self.Commentaire = QLabel(self,"Commentaire") - - DMacroLayout.addMultiCellWidget(self.Commentaire,1,1,0,2) - - self.TWChoix = QTabWidget(self,"TWChoix") - - self.MotClef = QWidget(self.TWChoix,"MotClef") - MotClefLayout = QGridLayout(self.MotClef,1,1,11,6,"MotClefLayout") - - self.LBMCPermis = QListBox(self.MotClef,"LBMCPermis") - self.LBMCPermis.setMinimumSize(QSize(0,0)) - - MotClefLayout.addWidget(self.LBMCPermis,1,0) - - self.LBRegles = QListBox(self.MotClef,"LBRegles") - - MotClefLayout.addWidget(self.LBRegles,1,1) - - self.textLabel1_2 = QLabel(self.MotClef,"textLabel1_2") - - MotClefLayout.addWidget(self.textLabel1_2,0,1) - - self.textLabel1 = QLabel(self.MotClef,"textLabel1") - self.textLabel1.setMinimumSize(QSize(0,0)) - - MotClefLayout.addWidget(self.textLabel1,0,0) - self.TWChoix.insertTab(self.MotClef,QString.fromLatin1("")) - - self.Commande = QWidget(self.TWChoix,"Commande") - CommandeLayout = QGridLayout(self.Commande,1,1,11,6,"CommandeLayout") - - self.LBNouvCommande = QListBox(self.Commande,"LBNouvCommande") - - CommandeLayout.addMultiCellWidget(self.LBNouvCommande,2,2,0,3) - - self.buttonGroup1 = QButtonGroup(self.Commande,"buttonGroup1") - - self.RBalpha = QRadioButton(self.buttonGroup1,"RBalpha") - self.RBalpha.setGeometry(QRect(20,20,120,20)) - self.RBalpha.setChecked(1) - - self.RBGroupe = QRadioButton(self.buttonGroup1,"RBGroupe") - self.RBGroupe.setGeometry(QRect(20,40,120,20)) - - CommandeLayout.addMultiCellWidget(self.buttonGroup1,0,1,3,3) - - self.textLabel1_4 = QLabel(self.Commande,"textLabel1_4") - - CommandeLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,1) - - self.BNext = QToolButton(self.Commande,"BNext") - self.BNext.setMinimumSize(QSize(60,0)) - self.BNext.setIconSet(QIconSet()) - - CommandeLayout.addWidget(self.BNext,1,2) - - self.textLabel6 = QLabel(self.Commande,"textLabel6") - self.textLabel6.setMinimumSize(QSize(40,0)) - - CommandeLayout.addWidget(self.textLabel6,1,0) - - self.textLabel4 = QLabel(self.Commande,"textLabel4") - - CommandeLayout.addMultiCellWidget(self.textLabel4,3,3,0,3) - - self.LEFiltre = QLineEdit(self.Commande,"LEFiltre") - self.LEFiltre.setMinimumSize(QSize(160,30)) - - CommandeLayout.addWidget(self.LEFiltre,1,1) - self.TWChoix.insertTab(self.Commande,QString.fromLatin1("")) - - self.TabPage = QWidget(self.TWChoix,"TabPage") - - self.groupBox1_2 = QGroupBox(self.TabPage,"groupBox1_2") - self.groupBox1_2.setGeometry(QRect(0,0,520,380)) - - self.textLabel3_2 = QLabel(self.groupBox1_2,"textLabel3_2") - self.textLabel3_2.setGeometry(QRect(10,230,320,31)) - - self.typeConcept = QLabel(self.groupBox1_2,"typeConcept") - self.typeConcept.setGeometry(QRect(360,230,130,31)) - - self.textLabel1_3_2_3 = QLabel(self.groupBox1_2,"textLabel1_3_2_3") - self.textLabel1_3_2_3.setGeometry(QRect(20,200,160,31)) - - self.textLabel1_3_3 = QLabel(self.groupBox1_2,"textLabel1_3_3") - self.textLabel1_3_3.setGeometry(QRect(20,50,150,31)) - - self.LENomConcept = QLineEdit(self.groupBox1_2,"LENomConcept") - self.LENomConcept.setGeometry(QRect(20,80,440,30)) - self.TWChoix.insertTab(self.TabPage,QString.fromLatin1("")) - - DMacroLayout.addMultiCellWidget(self.TWChoix,0,0,0,2) - - self.bSup = QPushButton(self,"bSup") - self.bSup.setMinimumSize(QSize(0,30)) - self.bSup.setAutoDefault(1) - - DMacroLayout.addWidget(self.bSup,2,0) - - self.bHelp = QPushButton(self,"bHelp") - self.bHelp.setMinimumSize(QSize(0,30)) - self.bHelp.setAutoDefault(1) - - DMacroLayout.addWidget(self.bHelp,2,2) - - self.bOk = QPushButton(self,"bOk") - self.bOk.setMinimumSize(QSize(0,30)) - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - - DMacroLayout.addWidget(self.bOk,2,1) - - self.languageChange() - - self.resize(QSize(521,499).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) - self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged) - self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed) - self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) - self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.BNext,SIGNAL("clicked()"),self.BNextPressed) - self.connect(self.LENomConcept,SIGNAL("returnPressed()"),self.LENomConceptReturnPressed) - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - - self.setTabOrder(self.LEFiltre,self.LENomConcept) - self.setTabOrder(self.LENomConcept,self.TWChoix) - self.setTabOrder(self.TWChoix,self.LBMCPermis) - self.setTabOrder(self.LBMCPermis,self.LBRegles) - self.setTabOrder(self.LBRegles,self.LBNouvCommande) - self.setTabOrder(self.LBNouvCommande,self.RBalpha) - self.setTabOrder(self.RBalpha,self.bSup) - self.setTabOrder(self.bSup,self.bHelp) - self.setTabOrder(self.bHelp,self.bOk) - - - def languageChange(self): - self.setCaption(self.__tr("DMacro")) - self.Commentaire.setText(QString.null) - self.textLabel1_2.setText(self.__trUtf8("\x3c\x68\x33\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x3c\x75\x3e\x3c\x62\x3e\x52\xc3\xa9\x67\x6c\x65\x73\x3c\x2f\x62\x3e\x3c\x2f\x75\x3e\x3c\x2f\x70\x3e\x3c\x2f\x68\x33\x3e")) - self.textLabel1.setText(self.__tr("

Mots Clefs Permis

")) - self.TWChoix.changeTab(self.MotClef,self.__tr("Ajouter Mot-Clef")) - self.buttonGroup1.setTitle(self.__tr("Affichage")) - self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65")) - self.RBGroupe.setText(self.__tr("par groupe")) - self.textLabel1_4.setText(self.__tr("Commandes :")) - self.BNext.setText(self.__tr("Suivant")) - QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence")) - self.textLabel6.setText(self.__tr("Filtre")) - self.textLabel4.setText(self.__trUtf8("\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x68\x6f\x69\x73\x69\x65\x20\x73\x65\x72\x61\x20\x61\x6a\x6f\x75\x74\xc3\xa9\x65\x20\x41\x50\x52\x45\x53\x20\x6c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x6f\x75\x72\x61\x6e\x74\x65")) - self.TWChoix.changeTab(self.Commande,self.__tr("Nouvelle Commande")) - self.groupBox1_2.setTitle(self.__tr("Concept")) - self.textLabel3_2.setText(self.__trUtf8("\x4c\x27\x6f\x70\xc3\xa9\x72\x61\x74\x65\x75\x72\x20\x63\x6f\x75\x72\x61\x6e\x74\x20\x72\x65\x74\x6f\x75\x72\x6e\x65\x20\x75\x6e\x20\x63\x6f\x6e\x63\x65\x70\x74\x20\x64\x65\x20\x74\x79\x70\x65\x20\x3a")) - self.typeConcept.setText(self.__tr("TypeDuConcept")) - self.textLabel1_3_2_3.setText(self.__tr("Type du concept :")) - self.textLabel1_3_3.setText(self.__tr("Nom du concept :")) - self.TWChoix.changeTab(self.TabPage,self.__tr("Nommer Concept")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(QKeySequence(self.__tr("Alt+S"))) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(QKeySequence(self.__tr("Alt+D"))) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(QKeySequence(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - - - def LBNouvCommandeClicked(self): - print "DMacro.LBNouvCommandeClicked(): Not implemented yet" - - def LEFiltreTextChanged(self): - print "DMacro.LEFiltreTextChanged(): Not implemented yet" - - def LEfiltreReturnPressed(self): - print "DMacro.LEfiltreReturnPressed(): Not implemented yet" - - def BSupPressed(self): - print "DMacro.BSupPressed(): Not implemented yet" - - def BOkPressed(self): - print "DMacro.BOkPressed(): Not implemented yet" - - def BuildTabCommand(self): - print "DMacro.BuildTabCommand(): Not implemented yet" - - def BNextPressed(self): - print "DMacro.BNextPressed(): Not implemented yet" - - def LENomConceptReturnPressed(self): - print "DMacro.LENomConceptReturnPressed(): Not implemented yet" - - def ViewDoc(self): - print "DMacro.ViewDoc(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DMacro",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DMacro",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desMacro.ui b/Ui/desMacro.ui index d451544b..1390f4f5 100644 --- a/Ui/desMacro.ui +++ b/Ui/desMacro.ui @@ -8,13 +8,21 @@ 0 0 - 521 + 529 499 + + + 3 + 5 + 0 + 0 + + - 505 + 50 0 diff --git a/Ui/desParam.py b/Ui/desParam.py deleted file mode 100644 index bd886581..00000000 --- a/Ui/desParam.py +++ /dev/null @@ -1,209 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desParam.ui' -# -# Created: ven mai 16 13:30:38 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DParam(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DParam") - - self.setMinimumSize(QSize(505,0)) - - DParamLayout = QGridLayout(self,1,1,11,6,"DParamLayout") - - self.Commentaire = QLabel(self,"Commentaire") - self.Commentaire.setFrameShape(QLabel.NoFrame) - self.Commentaire.setFrameShadow(QLabel.Plain) - - DParamLayout.addMultiCellWidget(self.Commentaire,1,1,0,2) - - self.TWChoix = QTabWidget(self,"TWChoix") - - self.Valeur_Parametre = QWidget(self.TWChoix,"Valeur_Parametre") - - self.textLabel2_2_2 = QLabel(self.Valeur_Parametre,"textLabel2_2_2") - self.textLabel2_2_2.setGeometry(QRect(80,11,231,89)) - - self.Commentaire_2 = QLabel(self.Valeur_Parametre,"Commentaire_2") - self.Commentaire_2.setGeometry(QRect(11,275,459,89)) - - self.lineEditNom = QLineEdit(self.Valeur_Parametre,"lineEditNom") - self.lineEditNom.setGeometry(QRect(80,106,231,31)) - self.lineEditNom.setMinimumSize(QSize(231,31)) - - self.textLabel2_2 = QLabel(self.Valeur_Parametre,"textLabel2_2") - self.textLabel2_2.setGeometry(QRect(11,106,63,31)) - - self.textLabel2 = QLabel(self.Valeur_Parametre,"textLabel2") - self.textLabel2.setGeometry(QRect(11,143,63,31)) - - self.Commentaire2 = QLabel(self.Valeur_Parametre,"Commentaire2") - self.Commentaire2.setGeometry(QRect(11,180,459,89)) - - self.lineEditVal = QLineEdit(self.Valeur_Parametre,"lineEditVal") - self.lineEditVal.setGeometry(QRect(80,143,231,31)) - self.lineEditVal.setMinimumSize(QSize(231,31)) - self.TWChoix.insertTab(self.Valeur_Parametre,QString("")) - - self.Commande = QWidget(self.TWChoix,"Commande") - CommandeLayout = QGridLayout(self.Commande,1,1,11,6,"CommandeLayout") - - self.textLabel6 = QLabel(self.Commande,"textLabel6") - self.textLabel6.setMinimumSize(QSize(40,0)) - - CommandeLayout.addWidget(self.textLabel6,1,0) - - self.LBNouvCommande = QListBox(self.Commande,"LBNouvCommande") - - CommandeLayout.addMultiCellWidget(self.LBNouvCommande,2,2,0,3) - - self.buttonGroup1 = QButtonGroup(self.Commande,"buttonGroup1") - - self.RBGroupe = QRadioButton(self.buttonGroup1,"RBGroupe") - self.RBGroupe.setGeometry(QRect(20,40,101,20)) - - self.RBalpha = QRadioButton(self.buttonGroup1,"RBalpha") - self.RBalpha.setGeometry(QRect(20,20,120,20)) - self.RBalpha.setChecked(1) - - CommandeLayout.addMultiCellWidget(self.buttonGroup1,0,1,3,3) - - self.textLabel1_4 = QLabel(self.Commande,"textLabel1_4") - - CommandeLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,1) - - self.textLabel4 = QLabel(self.Commande,"textLabel4") - - CommandeLayout.addMultiCellWidget(self.textLabel4,3,3,0,3) - - self.BNext = QToolButton(self.Commande,"BNext") - self.BNext.setMinimumSize(QSize(60,0)) - self.BNext.setIconSet(QIconSet()) - - CommandeLayout.addWidget(self.BNext,1,2) - - self.LEFiltre = QLineEdit(self.Commande,"LEFiltre") - self.LEFiltre.setMinimumSize(QSize(160,30)) - - CommandeLayout.addWidget(self.LEFiltre,1,1) - self.TWChoix.insertTab(self.Commande,QString("")) - - DParamLayout.addMultiCellWidget(self.TWChoix,0,0,0,2) - - self.bOk = QPushButton(self,"bOk") - self.bOk.setMinimumSize(QSize(0,30)) - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - - DParamLayout.addWidget(self.bOk,2,1) - - self.bSup = QPushButton(self,"bSup") - self.bSup.setMinimumSize(QSize(0,30)) - self.bSup.setAutoDefault(1) - - DParamLayout.addWidget(self.bSup,2,0) - - self.bHelp = QPushButton(self,"bHelp") - self.bHelp.setMinimumSize(QSize(0,30)) - self.bHelp.setAutoDefault(1) - - DParamLayout.addWidget(self.bHelp,2,2) - - self.languageChange() - - self.resize(QSize(505,483).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) - self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged) - self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed) - self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) - self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - self.connect(self.BNext,SIGNAL("pressed()"),self.BNextPressed) - self.connect(self.lineEditVal,SIGNAL("returnPressed()"),self.BOkPressed) - - self.setTabOrder(self.LEFiltre,self.TWChoix) - self.setTabOrder(self.TWChoix,self.lineEditNom) - self.setTabOrder(self.lineEditNom,self.lineEditVal) - self.setTabOrder(self.lineEditVal,self.LBNouvCommande) - self.setTabOrder(self.LBNouvCommande,self.RBalpha) - self.setTabOrder(self.RBalpha,self.bOk) - self.setTabOrder(self.bOk,self.bSup) - self.setTabOrder(self.bSup,self.bHelp) - - - def languageChange(self): - self.setCaption(self.__tr("DComm")) - self.Commentaire.setText(QString.null) - self.textLabel2_2_2.setText(self.__tr("

Parametre

")) - self.Commentaire_2.setText(QString.null) - self.textLabel2_2.setText(self.__tr(" Nom: ")) - self.textLabel2.setText(self.__tr(" Valeur: ")) - self.Commentaire2.setText(self.__trUtf8("\x52\x65\x74\x6f\x75\x72\x20\x43\x68\x61\x72\x69\x6f\x74\x20\x64\x61\x6e\x73\x20\x75\x6e\x65\x20\x73\x6f\x6e\x65\x20\x64\x65\x20\x73\x61\x69\x73\x69\x65\x20\x70\x65\x72\x6d\x65\x74\x20\x64\x65\x20\x76\xc3\xa9\x72\x69\x66\x69\x65\x72\x20\x6c\x61\x20\x0a\x76\x61\x6c\x69\x64\x69\x74\xc3\xa9\x20\x64\x65\x20\x6c\x61\x20\x76\x61\x6c\x65\x75\x72\x20\x73\x61\x69\x73\x69\x65\x2e\x0a\x0a\x4c\x65\x73\x20\x6e\x6f\x75\x76\x65\x6c\x6c\x65\x73\x20\x76\x61\x6c\x65\x75\x72\x73\x20\x6e\x65\x20\x73\x65\x72\x6f\x6e\x74\x20\x70\x72\x69\x73\x65\x73\x20\x20\x65\x6e\x20\x63\x6f\x6d\x70\x74\x65\x20\x71\x75\x27\x61\x70\x72\xc3\xa8\x73\x20\x61\x76\x6f\x69\x72\x20\x0a\x61\x70\x70\x75\x79\xc3\xa9\x20\x73\x75\x72\x20\x20\x6c\x65\x20\x62\x6f\x75\x74\x6f\x6e\x20\x56\x61\x6c\x69\x64\x65\x72\x2e")) - self.TWChoix.changeTab(self.Valeur_Parametre,self.__tr("Valeur Parametre")) - self.textLabel6.setText(self.__tr("Filtre")) - self.buttonGroup1.setTitle(self.__tr("Affichage")) - self.RBGroupe.setText(self.__tr("par groupe")) - self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65")) - self.textLabel1_4.setText(self.__tr("Commandes :")) - self.textLabel4.setText(self.__trUtf8("\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x68\x6f\x69\x73\x69\x65\x20\x73\x65\x72\x61\x20\x61\x6a\x6f\x75\x74\xc3\xa9\x65\x20\x41\x50\x52\x45\x53\x20\x6c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x6f\x75\x72\x61\x6e\x74\x65")) - self.BNext.setText(self.__tr("Suivant")) - QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence")) - self.TWChoix.changeTab(self.Commande,self.__tr("Nouvelle Commande")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(self.__tr("Alt+D")) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - - - def LBNouvCommandeClicked(self): - print "DParam.LBNouvCommandeClicked(): Not implemented yet" - - def LEFiltreTextChanged(self): - print "DParam.LEFiltreTextChanged(): Not implemented yet" - - def LEfiltreReturnPressed(self): - print "DParam.LEfiltreReturnPressed(): Not implemented yet" - - def BSupPressed(self): - print "DParam.BSupPressed(): Not implemented yet" - - def LENomConceptReturnPressed(self): - print "DParam.LENomConceptReturnPressed(): Not implemented yet" - - def BOkPressed(self): - print "DParam.BOkPressed(): Not implemented yet" - - def BuildTabCommand(self): - print "DParam.BuildTabCommand(): Not implemented yet" - - def ViewDoc(self): - print "DParam.ViewDoc(): Not implemented yet" - - def BNextPressed(self): - print "DParam.BNextPressed(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DParam",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DParam",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desParam.ui b/Ui/desParam.ui index 7aa81f89..ccf3316b 100644 --- a/Ui/desParam.ui +++ b/Ui/desParam.ui @@ -8,13 +8,21 @@ 0 0 - 505 + 517 483 + + + 3 + 5 + 0 + 0 + + - 505 + 50 0 diff --git a/Ui/desPlusieursBase.py b/Ui/desPlusieursBase.py deleted file mode 100644 index dc7ca0f1..00000000 --- a/Ui/desPlusieursBase.py +++ /dev/null @@ -1,293 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desPlusieursBase.ui' -# -# Created: lun mai 5 17:43:44 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - -image0_data = \ - "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \ - "\x49\x48\x44\x52\x00\x00\x00\x14\x00\x00\x00\x14" \ - "\x08\x06\x00\x00\x00\x8d\x89\x1d\x0d\x00\x00\x00" \ - "\x8d\x49\x44\x41\x54\x38\x8d\xb5\xd3\xdb\x0d\x80" \ - "\x20\x0c\x05\xd0\x5b\xe3\x3a\x8e\xe2\x4c\x86\x99" \ - "\x18\x85\x81\xea\x87\xc6\xc4\xd2\x56\x28\xd8\x84" \ - "\x0f\x5e\x27\x17\x50\x02\x63\x6a\x2d\x73\xb9\x1f" \ - "\xc0\xb5\x69\x15\x39\x17\xc3\xa0\x7e\xf0\xae\x9c" \ - "\xca\xab\xbf\x1f\x5b\xb5\xa6\xed\xc8\x0c\x02\x83" \ - "\x34\x20\x06\x02\x00\x81\x65\xc2\x38\x28\x30\x2f" \ - "\xa9\x77\xdd\x36\xc6\xa0\x67\xa7\x78\x14\x3f\xa1" \ - "\x85\xf9\x5b\xe6\x61\x76\xc2\x20\xa6\x83\x03\x58" \ - "\x0d\x0e\x62\x7a\xc2\x01\xcc\x04\xa3\xd8\x55\x2c" \ - "\x1a\xc0\x39\x95\xab\x27\xe7\x5a\x9a\x3e\x18\x47" \ - "\xdd\xef\x30\x72\xec\xef\x5f\xaf\xb3\x4e\xcb\x01" \ - "\x65\xf7\x82\x6b\x45\x7b\x00\x00\x00\x00\x49\x45" \ - "\x4e\x44\xae\x42\x60\x82" -image1_data = \ - "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \ - "\x49\x48\x44\x52\x00\x00\x00\x21\x00\x00\x00\x0e" \ - "\x08\x06\x00\x00\x00\xa1\x1e\x75\x8c\x00\x00\x00" \ - "\xc7\x49\x44\x41\x54\x38\x8d\xcd\x94\x59\x0e\xc3" \ - "\x20\x0c\x44\x71\xd5\x7b\xc7\x3d\xf9\xf4\x07\xd3" \ - "\x31\xb1\x59\xa2\x28\xaa\x25\x44\x48\xbc\x3c\xc6" \ - "\x81\x52\xfe\xc0\xe4\x42\x0c\xee\xce\xb9\x12\xe0" \ - "\x8a\x02\x39\x83\x88\x48\xf5\xdf\x02\xc9\x9c\x11" \ - "\xf8\x60\x04\x30\x01\x19\x05\x4a\xe8\x68\xc5\x6a" \ - "\xc2\x06\xc0\x6b\x4b\x10\x91\x11\xc8\x02\x87\x4f" \ - "\x3a\x52\xa5\x87\x75\x71\x23\x89\x7e\x40\x39\xc4" \ - "\x6b\x50\xd8\x86\x5b\x07\xf5\x40\x0a\x45\x00\x53" \ - "\x33\x08\x93\xcf\x86\x74\xa3\x00\x28\xd4\x92\xde" \ - "\xef\x04\x62\x6b\x55\x9d\xfe\x48\xac\x84\x2b\x1a" \ - "\x6d\xaa\xe6\x85\x01\x55\x03\x3b\x99\xc5\x00\x9f" \ - "\x70\xce\xda\x11\x1a\xab\x41\x3b\x6f\x6a\x70\xd1" \ - "\x18\xe0\x08\xe6\xfd\x8b\xc5\x1d\x5d\x00\xa0\xf6" \ - "\x14\x55\x6d\x1f\xf9\xb9\xbe\x49\x52\xaa\xbc\x37" \ - "\x21\xf8\xf8\xb6\xf6\x24\xc5\x57\xef\x89\x47\xaf" \ - "\xed\xf4\x8c\x5e\x60\xb8\xdf\xbe\xb8\x1d\x6d\xab" \ - "\x9a\xff\x99\x27\x00\x00\x00\x00\x49\x45\x4e\x44" \ - "\xae\x42\x60\x82" -image2_data = \ - "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \ - "\x49\x48\x44\x52\x00\x00\x00\x21\x00\x00\x00\x0e" \ - "\x08\x06\x00\x00\x00\xa1\x1e\x75\x8c\x00\x00\x00" \ - "\xcf\x49\x44\x41\x54\x38\x8d\xd5\x94\xdb\x0e\xc3" \ - "\x20\x0c\x43\xed\xfd\xf8\xd8\x97\xbb\x0f\x34\x5b" \ - "\x48\x08\x45\xd5\x1e\xb6\x48\x88\xf4\x12\xe7\x60" \ - "\x01\xc0\x0f\x04\x6f\xd6\xe9\x9b\xba\x77\x20\x04" \ - "\x80\x92\x4a\x10\x32\xc9\x2e\xfb\xd8\xc7\xd5\xca" \ - "\xbc\xc0\x25\x40\x00\x99\xe9\x57\x84\x95\x68\xfe" \ - "\x7f\x06\xc0\xde\xd1\xde\xb3\x2b\x4a\x1e\xc4\xea" \ - "\x82\x4b\x9e\x74\x09\x71\x65\xbd\x01\xf8\x55\x27" \ - "\xf7\x8a\x72\x01\xe0\xa3\x12\x9f\x34\x5a\x01\x7c" \ - "\x54\x3b\xaf\xdc\x98\x3d\x0f\x71\x09\xd1\x5a\x33" \ - "\x1b\x47\x1f\x47\x07\x2c\x17\x49\x4a\x82\x33\x8f" \ - "\x61\x78\x20\x3a\x88\x17\xe6\x73\x06\xb1\xf0\x8b" \ - "\x07\xba\x03\xe6\x02\xc9\xb8\x31\x07\x7e\x37\xe0" \ - "\x20\x9e\x67\xe3\x38\x67\x10\x97\x7b\x17\xde\x80" \ - "\xc1\x85\xad\x38\x69\x5a\x51\xd5\x22\xc8\x2c\xe7" \ - "\x79\x12\xe2\xfe\xd8\xbe\x83\x76\x20\x92\xf5\x2b" \ - "\x18\x20\xdd\x11\xbb\x10\xe5\x65\xb5\x3a\x5a\x3b" \ - "\xba\xff\x13\x07\x13\xd6\x6f\xa6\x98\x18\x57\x06" \ - "\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82" - -class DPlusBase(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - self.image0 = QPixmap() - self.image0.loadFromData(image0_data,"PNG") - self.image1 = QPixmap() - self.image1.loadFromData(image1_data,"PNG") - self.image2 = QPixmap() - self.image2.loadFromData(image2_data,"PNG") - if not name: - self.setName("DPlusBase") - - self.setMinimumSize(QSize(350,0)) - self.setIcon(self.image0) - - DPlusBaseLayout = QGridLayout(self,1,1,11,6,"DPlusBaseLayout") - - self.tabuniqueinto = QTabWidget(self,"tabuniqueinto") - - self.Widget8 = QWidget(self.tabuniqueinto,"Widget8") - Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout") - - self.textLabel1 = QLabel(self.Widget8,"textLabel1") - - Widget8Layout.addWidget(self.textLabel1,0,0) - - self.LBValeurs = QListBox(self.Widget8,"LBValeurs") - self.LBValeurs.setMinimumSize(QSize(200,0)) - - Widget8Layout.addMultiCellWidget(self.LBValeurs,1,9,0,0) - spacer4 = QSpacerItem(21,231,QSizePolicy.Minimum,QSizePolicy.Expanding) - Widget8Layout.addMultiCell(spacer4,5,9,1,2) - spacer3_3 = QSpacerItem(31,30,QSizePolicy.Minimum,QSizePolicy.Expanding) - Widget8Layout.addMultiCell(spacer3_3,0,0,1,2) - - self.BAjout1Val = QToolButton(self.Widget8,"BAjout1Val") - self.BAjout1Val.setSizePolicy(QSizePolicy(0,0,0,0,self.BAjout1Val.sizePolicy().hasHeightForWidth())) - self.BAjout1Val.setMinimumSize(QSize(40,30)) - self.BAjout1Val.setIconSet(QIconSet(self.image1)) - - Widget8Layout.addMultiCellWidget(self.BAjout1Val,2,2,1,2) - spacer5 = QSpacerItem(150,20,QSizePolicy.Expanding,QSizePolicy.Minimum) - Widget8Layout.addMultiCell(spacer5,8,8,2,4) - - layout7 = QVBoxLayout(None,0,6,"layout7") - - self.bParam = QPushButton(self.Widget8,"bParam") - self.bParam.setMinimumSize(QSize(0,30)) - self.bParam.setAutoDefault(1) - layout7.addWidget(self.bParam) - - self.bImport = QPushButton(self.Widget8,"bImport") - self.bImport.setMinimumSize(QSize(0,30)) - self.bImport.setAutoDefault(1) - layout7.addWidget(self.bImport) - - Widget8Layout.addMultiCellLayout(layout7,7,8,5,5) - spacer3 = QSpacerItem(31,50,QSizePolicy.Minimum,QSizePolicy.Expanding) - Widget8Layout.addItem(spacer3,6,5) - spacer3_2 = QSpacerItem(31,50,QSizePolicy.Minimum,QSizePolicy.Expanding) - Widget8Layout.addItem(spacer3_2,9,5) - - self.BSalome = QToolButton(self.Widget8,"BSalome") - self.BSalome.setSizePolicy(QSizePolicy(0,0,0,0,self.BSalome.sizePolicy().hasHeightForWidth())) - self.BSalome.setMinimumSize(QSize(40,30)) - self.BSalome.setIconSet(QIconSet(self.image0)) - - Widget8Layout.addWidget(self.BSalome,4,3) - - self.BView2D = QPushButton(self.Widget8,"BView2D") - self.BView2D.setMinimumSize(QSize(120,30)) - - Widget8Layout.addMultiCellWidget(self.BView2D,4,4,4,5) - - layout12 = QHBoxLayout(None,0,6,"layout12") - - self.textLabel1_2 = QLabel(self.Widget8,"textLabel1_2") - layout12.addWidget(self.textLabel1_2) - spacer6 = QSpacerItem(111,20,QSizePolicy.Expanding,QSizePolicy.Minimum) - layout12.addItem(spacer6) - - Widget8Layout.addMultiCellLayout(layout12,0,1,3,5) - - self.LEValeur = QLineEdit(self.Widget8,"LEValeur") - self.LEValeur.setSizePolicy(QSizePolicy(1,1,0,0,self.LEValeur.sizePolicy().hasHeightForWidth())) - self.LEValeur.setMinimumSize(QSize(220,30)) - - Widget8Layout.addMultiCellWidget(self.LEValeur,2,3,3,5) - - self.BSup1Val = QToolButton(self.Widget8,"BSup1Val") - self.BSup1Val.setSizePolicy(QSizePolicy(0,0,0,0,self.BSup1Val.sizePolicy().hasHeightForWidth())) - self.BSup1Val.setMinimumSize(QSize(40,30)) - self.BSup1Val.setIconSet(QIconSet(self.image2)) - - Widget8Layout.addMultiCellWidget(self.BSup1Val,3,4,1,2) - - self.Commentaire = QLabel(self.Widget8,"Commentaire") - self.Commentaire.setMinimumSize(QSize(0,60)) - - Widget8Layout.addMultiCellWidget(self.Commentaire,5,5,3,5) - - layout6 = QHBoxLayout(None,0,6,"layout6") - - self.bSup = QPushButton(self.Widget8,"bSup") - self.bSup.setMinimumSize(QSize(0,30)) - self.bSup.setAutoDefault(1) - layout6.addWidget(self.bSup) - - self.bOk = QPushButton(self.Widget8,"bOk") - self.bOk.setMinimumSize(QSize(0,30)) - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - layout6.addWidget(self.bOk) - - self.bHelp = QPushButton(self.Widget8,"bHelp") - self.bHelp.setMinimumSize(QSize(0,30)) - self.bHelp.setAutoDefault(1) - layout6.addWidget(self.bHelp) - - Widget8Layout.addMultiCellLayout(layout6,10,10,0,5) - self.tabuniqueinto.insertTab(self.Widget8,QString("")) - - DPlusBaseLayout.addWidget(self.tabuniqueinto,0,0) - - self.languageChange() - - self.resize(QSize(552,480).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPourListePressed) - self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed) - self.connect(self.bParam,SIGNAL("clicked()"),self.BParametresPressed) - self.connect(self.bImport,SIGNAL("clicked()"),self.BImportPressed) - self.connect(self.BAjout1Val,SIGNAL("clicked()"),self.Ajout1Valeur) - self.connect(self.BSup1Val,SIGNAL("clicked()"),self.Sup1Valeur) - self.connect(self.LEValeur,SIGNAL("returnPressed()"),self.LEValeurPressed) - self.connect(self.BSalome,SIGNAL("clicked()"),self.BSalomePressed) - self.connect(self.BView2D,SIGNAL("clicked()"),self.BView2DPressed) - - self.setTabOrder(self.LEValeur,self.tabuniqueinto) - self.setTabOrder(self.tabuniqueinto,self.bSup) - self.setTabOrder(self.bSup,self.bOk) - self.setTabOrder(self.bOk,self.bHelp) - self.setTabOrder(self.bHelp,self.bParam) - self.setTabOrder(self.bParam,self.bImport) - self.setTabOrder(self.bImport,self.LBValeurs) - self.setTabOrder(self.LBValeurs,self.BView2D) - - - def languageChange(self): - self.setCaption(self.__tr("DUnIn")) - self.textLabel1.setText(self.__tr("Valeur(s) actuelle(s)")) - self.BAjout1Val.setText(QString.null) - QToolTip.add(self.BAjout1Val,self.__trUtf8("\x61\x6a\x6f\x75\x74\x65\x20\x6c\x61\x20\x76\x61\x6c\x65\x75\x72\x20\x73\x61\x69\x73\x69\x65\x20\x73\x6f\x75\x73\x20\x6c\x20\x6f\x63\x63\x75\x72\x65\x6e\x63\x65\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x6e\xc3\xa9\x65\x20\x28\x65\x6e\x20\x66\x69\x6e\x20\x64\x65\x20\x6c\x69\x73\x74\x65\x20\x73\x69\x20\x69\x6c\x20\x6e\x20\x79\x20\x61\x20\x70\x61\x73\x20\x64\x65\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x29")) - self.bParam.setText(self.__tr("&Parametres")) - self.bParam.setAccel(self.__tr("Alt+P")) - QToolTip.add(self.bParam,self.__tr("suppression du mot clef")) - self.bImport.setText(self.__tr("&Importer")) - self.bImport.setAccel(self.__tr("Alt+I")) - QToolTip.add(self.bImport,self.__tr("suppression du mot clef")) - self.BSalome.setText(QString.null) - QToolTip.add(self.BSalome,self.__trUtf8("\x61\x6a\x6f\x75\x74\x65\x20\x6c\x61\x20\x76\x61\x6c\x65\x75\x72\x20\x73\x61\x69\x73\x69\x65\x20\x73\x6f\x75\x73\x20\x6c\x20\x6f\x63\x63\x75\x72\x65\x6e\x63\x65\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x6e\xc3\xa9\x65\x20\x28\x65\x6e\x20\x66\x69\x6e\x20\x64\x65\x20\x6c\x69\x73\x74\x65\x20\x73\x69\x20\x69\x6c\x20\x6e\x20\x79\x20\x61\x20\x70\x61\x73\x20\x64\x65\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x29")) - self.BView2D.setText(self.__tr("Visualiser")) - self.textLabel1_2.setText(self.__tr("Valeur")) - self.BSup1Val.setText(QString.null) - QToolTip.add(self.BSup1Val,self.__tr("enleve l occurence selectionnee")) - self.Commentaire.setText(QString.null) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(self.__tr("Alt+D")) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur")) - - - def BSupPressed(self): - print "DPlusBase.BSupPressed(): Not implemented yet" - - def ViewDoc(self): - print "DPlusBase.ViewDoc(): Not implemented yet" - - def BOkPourListePressed(self): - print "DPlusBase.BOkPourListePressed(): Not implemented yet" - - def BParametresPressed(self): - print "DPlusBase.BParametresPressed(): Not implemented yet" - - def LEValeurPressed(self): - print "DPlusBase.LEValeurPressed(): Not implemented yet" - - def Ajout1Valeur(self): - print "DPlusBase.Ajout1Valeur(): Not implemented yet" - - def Sup1Valeur(self): - print "DPlusBase.Sup1Valeur(): Not implemented yet" - - def BImportPressed(self): - print "DPlusBase.BImportPressed(): Not implemented yet" - - def BSalomePressed(self): - print "DPlusBase.BSalomePressed(): Not implemented yet" - - def BView2DPressed(self): - print "DPlusBase.BView2DPressed(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DPlusBase",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DPlusBase",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desPlusieursBase.ui b/Ui/desPlusieursBase.ui index a6a4eb0c..5a97e371 100644 --- a/Ui/desPlusieursBase.ui +++ b/Ui/desPlusieursBase.ui @@ -8,13 +8,13 @@ 0 0 - 552 + 581 480 - 350 + 50 0 diff --git a/Ui/desPlusieursInto.py b/Ui/desPlusieursInto.py deleted file mode 100644 index 224aa87c..00000000 --- a/Ui/desPlusieursInto.py +++ /dev/null @@ -1,207 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desPlusieursInto.ui' -# -# Created: ven avr 4 11:27:09 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - -image0_data = \ - "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \ - "\x49\x48\x44\x52\x00\x00\x00\x21\x00\x00\x00\x0e" \ - "\x08\x06\x00\x00\x00\xa1\x1e\x75\x8c\x00\x00\x00" \ - "\xcf\x49\x44\x41\x54\x38\x8d\xd5\x94\xdb\x0e\xc3" \ - "\x20\x0c\x43\xed\xfd\xf8\xd8\x97\xbb\x0f\x34\x5b" \ - "\x48\x08\x45\xd5\x1e\xb6\x48\x88\xf4\x12\xe7\x60" \ - "\x01\xc0\x0f\x04\x6f\xd6\xe9\x9b\xba\x77\x20\x04" \ - "\x80\x92\x4a\x10\x32\xc9\x2e\xfb\xd8\xc7\xd5\xca" \ - "\xbc\xc0\x25\x40\x00\x99\xe9\x57\x84\x95\x68\xfe" \ - "\x7f\x06\xc0\xde\xd1\xde\xb3\x2b\x4a\x1e\xc4\xea" \ - "\x82\x4b\x9e\x74\x09\x71\x65\xbd\x01\xf8\x55\x27" \ - "\xf7\x8a\x72\x01\xe0\xa3\x12\x9f\x34\x5a\x01\x7c" \ - "\x54\x3b\xaf\xdc\x98\x3d\x0f\x71\x09\xd1\x5a\x33" \ - "\x1b\x47\x1f\x47\x07\x2c\x17\x49\x4a\x82\x33\x8f" \ - "\x61\x78\x20\x3a\x88\x17\xe6\x73\x06\xb1\xf0\x8b" \ - "\x07\xba\x03\xe6\x02\xc9\xb8\x31\x07\x7e\x37\xe0" \ - "\x20\x9e\x67\xe3\x38\x67\x10\x97\x7b\x17\xde\x80" \ - "\xc1\x85\xad\x38\x69\x5a\x51\xd5\x22\xc8\x2c\xe7" \ - "\x79\x12\xe2\xfe\xd8\xbe\x83\x76\x20\x92\xf5\x2b" \ - "\x18\x20\xdd\x11\xbb\x10\xe5\x65\xb5\x3a\x5a\x3b" \ - "\xba\xff\x13\x07\x13\xd6\x6f\xa6\x98\x18\x57\x06" \ - "\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82" -image1_data = \ - "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \ - "\x49\x48\x44\x52\x00\x00\x00\x21\x00\x00\x00\x0e" \ - "\x08\x06\x00\x00\x00\xa1\x1e\x75\x8c\x00\x00\x00" \ - "\xc7\x49\x44\x41\x54\x38\x8d\xcd\x94\x59\x0e\xc3" \ - "\x20\x0c\x44\x71\xd5\x7b\xc7\x3d\xf9\xf4\x07\xd3" \ - "\x31\xb1\x59\xa2\x28\xaa\x25\x44\x48\xbc\x3c\xc6" \ - "\x81\x52\xfe\xc0\xe4\x42\x0c\xee\xce\xb9\x12\xe0" \ - "\x8a\x02\x39\x83\x88\x48\xf5\xdf\x02\xc9\x9c\x11" \ - "\xf8\x60\x04\x30\x01\x19\x05\x4a\xe8\x68\xc5\x6a" \ - "\xc2\x06\xc0\x6b\x4b\x10\x91\x11\xc8\x02\x87\x4f" \ - "\x3a\x52\xa5\x87\x75\x71\x23\x89\x7e\x40\x39\xc4" \ - "\x6b\x50\xd8\x86\x5b\x07\xf5\x40\x0a\x45\x00\x53" \ - "\x33\x08\x93\xcf\x86\x74\xa3\x00\x28\xd4\x92\xde" \ - "\xef\x04\x62\x6b\x55\x9d\xfe\x48\xac\x84\x2b\x1a" \ - "\x6d\xaa\xe6\x85\x01\x55\x03\x3b\x99\xc5\x00\x9f" \ - "\x70\xce\xda\x11\x1a\xab\x41\x3b\x6f\x6a\x70\xd1" \ - "\x18\xe0\x08\xe6\xfd\x8b\xc5\x1d\x5d\x00\xa0\xf6" \ - "\x14\x55\x6d\x1f\xf9\xb9\xbe\x49\x52\xaa\xbc\x37" \ - "\x21\xf8\xf8\xb6\xf6\x24\xc5\x57\xef\x89\x47\xaf" \ - "\xed\xf4\x8c\x5e\x60\xb8\xdf\xbe\xb8\x1d\x6d\xab" \ - "\x9a\xff\x99\x27\x00\x00\x00\x00\x49\x45\x4e\x44" \ - "\xae\x42\x60\x82" - -class DPlusInto(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - self.image0 = QPixmap() - self.image0.loadFromData(image0_data,"PNG") - self.image1 = QPixmap() - self.image1.loadFromData(image1_data,"PNG") - if not name: - self.setName("DPlusInto") - - self.setMinimumSize(QSize(350,0)) - - DPlusIntoLayout = QGridLayout(self,1,1,11,6,"DPlusIntoLayout") - - self.tabuniqueinto = QTabWidget(self,"tabuniqueinto") - - self.Widget8 = QWidget(self.tabuniqueinto,"Widget8") - Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout") - - self.textLabel1 = QLabel(self.Widget8,"textLabel1") - - Widget8Layout.addMultiCellWidget(self.textLabel1,0,0,0,1) - - self.bSup = QPushButton(self.Widget8,"bSup") - self.bSup.setMinimumSize(QSize(130,30)) - self.bSup.setAutoDefault(1) - - Widget8Layout.addWidget(self.bSup,3,0) - - self.bOk = QPushButton(self.Widget8,"bOk") - self.bOk.setMinimumSize(QSize(130,30)) - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - - Widget8Layout.addMultiCellWidget(self.bOk,3,3,1,2) - - self.bHelp = QPushButton(self.Widget8,"bHelp") - self.bHelp.setSizePolicy(QSizePolicy(1,0,150,0,self.bHelp.sizePolicy().hasHeightForWidth())) - self.bHelp.setMinimumSize(QSize(130,30)) - self.bHelp.setAutoDefault(1) - - Widget8Layout.addWidget(self.bHelp,3,3) - - self.Commentaire = QLabel(self.Widget8,"Commentaire") - self.Commentaire.setMinimumSize(QSize(0,40)) - - Widget8Layout.addMultiCellWidget(self.Commentaire,2,2,0,3) - - layout8 = QHBoxLayout(None,0,6,"layout8") - - self.LBValeurs = QListBox(self.Widget8,"LBValeurs") - layout8.addWidget(self.LBValeurs) - - layout5 = QVBoxLayout(None,0,6,"layout5") - spacer2 = QSpacerItem(21,44,QSizePolicy.Minimum,QSizePolicy.Expanding) - layout5.addItem(spacer2) - - layout2 = QVBoxLayout(None,0,6,"layout2") - - self.BSup1Val = QToolButton(self.Widget8,"BSup1Val") - self.BSup1Val.setMinimumSize(QSize(40,31)) - self.BSup1Val.setMaximumSize(QSize(40,31)) - self.BSup1Val.setIconSet(QIconSet(self.image0)) - layout2.addWidget(self.BSup1Val) - - self.BAjout1Val = QToolButton(self.Widget8,"BAjout1Val") - self.BAjout1Val.setMinimumSize(QSize(40,31)) - self.BAjout1Val.setMaximumSize(QSize(40,31)) - self.BAjout1Val.setIconSet(QIconSet(self.image1)) - layout2.addWidget(self.BAjout1Val) - spacer3 = QSpacerItem(21,176,QSizePolicy.Minimum,QSizePolicy.Expanding) - layout2.addItem(spacer3) - layout5.addLayout(layout2) - layout8.addLayout(layout5) - - self.listBoxVal = QListBox(self.Widget8,"listBoxVal") - layout8.addWidget(self.listBoxVal) - - Widget8Layout.addMultiCellLayout(layout8,1,1,0,3) - - self.textLabel1_2 = QLabel(self.Widget8,"textLabel1_2") - - Widget8Layout.addMultiCellWidget(self.textLabel1_2,0,0,2,3) - self.tabuniqueinto.insertTab(self.Widget8,QString("")) - - DPlusIntoLayout.addWidget(self.tabuniqueinto,0,0) - - self.languageChange() - - self.resize(QSize(482,480).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPourListePressed) - self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed) - self.connect(self.LBValeurs,SIGNAL("doubleClicked(QListBoxItem*)"),self.Sup1Valeur) - self.connect(self.BAjout1Val,SIGNAL("clicked()"),self.Ajout1Valeur) - self.connect(self.BSup1Val,SIGNAL("clicked()"),self.Sup1Valeur) - - self.setTabOrder(self.listBoxVal,self.tabuniqueinto) - self.setTabOrder(self.tabuniqueinto,self.bSup) - self.setTabOrder(self.bSup,self.bOk) - self.setTabOrder(self.bOk,self.bHelp) - self.setTabOrder(self.bHelp,self.LBValeurs) - - - def languageChange(self): - self.setCaption(self.__tr("DUnIn")) - self.textLabel1.setText(self.__tr("Valeur(s) actuelle(s)")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(self.__tr("Alt+D")) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - self.Commentaire.setText(QString.null) - self.BSup1Val.setText(QString.null) - QToolTip.add(self.BSup1Val,self.__tr("enleve l occurence selectionnee")) - self.BAjout1Val.setText(QString.null) - QToolTip.add(self.BAjout1Val,self.__trUtf8("\x61\x6a\x6f\x75\x74\x65\x20\x6c\x61\x20\x76\x61\x6c\x65\x75\x72\x20\x73\x61\x69\x73\x69\x65\x20\x73\x6f\x75\x73\x20\x6c\x20\x6f\x63\x63\x75\x72\x65\x6e\x63\x65\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x6e\xc3\xa9\x65\x20\x28\x65\x6e\x20\x66\x69\x6e\x20\x64\x65\x20\x6c\x69\x73\x74\x65\x20\x73\x69\x20\x69\x6c\x20\x6e\x20\x79\x20\x61\x20\x70\x61\x73\x20\x64\x65\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x29")) - self.textLabel1_2.setText(self.__tr("Valeur(s) possibles(s)")) - self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur")) - - - def BSupPressed(self): - print "DPlusInto.BSupPressed(): Not implemented yet" - - def ViewDoc(self): - print "DPlusInto.ViewDoc(): Not implemented yet" - - def BOkPourListePressed(self): - print "DPlusInto.BOkPourListePressed(): Not implemented yet" - - def Ajout1Valeur(self): - print "DPlusInto.Ajout1Valeur(): Not implemented yet" - - def Sup1Valeur(self): - print "DPlusInto.Sup1Valeur(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DPlusInto",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DPlusInto",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desPlusieursInto.ui b/Ui/desPlusieursInto.ui index f53e25e1..efbf3c32 100644 --- a/Ui/desPlusieursInto.ui +++ b/Ui/desPlusieursInto.ui @@ -8,13 +8,13 @@ 0 0 - 482 + 528 480 - 350 + 50 0 @@ -36,257 +36,318 @@ Saisir Valeur - + - unnamed - - - - textLabel1 - - - <u><font size="+1">Valeur(s) actuelle(s)</font></u> - - - - - bSup - - - - 130 - 30 - - - - &Supprimer - - - Alt+S - - - true - - - suppression du mot clef - - - - - bOk - - - - 130 - 30 - - - - &Valider - - - Shift+A, Alt+A, Alt+A, Alt+A - - - true - - - true - - - validation de la saisie - - - - - bHelp - - - - 1 - 0 - 150 - 0 - - - - - 130 - 30 - - - - &Documentation - - - Alt+D - - - true - - - affichage documentation aster - - - - - Commentaire - - - - 0 - 40 - - - - - - - - - layout8 - - - - unnamed - - - - LBValeurs - - - - - layout5 - - - - unnamed - - - - spacer2 - - - Vertical - - - Expanding - - - - 21 - 44 - - - - - - layout2 - - - - unnamed - - - - BSup1Val - - - - 40 - 31 - - - - - 40 - 31 - - - - - - - image0 - - - enleve l occurence selectionnee - - - - - BAjout1Val - - - - 40 - 31 - - - - - 40 - 31 - - - - - - - image1 - - - ajoute la valeur saisie sous l occurence selectionnée (en fin de liste si il n y a pas de selection) - - - - - spacer3 - - - Vertical - - - Expanding - - - - 21 - 176 - - - - - - - - - - listBoxVal - - - - - - - textLabel1_2 - - - <u><font size="+1">Valeur(s) possibles(s)</font></u> - - - + textLabel1 + + + + 11 + 11 + 198 + 23 + + + + <u><font size="+1">Valeur(s) actuelle(s)</font></u> + +
+ + + bSup + + + + 11 + 384 + 130 + 30 + + + + + 130 + 30 + + + + &Supprimer + + + Alt+S + + + true + + + suppression du mot clef + + + + + bOk + + + + 147 + 384 + 130 + 30 + + + + + 130 + 30 + + + + &Valider + + + Shift+A, Alt+A, Alt+A, Alt+A + + + true + + + true + + + validation de la saisie + + + + + bHelp + + + + 283 + 384 + 208 + 30 + + + + + 1 + 0 + 150 + 0 + + + + + 130 + 30 + + + + &Documentation + + + Alt+D + + + true + + + affichage documentation aster + + + + + Commentaire + + + + 11 + 338 + 480 + 40 + + + + + 0 + 40 + + + + + + + + + textLabel1_2 + + + + 215 + 11 + 276 + 23 + + + + <u><font size="+1">Valeur(s) possibles(s)</font></u> + + + + + LBValeurs + + + + 12 + 41 + 211 + 290 + + + + + + listBoxVal + + + + 279 + 41 + 211 + 290 + + + + + + spacer2 + + + Vertical + + + Expanding + + + + 21 + 37 + + + + + 240 + 42 + 21 + 37 + + + + + + spacer3 + + + Vertical + + + Expanding + + + + 21 + 169 + + + + + 240 + 160 + 21 + 169 + + + + + + BAjout1Val + + + + 230 + 50 + 40 + 31 + + + + + 40 + 31 + + + + + 40 + 31 + + + + + + + image0 + + + ajoute la valeur saisie sous l occurence selectionnée (en fin de liste si il n y a pas de selection) + + + + + BSup1Val + + + + 230 + 90 + 40 + 31 + + + + + 40 + 31 + + + + + 40 + 31 + + + + + + + image1 + + + enleve l occurence selectionnee + +
- 89504e470d0a1a0a0000000d49484452000000210000000e0806000000a11e758c000000cf49444154388dd594db0ec3200c43edfdf8d897bb0f345b480845d51eb64888f412e76001c00f046fd6e99bba77200480924a1032c92efbd8c7d5cabcc025400099e957849568fe7f06c0ded1deb32b4a1ec4ea824b9e74097165bd01f85527f78a7201e0a3129f345a017c543bafdc983d0f7109d15a331b471f47072c17494a82338f6178203a8817e67306b1f08b07ba03e602c9b831077e37e0209e67e3386710977b17de80c185ad38695a51d522c82ce77912e2fed8be83762092f52b1820dd11bb10e565b53a5a3bbaff130713d66fa6981857060000000049454e44ae426082 + 89504e470d0a1a0a0000000d49484452000000210000000e0806000000a11e758c000000c749444154388dcd94590ec3200c4471d57bc73df9f407d331b159a228aa254448bc3cc68152fec0e4420ceeceb912e08a0239838848f5df02c99c11f86004300119054ae868c56ac206c06b4b109111c802874f3a52a587757123897e4039c46b50d8865b07f5400a450053330893cf8674a30028d492deef04626b559dfe48ac842b1a6daae6850155033b99c5009f70ceda111aab413b6f6a70d118e008e6fd8bc51d5d00a0f614556d1ff9b9be4952aabc3721f8f8b6f624c557ef8947afedf48c5e60b8dfbeb81d6dab9aff99270000000049454e44ae426082 - 89504e470d0a1a0a0000000d49484452000000210000000e0806000000a11e758c000000c749444154388dcd94590ec3200c4471d57bc73df9f407d331b159a228aa254448bc3cc68152fec0e4420ceeceb912e08a0239838848f5df02c99c11f86004300119054ae868c56ac206c06b4b109111c802874f3a52a587757123897e4039c46b50d8865b07f5400a450053330893cf8674a30028d492deef04626b559dfe48ac842b1a6daae6850155033b99c5009f70ceda111aab413b6f6a70d118e008e6fd8bc51d5d00a0f614556d1ff9b9be4952aabc3721f8f8b6f624c557ef8947afedf48c5e60b8dfbeb81d6dab9aff99270000000049454e44ae426082 + 89504e470d0a1a0a0000000d49484452000000210000000e0806000000a11e758c000000cf49444154388dd594db0ec3200c43edfdf8d897bb0f345b480845d51eb64888f412e76001c00f046fd6e99bba77200480924a1032c92efbd8c7d5cabcc025400099e957849568fe7f06c0ded1deb32b4a1ec4ea824b9e74097165bd01f85527f78a7201e0a3129f345a017c543bafdc983d0f7109d15a331b471f47072c17494a82338f6178203a8817e67306b1f08b07ba03e602c9b831077e37e0209e67e3386710977b17de80c185ad38695a51d522c82ce77912e2fed8be83762092f52b1820dd11bb10e565b53a5a3bbaff130713d66fa6981857060000000049454e44ae426082 diff --git a/Ui/desPoursuite.py b/Ui/desPoursuite.py deleted file mode 100644 index 2db030cc..00000000 --- a/Ui/desPoursuite.py +++ /dev/null @@ -1,236 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desPoursuite.ui' -# -# Created: ven mai 16 13:30:38 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DPour(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DPour") - - self.setMinimumSize(QSize(505,0)) - - DPourLayout = QGridLayout(self,1,1,11,6,"DPourLayout") - - self.Commentaire = QLabel(self,"Commentaire") - - DPourLayout.addMultiCellWidget(self.Commentaire,1,1,0,2) - - self.TWChoix = QTabWidget(self,"TWChoix") - - self.MotClef = QWidget(self.TWChoix,"MotClef") - MotClefLayout = QGridLayout(self.MotClef,1,1,11,6,"MotClefLayout") - - self.textLabel1_2 = QLabel(self.MotClef,"textLabel1_2") - - MotClefLayout.addWidget(self.textLabel1_2,0,1) - - self.LBMCPermis = QListBox(self.MotClef,"LBMCPermis") - self.LBMCPermis.setMinimumSize(QSize(0,0)) - - MotClefLayout.addWidget(self.LBMCPermis,1,0) - - self.LBRegles = QListBox(self.MotClef,"LBRegles") - - MotClefLayout.addWidget(self.LBRegles,1,1) - - self.textLabel1 = QLabel(self.MotClef,"textLabel1") - self.textLabel1.setMinimumSize(QSize(0,0)) - - MotClefLayout.addWidget(self.textLabel1,0,0) - self.TWChoix.insertTab(self.MotClef,QString("")) - - self.Commande = QWidget(self.TWChoix,"Commande") - CommandeLayout = QGridLayout(self.Commande,1,1,11,6,"CommandeLayout") - - self.LBNouvCommande = QListBox(self.Commande,"LBNouvCommande") - - CommandeLayout.addMultiCellWidget(self.LBNouvCommande,2,2,0,3) - - self.textLabel1_4 = QLabel(self.Commande,"textLabel1_4") - - CommandeLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,1) - - self.buttonGroup1 = QButtonGroup(self.Commande,"buttonGroup1") - - self.RBGroupe = QRadioButton(self.buttonGroup1,"RBGroupe") - self.RBGroupe.setGeometry(QRect(20,40,101,20)) - - self.RBalpha = QRadioButton(self.buttonGroup1,"RBalpha") - self.RBalpha.setGeometry(QRect(20,20,120,20)) - self.RBalpha.setChecked(1) - - CommandeLayout.addMultiCellWidget(self.buttonGroup1,0,1,3,3) - - self.textLabel4 = QLabel(self.Commande,"textLabel4") - - CommandeLayout.addMultiCellWidget(self.textLabel4,3,3,0,3) - - self.BNext = QToolButton(self.Commande,"BNext") - self.BNext.setMinimumSize(QSize(60,0)) - self.BNext.setIconSet(QIconSet()) - - CommandeLayout.addWidget(self.BNext,1,2) - - self.textLabel6 = QLabel(self.Commande,"textLabel6") - self.textLabel6.setMinimumSize(QSize(40,0)) - - CommandeLayout.addWidget(self.textLabel6,1,0) - - self.LEFiltre = QLineEdit(self.Commande,"LEFiltre") - self.LEFiltre.setMinimumSize(QSize(160,30)) - - CommandeLayout.addWidget(self.LEFiltre,1,1) - self.TWChoix.insertTab(self.Commande,QString("")) - - self.TabPage = QWidget(self.TWChoix,"TabPage") - - LayoutWidget = QWidget(self.TabPage,"layout4") - LayoutWidget.setGeometry(QRect(10,31,472,90)) - layout4 = QVBoxLayout(LayoutWidget,11,6,"layout4") - - self.textLabel1_3 = QLabel(LayoutWidget,"textLabel1_3") - layout4.addWidget(self.textLabel1_3) - - self.LENomFichier = QLineEdit(LayoutWidget,"LENomFichier") - self.LENomFichier.setMinimumSize(QSize(470,40)) - layout4.addWidget(self.LENomFichier) - - LayoutWidget_2 = QWidget(self.TabPage,"layout5") - LayoutWidget_2.setGeometry(QRect(8,131,481,250)) - layout5 = QGridLayout(LayoutWidget_2,1,1,11,6,"layout5") - - layout3 = QHBoxLayout(None,0,6,"layout3") - spacer3 = QSpacerItem(331,20,QSizePolicy.Expanding,QSizePolicy.Minimum) - layout3.addItem(spacer3) - - self.BBrowse = QPushButton(LayoutWidget_2,"BBrowse") - self.BBrowse.setSizePolicy(QSizePolicy(0,0,0,0,self.BBrowse.sizePolicy().hasHeightForWidth())) - self.BBrowse.setMinimumSize(QSize(140,50)) - layout3.addWidget(self.BBrowse) - - layout5.addLayout(layout3,1,0) - spacer1 = QSpacerItem(21,190,QSizePolicy.Minimum,QSizePolicy.Expanding) - layout5.addItem(spacer1,0,0) - self.TWChoix.insertTab(self.TabPage,QString("")) - - DPourLayout.addMultiCellWidget(self.TWChoix,0,0,0,2) - - self.bSup = QPushButton(self,"bSup") - self.bSup.setMinimumSize(QSize(0,30)) - self.bSup.setAutoDefault(1) - - DPourLayout.addWidget(self.bSup,2,0) - - self.bOk = QPushButton(self,"bOk") - self.bOk.setMinimumSize(QSize(0,30)) - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - - DPourLayout.addWidget(self.bOk,2,1) - - self.bHelp = QPushButton(self,"bHelp") - self.bHelp.setMinimumSize(QSize(0,30)) - self.bHelp.setAutoDefault(1) - - DPourLayout.addWidget(self.bHelp,2,2) - - self.languageChange() - - self.resize(QSize(521,499).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) - self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged) - self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed) - self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) - self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.BNext,SIGNAL("clicked()"),self.BNextPressed) - self.connect(self.BBrowse,SIGNAL("clicked()"),self.BBrowsePressed) - self.connect(self.LENomFichier,SIGNAL("returnPressed()"),self.LENomFichReturnPressed) - - self.setTabOrder(self.LEFiltre,self.LENomFichier) - self.setTabOrder(self.LENomFichier,self.TWChoix) - self.setTabOrder(self.TWChoix,self.LBMCPermis) - self.setTabOrder(self.LBMCPermis,self.LBRegles) - self.setTabOrder(self.LBRegles,self.LBNouvCommande) - self.setTabOrder(self.LBNouvCommande,self.RBalpha) - self.setTabOrder(self.RBalpha,self.BBrowse) - self.setTabOrder(self.BBrowse,self.bSup) - self.setTabOrder(self.bSup,self.bOk) - self.setTabOrder(self.bOk,self.bHelp) - - - def languageChange(self): - self.setCaption(self.__tr("DMacro")) - self.Commentaire.setText(QString.null) - self.textLabel1_2.setText(self.__trUtf8("\x3c\x68\x33\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x3c\x75\x3e\x3c\x62\x3e\x52\xc3\xa9\x67\x6c\x65\x73\x3c\x2f\x62\x3e\x3c\x2f\x75\x3e\x3c\x2f\x70\x3e\x3c\x2f\x68\x33\x3e")) - self.textLabel1.setText(self.__tr("

Mots Clefs Permis

")) - self.TWChoix.changeTab(self.MotClef,self.__tr("Ajouter Mot-Clef")) - self.textLabel1_4.setText(self.__tr("Commandes :")) - self.buttonGroup1.setTitle(self.__tr("Affichage")) - self.RBGroupe.setText(self.__tr("par groupe")) - self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65")) - self.textLabel4.setText(self.__trUtf8("\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x68\x6f\x69\x73\x69\x65\x20\x73\x65\x72\x61\x20\x61\x6a\x6f\x75\x74\xc3\xa9\x65\x20\x41\x50\x52\x45\x53\x20\x6c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x6f\x75\x72\x61\x6e\x74\x65")) - self.BNext.setText(self.__tr("Suivant")) - QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence")) - self.textLabel6.setText(self.__tr("Filtre")) - self.TWChoix.changeTab(self.Commande,self.__tr("Nouvelle Commande")) - self.textLabel1_3.setText(self.__tr("La commande POURSUITE requiert un nom de Fichier :")) - self.BBrowse.setText(self.__tr("Edit")) - self.TWChoix.changeTab(self.TabPage,self.__tr("Fichier Poursuite")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(self.__tr("Alt+D")) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - - - def LBNouvCommandeClicked(self): - print "DPour.LBNouvCommandeClicked(): Not implemented yet" - - def LEFiltreTextChanged(self): - print "DPour.LEFiltreTextChanged(): Not implemented yet" - - def LEfiltreReturnPressed(self): - print "DPour.LEfiltreReturnPressed(): Not implemented yet" - - def BSupPressed(self): - print "DPour.BSupPressed(): Not implemented yet" - - def BOkPressed(self): - print "DPour.BOkPressed(): Not implemented yet" - - def BuildTabCommand(self): - print "DPour.BuildTabCommand(): Not implemented yet" - - def BNextPressed(self): - print "DPour.BNextPressed(): Not implemented yet" - - def BBrowsePressed(self): - print "DPour.BBrowsePressed(): Not implemented yet" - - def LENomFichReturnPressed(self): - print "DPour.LENomFichReturnPressed(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DPour",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DPour",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desPoursuite.ui b/Ui/desPoursuite.ui index 17f7d6da..fb9c96bc 100644 --- a/Ui/desPoursuite.ui +++ b/Ui/desPoursuite.ui @@ -8,13 +8,13 @@ 0 0 - 521 + 546 499 - 505 + 50 0 diff --git a/Ui/desRacine.py b/Ui/desRacine.py deleted file mode 100644 index 39382eb2..00000000 --- a/Ui/desRacine.py +++ /dev/null @@ -1,166 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desRacine.ui' -# -# Created: Mon Jun 2 16:02:17 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.16 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DRac(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DRac") - - self.setMinimumSize(QSize(505,0)) - - DRacLayout = QGridLayout(self,1,1,11,6,"DRacLayout") - - self.textLabel1_4 = QLabel(self,"textLabel1_4") - self.textLabel1_4.setMinimumSize(QSize(291,21)) - - DRacLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,1) - - self.textLabel1_4_2 = QLabel(self,"textLabel1_4_2") - - DRacLayout.addMultiCellWidget(self.textLabel1_4_2,0,1,2,3) - - self.buttonGroup1 = QButtonGroup(self,"buttonGroup1") - self.buttonGroup1.setMinimumSize(QSize(0,60)) - - self.RBGroupe = QRadioButton(self.buttonGroup1,"RBGroupe") - self.RBGroupe.setGeometry(QRect(10,20,90,20)) - - self.RBalpha = QRadioButton(self.buttonGroup1,"RBalpha") - self.RBalpha.setGeometry(QRect(110,20,120,20)) - self.RBalpha.setChecked(1) - - DRacLayout.addMultiCellWidget(self.buttonGroup1,1,1,0,1) - - self.bHelp = QPushButton(self,"bHelp") - self.bHelp.setMinimumSize(QSize(160,30)) - self.bHelp.setAutoDefault(1) - - DRacLayout.addWidget(self.bHelp,3,3) - - self.bSup = QPushButton(self,"bSup") - self.bSup.setMinimumSize(QSize(160,30)) - self.bSup.setAutoDefault(1) - - DRacLayout.addWidget(self.bSup,3,0) - - self.bOk = QPushButton(self,"bOk") - self.bOk.setMinimumSize(QSize(160,30)) - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - - DRacLayout.addMultiCellWidget(self.bOk,3,3,1,2) - - layout2 = QGridLayout(None,1,1,0,6,"layout2") - - self.BNext = QToolButton(self,"BNext") - self.BNext.setMinimumSize(QSize(60,30)) - self.BNext.setIconSet(QIconSet()) - - layout2.addWidget(self.BNext,0,2) - - self.LEFiltre = QLineEdit(self,"LEFiltre") - self.LEFiltre.setMinimumSize(QSize(0,30)) - - layout2.addWidget(self.LEFiltre,0,1) - - self.LBRegles = QListBox(self,"LBRegles") - self.LBRegles.setMinimumSize(QSize(240,350)) - - layout2.addMultiCellWidget(self.LBRegles,0,1,3,3) - - self.textLabel6 = QLabel(self,"textLabel6") - self.textLabel6.setMinimumSize(QSize(40,0)) - - layout2.addWidget(self.textLabel6,0,0) - - self.LBNouvCommande = QListBox(self,"LBNouvCommande") - - layout2.addMultiCellWidget(self.LBNouvCommande,1,1,0,2) - - DRacLayout.addMultiCellLayout(layout2,2,2,0,3) - - self.languageChange() - - self.resize(QSize(509,513).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) - self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged) - self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed) - self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) - self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand) - self.connect(self.BNext,SIGNAL("clicked()"),self.BNextPressed) - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - - self.setTabOrder(self.LEFiltre,self.LBNouvCommande) - self.setTabOrder(self.LBNouvCommande,self.RBalpha) - self.setTabOrder(self.RBalpha,self.bSup) - self.setTabOrder(self.bSup,self.bOk) - self.setTabOrder(self.bOk,self.bHelp) - self.setTabOrder(self.bHelp,self.LBRegles) - - - def languageChange(self): - self.setCaption(self.__tr("DMacro")) - self.textLabel1_4.setText(self.__tr("Commandes :")) - self.textLabel1_4_2.setText(self.__trUtf8("\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x3c\x62\x3e\x3c\x75\x3e\x52\xc3\xa9\x67\x6c\x65\x73\x20\x3a\x3c\x2f\x75\x3e\x3c\x2f\x62\x3e\x3c\x2f\x70\x3e")) - self.buttonGroup1.setTitle(self.__tr("Affichage")) - self.RBGroupe.setText(self.__tr("par groupe")) - self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(QKeySequence(self.__tr("Alt+D"))) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(QKeySequence(self.__tr("Alt+S"))) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(QKeySequence(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.BNext.setText(self.__tr("Suivant")) - QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence")) - self.textLabel6.setText(self.__tr("Filtre")) - - - def LBNouvCommandeClicked(self): - print "DRac.LBNouvCommandeClicked(): Not implemented yet" - - def LEFiltreTextChanged(self): - print "DRac.LEFiltreTextChanged(): Not implemented yet" - - def LEfiltreReturnPressed(self): - print "DRac.LEfiltreReturnPressed(): Not implemented yet" - - def BSupPressed(self): - print "DRac.BSupPressed(): Not implemented yet" - - def BOkPressed(self): - print "DRac.BOkPressed(): Not implemented yet" - - def BuildTabCommand(self): - print "DRac.BuildTabCommand(): Not implemented yet" - - def BNextPressed(self): - print "DRac.BNextPressed(): Not implemented yet" - - def ViewDoc(self): - print "DRac.ViewDoc(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DRac",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DRac",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desRacine.ui b/Ui/desRacine.ui index b4ee15d2..00a2f634 100644 --- a/Ui/desRacine.ui +++ b/Ui/desRacine.ui @@ -8,16 +8,10 @@ 0 0 - 509 + 523 513 - - - 505 - 0 - - DMacro @@ -29,12 +23,6 @@ textLabel1_4 - - - 291 - 21 - - <b><u>Commandes :</u></b> @@ -51,48 +39,42 @@ buttonGroup1 - - - 0 - 60 - - Affichage - RBGroupe + RBalpha - 10 + 120 20 - 90 + 120 20 - par groupe + alphabétique + + + true - RBalpha + RBGroupe - 110 + 10 20 - 120 + 100 20 - alphabétique - - - true + par groupe @@ -100,12 +82,6 @@ bHelp - - - 160 - 30 - - &Documentation @@ -123,12 +99,6 @@ bSup - - - 160 - 30 - - &Supprimer @@ -146,12 +116,6 @@ bOk - - - 160 - 30 - - &Valider @@ -180,12 +144,6 @@ BNext - - - 60 - 30 - - Suivant @@ -200,34 +158,16 @@ LEFiltre - - - 0 - 30 - - LBRegles - - - 240 - 350 - - textLabel6 - - - 40 - 0 - - Filtre diff --git a/Ui/desSelectVal.py b/Ui/desSelectVal.py deleted file mode 100644 index f43b5d2c..00000000 --- a/Ui/desSelectVal.py +++ /dev/null @@ -1,91 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desSelectVal.ui' -# -# Created: mar mar 25 10:05:09 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DSelVal(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DSelVal") - - - DSelValLayout = QGridLayout(self,1,1,11,6,"DSelValLayout") - - self.TBtext = QTextBrowser(self,"TBtext") - - DSelValLayout.addMultiCellWidget(self.TBtext,0,0,0,1) - - self.BGSeparateur = QButtonGroup(self,"BGSeparateur") - self.BGSeparateur.setMinimumSize(QSize(180,100)) - - LayoutWidget = QWidget(self.BGSeparateur,"layout1") - LayoutWidget.setGeometry(QRect(17,20,150,74)) - layout1 = QGridLayout(LayoutWidget,1,1,11,6,"layout1") - - self.BpointVirgule = QRadioButton(LayoutWidget,"BpointVirgule") - - layout1.addWidget(self.BpointVirgule,2,0) - - self.Bespace = QRadioButton(LayoutWidget,"Bespace") - self.Bespace.setChecked(1) - - layout1.addWidget(self.Bespace,0,0) - - self.Bvirgule = QRadioButton(LayoutWidget,"Bvirgule") - - layout1.addWidget(self.Bvirgule,1,0) - - DSelValLayout.addMultiCellWidget(self.BGSeparateur,1,2,0,0) - - self.BImportTout = QPushButton(self,"BImportTout") - - DSelValLayout.addWidget(self.BImportTout,2,1) - - self.BImportSel = QPushButton(self,"BImportSel") - - DSelValLayout.addWidget(self.BImportSel,1,1) - - self.languageChange() - - self.resize(QSize(413,497).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.BGSeparateur,SIGNAL("clicked(int)"),self.SeparateurSelect) - self.connect(self.BImportSel,SIGNAL("clicked()"),self.BImportSelPressed) - self.connect(self.BImportTout,SIGNAL("clicked()"),self.BImportToutPressed) - - - def languageChange(self): - self.setCaption(self.__trUtf8("\x53\xc3\xa9\x6c\x65\x63\x74\x69\x6f\x6e\x20\x64\x65\x20\x76\x61\x6c\x65\x75\x72\x73")) - self.BGSeparateur.setTitle(self.__trUtf8("\x53\xc3\xa9\x70\x61\x72\x61\x74\x65\x75\x72")) - self.BpointVirgule.setText(self.__tr("point-virgule")) - self.Bespace.setText(self.__tr("espace")) - self.Bvirgule.setText(self.__tr("virgule")) - self.BImportTout.setText(self.__tr("Importer Tout")) - self.BImportSel.setText(self.__tr("Ajouter Selection")) - - - def SeparateurSelect(self): - print "DSelVal.SeparateurSelect(): Not implemented yet" - - def BImportSelPressed(self): - print "DSelVal.BImportSelPressed(): Not implemented yet" - - def BImportToutPressed(self): - print "DSelVal.BImportToutPressed(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DSelVal",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DSelVal",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desSelectVal.ui b/Ui/desSelectVal.ui index ae092f56..ef65ad34 100644 --- a/Ui/desSelectVal.ui +++ b/Ui/desSelectVal.ui @@ -8,8 +8,8 @@ 0 0 - 413 - 497 + 429 + 661 @@ -24,80 +24,94 @@ TBtext + + + BImportSel + + + Ajouter Selection + + + + + BImportTout + + + Importer Tout + + BGSeparateur + + + 3 + 5 + 0 + 0 + + - 180 - 100 + 20 + 130 Séparateur - + - layout1 + Bvirgule - 17 - 20 - 150 - 74 + 12 + 52 + 104 + 22 - - - unnamed - - - - BpointVirgule - - - point-virgule - - - - - Bespace - - - espace - - - true - - - - - Bvirgule - - - virgule - - - + + virgule + + + + + Bespace + + + + 12 + 24 + 104 + 22 + + + + espace + + + true + + + + + BpointVirgule + + + + 12 + 80 + 104 + 22 + + + + point-virgule + - - - - BImportTout - - - Importer Tout - - - - - BImportSel - - - Ajouter Selection - diff --git a/Ui/desUniqueASSD.py b/Ui/desUniqueASSD.py deleted file mode 100644 index 12a79933..00000000 --- a/Ui/desUniqueASSD.py +++ /dev/null @@ -1,106 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desUniqueASSD.ui' -# -# Created: mar mar 25 10:05:09 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DUnASSD(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DUnASSD") - - self.setMinimumSize(QSize(350,0)) - - DUnASSDLayout = QGridLayout(self,1,1,11,6,"DUnASSDLayout") - - self.tabuniqueinto = QTabWidget(self,"tabuniqueinto") - - self.Widget8 = QWidget(self.tabuniqueinto,"Widget8") - Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout") - - self.textLabel2 = QLabel(self.Widget8,"textLabel2") - self.textLabel2.setMinimumSize(QSize(436,50)) - - Widget8Layout.addWidget(self.textLabel2,0,0) - - self.listBoxASSD = QListBox(self.Widget8,"listBoxASSD") - - Widget8Layout.addWidget(self.listBoxASSD,1,0) - - self.Commentaire = QLabel(self.Widget8,"Commentaire") - self.Commentaire.setMinimumSize(QSize(380,30)) - - Widget8Layout.addWidget(self.Commentaire,2,0) - - layout2 = QHBoxLayout(None,0,6,"layout2") - - self.bSup = QPushButton(self.Widget8,"bSup") - self.bSup.setMinimumSize(QSize(0,30)) - self.bSup.setAutoDefault(1) - layout2.addWidget(self.bSup) - - self.bOk = QPushButton(self.Widget8,"bOk") - self.bOk.setMinimumSize(QSize(0,30)) - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - layout2.addWidget(self.bOk) - - self.bHelp = QPushButton(self.Widget8,"bHelp") - self.bHelp.setMinimumSize(QSize(0,30)) - self.bHelp.setAutoDefault(1) - layout2.addWidget(self.bHelp) - - Widget8Layout.addLayout(layout2,3,0) - self.tabuniqueinto.insertTab(self.Widget8,QString("")) - - DUnASSDLayout.addWidget(self.tabuniqueinto,0,0) - - self.languageChange() - - self.resize(QSize(482,480).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) - self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed) - - - def languageChange(self): - self.setCaption(self.__tr("DUnIn")) - self.textLabel2.setText(self.__trUtf8("\x3c\x66\x6f\x6e\x74\x20\x73\x69\x7a\x65\x3d\x22\x2b\x31\x22\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x53\x74\x72\x75\x63\x74\x75\x72\x65\x73\x20\x64\x65\x20\x64\x6f\x6e\x6e\xc3\xa9\x65\x73\x20\x64\x75\x20\x74\x79\x70\x65\x0a\x72\x65\x71\x75\x69\x73\x20\x70\x61\x72\x20\x6c\x27\x6f\x62\x6a\x65\x74\x20\x63\x6f\x75\x72\x61\x6e\x74\x20\x3a\x3c\x2f\x70\x3e\x3c\x2f\x66\x6f\x6e\x74\x3e")) - self.Commentaire.setText(QString.null) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(self.__tr("Alt+D")) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur")) - - - def BSupPressed(self): - print "DUnASSD.BSupPressed(): Not implemented yet" - - def ViewDoc(self): - print "DUnASSD.ViewDoc(): Not implemented yet" - - def BOkPressed(self): - print "DUnASSD.BOkPressed(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DUnASSD",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DUnASSD",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desUniqueASSD.ui b/Ui/desUniqueASSD.ui index 819c9294..84426b39 100644 --- a/Ui/desUniqueASSD.ui +++ b/Ui/desUniqueASSD.ui @@ -8,13 +8,13 @@ 0 0 - 482 + 502 480 - 350 + 20 0 diff --git a/Ui/desUniqueBase.py b/Ui/desUniqueBase.py deleted file mode 100644 index ec1c5161..00000000 --- a/Ui/desUniqueBase.py +++ /dev/null @@ -1,174 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desUniqueBase.ui' -# -# Created: ven avr 4 11:27:09 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - -image0_data = \ - "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \ - "\x49\x48\x44\x52\x00\x00\x00\x14\x00\x00\x00\x14" \ - "\x08\x06\x00\x00\x00\x8d\x89\x1d\x0d\x00\x00\x00" \ - "\x8d\x49\x44\x41\x54\x38\x8d\xb5\xd3\xdb\x0d\x80" \ - "\x20\x0c\x05\xd0\x5b\xe3\x3a\x8e\xe2\x4c\x86\x99" \ - "\x18\x85\x81\xea\x87\xc6\xc4\xd2\x56\x28\xd8\x84" \ - "\x0f\x5e\x27\x17\x50\x02\x63\x6a\x2d\x73\xb9\x1f" \ - "\xc0\xb5\x69\x15\x39\x17\xc3\xa0\x7e\xf0\xae\x9c" \ - "\xca\xab\xbf\x1f\x5b\xb5\xa6\xed\xc8\x0c\x02\x83" \ - "\x34\x20\x06\x02\x00\x81\x65\xc2\x38\x28\x30\x2f" \ - "\xa9\x77\xdd\x36\xc6\xa0\x67\xa7\x78\x14\x3f\xa1" \ - "\x85\xf9\x5b\xe6\x61\x76\xc2\x20\xa6\x83\x03\x58" \ - "\x0d\x0e\x62\x7a\xc2\x01\xcc\x04\xa3\xd8\x55\x2c" \ - "\x1a\xc0\x39\x95\xab\x27\xe7\x5a\x9a\x3e\x18\x47" \ - "\xdd\xef\x30\x72\xec\xef\x5f\xaf\xb3\x4e\xcb\x01" \ - "\x65\xf7\x82\x6b\x45\x7b\x00\x00\x00\x00\x49\x45" \ - "\x4e\x44\xae\x42\x60\x82" - -class DUnBase(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - self.image0 = QPixmap() - self.image0.loadFromData(image0_data,"PNG") - if not name: - self.setName("DUnBase") - - self.setMinimumSize(QSize(350,0)) - - DUnBaseLayout = QGridLayout(self,1,1,11,6,"DUnBaseLayout") - - self.tabuniqueinto = QTabWidget(self,"tabuniqueinto") - - self.Widget8 = QWidget(self.tabuniqueinto,"Widget8") - Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout") - - layout2 = QHBoxLayout(None,0,6,"layout2") - - self.textLabel2 = QLabel(self.Widget8,"textLabel2") - layout2.addWidget(self.textLabel2) - - self.lineEditVal = QLineEdit(self.Widget8,"lineEditVal") - self.lineEditVal.setMinimumSize(QSize(290,50)) - layout2.addWidget(self.lineEditVal) - - Widget8Layout.addMultiCellLayout(layout2,1,1,0,2) - spacer1 = QSpacerItem(288,21,QSizePolicy.Expanding,QSizePolicy.Minimum) - Widget8Layout.addMultiCell(spacer1,0,0,0,1) - - self.bParametres = QPushButton(self.Widget8,"bParametres") - self.bParametres.setSizePolicy(QSizePolicy(0,0,0,0,self.bParametres.sizePolicy().hasHeightForWidth())) - self.bParametres.setMinimumSize(QSize(140,30)) - - Widget8Layout.addWidget(self.bParametres,0,2) - - self.bSup = QPushButton(self.Widget8,"bSup") - self.bSup.setMinimumSize(QSize(0,30)) - self.bSup.setAutoDefault(1) - - Widget8Layout.addWidget(self.bSup,5,0) - - self.bOk = QPushButton(self.Widget8,"bOk") - self.bOk.setMinimumSize(QSize(0,30)) - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - - Widget8Layout.addWidget(self.bOk,5,1) - - self.bHelp = QPushButton(self.Widget8,"bHelp") - self.bHelp.setMinimumSize(QSize(0,30)) - self.bHelp.setAutoDefault(1) - - Widget8Layout.addWidget(self.bHelp,5,2) - spacer4 = QSpacerItem(41,112,QSizePolicy.Minimum,QSizePolicy.Expanding) - Widget8Layout.addItem(spacer4,2,1) - spacer3 = QSpacerItem(21,112,QSizePolicy.Minimum,QSizePolicy.Expanding) - Widget8Layout.addItem(spacer3,4,1) - - self.Commentaire = QLabel(self.Widget8,"Commentaire") - self.Commentaire.setMinimumSize(QSize(430,40)) - - Widget8Layout.addMultiCellWidget(self.Commentaire,3,3,0,2) - - self.BView2D = QPushButton(self.Widget8,"BView2D") - self.BView2D.setMinimumSize(QSize(110,40)) - - Widget8Layout.addWidget(self.BView2D,2,2) - - self.BSalome = QPushButton(self.Widget8,"BSalome") - self.BSalome.setMinimumSize(QSize(50,40)) - self.BSalome.setIconSet(QIconSet(self.image0)) - - Widget8Layout.addWidget(self.BSalome,2,0) - self.tabuniqueinto.insertTab(self.Widget8,QString("")) - - DUnBaseLayout.addWidget(self.tabuniqueinto,0,0) - - self.languageChange() - - self.resize(QSize(482,480).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOk2Pressed) - self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed) - self.connect(self.lineEditVal,SIGNAL("returnPressed()"),self.LEValeurPressed) - self.connect(self.bParametres,SIGNAL("pressed()"),self.BParametresPressed) - self.connect(self.BSalome,SIGNAL("pressed()"),self.BSalomePressed) - self.connect(self.BView2D,SIGNAL("clicked()"),self.BView2DPressed) - - self.setTabOrder(self.lineEditVal,self.tabuniqueinto) - self.setTabOrder(self.tabuniqueinto,self.bParametres) - self.setTabOrder(self.bParametres,self.bSup) - self.setTabOrder(self.bSup,self.bOk) - self.setTabOrder(self.bOk,self.bHelp) - self.setTabOrder(self.bHelp,self.BView2D) - self.setTabOrder(self.BView2D,self.BSalome) - - - def languageChange(self): - self.setCaption(self.__tr("DUnIn")) - self.textLabel2.setText(self.__tr("

Valeur:

")) - self.bParametres.setText(self.__tr("Parametres")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(self.__tr("Alt+D")) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - self.Commentaire.setText(QString.null) - self.BView2D.setText(self.__tr("Visualiser")) - self.BSalome.setText(QString.null) - self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur")) - - - def BSupPressed(self): - print "DUnBase.BSupPressed(): Not implemented yet" - - def ViewDoc(self): - print "DUnBase.ViewDoc(): Not implemented yet" - - def BOk2Pressed(self): - print "DUnBase.BOk2Pressed(): Not implemented yet" - - def BParametresPressed(self): - print "DUnBase.BParametresPressed(): Not implemented yet" - - def LEValeurPressed(self): - print "DUnBase.LEValeurPressed(): Not implemented yet" - - def BSalomePressed(self): - print "DUnBase.BSalomePressed(): Not implemented yet" - - def BView2DPressed(self): - print "DUnBase.BView2DPressed(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DUnBase",s,c) diff --git a/Ui/desUniqueBase.ui b/Ui/desUniqueBase.ui index 30eeab83..25759511 100644 --- a/Ui/desUniqueBase.ui +++ b/Ui/desUniqueBase.ui @@ -8,13 +8,13 @@ 0 0 - 482 + 522 480 - 350 + 20 0 diff --git a/Ui/desUniqueComp.py b/Ui/desUniqueComp.py deleted file mode 100644 index 7b9af9dd..00000000 --- a/Ui/desUniqueComp.py +++ /dev/null @@ -1,152 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desUniqueComp.ui' -# -# Created: ven avr 4 11:27:09 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DUnComp(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DUnComp") - - self.setMinimumSize(QSize(350,0)) - - DUnCompLayout = QGridLayout(self,1,1,11,6,"DUnCompLayout") - - self.tabuniqueinto = QTabWidget(self,"tabuniqueinto") - - self.Widget8 = QWidget(self.tabuniqueinto,"Widget8") - Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout") - - layout3 = QVBoxLayout(None,0,6,"layout3") - - self.textLabel1 = QLabel(self.Widget8,"textLabel1") - layout3.addWidget(self.textLabel1) - - self.LEcomp = QLineEdit(self.Widget8,"LEcomp") - self.LEcomp.setMinimumSize(QSize(390,40)) - layout3.addWidget(self.LEcomp) - - Widget8Layout.addMultiCellLayout(layout3,0,0,0,1) - - self.Commentaire = QLabel(self.Widget8,"Commentaire") - - Widget8Layout.addMultiCellWidget(self.Commentaire,5,5,0,1) - - self.LEReel = QLineEdit(self.Widget8,"LEReel") - self.LEReel.setMinimumSize(QSize(190,40)) - - Widget8Layout.addWidget(self.LEReel,3,0) - - self.LEImag = QLineEdit(self.Widget8,"LEImag") - self.LEImag.setMinimumSize(QSize(190,40)) - - Widget8Layout.addWidget(self.LEImag,3,1) - - self.buttonGroup1 = QButtonGroup(self.Widget8,"buttonGroup1") - - self.RBRI = QRadioButton(self.buttonGroup1,"RBRI") - self.RBRI.setGeometry(QRect(20,40,335,20)) - - self.RBMP = QRadioButton(self.buttonGroup1,"RBMP") - self.RBMP.setGeometry(QRect(20,20,335,20)) - - Widget8Layout.addMultiCellWidget(self.buttonGroup1,2,2,0,1) - spacer3 = QSpacerItem(20,41,QSizePolicy.Minimum,QSizePolicy.Expanding) - Widget8Layout.addItem(spacer3,1,0) - spacer4 = QSpacerItem(20,41,QSizePolicy.Minimum,QSizePolicy.Expanding) - Widget8Layout.addItem(spacer4,4,0) - - layout2 = QHBoxLayout(None,0,6,"layout2") - - self.bSup = QPushButton(self.Widget8,"bSup") - self.bSup.setAutoDefault(1) - layout2.addWidget(self.bSup) - - self.bOk = QPushButton(self.Widget8,"bOk") - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - layout2.addWidget(self.bOk) - - self.bHelp = QPushButton(self.Widget8,"bHelp") - self.bHelp.setAutoDefault(1) - layout2.addWidget(self.bHelp) - - Widget8Layout.addMultiCellLayout(layout2,6,6,0,1) - self.tabuniqueinto.insertTab(self.Widget8,QString("")) - - DUnCompLayout.addWidget(self.tabuniqueinto,0,0) - - self.languageChange() - - self.resize(QSize(484,480).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) - self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed) - self.connect(self.LEImag,SIGNAL("returnPressed()"),self.LEImagRPressed) - self.connect(self.LEReel,SIGNAL("returnPressed()"),self.LEReelRPressed) - self.connect(self.LEcomp,SIGNAL("returnPressed()"),self.LEcompRPressed) - - self.setTabOrder(self.LEcomp,self.LEReel) - self.setTabOrder(self.LEReel,self.LEImag) - self.setTabOrder(self.LEImag,self.tabuniqueinto) - self.setTabOrder(self.tabuniqueinto,self.RBRI) - self.setTabOrder(self.RBRI,self.RBMP) - self.setTabOrder(self.RBMP,self.bSup) - self.setTabOrder(self.bSup,self.bOk) - self.setTabOrder(self.bOk,self.bHelp) - - - def languageChange(self): - self.setCaption(self.__tr("DUnComp")) - self.textLabel1.setText(self.__tr("Complexe de la forme : a+bj")) - self.Commentaire.setText(self.__tr("Un complexe est attendu")) - self.buttonGroup1.setTitle(self.__tr("OU")) - self.RBRI.setText(self.__trUtf8("\x52\x49\x20\x20\x20\x3a\x20\x52\xc3\xa9\x65\x6c\x09\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x49\x6d\x61\x67\x69\x6e\x61\x69\x72\x65")) - self.RBMP.setText(self.__tr("MP : Module Phase")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(self.__tr("Alt+D")) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur")) - - - def BSupPressed(self): - print "DUnComp.BSupPressed(): Not implemented yet" - - def ViewDoc(self): - print "DUnComp.ViewDoc(): Not implemented yet" - - def BOkPressed(self): - print "DUnComp.BOkPressed(): Not implemented yet" - - def LEImagRPressed(self): - print "DUnComp.LEImagRPressed(): Not implemented yet" - - def LEReelRPressed(self): - print "DUnComp.LEReelRPressed(): Not implemented yet" - - def LEcompRPressed(self): - print "DUnComp.LEcompRPressed(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DUnComp",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DUnComp",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desUniqueComp.ui b/Ui/desUniqueComp.ui index ae0361d6..d31d50c9 100644 --- a/Ui/desUniqueComp.ui +++ b/Ui/desUniqueComp.ui @@ -8,13 +8,13 @@ 0 0 - 484 + 511 480 - 350 + 30 0 diff --git a/Ui/desUniqueInto.py b/Ui/desUniqueInto.py deleted file mode 100644 index 914a3d2e..00000000 --- a/Ui/desUniqueInto.py +++ /dev/null @@ -1,102 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desUniqueInto.ui' -# -# Created: mar mar 25 10:05:09 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DUnIn(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DUnIn") - - self.setMinimumSize(QSize(350,0)) - - DUnInLayout = QGridLayout(self,1,1,11,6,"DUnInLayout") - - self.tabuniqueinto = QTabWidget(self,"tabuniqueinto") - - self.Widget8 = QWidget(self.tabuniqueinto,"Widget8") - Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout") - - self.Commentaire = QLabel(self.Widget8,"Commentaire") - self.Commentaire.setMinimumSize(QSize(420,30)) - - Widget8Layout.addWidget(self.Commentaire,2,0) - - layout2 = QHBoxLayout(None,0,6,"layout2") - - self.bSup = QPushButton(self.Widget8,"bSup") - self.bSup.setMinimumSize(QSize(0,30)) - self.bSup.setAutoDefault(1) - layout2.addWidget(self.bSup) - - self.bOk = QPushButton(self.Widget8,"bOk") - self.bOk.setMinimumSize(QSize(0,30)) - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - layout2.addWidget(self.bOk) - - self.bHelp = QPushButton(self.Widget8,"bHelp") - self.bHelp.setMinimumSize(QSize(0,30)) - self.bHelp.setAutoDefault(1) - layout2.addWidget(self.bHelp) - - Widget8Layout.addLayout(layout2,3,0) - - self.listBoxVal = QListBox(self.Widget8,"listBoxVal") - - Widget8Layout.addWidget(self.listBoxVal,1,0) - - self.textLabel2 = QLabel(self.Widget8,"textLabel2") - - Widget8Layout.addWidget(self.textLabel2,0,0) - self.tabuniqueinto.insertTab(self.Widget8,QString("")) - - DUnInLayout.addWidget(self.tabuniqueinto,0,0) - - self.languageChange() - - self.resize(QSize(482,480).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) - self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed) - - - def languageChange(self): - self.setCaption(self.__tr("DUnIn")) - self.Commentaire.setText(QString.null) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(self.__tr("Alt+D")) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - self.textLabel2.setText(self.__tr("

Valeurs possibles

")) - self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur")) - - - def BSupPressed(self): - print "DUnIn.BSupPressed(): Not implemented yet" - - def ViewDoc(self): - print "DUnIn.ViewDoc(): Not implemented yet" - - def BOkPressed(self): - print "DUnIn.BOkPressed(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DUnIn",s,c) diff --git a/Ui/desUniqueInto.ui b/Ui/desUniqueInto.ui index 67f99a98..45b7e841 100644 --- a/Ui/desUniqueInto.ui +++ b/Ui/desUniqueInto.ui @@ -8,13 +8,13 @@ 0 0 - 482 + 502 480 - 350 + 30 0 diff --git a/Ui/desUniqueSDCO.py b/Ui/desUniqueSDCO.py deleted file mode 100644 index bd94a1db..00000000 --- a/Ui/desUniqueSDCO.py +++ /dev/null @@ -1,122 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desUniqueSDCO.ui' -# -# Created: ven avr 4 11:27:09 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DUnSDCO(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DUnSDCO") - - self.setMinimumSize(QSize(350,0)) - - DUnSDCOLayout = QGridLayout(self,1,1,11,6,"DUnSDCOLayout") - - self.tabuniqueinto = QTabWidget(self,"tabuniqueinto") - - self.Widget8 = QWidget(self.tabuniqueinto,"Widget8") - Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout") - - self.bSup = QPushButton(self.Widget8,"bSup") - self.bSup.setMinimumSize(QSize(0,30)) - self.bSup.setAutoDefault(1) - - Widget8Layout.addWidget(self.bSup,4,0) - - self.bOk = QPushButton(self.Widget8,"bOk") - self.bOk.setMinimumSize(QSize(0,30)) - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - - Widget8Layout.addWidget(self.bOk,4,1) - - self.bHelp = QPushButton(self.Widget8,"bHelp") - self.bHelp.setMinimumSize(QSize(0,30)) - self.bHelp.setAutoDefault(1) - - Widget8Layout.addWidget(self.bHelp,4,2) - - self.Commentaire = QLabel(self.Widget8,"Commentaire") - self.Commentaire.setMinimumSize(QSize(311,30)) - - Widget8Layout.addMultiCellWidget(self.Commentaire,3,3,0,2) - - self.textLabel2_2 = QLabel(self.Widget8,"textLabel2_2") - - Widget8Layout.addMultiCellWidget(self.textLabel2_2,0,0,0,2) - - self.LESDCO = QLineEdit(self.Widget8,"LESDCO") - self.LESDCO.setMinimumSize(QSize(300,40)) - - Widget8Layout.addMultiCellWidget(self.LESDCO,1,1,0,2) - - self.textLabel2 = QLabel(self.Widget8,"textLabel2") - - Widget8Layout.addMultiCellWidget(self.textLabel2,2,2,0,2) - self.tabuniqueinto.insertTab(self.Widget8,QString("")) - - DUnSDCOLayout.addWidget(self.tabuniqueinto,0,0) - - self.languageChange() - - self.resize(QSize(461,480).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) - self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed) - self.connect(self.LESDCO,SIGNAL("returnPressed()"),self.LESDCOReturnPressed) - - self.setTabOrder(self.LESDCO,self.tabuniqueinto) - self.setTabOrder(self.tabuniqueinto,self.bSup) - self.setTabOrder(self.bSup,self.bOk) - self.setTabOrder(self.bOk,self.bHelp) - - - def languageChange(self): - self.setCaption(self.__tr("DUnIn")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(self.__tr("Alt+D")) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - self.Commentaire.setText(QString.null) - self.textLabel2_2.setText(self.__tr("

Nom du nouveau concept :

")) - self.textLabel2.setText(self.__tr("Un objet de type CO est attendu")) - self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur")) - - - def BSupPressed(self): - print "DUnSDCO.BSupPressed(): Not implemented yet" - - def ViewDoc(self): - print "DUnSDCO.ViewDoc(): Not implemented yet" - - def BOkPressed(self): - print "DUnSDCO.BOkPressed(): Not implemented yet" - - def LESDCOReturnPressed(self): - print "DUnSDCO.LESDCOReturnPressed(): Not implemented yet" - - def BOuiPressed(self): - print "DUnSDCO.BOuiPressed(): Not implemented yet" - - def BNonPressed(self): - print "DUnSDCO.BNonPressed(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DUnSDCO",s,c) diff --git a/Ui/desUniqueSDCO.ui b/Ui/desUniqueSDCO.ui index f847c8b5..e623d784 100644 --- a/Ui/desUniqueSDCO.ui +++ b/Ui/desUniqueSDCO.ui @@ -8,13 +8,13 @@ 0 0 - 461 + 473 480 - 350 + 20 0 diff --git a/Ui/desUniqueSDCOInto.py b/Ui/desUniqueSDCOInto.py deleted file mode 100644 index 4a7a9d24..00000000 --- a/Ui/desUniqueSDCOInto.py +++ /dev/null @@ -1,151 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desUniqueSDCOInto.ui' -# -# Created: ven avr 4 11:27:09 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DUnSDCOInto(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DUnSDCOInto") - - self.setMinimumSize(QSize(350,0)) - - DUnSDCOIntoLayout = QGridLayout(self,1,1,11,6,"DUnSDCOIntoLayout") - - self.tabuniqueinto = QTabWidget(self,"tabuniqueinto") - - self.Widget8 = QWidget(self.tabuniqueinto,"Widget8") - Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout") - - self.textLabel2 = QLabel(self.Widget8,"textLabel2") - - Widget8Layout.addMultiCellWidget(self.textLabel2,0,0,0,2) - - self.LBSDCO = QListBox(self.Widget8,"LBSDCO") - - Widget8Layout.addMultiCellWidget(self.LBSDCO,1,1,0,2) - - self.textLabel2_3 = QLabel(self.Widget8,"textLabel2_3") - - Widget8Layout.addMultiCellWidget(self.textLabel2_3,5,5,0,2) - - self.Commentaire = QLabel(self.Widget8,"Commentaire") - self.Commentaire.setMinimumSize(QSize(420,30)) - - Widget8Layout.addMultiCellWidget(self.Commentaire,4,4,0,2) - - layout3 = QGridLayout(None,1,1,0,6,"layout3") - - Widget8Layout.addMultiCellLayout(layout3,2,2,0,2) - - layout6 = QHBoxLayout(None,0,6,"layout6") - - self.frame3 = QFrame(self.Widget8,"frame3") - self.frame3.setMinimumSize(QSize(190,50)) - self.frame3.setFrameShape(QFrame.StyledPanel) - self.frame3.setFrameShadow(QFrame.Raised) - - self.textLabel2_2 = QLabel(self.frame3,"textLabel2_2") - self.textLabel2_2.setGeometry(QRect(20,10,150,30)) - layout6.addWidget(self.frame3) - - self.LESDCO = QLineEdit(self.Widget8,"LESDCO") - self.LESDCO.setMinimumSize(QSize(220,40)) - layout6.addWidget(self.LESDCO) - - Widget8Layout.addMultiCellLayout(layout6,3,3,0,2) - - self.bSup = QPushButton(self.Widget8,"bSup") - self.bSup.setMinimumSize(QSize(0,30)) - self.bSup.setAutoDefault(1) - - Widget8Layout.addWidget(self.bSup,6,0) - - self.bOk = QPushButton(self.Widget8,"bOk") - self.bOk.setMinimumSize(QSize(0,30)) - self.bOk.setAutoDefault(1) - self.bOk.setDefault(1) - - Widget8Layout.addWidget(self.bOk,6,1) - - self.bHelp = QPushButton(self.Widget8,"bHelp") - self.bHelp.setMinimumSize(QSize(0,30)) - self.bHelp.setAutoDefault(1) - - Widget8Layout.addWidget(self.bHelp,6,2) - self.tabuniqueinto.insertTab(self.Widget8,QString("")) - - DUnSDCOIntoLayout.addWidget(self.tabuniqueinto,0,0) - - self.languageChange() - - self.resize(QSize(482,480).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc) - self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) - self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed) - self.connect(self.LBSDCO,SIGNAL("clicked(QListBoxItem*)"),self.LBSDCOReturnPressed) - self.connect(self.LESDCO,SIGNAL("returnPressed()"),self.LESDCOReturnPressed) - - self.setTabOrder(self.LESDCO,self.LBSDCO) - self.setTabOrder(self.LBSDCO,self.tabuniqueinto) - self.setTabOrder(self.tabuniqueinto,self.bSup) - self.setTabOrder(self.bSup,self.bOk) - self.setTabOrder(self.bOk,self.bHelp) - - - def languageChange(self): - self.setCaption(self.__tr("DUnIn")) - self.textLabel2.setText(self.__trUtf8("\x3c\x66\x6f\x6e\x74\x20\x73\x69\x7a\x65\x3d\x22\x2b\x31\x22\x3e\x3c\x75\x3e\x53\x74\x72\x75\x63\x74\x75\x72\x65\x73\x20\x64\x65\x20\x64\x6f\x6e\x6e\xc3\xa9\x65\x73\x20\x64\x75\x20\x74\x79\x70\x65\x20\x72\x65\x71\x75\x69\x73\x20\x70\x61\x72\x20\x6c\x27\x6f\x62\x6a\x65\x74\x20\x63\x6f\x75\x72\x61\x6e\x74\x20\x3c\x2f\x75\x3e\x3c\x2f\x66\x6f\x6e\x74\x3e")) - self.textLabel2_3.setText(self.__tr("Un objet de type CO est attendu")) - self.Commentaire.setText(QString.null) - self.textLabel2_2.setText(self.__tr(" Nom concept : ")) - self.bSup.setText(self.__tr("&Supprimer")) - self.bSup.setAccel(self.__tr("Alt+S")) - QToolTip.add(self.bSup,self.__tr("suppression du mot clef")) - self.bOk.setText(self.__tr("&Valider")) - self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")) - QToolTip.add(self.bOk,self.__tr("validation de la saisie")) - self.bHelp.setText(self.__tr("&Documentation")) - self.bHelp.setAccel(self.__tr("Alt+D")) - QToolTip.add(self.bHelp,self.__tr("affichage documentation aster")) - self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur")) - - - def BSupPressed(self): - print "DUnSDCOInto.BSupPressed(): Not implemented yet" - - def ViewDoc(self): - print "DUnSDCOInto.ViewDoc(): Not implemented yet" - - def BOkPressed(self): - print "DUnSDCOInto.BOkPressed(): Not implemented yet" - - def LESDCOReturnPressed(self): - print "DUnSDCOInto.LESDCOReturnPressed(): Not implemented yet" - - def BOuiPressed(self): - print "DUnSDCOInto.BOuiPressed(): Not implemented yet" - - def BNonPressed(self): - print "DUnSDCOInto.BNonPressed(): Not implemented yet" - - def LBSDCOReturnPressed(self): - print "DUnSDCOInto.LBSDCOReturnPressed(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("DUnSDCOInto",s,c) - - def __trUtf8(self,s,c = None): - return qApp.translate("DUnSDCOInto",s,c,QApplication.UnicodeUTF8) diff --git a/Ui/desUniqueSDCOInto.ui b/Ui/desUniqueSDCOInto.ui index 3849072f..b52780aa 100644 --- a/Ui/desUniqueSDCOInto.ui +++ b/Ui/desUniqueSDCOInto.ui @@ -8,13 +8,13 @@ 0 0 - 482 + 541 480 - 350 + 30 0 diff --git a/Ui/desVisu.py b/Ui/desVisu.py deleted file mode 100644 index 09571531..00000000 --- a/Ui/desVisu.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'desVisu.ui' -# -# Created: mar mar 25 10:05:09 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.13 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - - -class DVisu(QWidget): - def __init__(self,parent = None,name = None,fl = 0): - QWidget.__init__(self,parent,name,fl) - - if not name: - self.setName("DVisu") - - - DVisuLayout = QGridLayout(self,1,1,11,6,"DVisuLayout") - - self.TB = QTextBrowser(self,"TB") - - DVisuLayout.addWidget(self.TB,0,0) - - self.languageChange() - - self.resize(QSize(501,394).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - - def languageChange(self): - self.setCaption(self.__tr("Visualisation Include Materiau")) - - - def __tr(self,s,c = None): - return qApp.translate("DVisu",s,c) diff --git a/Ui/myMain.py b/Ui/myMain.py deleted file mode 100644 index c19f1424..00000000 --- a/Ui/myMain.py +++ /dev/null @@ -1,553 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'myMain.ui' -# -# Created: Thu Jun 19 11:40:51 2008 -# by: The PyQt User Interface Compiler (pyuic) 3.16 -# -# WARNING! All changes made in this file will be lost! - - -from qt import * - -image0_data = \ - "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \ - "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \ - "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \ - "\x74\x49\x44\x41\x54\x38\x8d\xed\xd5\xc1\x09\xc0" \ - "\x20\x0c\x05\xd0\x6f\xe9\x36\x81\x2c\x10\xb2\xff" \ - "\xdd\x85\xd2\x53\x85\xb6\xa9\x91\x48\x0f\x05\x3f" \ - "\x08\x1a\xf0\x29\x12\x10\xf8\x28\xc5\xa9\xd9\xc4" \ - "\xde\x96\xcd\x2b\x9a\xd9\xeb\x00\x00\x66\x0e\x2f" \ - "\xe0\xc2\x51\x98\x39\xc4\xf7\x0c\x4c\x44\x6d\x5e" \ - "\x6b\x35\x38\xcf\x92\x82\x45\xe4\xb2\xf6\xf0\x14" \ - "\xac\xaa\x8f\xda\x1d\x4f\xc1\xa5\x74\x1b\x22\x07" \ - "\x9f\x9d\x11\x1d\x96\xea\x8a\x91\x2c\x78\xc1\x0b" \ - "\xee\x64\xe6\x07\x19\xf5\x7e\x92\x03\xad\x45\x2a" \ - "\x04\xcc\x4e\x50\x20\x00\x00\x00\x00\x49\x45\x4e" \ - "\x44\xae\x42\x60\x82" -image1_data = \ - "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \ - "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \ - "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \ - "\x99\x49\x44\x41\x54\x38\x8d\xed\x94\x41\x0e\x85" \ - "\x20\x0c\x44\x5f\x89\xc7\x36\x7f\x61\xbc\x77\x5d" \ - "\x28\x48\xa4\x28\x60\xff\xce\xd9\x54\x8b\xbe\x8e" \ - "\x13\x04\x3e\x1d\x92\x81\x77\xf4\x81\xa1\x23\xdc" \ - "\x2b\x34\xf6\xf4\x7a\x3d\xe2\xb8\x65\xa8\x84\x3f" \ - "\x40\x01\x98\x2a\x0b\x3d\x5f\x62\xc5\x83\x00\xaa" \ - "\x1a\xd7\x05\x50\x44\x9a\xb9\xd5\x07\xa7\x73\xa8" \ - "\xa4\xba\x4f\x92\xa2\xdf\x33\x3c\x64\xc6\x3b\xeb" \ - "\xbd\x82\xe5\xb8\xad\xde\xcb\xcc\x78\x20\xeb\x42" \ - "\x66\xc6\x39\x74\x5d\xfa\x80\xf3\x6f\xaf\x66\xc6" \ - "\x6f\xa1\x9c\x3f\x88\x2f\xb4\x70\xec\x05\xcd\xc0" \ - "\xbe\xd0\x78\x93\xf6\x8e\x17\x14\x92\x63\x5f\x68" \ - "\x6c\x3e\xef\xf6\xba\x3c\x8f\xdd\x36\x6d\xc4\xc0" \ - "\x45\x2c\x87\x81\xf8\x08\x00\x00\x00\x00\x49\x45" \ - "\x4e\x44\xae\x42\x60\x82" -image2_data = \ - "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \ - "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \ - "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \ - "\xa0\x49\x44\x41\x54\x38\x8d\xd5\x95\x4d\x0a\x80" \ - "\x20\x10\x85\x9f\xd1\x46\x68\xe1\x8d\xe6\x62\xd2" \ - "\x22\xbc\x98\x37\x6a\x21\xb4\xac\x45\x19\x92\xc6" \ - "\x64\x69\xe0\xb7\xf1\x87\xf1\xf1\x1c\x47\x05\x2a" \ - "\x21\x8e\x76\x2d\xad\xdb\xfb\x9e\x99\xf6\x56\x8f" \ - "\x80\xb5\x36\x4b\x85\x88\xce\x35\x44\x04\x00\xe8" \ - "\x0a\x39\x8c\xe8\xf9\x90\x34\xd2\x29\x2c\xc3\x7c" \ - "\x8e\xbd\x53\x0f\xeb\x58\x3a\x05\xe9\x54\x34\x1f" \ - "\x8a\x02\x7b\x2a\x7d\x3a\x1f\x09\xbf\x85\x4d\xc5" \ - "\xd5\xd9\x53\xaa\x39\x6e\x4f\x38\xca\xb1\x99\xe2" \ - "\xd2\xe1\x08\xab\xe1\x56\xf8\x2e\x30\x97\x7f\xcb" \ - "\x4d\x8f\xf9\x42\xd7\x5d\xbe\xbe\xd2\xe1\x43\x95" \ - "\x3a\x93\xf6\xca\xad\x3d\x61\x11\xf4\x4b\x7d\x4f" \ - "\x82\x0f\xf9\xc0\x06\x9b\xb5\x1e\xcd\xed\x31\x8c" \ - "\x5c\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60" \ - "\x82" -image3_data = \ - "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \ - "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \ - "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \ - "\x73\x49\x44\x41\x54\x38\x8d\xed\x92\xc1\x0e\x80" \ - "\x20\x08\x40\xb1\xef\x66\x1d\x1c\xff\x4d\x87\x6a" \ - "\xa8\x88\xa1\x76\x69\xf9\x36\x0f\x28\x3e\xd8\x00" \ - "\x60\xf1\x59\x42\x5f\x3a\x71\xf5\x36\x02\xe0\x8e" \ - "\x99\x2b\x09\x88\x01\xd0\x28\x54\x17\x6a\xe4\x7f" \ - "\x21\xce\x1f\xb5\xb0\x5d\x38\xed\xdc\x90\x60\xd0" \ - "\xf1\x13\x79\x63\x5b\x3b\xc9\x2b\xd5\x18\xe2\x39" \ - "\xa9\x43\xec\x1d\x5a\xb7\x78\x5c\xee\x10\x7b\xe4" \ - "\xb2\x15\xaf\x40\x91\xf8\x94\xde\x47\x18\x1e\xce" \ - "\xa5\x9e\xde\x9e\xc5\x9f\x38\x00\x62\xac\x28\xb1" \ - "\xe3\xd7\x01\xd9\x00\x00\x00\x00\x49\x45\x4e\x44" \ - "\xae\x42\x60\x82" -image4_data = \ - "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \ - "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \ - "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \ - "\x74\x49\x44\x41\x54\x38\x8d\xed\x92\xc1\x0a\xc0" \ - "\x20\x08\x40\x6d\xdf\x2d\x3b\x84\xff\xed\x0e\xa3" \ - "\x58\x6a\x26\xd1\x65\xe0\x83\x0e\xa5\x3e\x85\x04" \ - "\x48\x7e\x4b\x91\x0f\x54\x89\xf1\x9e\xa5\xa3\xca" \ - "\x0f\x8a\x89\x63\x65\xb3\x06\xc4\x2d\xd6\x13\xc6" \ - "\x49\xbd\xc2\x59\x83\x16\x13\x62\x19\xf0\xf9\x36" \ - "\xc0\xa2\xef\x00\xd7\x5a\x62\x61\x4d\x3a\xb2\x29" \ - "\x96\xf2\xa3\x62\xff\xa3\x37\xc5\xeb\xed\xe9\x62" \ - "\xaa\xd1\xa2\xe8\x4a\xaa\xa2\xf7\x50\xdd\x12\x74" \ - "\x8c\x0f\xd0\xab\x93\x24\x67\x78\x00\x59\x6e\x28" \ - "\xb1\x74\x3f\x46\x86\x00\x00\x00\x00\x49\x45\x4e" \ - "\x44\xae\x42\x60\x82" -image5_data = \ - "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \ - "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \ - "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \ - "\x82\x49\x44\x41\x54\x38\x8d\xcd\xd3\x41\x12\x80" \ - "\x20\x08\x05\x50\xe8\xe0\x2e\xbc\x38\xad\x32\x73" \ - "\x50\x3e\x48\x53\x7f\xe3\xe4\x8c\x4f\x24\x25\xfa" \ - "\x28\xe2\x9c\x6f\x39\x92\x0b\xf9\x27\x6c\xb6\x01" \ - "\x85\x35\x88\x77\x61\x13\x88\xc2\x57\x64\x18\xcd" \ - "\xa0\x15\xf5\x20\xb4\xe6\xb5\x5b\xe1\x09\xdc\x06" \ - "\x22\xb8\xe2\x2a\xcf\x31\x05\x6e\x18\xdf\xdf\xf8" \ - "\x06\x06\xaa\x55\x1c\xc6\x35\x64\xc4\xdc\xf8\x0c" \ - "\xd0\x20\x1d\x57\x7a\x5c\x85\xa8\x84\x5f\xdc\x02" \ - "\x5e\xa5\x30\x7a\xfc\xcd\x07\xe2\x3a\x1d\xf2\x83" \ - "\xec\x2b\x37\xd9\xad\x5f\xb4\xdf\xef\xd4\x9c\xfb" \ - "\xf7\x2f\xac\x98\xc8\xcc\x89\x00\x00\x00\x00\x49" \ - "\x45\x4e\x44\xae\x42\x60\x82" -image6_data = \ - "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \ - "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \ - "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \ - "\xbf\x49\x44\x41\x54\x38\x8d\xd5\x93\x41\x0a\x83" \ - "\x30\x10\x45\xdf\x48\x8e\xe5\x1d\xbc\x8c\x3b\xa9" \ - "\x8b\xf4\x6a\x9e\xab\xd3\x85\x35\x0d\x26\x63\x62" \ - "\x44\x4a\x3f\x0c\x42\x66\xfc\xf3\xf8\x24\xf0\x6f" \ - "\x12\x40\x2b\x66\xda\x8c\x55\xf3\xde\x22\x12\xcf" \ - "\x9d\x92\xcb\x98\xc0\xba\x2d\x7c\x45\x44\xcf\x9a" \ - "\x07\x63\x8b\xba\xd5\x3c\x44\x91\x23\x5e\xcf\x7c" \ - "\xc1\x62\x36\x97\xa9\x25\x40\xc1\x1f\xf4\xfd\xa7" \ - "\x52\x75\x01\x5d\x24\xa9\x38\x9e\x7d\x6f\x53\xdf" \ - "\x4f\xe4\xcc\xab\x32\x3e\xea\x0f\x03\xc0\xc4\xb2" \ - "\xa0\x71\x2c\xe6\xad\xd8\x9b\x59\xb7\x66\x1c\x3b" \ - "\xe0\x95\x98\x5f\x26\x16\x79\xee\x4e\xbc\xc2\x2c" \ - "\x97\x88\x55\x1f\xe6\xa2\xcb\xc4\x96\x9a\x89\x4b" \ - "\xcb\x6f\x23\xee\x36\x1a\xab\x62\xe2\x52\xc5\x72" \ - "\x94\xdf\xbf\xb6\x10\xbb\xf2\xc8\x97\xb8\xa4\x6c" \ - "\xc6\x67\x7e\xaa\x51\x95\x71\xfa\x08\x7e\xa8\x37" \ - "\x62\xda\x9a\xba\xcb\x20\x23\x5f\x00\x00\x00\x00" \ - "\x49\x45\x4e\x44\xae\x42\x60\x82" -image7_data = \ - "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \ - "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \ - "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \ - "\xd5\x49\x44\x41\x54\x38\x8d\xc5\x95\x5d\x0a\x84" \ - "\x30\x0c\x84\x27\xe2\xa9\x0a\x9e\x6c\x8b\x0f\x4b" \ - "\x3d\xd9\x82\xd7\xca\x3e\x58\xd7\xfe\x4c\xd0\xba" \ - "\x5d\x76\x40\x02\x4d\xf2\x65\xda\x0a\x05\x7e\x24" \ - "\x39\xc9\xeb\x8d\x9e\xaa\x88\x41\xa0\xc9\xaa\xd8" \ - "\xc8\x2a\xb3\x2f\x9c\x42\x5b\xe1\xe3\x0e\x0d\xcf" \ - "\x00\xc0\x03\x08\xf0\xb3\xa7\xa0\x74\x10\xa9\xd7" \ - "\x14\x2e\x00\xb4\x2c\x5a\x5f\xab\x69\x6b\x97\x9b" \ - "\x1c\x83\x7f\xc0\xc3\x16\xb6\xe4\x16\x5b\x64\xf7" \ - "\x8d\x71\x63\x59\x91\x9b\xdc\x45\x70\xde\x47\xc0" \ - "\x47\x32\xdd\x5e\x5b\xcc\x35\xf0\xc9\x77\x62\xae" \ - "\x78\x79\x36\xdc\xcf\x75\x13\x57\x7e\x79\xf4\x8c" \ - "\x4b\x27\xaa\x0f\x13\x27\xb2\x40\xf5\x11\x7f\xcb" \ - "\xe3\x48\xaa\x33\xb6\xe0\x22\x4b\x05\x4d\x07\x46" \ - "\xb8\x02\x5e\x2e\x3b\x3e\x73\xcd\xe0\xdd\x1c\x97" \ - "\xf0\x2e\x8e\xd9\xd0\xaf\x1d\xb3\x81\x22\x4b\xdf" \ - "\x33\xee\xe6\x98\xa9\x34\xa0\xf6\x17\xb4\x55\x40" \ - "\xd0\x0b\xcf\x4c\xa0\x8f\xc0\xdf\xf4\x06\xe3\x25" \ - "\xc1\x98\x1b\xc4\x18\x76\x00\x00\x00\x00\x49\x45" \ - "\x4e\x44\xae\x42\x60\x82" -image8_data = \ - "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \ - "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \ - "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x02" \ - "\x5d\x49\x44\x41\x54\x38\x8d\xd5\x93\xa1\x72\xdb" \ - "\x40\x10\x86\x3f\x67\x0a\x56\xec\xc4\x22\x78\xd0" \ - "\x65\x36\x93\xa0\xc2\x1c\x68\xd6\xc2\xe6\x0d\xf2" \ - "\x1a\x81\x81\x11\x34\x94\x99\xc2\x54\xa8\x32\x9b" \ - "\x55\xf0\xe0\x89\xdd\xb1\x5b\xa6\x02\xb7\x9d\x66" \ - "\x92\xd6\x99\xb6\xd3\x99\xfe\xe8\x6e\x67\xe7\xdb" \ - "\x7f\x77\xef\xe0\x7f\xd3\xe2\xc7\x4b\xd7\x75\xb3" \ - "\x73\x0e\xef\x3d\x51\x15\x00\x23\x82\xb5\x16\x6b" \ - "\x2d\x57\x57\x57\x8b\x17\x29\xbf\x02\xb7\x6d\x3b" \ - "\x0f\x87\x03\xb9\x2d\x58\xae\xd7\x60\x04\x00\xef" \ - "\x1c\xe3\xc7\x03\x06\xa8\xaa\x8a\xeb\xeb\xeb\x57" \ - "\xc1\x17\xdf\xa0\x6d\xdb\x52\x5d\xd7\x54\xef\xb6" \ - "\x00\xa8\x2a\x49\x13\x8a\x12\x35\x32\xec\x3a\xc4" \ - "\x2b\x9b\xcd\xe6\x55\xce\x2f\xfa\xbe\x9f\x87\xc3" \ - "\x40\xfd\xe1\x3d\xcb\x4d\x8d\xaa\xa2\x4e\x48\xee" \ - "\x12\xc6\x82\x38\x08\xc1\x07\x96\x9b\x1a\x8a\x9c" \ - "\xe3\xf1\xf8\xaa\x51\x5c\x38\xe7\xc8\xad\xa5\xaa" \ - "\x6b\x00\xc4\x5f\x12\x9c\x67\xd2\x23\x93\x8c\x88" \ - "\xe6\xc8\x60\xd1\x18\xb1\xd5\x92\xd1\x39\xba\xae" \ - "\x9b\xcf\x83\xa7\x89\x65\xb5\x46\x51\x34\x80\x1b" \ - "\x1d\x2e\x1f\x49\x45\xc0\xe3\x50\x09\x64\x08\xea" \ - "\x15\x44\x90\xc2\xe0\xbd\x3f\xef\x58\x53\xc2\xe4" \ - "\x86\xa0\x01\x9f\x4d\x84\xf5\x84\x18\x41\x83\x62" \ - "\xb0\x40\x8e\x8b\x23\xc9\x24\x50\x10\x93\x31\x4d" \ - "\xd3\x59\xf0\x1b\x80\x98\x14\x11\x20\x25\x14\x40" \ - "\x15\xf1\x96\x4c\x0b\xbc\x1b\x48\x4b\x07\xe4\x68" \ - "\x88\x80\xc0\x29\xeb\xd7\x8e\x41\x41\xf5\xb4\x34" \ - "\xfd\x76\x86\x4c\x05\x3f\x1e\x08\x4b\x0f\x85\x80" \ - "\x26\x54\x40\x63\x40\x44\xce\x83\x8b\xbc\xc0\x39" \ - "\x87\xa6\x13\x50\xa3\xa2\x28\x5e\x1d\x5a\x44\x14" \ - "\xd0\x70\x8a\xa5\x98\x08\x21\x62\xad\x3d\x0f\xb6" \ - "\xd6\xe2\x87\xcf\xa4\x98\x50\x8d\x27\x40\x50\x44" \ - "\x73\x70\x42\x8c\x91\xaf\x8d\x10\xfd\x44\x81\x60" \ - "\x8c\x39\x0b\x5e\x00\xdc\xdd\xdd\xcd\x8e\x80\xa9" \ - "\xde\x42\x02\x48\xe8\x04\x84\x08\x56\xf0\x3e\x02" \ - "\x90\x7d\x72\x94\x65\xc9\xba\x5a\xe3\x46\x87\x31" \ - "\xe6\xa7\x9f\xe5\x02\x60\xb5\x5a\x61\x02\xc4\xee" \ - "\x40\xa6\x89\x4c\x33\xf2\xcb\x0c\xb1\x06\x51\x28" \ - "\x14\xf8\xf8\x99\xb2\x2c\xb9\xb9\xb9\x59\xb8\xd1" \ - "\xf1\xf8\xf8\x48\xd3\x34\xb4\x6d\xfb\xe2\x9b\xfe" \ - "\x5e\xad\xef\xfb\xf9\x78\x3c\x32\x3a\x87\x18\x81" \ - "\xec\xb4\x20\x0d\x11\x51\xa8\xeb\x9a\xed\x76\xbb" \ - "\x00\x18\x86\x61\xee\xba\x8e\xfd\x7e\x8f\x31\x86" \ - "\xed\x76\xcb\x6a\xb5\x7a\xe2\xfe\x59\x1b\x5d\xd7" \ - "\xcd\xde\x7b\x62\x8c\x88\x08\x79\x9e\x63\xad\xa5" \ - "\xaa\xaa\x67\xb9\xbb\xdd\x6e\x6e\x9a\x06\xef\x3d" \ - "\x75\x5d\x3f\x29\xfe\xc7\xea\xfb\x7e\xbe\xbd\xbd" \ - "\x9d\xad\xb5\x73\x59\x96\xf3\xfd\xfd\xfd\xfc\xa2" \ - "\xe3\xdf\xd5\xc3\xc3\xc3\xdc\x34\x0d\xd3\x34\xb1" \ - "\xd9\x6c\xfe\x1e\x18\x4e\x63\xdc\xef\xf7\xa4\x94" \ - "\xfe\x26\xf6\x1f\xe9\x0b\xbc\x4c\x5e\x59\xd6\x14" \ - "\xca\xf4\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42" \ - "\x60\x82" - -class Eficas(QMainWindow): - def __init__(self,parent = None,name = None,fl = 0): - QMainWindow.__init__(self,parent,name,fl) - self.statusBar() - - self.image0 = QPixmap() - self.image0.loadFromData(image0_data,"PNG") - self.image1 = QPixmap() - self.image1.loadFromData(image1_data,"PNG") - self.image2 = QPixmap() - self.image2.loadFromData(image2_data,"PNG") - self.image3 = QPixmap() - self.image3.loadFromData(image3_data,"PNG") - self.image4 = QPixmap() - self.image4.loadFromData(image4_data,"PNG") - self.image5 = QPixmap() - self.image5.loadFromData(image5_data,"PNG") - self.image6 = QPixmap() - self.image6.loadFromData(image6_data,"PNG") - self.image7 = QPixmap() - self.image7.loadFromData(image7_data,"PNG") - self.image8 = QPixmap() - self.image8.loadFromData(image8_data,"PNG") - if not name: - self.setName("Eficas") - - self.setEnabled(1) - self.setSizePolicy(QSizePolicy(QSizePolicy.Minimum,QSizePolicy.Minimum,0,0,self.sizePolicy().hasHeightForWidth())) - self.setMinimumSize(QSize(21,336)) - self.setBackgroundOrigin(QMainWindow.WidgetOrigin) - f = QFont(self.font()) - self.setFont(f) - - self.setCentralWidget(QWidget(self,"qt_central_widget")) - - self.line1 = QFrame(self.centralWidget(),"line1") - self.line1.setGeometry(QRect(-30,-10,930,20)) - self.line1.setFrameShape(QFrame.HLine) - self.line1.setFrameShadow(QFrame.Sunken) - self.line1.setFrameShape(QFrame.HLine) - - self.fileNewAction = QAction(self,"fileNewAction") - self.fileNewAction.setIconSet(QIconSet(self.image0)) - self.fileOpenAction = QAction(self,"fileOpenAction") - self.fileOpenAction.setIconSet(QIconSet(self.image1)) - self.fileSaveAction = QAction(self,"fileSaveAction") - self.fileSaveAction.setIconSet(QIconSet(self.image2)) - self.fileSaveAsAction = QAction(self,"fileSaveAsAction") - self.fileExitAction = QAction(self,"fileExitAction") - self.editUndoAction = QAction(self,"editUndoAction") - self.editUndoAction.setEnabled(0) - self.editUndoAction.setIconSet(QIconSet(self.image3)) - self.editRedoAction = QAction(self,"editRedoAction") - self.editRedoAction.setEnabled(0) - self.editRedoAction.setIconSet(QIconSet(self.image4)) - self.editCutAction = QAction(self,"editCutAction") - self.editCutAction.setIconSet(QIconSet(self.image5)) - self.editCopyAction = QAction(self,"editCopyAction") - self.editCopyAction.setIconSet(QIconSet(self.image6)) - self.editPasteAction = QAction(self,"editPasteAction") - self.editPasteAction.setIconSet(QIconSet(self.image7)) - self.jdcFichierResultatAction = QAction(self,"jdcFichierResultatAction") - self.jdcFichierResultatAction.setEnabled(1) - self.jdcFichierResultatAction.setIconSet(QIconSet(self.image8)) - self.helpContentsAction = QAction(self,"helpContentsAction") - self.helpIndexAction = QAction(self,"helpIndexAction") - self.helpAboutAction = QAction(self,"helpAboutAction") - self.helpAboutAction.setOn(0) - self.fileSaveCloseAction = QAction(self,"fileSaveCloseAction") - self.fileCloseAction = QAction(self,"fileCloseAction") - self.fileNewViewAction = QAction(self,"fileNewViewAction") - self.fileNewViewAction.setEnabled(0) - self.fileCloseAllAction = QAction(self,"fileCloseAllAction") - self.jdcRapportDeValidationAction = QAction(self,"jdcRapportDeValidationAction") - self.jdcFichierSourceAction = QAction(self,"jdcFichierSourceAction") - self.traduitV7V8Action = QAction(self,"traduitV7V8Action") - self.aidenew_itemAction = QAction(self,"aidenew_itemAction") - self.fileNewInclude = QAction(self,"fileNewInclude") - self.optionEditeurAction = QAction(self,"optionEditeurAction") - self.optionPdfAction = QAction(self,"optionPdfAction") - - - self.toolBar = QToolBar(QString(""),self,Qt.DockTop) - - self.toolBar.setFrameShape(QToolBar.MenuBarPanel) - self.toolBar.setHorizontallyStretchable(0) - self.fileNewAction.addTo(self.toolBar) - self.fileSaveAction.addTo(self.toolBar) - self.fileOpenAction.addTo(self.toolBar) - self.fileSaveAsAction.addTo(self.toolBar) - self.editCutAction.addTo(self.toolBar) - self.editPasteAction.addTo(self.toolBar) - self.jdcFichierResultatAction.addTo(self.toolBar) - self.fileExitAction.addTo(self.toolBar) - self.toolBar.addSeparator() - - - self.MenuBar = QMenuBar(self,"MenuBar") - - self.MenuBar.setMargin(2) - - self.Fichier = QPopupMenu(self) - self.fileNewAction.addTo(self.Fichier) - self.fileNewInclude.addTo(self.Fichier) - self.fileOpenAction.addTo(self.Fichier) - self.fileSaveAction.addTo(self.Fichier) - self.fileSaveAsAction.addTo(self.Fichier) - self.fileCloseAction.addTo(self.Fichier) - self.fileCloseAllAction.addTo(self.Fichier) - self.Fichier.insertSeparator() - self.Fichier.insertSeparator() - self.fileExitAction.addTo(self.Fichier) - self.MenuBar.insertItem(QString(""),self.Fichier,2) - - self.Edition = QPopupMenu(self) - self.Edition.insertSeparator() - self.editCutAction.addTo(self.Edition) - self.editCopyAction.addTo(self.Edition) - self.editPasteAction.addTo(self.Edition) - self.MenuBar.insertItem(QString(""),self.Edition,3) - - self.JdC = QPopupMenu(self) - self.jdcRapportDeValidationAction.addTo(self.JdC) - self.jdcFichierSourceAction.addTo(self.JdC) - self.jdcFichierResultatAction.addTo(self.JdC) - self.MenuBar.insertItem(QString(""),self.JdC,4) - - self.Aide = QPopupMenu(self) - self.aidenew_itemAction.addTo(self.Aide) - self.MenuBar.insertItem(QString(""),self.Aide,5) - - self.Options = QPopupMenu(self) - self.optionEditeurAction.addTo(self.Options) - self.optionPdfAction.addTo(self.Options) - self.MenuBar.insertItem(QString(""),self.Options,6) - - self.Traduction = QPopupMenu(self) - self.traduitV7V8Action.addTo(self.Traduction) - self.MenuBar.insertItem(QString(""),self.Traduction,7) - - self.Patrons = QPopupMenu(self) - self.MenuBar.insertItem(QString(""),self.Patrons,8) - - - self.languageChange() - - self.resize(QSize(902,594).expandedTo(self.minimumSizeHint())) - self.clearWState(Qt.WState_Polished) - - self.connect(self.fileNewAction,SIGNAL("activated()"),self.fileNew) - self.connect(self.fileOpenAction,SIGNAL("activated()"),self.fileOpen) - self.connect(self.fileSaveAction,SIGNAL("activated()"),self.fileSave) - self.connect(self.fileSaveAsAction,SIGNAL("activated()"),self.fileSaveAs) - self.connect(self.fileExitAction,SIGNAL("activated()"),self.fileExit) - self.connect(self.editUndoAction,SIGNAL("activated()"),self.editUndo) - self.connect(self.editRedoAction,SIGNAL("activated()"),self.editRedo) - self.connect(self.editCutAction,SIGNAL("activated()"),self.editCut) - self.connect(self.editPasteAction,SIGNAL("activated()"),self.editPaste) - self.connect(self.jdcFichierResultatAction,SIGNAL("activated()"),self.visuJdcPy) - self.connect(self.helpIndexAction,SIGNAL("activated()"),self.helpIndex) - self.connect(self.helpContentsAction,SIGNAL("activated()"),self.helpContents) - self.connect(self.helpAboutAction,SIGNAL("activated()"),self.helpAbout) - self.connect(self.fileCloseAction,SIGNAL("activated()"),self.fileClose) - self.connect(self.fileNewViewAction,SIGNAL("activated()"),self.fileNewView) - self.connect(self.fileCloseAllAction,SIGNAL("activated()"),self.fileCloseAll) - self.connect(self.editCopyAction,SIGNAL("activated()"),self.editCopy) - self.connect(self.jdcRapportDeValidationAction,SIGNAL("activated()"),self.jdcRapport) - self.connect(self.jdcFichierSourceAction,SIGNAL("activated()"),self.jdcFichierSource) - self.connect(self.traduitV7V8Action,SIGNAL("activated()"),self.traductionV7V8) - self.connect(self.aidenew_itemAction,SIGNAL("activated()"),self.helpAbout) - self.connect(self.fileNewInclude,SIGNAL("activated()"),self.NewInclude) - self.connect(self.optionEditeurAction,SIGNAL("activated()"),self.optionEditeur) - self.connect(self.optionPdfAction,SIGNAL("activated()"),self.optionPdf) - - - def languageChange(self): - self.setCaption(self.__tr("Eficas ")) - self.fileNewAction.setText(self.__tr("Nouveau")) - self.fileNewAction.setMenuText(self.__tr("&Nouveau")) - self.fileNewAction.setAccel(self.__tr("Ctrl+N")) - self.fileOpenAction.setText(self.__tr("Ouvrir")) - self.fileOpenAction.setMenuText(self.__tr("&Ouvrir")) - self.fileOpenAction.setAccel(self.__tr("Ctrl+O")) - self.fileSaveAction.setText(self.__tr("Enregistrer")) - self.fileSaveAction.setMenuText(self.__tr("&Enregistrer")) - self.fileSaveAction.setAccel(self.__tr("Ctrl+E")) - self.fileSaveAsAction.setText(self.__tr("Enregistrer Sous")) - self.fileSaveAsAction.setMenuText(self.__tr("Enregistrer Sous")) - self.fileSaveAsAction.setAccel(QString.null) - self.fileExitAction.setText(self.__tr("Quitter")) - self.fileExitAction.setMenuText(self.__tr("Q&uitter")) - self.fileExitAction.setAccel(QString.null) - self.editUndoAction.setText(self.__tr("Undo")) - self.editUndoAction.setMenuText(self.__tr("&Undo")) - self.editUndoAction.setAccel(self.__tr("Ctrl+Z")) - self.editRedoAction.setText(self.__tr("Redo")) - self.editRedoAction.setMenuText(self.__tr("&Redo")) - self.editRedoAction.setAccel(self.__tr("Ctrl+Y")) - self.editCutAction.setText(self.__tr("Couper")) - self.editCutAction.setMenuText(self.__tr("C&ouper")) - self.editCutAction.setAccel(self.__tr("Ctrl+X")) - self.editCopyAction.setText(self.__tr("Copier")) - self.editCopyAction.setMenuText(self.__tr("&Copier")) - self.editCopyAction.setAccel(self.__tr("Ctrl+C")) - self.editPasteAction.setText(self.__tr("Coller")) - self.editPasteAction.setMenuText(self.__tr("&Coller")) - self.editPasteAction.setAccel(self.__tr("Ctrl+V")) - self.jdcFichierResultatAction.setText(self.__tr("Fichier Resultat")) - self.jdcFichierResultatAction.setMenuText(self.__tr("Fichier Resultat")) - self.jdcFichierResultatAction.setAccel(self.__tr("Ctrl+F")) - self.helpContentsAction.setText(self.__tr("Contents")) - self.helpContentsAction.setMenuText(self.__tr("&Contents...")) - self.helpContentsAction.setAccel(QString.null) - self.helpIndexAction.setText(self.__tr("Index")) - self.helpIndexAction.setMenuText(self.__tr("&Index...")) - self.helpIndexAction.setAccel(QString.null) - self.helpAboutAction.setText(self.__tr("About")) - self.helpAboutAction.setMenuText(self.__tr("&About")) - self.helpAboutAction.setAccel(QString.null) - self.fileSaveCloseAction.setText(self.__tr("Fermer")) - self.fileSaveCloseAction.setMenuText(self.__tr("Fermer")) - self.fileCloseAction.setText(self.__tr("Fermer")) - self.fileCloseAction.setMenuText(self.__tr("Fermer")) - self.fileCloseAction.setAccel(self.__tr("Ctrl+W")) - self.fileNewViewAction.setText(self.__tr("New view")) - self.fileCloseAllAction.setText(self.__tr("Tout Fermer")) - self.fileCloseAllAction.setMenuText(self.__tr("Tout Fermer")) - self.jdcRapportDeValidationAction.setText(self.__tr("Rapport de validation")) - self.jdcRapportDeValidationAction.setMenuText(self.__tr("Rapport de validation")) - self.jdcRapportDeValidationAction.setAccel(self.__tr("Ctrl+R")) - self.jdcFichierSourceAction.setText(self.__tr("Fichier source")) - self.jdcFichierSourceAction.setMenuText(self.__tr("Fichier source")) - self.jdcFichierSourceAction.setAccel(self.__tr("Ctrl+B")) - self.traduitV7V8Action.setText(self.__tr("traduitV7V8")) - self.traduitV7V8Action.setMenuText(self.__tr("traduitV7V8")) - self.aidenew_itemAction.setText(self.__tr("Eficas")) - self.fileNewInclude.setText(self.__tr("Nouvel Include")) - self.fileNewInclude.setMenuText(self.__tr("Nouvel Include")) - self.optionEditeurAction.setText(self.__tr("Parametres Eficas")) - self.optionEditeurAction.setMenuText(self.__tr("Parametres Eficas")) - self.optionPdfAction.setText(self.__tr("Lecteur Pdf")) - self.optionPdfAction.setMenuText(self.__tr("Lecteur Pdf")) - self.toolBar.setLabel(self.__tr("Tools")) - if self.MenuBar.findItem(2): - self.MenuBar.findItem(2).setText(self.__tr("&Fichier")) - if self.MenuBar.findItem(3): - self.MenuBar.findItem(3).setText(self.__tr("&Edition")) - if self.MenuBar.findItem(4): - self.MenuBar.findItem(4).setText(self.__tr("JdC")) - if self.MenuBar.findItem(5): - self.MenuBar.findItem(5).setText(self.__tr("&Aide")) - if self.MenuBar.findItem(6): - self.MenuBar.findItem(6).setText(self.__tr("Options")) - if self.MenuBar.findItem(7): - self.MenuBar.findItem(7).setText(self.__tr("Traduction")) - if self.MenuBar.findItem(8): - self.MenuBar.findItem(8).setText(self.__tr("Patrons")) - - - def fileNew(self): - print "Eficas.fileNew(): Not implemented yet" - - def fileOpen(self): - print "Eficas.fileOpen(): Not implemented yet" - - def fileSave(self): - print "Eficas.fileSave(): Not implemented yet" - - def fileSaveAs(self): - print "Eficas.fileSaveAs(): Not implemented yet" - - def filePrint(self): - print "Eficas.filePrint(): Not implemented yet" - - def fileExit(self): - print "Eficas.fileExit(): Not implemented yet" - - def editUndo(self): - print "Eficas.editUndo(): Not implemented yet" - - def editRedo(self): - print "Eficas.editRedo(): Not implemented yet" - - def jdcFichierSource(self): - print "Eficas.jdcFichierSource(): Not implemented yet" - - def fileNewView(self): - print "Eficas.fileNewView(): Not implemented yet" - - def editPaste(self): - print "Eficas.editPaste(): Not implemented yet" - - def visuJdcPy(self): - print "Eficas.visuJdcPy(): Not implemented yet" - - def helpIndex(self): - print "Eficas.helpIndex(): Not implemented yet" - - def helpContents(self): - print "Eficas.helpContents(): Not implemented yet" - - def helpAbout(self): - print "Eficas.helpAbout(): Not implemented yet" - - def fileClose(self): - print "Eficas.fileClose(): Not implemented yet" - - def fileCloseAll(self): - print "Eficas.fileCloseAll(): Not implemented yet" - - def jdcRapport(self): - print "Eficas.jdcRapport(): Not implemented yet" - - def editCut(self): - print "Eficas.editCut(): Not implemented yet" - - def editCopy(self): - print "Eficas.editCopy(): Not implemented yet" - - def traductionV7V8(self): - print "Eficas.traductionV7V8(): Not implemented yet" - - def NewInclude(self): - print "Eficas.NewInclude(): Not implemented yet" - - def optionEditeur(self): - print "Eficas.optionEditeur(): Not implemented yet" - - def optionPdf(self): - print "Eficas.optionPdf(): Not implemented yet" - - def __tr(self,s,c = None): - return qApp.translate("Eficas",s,c) diff --git a/UiQT4/OptionsEditeur.py b/UiQT4/OptionsEditeur.py index 6435e88b..efd47e7f 100644 --- a/UiQT4/OptionsEditeur.py +++ b/UiQT4/OptionsEditeur.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'OptionsEditeur.ui' # -# Created: Wed Jul 9 10:12:47 2008 +# Created: Tue Nov 18 17:37:26 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/OptionsPdf.py b/UiQT4/OptionsPdf.py index d20115f7..6b8ac238 100644 --- a/UiQT4/OptionsPdf.py +++ b/UiQT4/OptionsPdf.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'OptionsPdf.ui' # -# Created: Wed Jul 9 10:12:47 2008 +# Created: Tue Nov 18 17:37:26 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/aideQT.py b/UiQT4/aideQT.py index d736e7ce..42b7e751 100644 --- a/UiQT4/aideQT.py +++ b/UiQT4/aideQT.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'aideQT.ui' # -# Created: Wed Jul 9 10:12:47 2008 +# Created: Tue Nov 18 17:37:26 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desChoixCata.py b/UiQT4/desChoixCata.py index d35f39ff..7da381db 100644 --- a/UiQT4/desChoixCata.py +++ b/UiQT4/desChoixCata.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desChoixCata.ui' # -# Created: Wed Jul 16 16:27:33 2008 +# Created: Tue Nov 18 17:37:24 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desCommande.py b/UiQT4/desCommande.py index 03e404f2..749cd037 100644 --- a/UiQT4/desCommande.py +++ b/UiQT4/desCommande.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desCommande.ui' # -# Created: Tue Sep 23 10:19:58 2008 +# Created: Tue Nov 18 17:37:24 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desCommentaire.py b/UiQT4/desCommentaire.py index d4b7a5e4..c89681d2 100644 --- a/UiQT4/desCommentaire.py +++ b/UiQT4/desCommentaire.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desCommentaire.ui' # -# Created: Wed Jul 23 12:00:45 2008 +# Created: Tue Nov 18 17:37:24 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desError.py b/UiQT4/desError.py index 31da9ec1..39e994fa 100644 --- a/UiQT4/desError.py +++ b/UiQT4/desError.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desError.ui' # -# Created: Wed Jul 9 10:11:20 2008 +# Created: Tue Nov 18 17:37:24 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desFormule.py b/UiQT4/desFormule.py index 2ac2323d..95d721ae 100644 --- a/UiQT4/desFormule.py +++ b/UiQT4/desFormule.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desFormule.ui' # -# Created: Wed Jul 23 11:43:53 2008 +# Created: Tue Nov 18 17:37:24 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desInactif.py b/UiQT4/desInactif.py index 7a8ce1df..33790c95 100644 --- a/UiQT4/desInactif.py +++ b/UiQT4/desInactif.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desInactif.ui' # -# Created: Wed Jul 9 10:11:21 2008 +# Created: Tue Nov 18 17:37:24 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desInclude.py b/UiQT4/desInclude.py index 73a967c7..c78611d6 100644 --- a/UiQT4/desInclude.py +++ b/UiQT4/desInclude.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desInclude.ui' # -# Created: Tue Oct 7 16:59:34 2008 +# Created: Tue Nov 18 17:37:24 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desListeParam.py b/UiQT4/desListeParam.py index ade7e63b..43c5d350 100644 --- a/UiQT4/desListeParam.py +++ b/UiQT4/desListeParam.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desListeParam.ui' # -# Created: Fri Jul 18 16:24:34 2008 +# Created: Tue Nov 18 17:37:24 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desMCFact.py b/UiQT4/desMCFact.py index ede80549..ac6b782e 100644 --- a/UiQT4/desMCFact.py +++ b/UiQT4/desMCFact.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desMCFact.ui' # -# Created: Fri Jul 18 16:24:34 2008 +# Created: Tue Nov 18 17:37:24 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desMCListAjout.py b/UiQT4/desMCListAjout.py index f01c7325..69cbc51a 100644 --- a/UiQT4/desMCListAjout.py +++ b/UiQT4/desMCListAjout.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desMCListAjout.ui' # -# Created: Wed Jul 9 10:11:21 2008 +# Created: Tue Nov 18 17:37:24 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desParam.py b/UiQT4/desParam.py index cee894d9..c9b3bf3b 100644 --- a/UiQT4/desParam.py +++ b/UiQT4/desParam.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desParam.ui' # -# Created: Wed Sep 10 11:20:17 2008 +# Created: Tue Nov 18 17:37:24 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desPlusieursBase.py b/UiQT4/desPlusieursBase.py index 54c612b3..a75ca407 100644 --- a/UiQT4/desPlusieursBase.py +++ b/UiQT4/desPlusieursBase.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desPlusieursBase.ui' # -# Created: Fri Jul 18 16:24:35 2008 +# Created: Tue Nov 18 17:37:25 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desPlusieursInto.py b/UiQT4/desPlusieursInto.py index 0af9546f..5165f98e 100644 --- a/UiQT4/desPlusieursInto.py +++ b/UiQT4/desPlusieursInto.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desPlusieursInto.ui' # -# Created: Fri Sep 26 11:16:49 2008 +# Created: Tue Nov 18 17:37:25 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desPoursuite.py b/UiQT4/desPoursuite.py index 3b36f1c5..d02e1fc3 100644 --- a/UiQT4/desPoursuite.py +++ b/UiQT4/desPoursuite.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desPoursuite.ui' # -# Created: Fri Oct 10 11:42:29 2008 +# Created: Tue Nov 18 17:37:25 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desRacine.py b/UiQT4/desRacine.py index 19def6bc..297b9adf 100644 --- a/UiQT4/desRacine.py +++ b/UiQT4/desRacine.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desRacine.ui' # -# Created: Tue Sep 23 10:19:58 2008 +# Created: Tue Nov 18 17:37:25 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desSelectVal.py b/UiQT4/desSelectVal.py index 914a3fa2..c4229194 100644 --- a/UiQT4/desSelectVal.py +++ b/UiQT4/desSelectVal.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desSelectVal.ui' # -# Created: Fri Sep 26 17:59:06 2008 +# Created: Tue Nov 18 17:37:25 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desUniqueASSD.py b/UiQT4/desUniqueASSD.py index 39863fbc..11130db3 100644 --- a/UiQT4/desUniqueASSD.py +++ b/UiQT4/desUniqueASSD.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desUniqueASSD.ui' # -# Created: Fri Jul 18 16:24:35 2008 +# Created: Tue Nov 18 17:37:25 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desUniqueBase.py b/UiQT4/desUniqueBase.py index 26520797..6d2c6b33 100644 --- a/UiQT4/desUniqueBase.py +++ b/UiQT4/desUniqueBase.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desUniqueBase.ui' # -# Created: Thu Jul 24 10:46:31 2008 +# Created: Tue Nov 18 17:37:25 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desUniqueComp.py b/UiQT4/desUniqueComp.py index 1edb0042..77b18a58 100644 --- a/UiQT4/desUniqueComp.py +++ b/UiQT4/desUniqueComp.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desUniqueComp.ui' # -# Created: Wed Jul 9 10:31:14 2008 +# Created: Tue Nov 18 17:37:25 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desUniqueInto.py b/UiQT4/desUniqueInto.py index 5d9270f5..9c2785c7 100644 --- a/UiQT4/desUniqueInto.py +++ b/UiQT4/desUniqueInto.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desUniqueInto.ui' # -# Created: Fri Jul 18 16:24:35 2008 +# Created: Tue Nov 18 17:37:25 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desUniqueSDCO.py b/UiQT4/desUniqueSDCO.py index e1381af3..a65143e4 100644 --- a/UiQT4/desUniqueSDCO.py +++ b/UiQT4/desUniqueSDCO.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desUniqueSDCO.ui' # -# Created: Wed Jul 9 10:11:22 2008 +# Created: Tue Nov 18 17:37:26 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desUniqueSDCOInto.py b/UiQT4/desUniqueSDCOInto.py index 718c787b..65367aaa 100644 --- a/UiQT4/desUniqueSDCOInto.py +++ b/UiQT4/desUniqueSDCOInto.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desUniqueSDCOInto.ui' # -# Created: Fri Jul 18 16:24:35 2008 +# Created: Tue Nov 18 17:37:25 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desViewTexte.py b/UiQT4/desViewTexte.py index dac56f76..43e63fd3 100644 --- a/UiQT4/desViewTexte.py +++ b/UiQT4/desViewTexte.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desViewTexte.ui' # -# Created: Tue Sep 9 18:09:46 2008 +# Created: Tue Nov 18 17:37:26 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/desVisu.py b/UiQT4/desVisu.py index 8a0e2895..687d2f42 100644 --- a/UiQT4/desVisu.py +++ b/UiQT4/desVisu.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'desVisu.ui' # -# Created: Wed Jul 9 10:11:22 2008 +# Created: Tue Nov 18 17:37:26 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! diff --git a/UiQT4/myMain.py b/UiQT4/myMain.py index 604403a7..7720fb0c 100644 --- a/UiQT4/myMain.py +++ b/UiQT4/myMain.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'myMain.ui' # -# Created: Wed Sep 10 09:57:04 2008 +# Created: Tue Nov 18 17:37:26 2008 # by: PyQt4 UI code generator 4.4.2 # # WARNING! All changes made in this file will be lost! @@ -66,25 +66,21 @@ class Ui_Eficas(object): self.actionFermer.setObjectName("actionFermer") self.actionFermer_tout = QtGui.QAction(Eficas) self.actionFermer_tout.setObjectName("actionFermer_tout") - self.actionCopier = QtGui.QAction(Eficas) - self.actionCopier.setObjectName("actionCopier") self.actionCouper = QtGui.QAction(Eficas) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap("icons/Cut24.gif"),QtGui.QIcon.Normal,QtGui.QIcon.Off) self.actionCouper.setIcon(icon) self.actionCouper.setObjectName("actionCouper") - self.actionColler = QtGui.QAction(Eficas) - self.actionColler.setObjectName("actionColler") - self.actionCopier1 = QtGui.QAction(Eficas) + self.actionCopier = QtGui.QAction(Eficas) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap("icons/Copy24.gif"),QtGui.QIcon.Normal,QtGui.QIcon.Off) - self.actionCopier1.setIcon(icon) - self.actionCopier1.setObjectName("actionCopier1") - self.actionColler1 = QtGui.QAction(Eficas) + self.actionCopier.setIcon(icon) + self.actionCopier.setObjectName("actionCopier") + self.actionColler = QtGui.QAction(Eficas) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap("icons/Paste24.gif"),QtGui.QIcon.Normal,QtGui.QIcon.Off) - self.actionColler1.setIcon(icon) - self.actionColler1.setObjectName("actionColler1") + self.actionColler.setIcon(icon) + self.actionColler.setObjectName("actionColler") self.actionQuitter = QtGui.QAction(Eficas) self.actionQuitter.setObjectName("actionQuitter") self.actionRapport_de_Validation = QtGui.QAction(Eficas) @@ -155,17 +151,20 @@ class Ui_Eficas(object): self.action_Ouvrir.setText(QtGui.QApplication.translate("Eficas", "&Ouvrir", None, QtGui.QApplication.UnicodeUTF8)) self.action_Ouvrir.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+O", None, QtGui.QApplication.UnicodeUTF8)) self.actionEnregistrer.setText(QtGui.QApplication.translate("Eficas", "Enregistrer", None, QtGui.QApplication.UnicodeUTF8)) - self.actionEnregistrer.setShortcut(QtGui.QApplication.translate("Eficas", "Shift+E", None, QtGui.QApplication.UnicodeUTF8)) + self.actionEnregistrer.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+E", None, QtGui.QApplication.UnicodeUTF8)) self.actionEnregistrer_sous.setText(QtGui.QApplication.translate("Eficas", "Enregistrer sous", None, QtGui.QApplication.UnicodeUTF8)) + self.actionEnregistrer_sous.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+Shift+E", None, QtGui.QApplication.UnicodeUTF8)) self.actionFermer.setText(QtGui.QApplication.translate("Eficas", "Fermer ", None, QtGui.QApplication.UnicodeUTF8)) self.actionFermer.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+W", None, QtGui.QApplication.UnicodeUTF8)) self.actionFermer_tout.setText(QtGui.QApplication.translate("Eficas", "Fermer tout", None, QtGui.QApplication.UnicodeUTF8)) - self.actionCopier.setText(QtGui.QApplication.translate("Eficas", "Copier", None, QtGui.QApplication.UnicodeUTF8)) self.actionCouper.setText(QtGui.QApplication.translate("Eficas", "Couper", None, QtGui.QApplication.UnicodeUTF8)) + self.actionCouper.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+X", None, QtGui.QApplication.UnicodeUTF8)) + self.actionCopier.setText(QtGui.QApplication.translate("Eficas", "Copier", None, QtGui.QApplication.UnicodeUTF8)) + self.actionCopier.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+C", None, QtGui.QApplication.UnicodeUTF8)) self.actionColler.setText(QtGui.QApplication.translate("Eficas", "Coller", None, QtGui.QApplication.UnicodeUTF8)) - self.actionCopier1.setText(QtGui.QApplication.translate("Eficas", "Copier", None, QtGui.QApplication.UnicodeUTF8)) - self.actionColler1.setText(QtGui.QApplication.translate("Eficas", "Coller", None, QtGui.QApplication.UnicodeUTF8)) + self.actionColler.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+V", None, QtGui.QApplication.UnicodeUTF8)) self.actionQuitter.setText(QtGui.QApplication.translate("Eficas", "Quitter", None, QtGui.QApplication.UnicodeUTF8)) + self.actionQuitter.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+Q", None, QtGui.QApplication.UnicodeUTF8)) self.actionRapport_de_Validation.setText(QtGui.QApplication.translate("Eficas", "Rapport de Validation", None, QtGui.QApplication.UnicodeUTF8)) self.actionFichier_Source.setText(QtGui.QApplication.translate("Eficas", "Fichier Source", None, QtGui.QApplication.UnicodeUTF8)) self.actionFichier_Resultat.setText(QtGui.QApplication.translate("Eficas", "Fichier Résultat", None, QtGui.QApplication.UnicodeUTF8)) diff --git a/UiQT4/myMain.ui b/UiQT4/myMain.ui index 0112d9c6..6025ed61 100644 --- a/UiQT4/myMain.ui +++ b/UiQT4/myMain.ui @@ -168,13 +168,16 @@ Enregistrer - Shift+E + Ctrl+E Enregistrer sous + + Ctrl+Shift+E + @@ -189,11 +192,6 @@ Fermer tout - - - Copier - - @@ -202,10 +200,8 @@ Couper - - - - Coller + + Ctrl+X @@ -216,6 +212,9 @@ Copier + + Ctrl+C + @@ -225,11 +224,17 @@ Coller + + Ctrl+V + Quitter + + Ctrl+Q + diff --git a/Validation/V_UN_PARMI.py b/Validation/V_UN_PARMI.py index aab3a034..2f162976 100644 --- a/Validation/V_UN_PARMI.py +++ b/Validation/V_UN_PARMI.py @@ -1,23 +1,23 @@ -#@ MODIF V_UN_PARMI Validation DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS +#@ MODIF V_UN_PARMI Validation DATE 16/09/2008 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # -# THIS PROGRAM IS 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. -# -# # ====================================================================== @@ -27,8 +27,8 @@ class UN_PARMI: La règle vérifie que l'on trouve un des mots-clés de la règle parmi les arguments d'un OBJECT. - 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 + 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 les clés sont des noms de mots-clés. """ def verif(self,args): @@ -46,7 +46,7 @@ class UN_PARMI: for mc in self.mcs: if args.has_key(mc):count=count+1 if count != 1: - text = "- Il ne faut qu'un mot-clé parmi : "+`self.mcs`+'\n' + text = "- Il faut un et un seul mot-clé parmi : "+`self.mcs`+'\n' return text,0 return text,1 diff --git a/convert/convert_openturns.py b/convert/convert_openturns.py deleted file mode 100644 index 527e6f65..00000000 --- a/convert/convert_openturns.py +++ /dev/null @@ -1,128 +0,0 @@ -# -*- coding: utf-8 -*- -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. -# -# -# ====================================================================== -""" - Ce module contient le plugin convertisseur de fichier - au format python pour EFICAS. - - Un plugin convertisseur doit fournir deux attributs de classe : - extensions et formats et deux méthodes : readfile,convert. - - L'attribut de classe extensions est une liste d'extensions - de fichiers préconisées pour ce type de format. Cette information - est seulement indicative. - - L'attribut de classe formats est une liste de formats de sortie - supportés par le convertisseur. Les formats possibles sont : - eval, dict ou exec. - Le format eval est un texte source Python qui peut etre evalué. Le - résultat de l'évaluation est un objet Python quelconque. - Le format dict est un dictionnaire Python. - Le format exec est un texte source Python qui peut etre executé. - - La méthode readfile a pour fonction de lire un fichier dont le - nom est passé en argument de la fonction. - - convertisseur.readfile(nom_fichier) - - La méthode convert a pour fonction de convertir le fichier - préalablement lu dans un objet du format passé en argument. - - objet=convertisseur.convert(outformat) - - Ce convertisseur supporte le format de sortie exec - -""" -import sys,string,traceback - -import parseur_python -from Noyau import N_CR - -def entryPoint(): - """ - Retourne les informations nécessaires pour le chargeur de plugins - Ces informations sont retournées dans un dictionnaire - """ - return { - # Le nom du plugin - 'name' : 'openturns', - # La factory pour créer une instance du plugin - 'factory' : PythonParser, - } - - -class PythonParser: - """ - Ce convertisseur lit un fichier au format python avec la - methode readfile : convertisseur.readfile(nom_fichier) - et retourne le texte au format outformat avec la - methode convertisseur.convert(outformat) - - Ses caractéristiques principales sont exposées dans 2 attributs - de classe : - - extensions : qui donne une liste d'extensions de fichier préconisées - - formats : qui donne une liste de formats de sortie supportés - """ - # Les extensions de fichier préconisées - extensions=('.py',) - # Les formats de sortie supportés (eval dict ou exec) - # Le format exec est du python executable (commande exec) converti avec PARSEUR_PYTHON - # Le format execnoparseur est du python executable (commande exec) non converti - formats=('exec','execnoparseur') - - def __init__(self,cr=None): - # Si l'objet compte-rendu n'est pas fourni, on utilise le - # compte-rendu standard - self.text='' - if cr : - self.cr=cr - else: - self.cr=N_CR.CR(debut='CR convertisseur format python', - fin='fin CR format python') - - def readfile(self,filename): - self.filename=filename - try: - self.text=open(filename).read() - except: - self.cr.fatal("Impossible ouvrir fichier %s" % filename) - return - - def convert(self,outformat,appli=None): - if outformat == 'exec': - try: - #txt=parseur_python.PARSEUR_PYTHON(self.text).get_texte(appli) - #print txt - #return txt - return parseur_python.PARSEUR_PYTHON(self.text).get_texte(appli) - except: - # Erreur lors de la conversion - l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1], - sys.exc_info()[2]) - self.cr.exception("Impossible de convertir le fichier python \ - qui doit contenir des erreurs.\n \ - On retourne le fichier non converti \n \ - Prévenir la maintenance. \n" + string.join(l)) - # On retourne néanmoins le source initial non converti (au cas où) - return self.text - elif outformat == 'execnoparseur': - return self.text - else: - raise "Format de sortie : %s, non supporté" - return None - diff --git a/convert/convert_openturns_study.py b/convert/convert_openturns_study.py new file mode 100644 index 00000000..cc62f504 --- /dev/null +++ b/convert/convert_openturns_study.py @@ -0,0 +1,128 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +""" + Ce module contient le plugin convertisseur de fichier + au format python pour EFICAS. + + Un plugin convertisseur doit fournir deux attributs de classe : + extensions et formats et deux méthodes : readfile,convert. + + L'attribut de classe extensions est une liste d'extensions + de fichiers préconisées pour ce type de format. Cette information + est seulement indicative. + + L'attribut de classe formats est une liste de formats de sortie + supportés par le convertisseur. Les formats possibles sont : + eval, dict ou exec. + Le format eval est un texte source Python qui peut etre evalué. Le + résultat de l'évaluation est un objet Python quelconque. + Le format dict est un dictionnaire Python. + Le format exec est un texte source Python qui peut etre executé. + + La méthode readfile a pour fonction de lire un fichier dont le + nom est passé en argument de la fonction. + - convertisseur.readfile(nom_fichier) + + La méthode convert a pour fonction de convertir le fichier + préalablement lu dans un objet du format passé en argument. + - objet=convertisseur.convert(outformat) + + Ce convertisseur supporte le format de sortie exec + +""" +import sys,string,traceback + +import parseur_python +from Noyau import N_CR + +def entryPoint(): + """ + Retourne les informations nécessaires pour le chargeur de plugins + Ces informations sont retournées dans un dictionnaire + """ + return { + # Le nom du plugin + 'name' : 'openturns_study', + # La factory pour créer une instance du plugin + 'factory' : PythonParser, + } + + +class PythonParser: + """ + Ce convertisseur lit un fichier au format python avec la + methode readfile : convertisseur.readfile(nom_fichier) + et retourne le texte au format outformat avec la + methode convertisseur.convert(outformat) + + Ses caractéristiques principales sont exposées dans 2 attributs + de classe : + - extensions : qui donne une liste d'extensions de fichier préconisées + - formats : qui donne une liste de formats de sortie supportés + """ + # Les extensions de fichier préconisées + extensions=('.py',) + # Les formats de sortie supportés (eval dict ou exec) + # Le format exec est du python executable (commande exec) converti avec PARSEUR_PYTHON + # Le format execnoparseur est du python executable (commande exec) non converti + formats=('exec','execnoparseur') + + def __init__(self,cr=None): + # Si l'objet compte-rendu n'est pas fourni, on utilise le + # compte-rendu standard + self.text='' + if cr : + self.cr=cr + else: + self.cr=N_CR.CR(debut='CR convertisseur format python', + fin='fin CR format python') + + def readfile(self,filename): + self.filename=filename + try: + self.text=open(filename).read() + except: + self.cr.fatal("Impossible ouvrir fichier %s" % filename) + return + + def convert(self,outformat,appli=None): + if outformat == 'exec': + try: + #txt=parseur_python.PARSEUR_PYTHON(self.text).get_texte(appli) + #print txt + #return txt + return parseur_python.PARSEUR_PYTHON(self.text).get_texte(appli) + except: + # Erreur lors de la conversion + l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1], + sys.exc_info()[2]) + self.cr.exception("Impossible de convertir le fichier python \ + qui doit contenir des erreurs.\n \ + On retourne le fichier non converti \n \ + Prévenir la maintenance. \n" + string.join(l)) + # On retourne néanmoins le source initial non converti (au cas où) + return self.text + elif outformat == 'execnoparseur': + return self.text + else: + raise "Format de sortie : %s, non supporté" + return None + diff --git a/convert/convert_openturns_wrapper.py b/convert/convert_openturns_wrapper.py new file mode 100644 index 00000000..0cc2ea11 --- /dev/null +++ b/convert/convert_openturns_wrapper.py @@ -0,0 +1,128 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +""" + Ce module contient le plugin convertisseur de fichier + au format python pour EFICAS. + + Un plugin convertisseur doit fournir deux attributs de classe : + extensions et formats et deux méthodes : readfile,convert. + + L'attribut de classe extensions est une liste d'extensions + de fichiers préconisées pour ce type de format. Cette information + est seulement indicative. + + L'attribut de classe formats est une liste de formats de sortie + supportés par le convertisseur. Les formats possibles sont : + eval, dict ou exec. + Le format eval est un texte source Python qui peut etre evalué. Le + résultat de l'évaluation est un objet Python quelconque. + Le format dict est un dictionnaire Python. + Le format exec est un texte source Python qui peut etre executé. + + La méthode readfile a pour fonction de lire un fichier dont le + nom est passé en argument de la fonction. + - convertisseur.readfile(nom_fichier) + + La méthode convert a pour fonction de convertir le fichier + préalablement lu dans un objet du format passé en argument. + - objet=convertisseur.convert(outformat) + + Ce convertisseur supporte le format de sortie exec + +""" +import sys,string,traceback + +import parseur_python +from Noyau import N_CR + +def entryPoint(): + """ + Retourne les informations nécessaires pour le chargeur de plugins + Ces informations sont retournées dans un dictionnaire + """ + return { + # Le nom du plugin + 'name' : 'openturns_wrapper', + # La factory pour créer une instance du plugin + 'factory' : PythonParser, + } + + +class PythonParser: + """ + Ce convertisseur lit un fichier au format python avec la + methode readfile : convertisseur.readfile(nom_fichier) + et retourne le texte au format outformat avec la + methode convertisseur.convert(outformat) + + Ses caractéristiques principales sont exposées dans 2 attributs + de classe : + - extensions : qui donne une liste d'extensions de fichier préconisées + - formats : qui donne une liste de formats de sortie supportés + """ + # Les extensions de fichier préconisées + extensions=('.py',) + # Les formats de sortie supportés (eval dict ou exec) + # Le format exec est du python executable (commande exec) converti avec PARSEUR_PYTHON + # Le format execnoparseur est du python executable (commande exec) non converti + formats=('exec','execnoparseur') + + def __init__(self,cr=None): + # Si l'objet compte-rendu n'est pas fourni, on utilise le + # compte-rendu standard + self.text='' + if cr : + self.cr=cr + else: + self.cr=N_CR.CR(debut='CR convertisseur format python', + fin='fin CR format python') + + def readfile(self,filename): + self.filename=filename + try: + self.text=open(filename).read() + except: + self.cr.fatal("Impossible ouvrir fichier %s" % filename) + return + + def convert(self,outformat,appli=None): + if outformat == 'exec': + try: + #txt=parseur_python.PARSEUR_PYTHON(self.text).get_texte(appli) + #print txt + #return txt + return parseur_python.PARSEUR_PYTHON(self.text).get_texte(appli) + except: + # Erreur lors de la conversion + l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1], + sys.exc_info()[2]) + self.cr.exception("Impossible de convertir le fichier python \ + qui doit contenir des erreurs.\n \ + On retourne le fichier non converti \n \ + Prévenir la maintenance. \n" + string.join(l)) + # On retourne néanmoins le source initial non converti (au cas où) + return self.text + elif outformat == 'execnoparseur': + return self.text + else: + raise "Format de sortie : %s, non supporté" + return None + diff --git a/generator/OpenturnsBase.py b/generator/OpenturnsBase.py index 316a34eb..2b9d900c 100644 --- a/generator/OpenturnsBase.py +++ b/generator/OpenturnsBase.py @@ -30,15 +30,17 @@ class Generateur : ListeVariables : chaque variable est decrite par un dictionnaire ; cette liste les regroupe DictLois : dictionnaires des lois ''' - def __init__ (self, DictMCVal, ListeVariables, DictLois ) : + def __init__ (self, appli, DictMCVal = {}, ListeVariables = [], DictLois = {}, DictVariables = {} ) : #---------------------------------------------------------# self.ListeVariables = ListeVariables self.ListeVariablesIn = [] self.DictLois = DictLois + self.DictVariables = DictVariables self.DictMCVal = DictMCVal self.DictTypeVar = {} self.nbVarIn = 0 self.creeInfoVar() + self.appli = appli # # On charge eventuellement le Solver par defaut # et les valeurs par defaut du Solver (dans l init) @@ -61,7 +63,7 @@ class Generateur : monSTDGenerateur=gener( self.DictMCVal, self.ListeVariablesIn, self.DictLois ) except : from OpenturnsSTD import STDGenerateur - monSTDGenerateur = STDGenerateur( self.DictMCVal, self.ListeVariablesIn, self.DictLois ) + monSTDGenerateur = STDGenerateur( self.appli, self.DictMCVal, self.ListeVariablesIn, self.DictLois ) return monSTDGenerateur def getXMLGenerateur(self) : @@ -71,7 +73,7 @@ class Generateur : monXMLGenerateur=gener( self.DictMCVal, self.ListeVariables, self.DictLois ) except : from OpenturnsXML import XMLGenerateur - monXMLGenerateur = XMLGenerateur( self.DictMCVal, self.ListeVariables, self.DictLois ) + monXMLGenerateur = XMLGenerateur( self.appli, self.DictMCVal, self.DictVariables ) return monXMLGenerateur def creeInfoVar (self) : diff --git a/generator/OpenturnsSTD.py b/generator/OpenturnsSTD.py index 9fb4b234..09f6945c 100644 --- a/generator/OpenturnsSTD.py +++ b/generator/OpenturnsSTD.py @@ -10,7 +10,37 @@ __revision__ = "V1.0" import os +defaultSTD = """#! /usr/bin/env python +class StudyFileGenerationError: + def __init__ (self, st): + self.st = st + def __str__(self): + return "'%s'" % self.st + +raise StudyFileGenerationError, "The study file was not generated" +""" + +headerSTD = """#! /usr/bin/env python + +# Chargement du module systeme +import sys +sys.path.append( '%s' ) + +# Chargement du module math +import math + +# Chargement du module Open TURNS +from openturns import * +from openturns_viewer import ViewImage,StopViewer,WaitForViewer + +""" + +footerSTD = """ + +# Terminaison du fichier +#sys.exit( 0 ) +""" #============================================= # La classe de creation du fichier STD @@ -19,401 +49,1135 @@ import os class STDGenerateur : ''' - Generation du fichier pyhton + Generation du fichier python ''' - def __init__ (self, DictMCVal, ListeVariables, DictLois ) : - #---------------------------------------------------------# - - self.NomAlgo = "myAlgo" + def __init__ (self, appli, DictMCVal, ListeVariables, DictLois ) : self.DictMCVal = DictMCVal self.ListeVariables = ListeVariables self.DictLois = DictLois - - self.ListeOrdreMCReliability = ( - "MaximumIterationsNumber", - "MaximumAbsoluteError", - "RelativeAbsoluteError", - "MaximumConstraintError", - "MaximumResidualError", - ) - self.ListeOrdreMCDirectionalSampling = ( - "RootStrategy", - "SamplingStrategy", - ) - self.ListeOrdreMCParametresAlgo = ( - "BlockSize", - "MaximumCoefficientOfVariation", - ) - self.ListeOrdreImportanceSampling = ( - "ImportanceSampling_BlockSize", - "ImportanceSampling_MaximumCoefficientOfVariation", - "ImportanceSampling_MaximumOuterSampling", - ) - - # Ce dictionnaire contient la liste de tous les parametres possibles pour chaque loi - # Les parametres qui n'apparaissent pas ne pourront pas etre substitues dans le fichier - # produit (etude python), et donc n'apparaitront pas. - self.listeParamLoi = { - "Beta" : ["Mu", "Sigma", "T", "R", "A", "B" ], - "Exponential" : ["Lambda", "Gamma" ], - "Gamma" : ["K", "Mu", "Sigma", "Lambda", "Gamma" ], - #"Geometric" : ["P", ], - "Gumbel" : ["Alpha","Beta","Mu","Sigma" ], - #"Histogram" : ["Sup", "Values" ], - "LogNormal" : ["MuLog", "SigmaLog", "Mu", "Sigma", "SigmaOverMu", "Gamma", ], - "Logistic" : [ "Alpha", "Beta" ], - #"MultiNomial" : [ "N", "Values" ], - "Normal" : ["Mu", "Sigma" ], - "Poisson" : [ "Lambda", ], - "Student" : [ "Mu", "Nu" ], - "Triangular" : [ "A", "M", "B" ], - "TruncatedNormal" : [ "MuN", "SigmaN", "A", "B" ], - "Uniform" : [ "A", "B" ], - #"UserDefined" : [ "Values", ], - "Weibull" : [ "Alpha", "Beta", "Mu", "Sigma", "Gamma" ], + print "DictMCVal=", DictMCVal + print "ListeVariables=", ListeVariables + print "DictLois=", DictLois + self.texteSTD = defaultSTD + self.OpenTURNS_path = appli.CONFIGURATION.OpenTURNS_path + + # Ce dictionnaire fait la correspondance entre le mot lu dans le dictionnaire des mots-clefs et la methode a appeler + self.traitement = { + "Min/Max" : + ( "MinMax", + { "Experiment Plane" : "ExperimentPlane", + "Random Sampling" : "MinMaxRandomSampling", + }, + ), + "Central Uncertainty" : + ( "CentralUncertainty", + { "Taylor Variance Decomposition" : "TaylorVarianceDecomposition", + "Random Sampling" : "CentralUncertaintyRandomSampling", + }, + ), + "Threshold Exceedence" : + ( "ThresholdExceedence", + { "Simulation" : "Simulation", + "Analytical" : "Analytical", + "MonteCarlo" : "MonteCarlo", + "LHS" : "LHS", + "ImportanceSampling" : "ImportanceSampling", + "FirstOrder" : "FORM", + "SecondOrder" : "SORM", + "Cobyla" : "Cobyla", + "AbdoRackwitz" : "AbdoRackwitz", + }, + ), } - # Ce dictionnaire contient, pour chaque loi qui possede plusieurs parametrages possibles, - # la correspondance entre le parametrage et son "numero" pour Open TURNS. - self.listeParamLoiSettings = { - "Beta" : { "RT" : "0", "MuSigma" : "1" }, \ - "Gamma" : { "KLambda" : "0", "MuSigma" : "1" }, \ - "Gumbel" : { "AlphaBeta" : "0", "MuSigma" : "1" }, \ - "LogNormal" : { "MuSigmaLog" : "0", "MuSigma" : "1", "MuSigmaOverMu" : "2" }, \ - "Weibull" : { "AlphaBeta" : "0", "MuSigma" : "1" }, \ + # Ce dictionnaire liste le nom des variables utilisees dans le script + # La clef est le nom attendu par les methodes, la valeur est le nom produit dans le fichier de sortie + # Le fait de passer par un dictionnaire permet de controler que les variables existent et sont correctement nommees + # meme si clef == valeur + self.variable = { + "n" : "n", + "p" : "p", + "model" : "model", + "scaledVector" : "scaledVector", + "translationVector" : "translationVector", + "levels" : "levels", + "myCenteredReductedGrid" : "myCenteredReductedGrid", + "myExperimentPlane" : "myExperimentPlane", + "inputSample" : "inputSample", + "outputSample" : "outputSample", + "minValue" : "minValue", + "maxValue" : "maxValue", + "flags" : "flags", + "inSize" : "inSize", + "distribution" : "distribution", + "marginal" : "marginal", + "collection" : "collection", + "copula" : "copula", + "inputRandomVector" : "inputRandomVector", + "outputRandomVector" : "outputRandomVector", + "myQuadraticCumul" : "myQuadraticCumul", + "meanFirstOrder" : "meanFirstOrder", + "meanSecondOrder" : "meanSecondOrder", + "standardDeviationFirstOrder" : "standardDeviationFirstOrder", + "importanceFactors" : "importanceFactors", + "importanceFactorsGraph" : "importanceFactorsGraph", + "importanceFactorsDrawing" : "importanceFactorsDrawing", + "empiricalMean" : "empiricalMean", + "empiricalStandardDeviation" : "empiricalStandardDeviation", + "empiricalQuantile" : "empiricalQuantile", + "alpha" : "alpha", + "beta" : "beta", + "PCCcoefficient" : "PCCcoefficient", + "PRCCcoefficient" : "PRCCcoefficient", + "SRCcoefficient" : "SRCcoefficient", + "SRRCcoefficient" : "SRRCcoefficient", + "kernel" : "kernel", + "kernelSmoothedDist" : "kernelSmoothedDist", + "kernelSmoothedPDF" : "kernelSmoothedPDF", + "myEvent" : "myEvent", + "myAlgo" : "myAlgo", + "myResult" : "myResult", + "probability" : "probability", + "standardDeviation" : "standardDeviation", + "level" : "level", + "length" : "length", + "coefficientOfVariation" : "coefficientOfVariation", + "convergenceGraph" : "convergenceGraph", + "iterations" : "iterations", + "myOptimizer" : "myOptimizer", + "specificParameters" : "specificParameters", + "startingPoint" : "startingPoint", + "hasoferReliabilityIndex" : "hasoferReliabilityIndex", + "standardSpaceDesignPoint" : "standardSpaceDesignPoint", + "physicalSpaceDesignPoint" : "physicalSpaceDesignPoint", + "eventProbabilitySensitivity" : "eventProbabilitySensitivity", + "hasoferReliabilityIndexSensitivity" : "hasoferReliabilityIndexSensitivity", + "eventProbabilitySensitivityGraph" : "eventProbabilitySensitivityGraph", + "hasoferReliabilityIndexSensitivityGraph" : "hasoferReliabilityIndexSensitivityGraph", + "modelEvaluationCalls" : "modelEvaluationCalls", + "modelGradientCalls" : "modelGradientCalls", + "modelHessianCalls" : "modelHessianCalls", + "tvedtApproximation" : "tvedtApproximation", + "hohenBichlerApproximation" : "hohenBichlerApproximation", + "breitungApproximation" : "breitungApproximation", } - - + # Ce dictionnaire fait la correspondance entre le mot-clef du catalogue et le flag de la bibliotheque + self.logFlags = { + "DebugMessages" : "Log.DBG", + "WrapperMessages" : "Log.WRAPPER", + "UserMessages" : "Log.USER", + "InfoMessages" : "Log.INFO", + "WarningMessages" : "Log.WARN", + "ErrorMessages" : "Log.ERROR", + } + def CreeSTD (self) : - #------------------ ''' Pilotage de la creation du fichier python ''' - self.texte = self.CreeEntete() - self.texte += self.CreeRandomGenerator() - self.texte += self.CreeFunction() - self.texte += self.CreeLois() - self.texte += self.CreeCopula() - self.texte += self.CreeDistribution() - self.texte += self.CreeRandomVector() - self.texte += self.CreeAnalyse() - self.texte += self.CreeResu() - self.texte += self.CreeTexteFin() - return self.texte - -# ______________________________________ -# -# Methodes liees a la creation de la partie Analayse -# Si le mot clef Analyse existe la methode portant le meme nom va etre appele -# Exple : si self.DictMCVal["Analysis"]=="Reliability" on appelle la methode Reliability(self) -# - def CreeAnalyse (self) : - #---------------------- - # Appelee par CreeSTD - texte="" - if self.DictMCVal.has_key("Analysis"): - texte += apply( STDGenerateur.__dict__[self.DictMCVal["Analysis"]], (self,) ) - return texte - - def Reliability (self) : - #------------------------ - # Appelee eventuellement par CreeAnalyse - texte = self.CreeEvent() - texte += "\n# La methode\n\n" - if not self.DictMCVal.has_key("Method"): - print 'Attention Mot Clef "Method" non renseigne' - return texte - - texte += " myMethod = "+ self.DictMCVal["Method"] + "()\n" - texte += " myMethod.setSpecificParameters( " + self.DictMCVal["Method"] + "SpecificParameters() )\n" - - for MC in self.ListeOrdreMCReliability : - if self.DictMCVal.has_key(MC) and self.DictMCVal[MC] != None : - texte += " myMethod.set"+ MC +"( " + str(self.DictMCVal[MC]) + " )\n\n " - - texte += "\n# L'algorithme\n\n" - if not self.DictMCVal.has_key("Algorithm"): - print 'Attention Mot Clef "Algorithm" non renseigne' - return texte - texte += " " + self.NomAlgo + " = " + str (self.DictMCVal["Algorithm"]) - texte += "( NearestPointAlgorithm(myMethod), myEvent, myPhysicalStartingPoint )\n" - texte += " " + self.NomAlgo + ".run()\n " + TypeAnalyse = None + if ( self.DictMCVal.has_key( 'Type' ) ): + TypeAnalyse = self.DictMCVal[ 'Type' ] + + Traitement = None + subDict = {} + if ( self.traitement.has_key( TypeAnalyse ) ): + (Traitement, subDict) = self.traitement[ TypeAnalyse ] + + if ( Traitement is not None ): + self.texteSTD = apply( STDGenerateur.__dict__[ Traitement ], (self, subDict) ) + + return self.texteSTD + + def Header (self) : + ''' + Imprime l entete commun a tous les fichiers + ''' + txt = headerSTD % self.OpenTURNS_path + txt += "# Definit le niveau d'affichage de la log\n" + txt += "%s = Log.NONE\n" % self.variable["flags"] + for flag in self.logFlags.keys(): + if ( self.DictMCVal.has_key( flag ) ): + val = self.DictMCVal[ flag ] + op = "-" + if val == 'yes' : + op = "+" + txt += "%s = %s %s %s\n" % (self.variable["flags"], self.variable["flags"], op, self.logFlags[ flag ]) + txt += "Log.Show( %s )\n" % self.variable["flags"] + txt += "\n" + return txt + + def Footer (self) : + ''' + Imprime le pied de page commun a tous les fichiers + ''' + return footerSTD + + def MinMax (self, subDict): + ''' + Produit le fichier study correspondant a une analyse Min/Max + ''' + txt = self.Header() + txt += "# Etude 'Min/Max'\n" + + txt += self.Model() + + Methode = None + if ( self.DictMCVal.has_key( 'Method' ) ): + Methode = self.DictMCVal[ 'Method' ] + + Traitement = None + if ( subDict.has_key( Methode ) ): + Traitement = subDict[ Methode ] + + if ( Traitement is not None ): + txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) ) + + txt += self.MinMaxComputation() + txt += self.MinMaxResult() + + txt += self.Footer() + return txt + + def Model (self): + ''' + Importe le modele physique + ''' + fonction = None + if ( self.DictMCVal.has_key( 'FileName' ) ): + name = self.DictMCVal[ 'FileName' ] + fonction = name[name.rfind('/')+1:name.rfind('.xml')] + + txt = "# Charge le modele physique\n" + txt += "%s = NumericalMathFunction( '%s' )\n" % (self.variable["model"], fonction) + txt += "%s = %s.getInputNumericalPointDimension()\n" % (self.variable["n"], self.variable["model"]) + txt += "\n" + return txt + + def ExperimentPlane (self): + ''' + Etude par plan d experience + ''' + txt = "# Etude par plan d'experience\n" + txt += self.Levels() + txt += self.CenteredReductedGrid() + txt += self.ScaledVector() + txt += self.TranslationVector() + txt += "%s = %s\n" % (self.variable["inputSample"], self.variable["myExperimentPlane"]) + txt += "\n" + return txt + + def MinMaxRandomSampling (self): + ''' + Etude par echantillonage aleatoire + ''' + size = 0 + if ( self.DictMCVal.has_key( 'PointsNumber' ) ): + size = self.DictMCVal[ 'PointsNumber' ] + + txt = "# Etude par echantillonage aleatoire\n" + txt += self.InputDistribution() + txt += self.InputRandomVector() + txt += "%s = %d\n" % (self.variable["inSize"], size) + txt += "%s = %s.getNumericalSample( %s )\n" % (self.variable["inputSample"], self.variable["inputRandomVector"], self.variable["inSize"]) + txt += "\n" + return txt + + def InputDistribution (self): + ''' + Cree la loi jointe des variables d entree + ''' + txt = "# Definit la loi jointe des variables d'entree\n" + txt += "%s = DistributionCollection( %d )\n" % (self.variable["collection"], len( self.ListeVariables )) + txt += "\n" + + dictVariables = {} + for variable in self.ListeVariables: + nomVar = variable['ModelVariable'].get_name() + dictVariables[ nomVar ] = variable['Distribution'] + + i = 0 + sortedVarNames = dictVariables.keys() + sortedVarNames.sort() + for variable in sortedVarNames: + conceptloi = dictVariables[ variable ] + loi = self.DictLois[ conceptloi ] + if loi.has_key( 'Kind' ): + marginale = "%s_%d" % (self.variable["marginal"], i) + txt += "# Definit la loi marginale de la composante %d\n" % i + txt += "%s = %s\n" % (marginale, apply( STDGenerateur.__dict__[ loi[ 'Kind' ] ], (self, loi, i, self.variable["collection"]) )) + txt += "%s[ %d ] = Distribution( %s )\n" % (self.variable["collection"], i, marginale) + txt += "\n" + i += 1 + + txt += self.Copula( len( self.ListeVariables ) ) + + txt += "# Definit la loi jointe\n" + txt += "%s = ComposedDistribution( %s, Copula( %s ) )\n" % (self.variable["distribution"], self.variable["collection"], self.variable["copula"]) + txt += "\n" + return txt + + def Copula (self, dimension): + ''' + Cree la copule de la loi jointe + ''' + txt = "# Definit la copule de la loi jointe\n" + txt += "%s = IndependentCopula( %d )\n" % (self.variable["copula"], dimension) + txt += "\n" + return txt + + def InputRandomVector (self): + ''' + Cree le vector aleatoire d entree + ''' + txt = "# Definit le vecteur aleatoire d'entree\n" + txt += "%s = RandomVector( %s )\n" % (self.variable["inputRandomVector"], self.variable["distribution"]) + txt += "\n" + return txt + + def OutputRandomVector (self): + ''' + Cree le vector aleatoire de sortie + ''' + txt = "# Definit le vecteur aleatoire de sortie\n" + txt += "%s = RandomVector( %s, %s )\n" % (self.variable["outputRandomVector"], self.variable["model"], self.variable["inputRandomVector"]) + txt += "\n" + return txt + + def ScaledVector (self): + ''' + Definit les coefficients multiplicateurs par composante du vecteur + ''' + dimension = 0 + if ( self.DictMCVal.has_key( 'UnitsPerDimension' ) ): + unitsPerDimension = self.DictMCVal[ 'UnitsPerDimension' ] + dimension = len( unitsPerDimension ) + + txt = "# Definit les facteurs d'echelle dans chaque direction\n" + txt += "%s = NumericalPoint( %s )\n" % (self.variable["scaledVector"], self.variable["n"]) + for i in range(dimension): + txt += "%s[%d] = %g\n" % (self.variable["scaledVector"], i, unitsPerDimension[i]) + txt += "%s.scale( %s )\n" % (self.variable["myExperimentPlane"], self.variable["scaledVector"]) + txt += "\n" + return txt + + def TranslationVector (self): + ''' + Definit le vecteur de translation + ''' + dimension = 0 + if ( self.DictMCVal.has_key( 'Center' ) ): + center = self.DictMCVal[ 'Center' ] + dimension = len( center ) + + txt = "# Definit le vecteur de translation\n" + txt += "%s = NumericalPoint( %s )\n" % (self.variable["translationVector"], self.variable["n"]) + for i in range(dimension): + txt += "%s[%d] = %g\n" % (self.variable["translationVector"], i, center[i]) + txt += "%s.translate( %s )\n" % (self.variable["myExperimentPlane"], self.variable["translationVector"]) + txt += "\n" + return txt + + def Levels (self): + ''' + Definit les niveaux du plan d experience + ''' + dimension = 0 + if ( self.DictMCVal.has_key( 'Levels' ) ): + levels = self.DictMCVal[ 'Levels' ] + dimension = len( levels ) + + txt = "# Definit les niveaux de la structure de grille\n" + txt += "%s = NumericalPoint( %d )\n" % (self.variable["levels"], dimension) + for i in range(dimension): + txt += "%s[%d] = %g\n" % (self.variable["levels"], i, levels[i]) + txt += "\n" + return txt + + def CenteredReductedGrid (self): + ''' + Definit la grille reduite du plan d experience + ''' + plane = None + if ( self.DictMCVal.has_key( 'ExperimentPlane' ) ): + plane = self.DictMCVal[ 'ExperimentPlane' ] + + txt = "# Cree le plan d'experience centre reduit\n" + txt += "%s = %s(%s, %s)\n" % (self.variable["myCenteredReductedGrid"], plane, self.variable["n"], self.variable["levels"]) + txt += "%s = %s.generate()\n" % (self.variable["myExperimentPlane"], self.variable["myCenteredReductedGrid"]) + txt += "\n" + return txt + + def MinMaxComputation (self): + ''' + Realise le calcul deterministe + ''' + txt = "# Calcul\n" + txt += "%s = %s( %s )\n" % (self.variable["outputSample"], self.variable["model"], self.variable["inputSample"]) + txt += "\n" + return txt + + def MinMaxResult (self): + ''' + Produit les resultats de l etude + ''' + txt = "# Resultats\n" + txt += "%s = %s.getMin()\n" % (self.variable["minValue"], self.variable["outputSample"]) + txt += "print '%s = ', %s\n" % (self.variable["minValue"], self.variable["minValue"]) + txt += "\n" + txt += "%s = %s.getMax()\n" % (self.variable["maxValue"], self.variable["outputSample"]) + txt += "print '%s = ', %s\n" % (self.variable["maxValue"], self.variable["maxValue"]) + txt += "\n" + return txt + + def CentralUncertainty (self, subDict): + ''' + Produit le fichier study correspondant a une analyse d incertitude en valeur centrale + ''' + txt = self.Header() + txt += "# Etude 'Central Uncertainty'\n" + + txt += self.Model() + txt += self.InputDistribution() + txt += self.InputRandomVector() + txt += self.OutputRandomVector() - if self.DictMCVal.has_key("ImportanceSampling") and self.DictMCVal["ImportanceSampling"]=="yes" : - texte += self.ImportanceSampling() - return texte - - def Simulation (self) : - #------------------------ - # Appelee eventuellement par CreeAnalyse - texte = self.CreeEvent() - texte += "\n# L'algorithme\n\n" - if not self.DictMCVal.has_key("Algorithm"): - print 'Attention Mot Clef "Algorithm" non renseigne' - return texte - texte += " " + self.NomAlgo + " = " + str (self.DictMCVal["Algorithm"]) - texte += "( myEvent )\n" - if self.DictMCVal["Algorithm"] == "DirectionalSampling" : - texte += self.DirectionalSampling() - texte += self.ParametresAlgo() - texte += " " + self.NomAlgo + ".run() " - return texte - - - def DirectionalSampling (self) : - #------------------------------- - # Appelee eventuellement par Simulation - texte = "" - for MC in self.ListeOrdreMCDirectionalSampling : - if self.DictMCVal.has_key(MC) and self.DictMCVal[MC] != None : - texte += apply(STDGenerateur.__dict__[self.DictMCVal[MC]], (self,)) - return texte - - def RootStrategy(self): - #---------------------- - # Appelee eventuellement par DirectionalSampling - texte = " myRoot = " + self.DictMCVal["RootStrategy"] + "()\n" - if self.DictMCVal.has_key("Solver") and (self.DictMCVal["Solver"] != None) : - texte += " mySolver = " + self.DictMCVal["Solver"] + "() \n" - texte += " myRoot.setSolver( Solver( mySolver ) ) \n" - texte += " " + self.NomAlgo + ".setRootStrategy( RootStrategy( myRoot )) \n" - return texte - - def SamplingStrategy(self): - #-------------------------- - # Appelee eventuellement par DirectionalSampling - texte += " mySampling = " + self.DictMCVal["SamplingStrategy"] + "()\n" - texte += " mySampling.setSamplingStrategy( SamplingStrategy( mySampling ) )\n" - return texte - - - def QuadraticCumul (self) : - #-------------------------- - # Appelee eventuellement par CreeAnalyse - texte = "\n# Cumul quadratique\n\n" - texte += " myQuadraticCumul = QuadraticCumul( myRandomVector_out)\n\n" - texte += " firstOrderMean = myQuadraticCumul.getMeanFirstOrder()\n" - texte += " secondOrderMean = myQuadraticCumul.getMeanSecondOrder()\n" - texte += " covariance = myQuadraticCumul.getCovariance()\n" - texte += " importanceFactors = myQuadraticCumul.getImportanceFactors()\n" - return texte - - def CreeEvent (self) : - #------------------ - # Appelee eventuellement par Simulation et Reliability - texte = "\n# L'evenement\n\n" - if not self.DictMCVal.has_key("Threshold") or not self.DictMCVal.has_key("ComparisonOperator"): - print 'Attention Mot Clef "Threshold" ou "ComparisonOperator" non renseigne' - return texte - texte += " seuil = " +str (self.DictMCVal["Threshold"]) + "\n" - texte += " myEvent = Event(myRandomVector_out," - texte += "ComparisonOperator(" + str (self.DictMCVal["ComparisonOperator"]) + "()), seuil) \n" - return texte - - def ParametresAlgo( self ): - #--------------------------- - # Appelee par Simulation - - texte += " nbMaxOutSampling = " - - if self.DictMCVal["MaximumOuterSamplingType"] == "UserDefined" : - texte += str(self.DictMCVal["MaximumOuterSampling"]) - - elif self.DictMCVal["MaximumOuterSamplingType"] == "Wilks" : - texte += "Wilks.ComputeSampleSize( " + str(self.DictMCVal["Wilks_Alpha"]) + ", " \ - + str(self.DictMCVal["Wilks_Beta"]) + ", " + str(self.DictMCVal["Wilks_I"]) + " )" - texte += '\n print "MaximumOuterSampling = ", nbMaxOutSampling, "\n" \n' - - texte += " " + NomAlgo + ".setMaximumOuterSampling(nbMaxOutSampling)" - for MC in self.ListeOrdreMCParametresAlgo : - if self.DictMCVal.has_key(MC) and self.DictMCVal[MC] != None : - texte += " myMethod.set"+ MC +"(" + str(self.DictMCVal[MC]) + ")\n\n " - -# _____________________________________ - - def CreeRandomGenerator (self) : - #------------------------------- - # Appelee par CreeSTD - texte = "" - if self.DictMCVal.has_key("RandomGeneratorSeed") : - texte += "# We set the RandomGenerator seed in order to replay the study\n" - texte += " RandomGenerator().SetSeed(%d)\n" % self.DictMCVal["RandomGeneratorSeed"] - return texte - - def CreeFunction (self) : - #------------------------- - # Appelee par CreeSTD - ''' - La fonction : - Remarque : le nom 'solver' est en dur ici. Il doit imperativement correspondre - au nom du fichier xml : 'solver.xml' - ''' - texte = "\n# La fonction\n\n" - texte += ' myFunction = NumericalMathFunction(\"XXXXXX\")\n' - texte += ' dim = myFunction.getInputNumericalPointDimension()\n' - return texte - - - def CreeCopula (self) : - #------------------ - # Appelee par CreeSTD - texte = "\n# La copule\n\n" - texte += " myCopula = IndependentCopula(dim)\n" - return texte - - - def CreeDistribution (self) : - #---------------------------- - # Appelee par CreeSTD - texte = "\n# La distribution\n\n" - texte += " myDistribution = ComposedDistribution(myCollection, Copula(myCopula))\n" - return texte + Methode = None + if ( self.DictMCVal.has_key( 'Method' ) ): + Methode = self.DictMCVal[ 'Method' ] + + Traitement = None + if ( subDict.has_key( Methode ) ): + Traitement = subDict[ Methode ] + + if ( Traitement is not None ): + txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) ) + + txt += self.Footer() + return txt + + + def TaylorVarianceDecomposition (self): + ''' + Etude par decomposition de Taylor + ''' + txt = "# Cumul quadratique (decomposition de Taylor)\n" + txt += "%s = QuadraticCumul( %s )\n" % (self.variable["myQuadraticCumul"], self.variable["outputRandomVector"]) + txt += "\n" + txt += "# Resultats\n" + + if ( self.DictMCVal.has_key( 'MeanFirstOrder' ) ): + if ( self.DictMCVal[ 'MeanFirstOrder' ] == "yes" ): + txt += "%s = %s.getMeanFirstOrder()\n" % (self.variable["meanFirstOrder"], self.variable["myQuadraticCumul"]) + txt += "print '%s = ', %s\n" % (self.variable["meanFirstOrder"], self.variable["meanFirstOrder"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'MeanSecondOrder' ) ): + if ( self.DictMCVal[ 'MeanSecondOrder' ] == "yes" ): + txt += "%s = %s.getMeanSecondOrder()\n" % (self.variable["meanSecondOrder"], self.variable["myQuadraticCumul"]) + txt += "print '%s = ', %s\n" % (self.variable["meanSecondOrder"], self.variable["meanSecondOrder"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'StandardDeviationFirstOrder' ) ): + if ( self.DictMCVal[ 'StandardDeviationFirstOrder' ] == "yes" ): + txt += "%s = %s.getCovariance()\n" % (self.variable["standardDeviationFirstOrder"], self.variable["myQuadraticCumul"]) + txt += "dim = %s.getDimension()\n" % self.variable["standardDeviationFirstOrder"] + txt += "for i in range( dim ):\n" + txt += " %s[ i, i ] = math.sqrt( %s[ i, i ] )\n" % (self.variable["standardDeviationFirstOrder"], self.variable["standardDeviationFirstOrder"]) + txt += "print '%s = ', %s\n" % (self.variable["standardDeviationFirstOrder"], self.variable["standardDeviationFirstOrder"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'NumericalResults' ) ): + if ( self.DictMCVal[ 'NumericalResults' ] == "yes" ): + txt += "if ( %s.getDimension() == 1):\n" % self.variable["outputRandomVector"] + txt += " %s = %s.getImportanceFactors()\n" % (self.variable["importanceFactors"], self.variable["myQuadraticCumul"]) + txt += " print '%s = ', %s\n" % (self.variable["importanceFactors"], self.variable["importanceFactors"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'GraphicalResults' ) ): + if ( self.DictMCVal[ 'GraphicalResults' ] == "yes" ): + txt += "%s = %s.drawImportanceFactors()\n" % (self.variable["importanceFactorsGraph"], self.variable["myQuadraticCumul"]) + txt += "Show( %s )\n" % self.variable["importanceFactorsGraph"] + txt += "%s.draw( '%s' )\n" % (self.variable["importanceFactorsGraph"], self.variable["importanceFactorsDrawing"]) + txt += "ViewImage( %s.getBitmap() )\n" % self.variable["importanceFactorsGraph"] + txt += "print 'bitmap =', %s.getBitmap()\n" % self.variable["importanceFactorsGraph"] + txt += "print 'postscript =', %s.getPostscript()\n" % self.variable["importanceFactorsGraph"] + txt += "\n" + + txt += "\n" + return txt + + def CentralUncertaintyRandomSampling (self): + ''' + Etude par echantillonage aleatoire + ''' + size = 0 + if ( self.DictMCVal.has_key( 'PointsNumber' ) ): + size = self.DictMCVal[ 'PointsNumber' ] + + txt = "# Echantillonnage aleatoire de la variable de sortie\n" + txt += "%s = %d\n" % (self.variable["inSize"], size) + txt += "%s = %s.getNumericalSample( %s )\n" % (self.variable["outputSample"], self.variable["outputRandomVector"], self.variable["inSize"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'EmpiricalMean' ) ): + if ( self.DictMCVal[ 'EmpiricalMean' ] == "yes" ): + txt += "%s = %s.computeMean()\n" % (self.variable["empiricalMean"], self.variable["outputSample"]) + txt += "print '%s =', %s\n" % (self.variable["empiricalMean"], self.variable["empiricalMean"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'EmpiricalStandardDeviation' ) ): + if ( self.DictMCVal[ 'EmpiricalStandardDeviation' ] == "yes" ): + txt += "%s = %s.computeCovariance()\n" % (self.variable["empiricalStandardDeviation"], self.variable["outputSample"]) + txt += "dim = %s.getDimension()\n" % self.variable["empiricalStandardDeviation"] + txt += "for i in range( dim ):\n" + txt += " %s[ i, i ] = math.sqrt( %s[ i, i ] )\n" % (self.variable["empiricalStandardDeviation"], self.variable["empiricalStandardDeviation"]) + txt += "print '%s = ', %s\n" % (self.variable["empiricalStandardDeviation"], self.variable["empiricalStandardDeviation"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'EmpiricalQuantile_Order' ) ): + ordre = self.DictMCVal[ 'EmpiricalQuantile_Order' ] + txt += "%s = %s.computeQuantile( %s )\n" % (self.variable["empiricalQuantile"], self.variable["outputSample"], ordre) + txt += "print '%s =', %s\n" % (self.variable["empiricalQuantile"], self.variable["empiricalQuantile"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'AnalysedCorrelations' ) ): + if ( self.DictMCVal[ 'AnalysedCorrelations' ] == "yes" ): + txt += "# Ou est le %s ?\n" % self.variable["inputSample"] + txt += "#if ( ( %s.getDimension() == 1 ) and ( %s.getDimension() == 1 ) ):\n" % (self.variable["inputSample"], self.variable["outputSample"]) + txt += "# %s = CorrelationAnalysis.PCC( %s, %s )\n" % (self.variable["PCCcoefficient"], self.variable["inputSample"], self.variable["outputSample"]) + txt += "# print '%s = ', %s\n" % (self.variable["PCCcoefficient"], self.variable["PCCcoefficient"]) + txt += "# %s = CorrelationAnalysis.PRCC( %s, %s )\n" % (self.variable["PRCCcoefficient"], self.variable["inputSample"], self.variable["outputSample"]) + txt += "# print '%s = ', %s\n" % (self.variable["PRCCcoefficient"], self.variable["PRCCcoefficient"]) + txt += "# %s = CorrelationAnalysis.SRC( %s, %s )\n" % (self.variable["SRCcoefficient"], self.variable["inputSample"], self.variable["outputSample"]) + txt += "# print '%s = ', %s\n" % (self.variable["SRCcoefficient"], self.variable["SRCcoefficient"]) + txt += "# %s = CorrelationAnalysis.SRRC( %s, %s )\n" % (self.variable["SRRCcoefficient"], self.variable["inputSample"], self.variable["outputSample"]) + txt += "# print '%s = ', %s\n" % (self.variable["SRRCcoefficient"], self.variable["SRRCcoefficient"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'KernelSmoothing' ) ): + if ( self.DictMCVal[ 'KernelSmoothing' ] == "yes" ): + txt += "# Kernel Smoohing\n" + txt += "%s = KernelSmoothing()\n" % self.variable["kernel"] + txt += "if ( %s.getDimension() == 1 ):\n" % self.variable["outputSample"] + txt += " %s = %s.buildImplementation( %s, 'TRUE')\n" % (self.variable["kernelSmoothedDist"], self.variable["kernel"], self.variable["outputSample"]) + txt += " %s = %s.drawPDF()\n" % (self.variable["kernelSmoothedPDF"], self.variable["kernelSmoothedDist"]) + txt += " Show( %s )\n" % self.variable["kernelSmoothedPDF"] + txt += "\n" + + return txt + + def ThresholdExceedence (self, subDict): + ''' + Produit le fichier study correspondant a une analyse de depassement de seuil + ''' + txt = self.Header() + txt += "# Etude 'Threshold Exceedence'\n" + + txt += self.RandomGenerator() + txt += self.Model() + txt += self.InputDistribution() + txt += self.InputRandomVector() + txt += self.OutputRandomVector() + txt += self.Event() + + Methode = None + if ( self.DictMCVal.has_key( 'Method' ) ): + Methode = self.DictMCVal[ 'Method' ] + + Traitement = None + if ( subDict.has_key( Methode ) ): + Traitement = subDict[ Methode ] + + if ( Traitement is not None ): + txt += apply( STDGenerateur.__dict__[ Traitement ], (self, subDict) ) + txt += self.Footer() + return txt - def CreeRandomVector (self) : - #---------------------------- - # Appelee par CreeSTD - texte = "\n# Le Random Vector\n\n" - texte += " myRandomVector_in = RandomVector(Distribution(myDistribution))\n" - texte += " myRandomVector_out = RandomVector(myFunction, myRandomVector_in)\n" - return texte + def Simulation (self, subDict): + ''' + Methodes de simulation + ''' + Algorithme = None + if ( self.DictMCVal.has_key( 'Algorithm' ) ): + Algorithme = self.DictMCVal[ 'Algorithm' ] + + Traitement = None + if ( subDict.has_key( Algorithme ) ): + Traitement = subDict[ Algorithme ] + + if ( Traitement is not None ): + txt = apply( STDGenerateur.__dict__[ Traitement ], (self,) ) + + maxOuterSampling = None + if ( self.DictMCVal.has_key( 'MaximumOuterSampling' ) ): + maxOuterSampling = self.DictMCVal[ 'MaximumOuterSampling' ] + txt += "%s.setMaximumOuterSampling( %s )\n" % (self.variable["myAlgo"], maxOuterSampling) + + blockSize = None + if ( self.DictMCVal.has_key( 'BlockSize' ) ): + maxOuterSampling = self.DictMCVal[ 'BlockSize' ] + txt += "%s.setBlockSize( %s )\n" % (self.variable["myAlgo"], blockSize) + + maxCoefficientOfVariation = None + if ( self.DictMCVal.has_key( 'MaximumCoefficientOfVariation' ) ): + maxCoefficientOfVariation = self.DictMCVal[ 'MaximumCoefficientOfVariation' ] + txt += "%s.setMaximumCoefficientOfVariation( %s )\n" % (self.variable["myAlgo"], maxCoefficientOfVariation) + + txt += "%s.run()\n" % self.variable["myAlgo"] + txt += "\n" + txt += "# Resultats de la simulation\n" + txt += "%s = %s.getResult()\n" % (self.variable["myResult"], self.variable["myAlgo"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'Probability' ) ): + if ( self.DictMCVal[ 'Probability' ] == "yes" ): + txt += "%s = %s.getProbabilityEstimate()\n" % (self.variable["probability"], self.variable["myResult"]) + txt += "print '%s =', %s\n" % (self.variable["probability"], self.variable["probability"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'StandardDeviation' ) ): + if ( self.DictMCVal[ 'StandardDeviation' ] == "yes" ): + txt += "%s = math.sqrt( %s.getProbabilityEstimate() )\n" % (self.variable["standardDeviation"], self.variable["myResult"]) + txt += "print '%s =', %s\n" % (self.variable["standardDeviation"], self.variable["standardDeviation"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'ConfidenceInterval' ) and self.DictMCVal.has_key( 'Probability' ) ): + if ( ( self.DictMCVal[ 'ConfidenceInterval' ] == "yes" ) and ( self.DictMCVal[ 'Probability' ] == "yes" ) ): + level = self.DictMCVal[ 'Level' ] + txt += "%s = %s.getConfidenceLength( %s )\n" % (self.variable["length"], self.variable["myResult"], level) + txt += "print 'confidence interval at %s = [', %s-0.5*%s, ',', %s+0.5*%s, ']'\n" % (level, self.variable["probability"], self.variable["length"], self.variable["probability"], self.variable["length"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'VariationCoefficient' ) ): + if ( self.DictMCVal[ 'VariationCoefficient' ] == "yes" ): + txt += "%s = %s.getCoefficientOfVariation()\n" % (self.variable["coefficientOfVariation"], self.variable["myResult"]) + txt += "print '%s =', %s\n" % (self.variable["coefficientOfVariation"], self.variable["coefficientOfVariation"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'IterationNumber' ) ): + if ( self.DictMCVal[ 'IterationNumber' ] == "yes" ): + txt += "%s = %s.getOuterSampling()\n" % (self.variable["iterations"], self.variable["myResult"]) + txt += "print '%s =', %s\n" % (self.variable["iterations"], self.variable["iterations"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'ConvergenceGraph' ) ): + if ( self.DictMCVal[ 'ConvergenceGraph' ] == "yes" ): + txt += "%s = %s.drawProbabilityConvergence()\n" % (self.variable["convergenceGraph"], self.variable["myAlgo"]) + txt += "Show( %s )\n" % self.variable["convergenceGraph"] + txt += "\n" + + return txt + + def Analytical (self, subDict): + ''' + Methodes analytiques + ''' + txt = "" + + OptimizationAlgo = None + if ( self.DictMCVal.has_key( 'OptimizationAlgorithm' ) ): + OptimizationAlgo = self.DictMCVal[ 'OptimizationAlgorithm' ] + Traitement = None + if ( subDict.has_key( OptimizationAlgo ) ): + Traitement = subDict[ OptimizationAlgo ] -# _______________________________ + if ( Traitement is not None ): + txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) ) + txt += self.OptimizerSettings() + txt += self.PhysicalStartingPoint() + Approximation = None + if ( self.DictMCVal.has_key( 'Approximation' ) ): + Approximation = self.DictMCVal[ 'Approximation' ] - def ImportanceSampling (self) : - #----------------------------- - # Appele eventuellement par Reliability + Traitement = None + if ( subDict.has_key( Approximation ) ): + Traitement = subDict[ Approximation ] - texte = " temporaryResult = " + self.NomAlgo + ".getResult()\n\n" - texte += " mean = temporaryResult.getPhysicalSpaceDesignPoint()\n" - texte += " sigma = NumericalPoint( mean.getDimension(), 1.0 )\n" - texte += " R = CorrelationMatrix( mean.getDimension() )\n" - texte += " myImportance = Normal( mean, sigma, R )\n\n\n" + if ( Traitement is not None ): + txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) ) - texte += " importanceSamplingAlgo = ImportanceSampling( myEvent, Distribution( myImportance ) )\n\n" + txt += self.RunAlgorithm() + txt += self.AnalyticalResult() - for MC in self.ListeOrdreImportanceSampling : - if self.DictMCVal.has_key("MC") : - debut=" importanceSamplingAlgo.set"+MC.split("_")[-1] - texte += debut + "( " + str(self.DictMCVal[MC]) + " )\n" + return txt - texte += "\n importanceSamplingAlgo.run()\n\n" - self.NomAlgo = "importanceSamplingAlgo" - return texte + def OptimizerSettings (self): + ''' + Parametrage de l optimiseur + ''' + txt = "" + + iterations = None + if ( self.DictMCVal.has_key( 'MaximumIterationsNumber' ) ): + iterations = self.DictMCVal[ 'MaximumIterationsNumber' ] + txt += "%s.setMaximumIterationsNumber( %s )\n" % (self.variable["myOptimizer"], iterations) + + absoluteError = None + if ( self.DictMCVal.has_key( 'MaximumAbsoluteError' ) ): + absoluteError = self.DictMCVal[ 'MaximumAbsoluteError' ] + txt += "%s.setMaximumAbsoluteError( %s )\n" % (self.variable["myOptimizer"], absoluteError) + + relativeError = None + if ( self.DictMCVal.has_key( 'MaximumRelativeError' ) ): + relativeError = self.DictMCVal[ 'MaximumRelativeError' ] + txt += "%s.setMaximumRelativeError( %s )\n" % (self.variable["myOptimizer"], relativeError) + + residualError = None + if ( self.DictMCVal.has_key( 'MaximumResidualError' ) ): + residualError = self.DictMCVal[ 'MaximumResidualError' ] + txt += "%s.setMaximumResidualError( %s )\n" % (self.variable["myOptimizer"], residualError) + + constraintError = None + if ( self.DictMCVal.has_key( 'MaximumConstraintError' ) ): + constraintError = self.DictMCVal[ 'MaximumConstraintError' ] + txt += "%s.setMaximumConstraintError( %s )\n" % (self.variable["myOptimizer"], constraintError) + + txt += "\n" + + return txt + + def PhysicalStartingPoint (self): + ''' + Point physique de depart + ''' + txt = "# Point physique de depart\n" + + if ( self.DictMCVal.has_key( 'PhysicalStartingPoint' ) ): + point = self.DictMCVal[ 'PhysicalStartingPoint' ] + dimension = len( point ) + txt += "%s = NumericalPoint( %d )\n" % (self.variable["startingPoint"], dimension) + for i in range( dimension ): + txt += "%s[ %d ] = %g\n" % (self.variable["startingPoint"], i, point[i]) + else: + txt += "%s = %s.getMean()\n" % (self.variable["startingPoint"], self.variable["inputRandomVector"]) + + txt += "\n" + return txt - def CreeResu (self) : - #------------------ + def AnalyticalResult (self): + ''' + Resultat des methodes analytiques + ''' + txt = "# Resultat des methodes analytiques\n" + txt += "%s = %s.getResult()\n" % (self.variable["myResult"], self.variable["myAlgo"]) + + if ( self.DictMCVal.has_key( 'Probability' ) ): + if ( self.DictMCVal[ 'Probability' ] == "yes" ): + txt += "%s = %s.getEventProbability()\n" % (self.variable["probability"], self.variable["myResult"]) + txt += "print '%s =', %s\n" % (self.variable["probability"], self.variable["probability"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'HasoferReliabilityIndex' ) ): + if ( self.DictMCVal[ 'HasoferReliabilityIndex' ] == "yes" ): + txt += "%s = %s.getHasoferReliabilityIndex()\n" % (self.variable["hasoferReliabilityIndex"], self.variable["myResult"]) + txt += "print '%s =', %s\n" % (self.variable["hasoferReliabilityIndex"], self.variable["hasoferReliabilityIndex"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'DesignPoint' ) ): + if ( self.DictMCVal[ 'DesignPoint' ] == "yes" ): + txt += "%s = %s.getStandardSpaceDesignPoint()\n" % (self.variable["standardSpaceDesignPoint"], self.variable["myResult"]) + txt += "print '%s =', %s\n" % (self.variable["standardSpaceDesignPoint"], self.variable["standardSpaceDesignPoint"]) + txt += "%s = %s.getPhysicalSpaceDesignPoint()\n" % (self.variable["physicalSpaceDesignPoint"], self.variable["myResult"]) + txt += "print '%s =', %s\n" % (self.variable["physicalSpaceDesignPoint"], self.variable["physicalSpaceDesignPoint"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'ImportanceFactorNumericalResults' ) ): + if ( self.DictMCVal[ 'ImportanceFactorNumericalResults' ] == "yes" ): + txt += "%s = %s.getImportanceFactors()\n" % (self.variable["importanceFactors"], self.variable["myResult"]) + txt += "print '%s =', %s\n" % (self.variable["importanceFactors"], self.variable["importanceFactors"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'ImportanceFactorGraphicalResults' ) ): + if ( self.DictMCVal[ 'ImportanceFactorGraphicalResults' ] == "yes" ): + txt += "%s = %s.drawImportanceFactors()\n" % (self.variable["importanceFactorsGraph"], self.variable["myResult"]) + txt += "Show( %s )\n" % self.variable["importanceFactorsGraph"] + txt += "\n" + + if ( self.DictMCVal.has_key( 'FORMEventProbabilitySensitivityNumericalResults' ) ): + if ( self.DictMCVal[ 'FORMEventProbabilitySensitivityNumericalResults' ] == "yes" ): + txt += "%s = %s.getEventProbabilitySensitivity()\n" % (self.variable["eventProbabilitySensitivity"], self.variable["myResult"]) + txt += "print '%s =', %s\n" % (self.variable["eventProbabilitySensitivity"], self.variable["eventProbabilitySensitivity"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'FORMEventProbabilitySensitivityGraphicalResults' ) ): + if ( self.DictMCVal[ 'FORMEventProbabilitySensitivityGraphicalResults' ] == "yes" ): + txt += "%s = %s.drawEventProbabilitySensitivity()\n" % (self.variable["eventProbabilitySensitivityGraph"], self.variable["myResult"]) + txt += "Show( %s[0] )\n" % self.variable["eventProbabilitySensitivityGraph"] + txt += "\n" + + if ( self.DictMCVal.has_key( 'HasoferReliabilityIndexSensitivityNumericalResults' ) ): + if ( self.DictMCVal[ 'HasoferReliabilityIndexSensitivityNumericalResults' ] == "yes" ): + txt += "%s = %s.getHasoferReliabilityIndexSensitivity()\n" % (self.variable["hasoferReliabilityIndexSensitivity"], self.variable["myResult"]) + txt += "print '%s =', %s\n" % (self.variable["hasoferReliabilityIndexSensitivity"], self.variable["hasoferReliabilityIndexSensitivity"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'HasoferReliabilityIndexSensitivityGraphicalResults' ) ): + if ( self.DictMCVal[ 'HasoferReliabilityIndexSensitivityGraphicalResults' ] == "yes" ): + txt += "%s = %s.drawHasoferReliabilityIndexSensitivity()\n" % (self.variable["hasoferReliabilityIndexSensitivityGraph"], self.variable["myResult"]) + txt += "Show( %s[0] )\n" % self.variable["hasoferReliabilityIndexSensitivityGraph"] + txt += "\n" + + if ( self.DictMCVal.has_key( 'TvedtApproximation' ) ): + if ( self.DictMCVal[ 'TvedtApproximation' ] == "yes" ): + txt += "%s = %s.getEventProbabilityTvedt()\n" % (self.variable["tvedtApproximation"], self.variable["myResult"]) + txt += "print '%s =', %s\n" % (self.variable["tvedtApproximation"], self.variable["tvedtApproximation"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'HohenBichlerApproximation' ) ): + if ( self.DictMCVal[ 'HohenBichlerApproximation' ] == "yes" ): + txt += "%s = %s.getEventProbabilityHohenBichler()\n" % (self.variable["hohenBichlerApproximation"], self.variable["myResult"]) + txt += "print '%s =', %s\n" % (self.variable["hohenBichlerApproximation"], self.variable["tvedtApproximation"]) + txt += "\n" + + if ( self.DictMCVal.has_key( 'BreitungApproximation' ) ): + if ( self.DictMCVal[ 'BreitungApproximation' ] == "yes" ): + txt += "%s = %s.getEventProbabilityBreitung()\n" % (self.variable["breitungApproximation"], self.variable["myResult"]) + txt += "print '%s =', %s\n" % (self.variable["breitungApproximation"], self.variable["breitungApproximation"]) + txt += "\n" + + + return txt + + def RandomGenerator (self): ''' + Generateur Aleatoire ''' - texte = "\n# Le resultat\n\n" - texte += " myResu = " + self.NomAlgo + ".getResult() \n" - texte += " probability = myResu.getEventProbability()" + txt = "" + + seed = None + if ( self.DictMCVal.has_key( 'RandomGeneratorSeed' ) ): + seed = self.DictMCVal[ 'RandomGeneratorSeed' ] + txt += "# Initialise le generateur aleatoire\n" + txt += "RandomGenerator.SetSeed( %s )\n" % seed + txt += "\n" + + return txt + + def Event (self): + ''' + Definition de l evenement de defaillance + ''' + operator = None + if ( self.DictMCVal.has_key( 'ComparisonOperator' ) ): + operator = self.DictMCVal[ 'ComparisonOperator' ] + + threshold = None + if ( self.DictMCVal.has_key( 'Threshold' ) ): + threshold = self.DictMCVal[ 'Threshold' ] + + txt = "# Evenement de defaillance\n" + txt += "%s = Event( %s, ComparisonOperator( %s() ), %s )\n" % (self.variable["myEvent"], self.variable["outputRandomVector"], operator, threshold) + txt += "\n" + return txt + + def MonteCarlo (self): + ''' + Methode de MonteCarlo + ''' + txt = "# Simulation par MonteCarlo\n" + txt += "%s = MonteCarlo( %s )\n" % (self.variable["myAlgo"], self.variable["myEvent"]) + txt += "\n" + + return txt - return texte + def LHS (self): + ''' + Methode LHS + ''' + txt = "# Simulation par LHS\n" + txt += "%s = LHS( %s )\n" % (self.variable["myAlgo"], self.variable["myEvent"]) + txt += "\n" + + return txt + def ImportanceSampling (self): + ''' + Methode de tirage d importance + ''' + txt = "# Simulation par Tirage d'importance\n" + txt += "%s = ImportanceSampling( %s )\n" % (self.variable["myAlgo"], self.variable["myEvent"]) + txt += "\n" + return txt - def CreeLois (self) : - #------------------ + def FORM (self): ''' + Methode FORM ''' - code_erreur = 0 - texte = "\n# Les lois\n\n" - if self.DictMCVal.has_key("Analysis") and self.DictMCVal["Analysis"] == "Reliability" : - texte += " myPhysicalStartingPoint = NumericalPoint(dim, 0.0)\n" - texte += " myCollection = DistributionCollection(dim)\n\n" + txt = "# Algorithme FORM\n" + txt += "%s = FORM ( NearestPointAlgorithm( %s ), %s, %s )\n" % (self.variable["myAlgo"], self.variable["myOptimizer"], self.variable["myEvent"], self.variable["startingPoint"]) + txt += "\n" - numVar = 0 - for DictVariable in self.ListeVariables : + return txt - boolLoiDef = True - if DictVariable.has_key("MarginalDistribution") and DictVariable.has_key("Name"): - ConceptLoi = DictVariable["MarginalDistribution"] - NomLoi = DictVariable["Name"]+"_Dist" - else : - boolLoiDef = False - - if boolLoiDef and self.DictLois.has_key(ConceptLoi): - loi = self.DictLois[ConceptLoi] - else : - boolLoiDef = False + def SORM (self): + ''' + Methode SORM + ''' + txt = "# Algorithme SORM\n" + txt += "%s = SORM ( NearestPointAlgorithm( %s ), %s, %s )\n" % (self.variable["myAlgo"], self.variable["myOptimizer"], self.variable["myEvent"], self.variable["startingPoint"]) + txt += "\n" + + return txt + + def RunAlgorithm (self): + ''' + Do the computation + ''' + if ( self.DictMCVal.has_key( 'FunctionCallsNumber' ) ): + if ( self.DictMCVal[ 'FunctionCallsNumber' ] == "yes" ): + txt = "%s = %s.getEvaluationCallsNumber()\n" % (self.variable["modelEvaluationCalls"], self.variable["model"]) + txt += "%s = %s.getGradientCallsNumber()\n" % (self.variable["modelGradientCalls"], self.variable["model"]) + txt += "%s = %s.getHessianCallsNumber()\n" % (self.variable["modelHessianCalls"], self.variable["model"]) + txt += "\n" + + txt += "# Perform the computation\n" + txt += "%s.run()\n" % self.variable["myAlgo"] + txt += "\n" + + + if ( self.DictMCVal.has_key( 'FunctionCallsNumber' ) ): + if ( self.DictMCVal[ 'FunctionCallsNumber' ] == "yes" ): + txt += "%s = %s.getEvaluationCallsNumber() - %s\n" % (self.variable["modelEvaluationCalls"], self.variable["model"], self.variable["modelEvaluationCalls"]) + txt += "%s = %s.getGradientCallsNumber() - %s\n" % (self.variable["modelGradientCalls"], self.variable["model"], self.variable["modelGradientCalls"]) + txt += "%s = %s.getHessianCallsNumber() - %s\n" % (self.variable["modelHessianCalls"], self.variable["model"], self.variable["modelHessianCalls"]) + txt += "\n" + txt += "print '%s =', %s\n" % (self.variable["modelEvaluationCalls"], self.variable["modelEvaluationCalls"]) + txt += "print '%s =', %s\n" % (self.variable["modelGradientCalls"], self.variable["modelGradientCalls"]) + txt += "print '%s =', %s\n" % (self.variable["modelHessianCalls"], self.variable["modelHessianCalls"]) + txt += "\n" + + return txt + + def Cobyla (self): + ''' + Methode Cobyla + ''' + txt = "# Optimisation par Cobyla\n" + txt += "%s = Cobyla()\n" % self.variable["myOptimizer"] + txt += "#%s = CobylaSpecificParameters()\n" % self.variable["specificParameters"] + txt += "#%s.setSpecificParameters( %s )\n" % (self.variable["myOptimizer"], self.variable["specificParameters"]) + txt += "\n" + + return txt + + def AbdoRackwitz (self): + ''' + Methode AbdoRackwitz + ''' + txt = "# Optimisation par AbdoRackwitz\n" + txt += "%s = AbdoRackwitz()\n" % self.variable["myOptimizer"] + txt += "#%s = AbdoRackwitzSpecificParameters()\n" % self.variable["specificParameters"] + txt += "#%s.setSpecificParameters( %s )\n" % (self.variable["myOptimizer"], self.variable["specificParameters"]) + txt += "\n" + return txt + + def Beta (self, loi, i, collection): + ''' + Definition de la loi Beta + ''' + settings = { + "RT" : "Beta.RT", + "MuSigma" : "Beta.MUSIGMA", + } + if loi[ 'Settings' ] == 'RT' : + arg1 = loi[ 'R' ] + arg2 = loi[ 'T' ] + else : + arg1 = loi[ 'Mu' ] + arg2 = loi[ 'Sigma' ] - if boolLoiDef and loi.has_key("Kind") : - TypeLoi = loi["Kind"] - else : - boolLoiDef = False - - if not boolLoiDef or TypeLoi not in self.listeParamLoi.keys() : - texte += " Loi " + TypeLoi +" non programmee \n" - numVar += 1 - continue - - ListeParametres = [] - TexteParametres = "" - for Param in self.listeParamLoi[TypeLoi]: - if loi.has_key(Param) : - texte += " " + NomLoi + "_" + Param + " = " + str(loi[Param]) + "\n" - ListeParametres.append(NomLoi + "_" + Param) - TexteParametres += NomLoi + "_" + Param + "," - - texte += " " + NomLoi + " = " + TypeLoi + "( " - - if loi.has_key("Settings" ) and self.listeParamLoiSettings.has_key(TypeLoi) \ - and self.listeParamLoiSettings[TypeLoi].has_key(loi["Settings"]): - NumParam = self.listeParamLoiSettings[TypeLoi][loi["Settings"]] - texte += TexteParametres + NumParam +" )\n" - else : - texte += TexteParametres[:-1] + " )\n" - - texte += " " + NomLoi + '.setName( "'+DictVariable["Name"] +'" )\n' - texte += " myCollection["+str(numVar)+"] = Distribution( "+NomLoi+" )\n" - - if self.DictMCVal["Analysis"] == "Reliability" : - texte += " myPhysicalStartingPoint["+str(numVar)+"] = " - if DictVariable.has_key("PhysicalStartingPoint") : - texte += str(DictVariable["PhysicalStartingPoint"]) +"\n\n" - else : - texte += NomLoi+".computeQuantile( 0.5 )[0]\n\n" - - numVar += 1 - return texte - - -# _____________________________________________________ - - def CreeEntete (self) : - #------------------ - ''' - Entete : - ''' - - texte = "#!/usr/bin/env python\n" - texte += "# -*- coding: iso-8859-1 -*-\n" - texte += "import sys\n" - texte += "import os\n" - if self.DictLois.has_key("dir_openturns_python") : - texte += "sys.path.append(\"" + self.DictLois["dir_openturns_python"] + "\")\n" - if self.DictLois.has_key("DTDDirectory") : - texte += "os.environ[\"OPENTURNS_WRAPPER_PATH\"] = \".:" + self.DictLois["DTDDirectory"] + "\"\n" - texte += "from openturns import *\n" - texte += "error_message = None\n" - texte += "try : \n" - return texte - - def CreeTexteFin(self) : - #------------------------------------ - texte ='\n\nexcept : \n' - texte += ' error_message = sys.exc_type\n' - texte += ' if error_message is not None :\n' - texte += ' texte = "================================================= \\n"\n' - texte += ' texte += " Message d\'erreur : \" + str(error_message) + "\\n"\n' - texte += ' texte += "=================================================\\n"\n' - texte += ' print texte"\n' - texte += "sys.exit(error_message)\n" - return texte + arg3 = loi[ 'A' ] + arg4 = loi[ 'B' ] + txt = "Beta( %g, %g, %g, %g, %s )" % (arg1, arg2, arg3, arg4, settings[ loi[ 'Settings' ] ]) + return txt + + def Exponential (self, loi, i, collection): + ''' + Definition de la loi Exponential + ''' + arg1 = loi[ 'Lambda' ] + arg2 = loi[ 'Gamma' ] + txt = "Exponential( %g, %g )" % (arg1, arg2) + return txt + def Gamma (self, loi, i, collection): + ''' + Definition de la loi Gamma + ''' + settings = { + "KLambda" : "Gamma.KLAMBDA", + "MuSigma" : "Gamma.MUSIGMA", + } + if loi[ 'Settings' ] == 'KLambda' : + arg1 = loi[ 'K' ] + arg2 = loi[ 'Lambda' ] + else : + arg1 = loi[ 'Mu' ] + arg2 = loi[ 'Sigma' ] + + arg3 = loi[ 'Gamma' ] + txt = "Gamma( %g, %g, %g, %s )" % (arg1, arg2, arg3, settings[ loi[ 'Settings' ] ]) + return txt + + def Geometric (self, loi, i, collection): + ''' + Definition de la loi Geometric + ''' + txt = "Geometric( %g )" % loi[ 'P' ] + return txt + + def Gumbel (self, loi, i, collection): + ''' + Definition de la loi Gumbel + ''' + settings = { + "AlphaBeta" : "Gamma.ALPHABETA", + "MuSigma" : "Gamma.MUSIGMA", + } + if loi[ 'Settings' ] == 'AlphaBeta' : + arg1 = loi[ 'Alpha' ] + arg2 = loi[ 'Beta' ] + else : + arg1 = loi[ 'Mu' ] + arg2 = loi[ 'Sigma' ] + + txt = "Gamma( %g, %g, %s )" % (arg1, arg2, settings[ loi[ 'Settings' ] ]) + return txt + + def Histogram (self, loi, i, collection): + ''' + Definition de la loi Histogram + ''' + txt = "** Histogram not defined yet **" + return txt + + def Logistic (self, loi, i, collection): + ''' + Definition de la loi Logistic + ''' + arg1 = loi[ 'Alpha' ] + arg2 = loi[ 'Beta' ] + txt = "Logistic( %g, %g )" % (arg1, arg2) + return txt + + def LogNormal (self, loi, i, collection): + ''' + Definition de la loi LogNormal + ''' + settings = { + "MuSigmaLog" : "LogNormal.MUSIGMA_LOG", + "MuSigma" : "LogNormal.MUSIGMA", + "MuSigmaOverMu" : "LogNormal.MU_SIGMAOVERMU", + } + if loi[ 'Settings' ] == 'MuSigmaLog' : + arg1 = loi[ 'MuLog' ] + arg2 = loi[ 'SigmaLog' ] + elif loi[ 'Settings' ] == 'MuSigmaOverMu' : + arg1 = loi[ 'Mu' ] + arg2 = loi[ 'SigmaOverMu' ] + else : + arg1 = loi[ 'Mu' ] + arg2 = loi[ 'Sigma' ] + + arg3 = loi[ 'Gamma' ] + txt = "LogNormal( %g, %g, %g, %s )" % (arg1, arg2, arg3, settings[ loi[ 'Settings' ] ]) + return txt + + def MultiNomial (self, loi, i, collection): + ''' + Definition de la loi MultiNomial + ''' + arg1 = loi[ 'Values' ] + arg2 = loi[ 'N' ] + txt = "MultiNomial( NumericalPoint( %s ) , %d)" % (arg1, arg2) + return txt + + def Normal (self, loi, i, collection): + ''' + Definition de la loi Normal + ''' + arg1 = loi[ 'Mu' ] + arg2 = loi[ 'Sigma' ] + txt = "Normal( %g, %g )" % (arg1, arg2) + return txt + + def TruncatedNormal (self, loi, i, collection): + ''' + Definition de la loi TruncatedNormal + ''' + arg1 = loi[ 'MuN' ] + arg2 = loi[ 'SigmaN' ] + arg3 = loi[ 'A' ] + arg4 = loi[ 'B' ] + txt = "TruncatedNormal( %g, %g, %g, %g )" % (arg1, arg2, arg3, arg4) + return txt + + def Poisson (self, loi, i, collection): + ''' + Definition de la loi + ''' + txt = "Poisson( %g )" % loi[ 'Lambda' ] + return txt + + def Student (self, loi, i, collection): + ''' + Definition de la loi Student + ''' + arg1 = loi[ 'Mu' ] + arg2 = loi[ 'Nu' ] + txt = "Student( %g, %g )" % (arg1, arg2) + return txt + + def Triangular (self, loi, i, collection): + ''' + Definition de la loi Triangular + ''' + arg1 = loi[ 'A' ] + arg2 = loi[ 'M' ] + arg3 = loi[ 'B' ] + txt = "Triangular( %g, %g, %g )" % (arg1, arg2, arg3) + return txt + + def Uniform (self, loi, i, collection): + ''' + Definition de la loi Uniform + ''' + arg1 = loi[ 'A' ] + arg2 = loi[ 'B' ] + txt = "Uniform( %g, %g )" % (arg1, arg2) + return txt + + def UserDefined (self, loi, i, collection): + ''' + Definition de la loi UserDefined + ''' + txt = "** UserDefined not defined yet **" + return txt + + def Weibull (self, loi, i, collection): + ''' + Definition de la loi Weibull + ''' + settings = { + "AlphaBeta" : "Weibull.ALPHABETA", + "MuSigma" : "Weibull.MUSIGMA", + } + if loi[ 'Settings' ] == 'AlphaBeta' : + arg1 = loi[ 'Alpha' ] + arg2 = loi[ 'Beta' ] + else : + arg1 = loi[ 'Mu' ] + arg2 = loi[ 'Sigma' ] + + arg3 = loi[ 'Gamma' ] + txt = "Weibull( %g, %g, %s )" % (arg1, arg2, arg3, settings[ loi[ 'Settings' ] ]) + return txt + diff --git a/generator/OpenturnsXML.py b/generator/OpenturnsXML.py index 7452d1fa..7972a4bf 100644 --- a/generator/OpenturnsXML.py +++ b/generator/OpenturnsXML.py @@ -5,92 +5,53 @@ """ Ce module contient le generateur XML pour Openturns """ - -# Les variables -#--------------------- - -# OrdreVariable contient l'ordre des MC pour definir une variable en XML -# dictMCXML a pour cle le nom du MC dans la commande, -# Il contient aussi une liste donnant les informations suivantes -# 0 : debut de ligne -# 1 : fin de ligne -# 2 : code : 0 : facultatif, 1 : obligatoire -# Type est sur la meme ligne que Name - -OrdreVariable = ( 'Name', 'Type', 'Comment', 'Unit', 'Regexp', 'Format' ) -dictMCXML = { "Name" : ( ' \n', 1 ), - "Comment" : ( ' ' , '\n', 0 ), - "Unit" : ( ' ' , '\n', 0 ), - "Regexp" : ( ' ' , '\n', 0 ), - "Format" : ( ' ' , '\n', 0 ), - } - - -# Les fonctions du wrapper -#-------------------------------- -# OrdreLibrary contient l'ordre des MC pour definir la partie library en XML -# dictLibXML a pour cle le nom du MC dans la commande, -# Il contient aussi une liste donnant les informations suivantes : -# 0 : debut de ligne -# 1 : milieu de ligne si le MC est present -# 2 : milieu de ligne si le MC n est pas present -# 3 : fin de ligne -# 4 : code : 0 : facultatif, 1 : obligatoire sans defaut - -OrdreLibrary = ( 'FunctionName', 'GradientName', 'HessianName' ) -dictLibXML = { "FunctionName" : ( '\n\n ', - '\n ', - '\n ', - '', - 1, - ), - "GradientName" : ( '\n\n ', - '\n ', - '\n ', - '', - 0, - ), - "HessianName" : ( '\n\n ', - '\n ', - '\n ' , - '\n\n', - 0, - ), - } - -# Les communications du wrapper -#-------------------------------- -# OrdreWrapMode contient l'ordre des MC pour definir la partie WrapMode en XML -# dictWrMXML a pour cle le nom du MC dans la commande, -# Il contient aussi une liste donnant les informations suivantes -# 0 : debut de ligne -# 1 : fin de ligne -# 2 : code : 0 : facultatif, 1 : obligatoire sans defaut, 2 : obligatoire avec defaut -# 3 : valeur par defaut eventuelle -OrdreWrapMode = ( 'WrapCouplingMode', 'State', 'InDataTransfer', 'OutDataTransfer' ) -dictWrMXML = { "WrapCouplingMode" : ( '\n \n' , 2, 'shared">\n' ), - "InDataTransfer" : ( ' \n', 0 ), - "OutDataTransfer" : ( ' \n', 0 ), - } - -# Les fichiers d'echange du wrapper -#----------------------------------------- -# OrdreExchangeFile contient l'ordre des MC pour definir la partie OrdreExchangeFile en XML -# dictFilXML a pour cle le nom du MC dans la commande, -# Il contient aussi une liste donnant les informations suivantes -# 0 : debut de ligne -# 1 : fin de ligne -# 2 : code : 0 : facultatif, 1 : obligatoire sans defaut -OrdreExchangeFile = ( 'Id', 'Type', 'Name', 'Path', 'Subst' ) -dictFilXML = { "Id" : ( '\n ' ), - "Type" : ( ' type="' , '">' ), - "Name" : ( '\n ' , '' ), - "Path" : ( '\n ' , '' ), - "Subst" : ( '\n ' , '' ), - } - +import sys +print sys.path +import openturns + +# Dictionnaires de conversion des valeurs lues dans EFICAS +# en valeurs reconnues par Open TURNS +# Les clefs 'None' sont les valeurs par defaut + +VariableTypeByName = { + "in" : openturns.WrapperDataVariableType.IN, + "out" : openturns.WrapperDataVariableType.OUT, + None : openturns.WrapperDataVariableType.IN, + } + +FileTypeByName = { + "in" : openturns.WrapperDataFileType.IN, + "out" : openturns.WrapperDataFileType.OUT, + None : openturns.WrapperDataFileType.IN, + } + +SymbolProvidedByName = { + "no" : openturns.WrapperSymbolProvided.NO, + "yes" : openturns.WrapperSymbolProvided.YES, + None : openturns.WrapperSymbolProvided.NO, + } + +WrapperStateByName = { + "shared" : openturns.WrapperState.SHARED, + "specific" : openturns.WrapperState.SPECIFIC, + None : openturns.WrapperState.SPECIFIC, + } + +WrapperModeByName = { + "static-link" : openturns.WrapperMode.STATICLINK, + "dynamic-link" : openturns.WrapperMode.DYNAMICLINK, + "fork" : openturns.WrapperMode.FORK, + None : openturns.WrapperMode.FORK, + } + +WrapperDataTransferByName = { + "files" : openturns.WrapperDataTransfer.FILES, + "pipe" : openturns.WrapperDataTransfer.PIPE, + "arguments" : openturns.WrapperDataTransfer.ARGUMENTS, + "socket" : openturns.WrapperDataTransfer.SOCKET, + "CORBA" : openturns.WrapperDataTransfer.CORBA, + None : openturns.WrapperDataTransfer.FILES, + } #========================== # La classe de creation XML @@ -101,164 +62,144 @@ class XMLGenerateur : ''' Generation du fichier XML ''' - def __init__ (self, DictMCVal, ListeVariables, DictLois ) : - #---------------------------------------------------------# - self.ListeFiles = [] + def __init__ (self, appli, DictMCVal, DictVariables ) : self.DictMCVal = DictMCVal - self.ListeVariables = ListeVariables - self.DictLois = DictLois + self.DictVariables = DictVariables + self.appli = appli def CreeXML (self) : - #------------------# ''' Pilotage general de la creation du fichier XML ''' - self.texte = self.CreeEntete() - self.texte += self.CreeWrapperAndPath() - self.texte += self.CreeVariables() - self.texte += self.CreeLibrary() - self.texte += self.CreeFile() - self.texte += self.CreeWrapMode() - self.texte += self.CreeCommande() - return self.texte - - - def CreeEntete (self) : - #---------------------# + data = openturns.WrapperData() + data.setLibraryPath( self.GetMCVal('WrapperPath','') ) + data.setVariableList( self.VariableList() ) + data.setFunctionDescription( self.FunctionDefinition() ) + data.setGradientDescription( self.GradientDefinition() ) + data.setHessianDescription( self.HessianDefinition() ) + data.setFileList( self.FileList() ) + data.setParameters( self.Parameters() ) + + wrapper=openturns.WrapperFile() + wrapper.setWrapperData( data ) + + return wrapper + + + def VariableList (self) : ''' - La variable DTDDirectory doit etre dans DictMCVal + Ecrit la liste des variables ''' - #PN a faire : recuperer DTDDirectory dans editeur.ini - texte = "\n" - if self.DictMCVal.has_key("DTDDirectory") : - aux = os.path.join(self.DictMCVal["DTDDirectory"], "wrapper.dtd") - texte += "\n" - texte += '\n\n' - texte += '\n \n\n' - return texte - - - def CreeWrapperAndPath (self) : - #-----------------------------# - texte = ' \n' - texte += ' ' - if self.DictMCVal.has_key("WrapperPath") : - texte += self.DictMCVal["WrapperPath"] - else : - print "*********************************************" - print "* ERREUR GENERATION XML *" - print "* champ WrapperPath non rempli *" - print "*********************************************" - texte += '\n\n\n' + varList = openturns.WrapperDataVariableList() + for var in self.DictVariables.keys() : + varList.add( self.Variable( var, self.DictVariables[var] ) ) + return varList - return texte - - - def CreeVariables (self) : - #------------------------# - texte =' \n' - texte +=' \n\n' - texte +=' \n' - texte +=' \n\n' - texte += ' ' + def Variable (self, var, dictVar) : + ''' + Ecrit le parametrage d une variable + ''' + variable = openturns.WrapperDataVariable() + variable.id_ = var + if dictVar[ 'Type' ] in VariableTypeByName.keys() : + variable.type_ = VariableTypeByName[ dictVar[ 'Type' ] ] + if dictVar.has_key('Comment') : variable.comment_ = dictVar[ 'Comment' ] + if dictVar.has_key('Unit') : variable.unit_ = dictVar[ 'Unit' ] + if dictVar.has_key('Regexp') : variable.regexp_ = dictVar[ 'Regexp' ] + if dictVar.has_key('Format') : variable.format_ = dictVar[ 'Format' ] + return variable + + def FunctionDefinition (self) : + ''' + Ecrit la description de la Fonction + ''' + func = openturns.WrapperFunctionDescription() + func.name_ = self.GetMCVal( 'FunctionName', '' ) + if (len(func.name_) != 0) : func.provided_ = SymbolProvidedByName[ 'yes' ] + return func + + def GradientDefinition (self) : + ''' + Ecrit la description du Gradient + ''' + grad = openturns.WrapperFunctionDescription() + grad.name_ = self.GetMCVal( 'GradientName', '' ) + if (len(grad.name_) != 0) : grad.provided_ = SymbolProvidedByName[ 'yes' ] + return grad + + def HessianDefinition (self) : + ''' + Ecrit la description de la Hessienne + ''' + hess = openturns.WrapperFunctionDescription() + hess.name_ = self.GetMCVal( 'HessianName', '' ) + if (len(hess.name_) != 0) : hess.provided_ = SymbolProvidedByName[ 'yes' ] + return hess + - numvar = 0 - for DictVariable in self.ListeVariables : - texte += "\n \n" - for MC in OrdreVariable : - if DictVariable.has_key(MC) : - texte += dictMCXML[MC][0] + DictVariable[MC] + dictMCXML[MC][1] - else : - if dictMCXML[MC][2] : - print "**************************************************" - print "* ERREUR GENERATION XML *" - print "* champ obligatoire non rempli pour variable *" - print "**************************************************" - texte += ' \n' - numvar += 1 - texte += '\n \n' - texte += ' \n' - return texte - def CreeLibrary (self) : - #----------------------# + def FileList (self) : ''' - Librairies + Ecrit la liste des fichiers ''' - texte = "" - for MC in OrdreLibrary : - texte += dictLibXML[MC][0] - if self.DictMCVal.has_key(MC) : - texte += dictLibXML[MC][1] + self.DictMCVal[MC] + dictLibXML[MC][3] - else : - texte += dictLibXML[MC][2] + dictLibXML[MC][3] - if dictLibXML[MC][4] : - print "**************************************************" - print "* ERREUR GENERATION XML *" - print "* champ obligatoire non rempli pour wrapper *" - print "**************************************************" - texte += ' \n\n' - texte += ' \n' - return texte + fileList = openturns.WrapperDataFileList() + for dictFile in self.GetMCVal('Files', []) : + fileList.add( self.File( dictFile ) ) + return fileList - def CreeFile (self) : - #-------------------# + def File (self, dictFile ) : ''' - Fichiers + Ecrit le parametrage d un fichier ''' - texte = '\n \n' - texte += '\n \n' - texte += ' \n' - - if self.DictMCVal.has_key("exchange_file") : - for dico in self.DictMCVal["exchange_file"] : - texte += "\n " - for MC in OrdreExchangeFile : - if dico.has_key(MC) : - texte += dictFilXML[MC][0] + dico[MC] + dictFilXML[MC][1] - texte += "\n \n" - texte += '\n \n' - return texte - - def CreeWrapMode (self) : - #-----------------------# + fich = openturns.WrapperDataFile() + fich.id_ = dictFile[ 'Id' ] + if dictFile[ 'Type' ] in FileTypeByName.keys() : + fich.type_ = FileTypeByName[ dictFile[ 'Type' ] ] + if dictFile.has_key('Name') : fich.name_ = dictFile[ 'Name' ] + if dictFile.has_key('Path') : fich.path_ = dictFile[ 'Path' ] + if dictFile.has_key('Subst') : + import string + fich.subst_ = string.join( dictFile[ 'Subst' ], ',' ) + return fich + + def Parameters (self) : ''' - WrapMode + Ecrit les parametres de couplage au code externe ''' - texte = '\n ' + parameters = openturns.WrapperParameter() + parameters.mode_ = WrapperModeByName[ self.GetMCVal('WrapCouplingMode') ] + parameters.state_ = WrapperStateByName[ self.GetMCVal('State') ] + parameters.in_ = WrapperDataTransferByName[ self.GetMCVal('InDataTransfer') ] + parameters.out_ = WrapperDataTransferByName[ self.GetMCVal('OutDataTransfer') ] + return parameters + - for MC in OrdreWrapMode : - if self.DictMCVal.has_key(MC) : - texte += dictWrMXML[MC][0] + self.DictMCVal[MC] + dictWrMXML[MC][1] - else : - if dictWrMXML[MC][2] == 2 : - texte += dictWrMXML[MC][0] + dictWrMXML[MC][3] - elif dictWrMXML[MC][2] == 1 : - print "**************************************************" - print "* ERREUR GENERATION XML *" - print "* champ obligatoire non rempli pour external *" - print "**************************************************" - texte += ' \n\n' - return texte - def CreeCommande (self) : - #-----------------------# + + # --------------------------------------------------------------------------------- + + + def GetTag (self, tag) : ''' - La commande - On lui passera en argument les options supplementaires eventuelles + Recupere la chaine associee au tag dans la table dictTagsXML. + Leve une exception si le tag n est pas trouve ''' - texte = ' \n' - texte += ' ' - if self.DictMCVal.has_key("Command") : - texte += self.DictMCVal["Command"] - if self.DictMCVal.has_key("ArguCommande") : - for argument in self.DictMCVal[ArguCommande] : - texte += " " + argument - texte += "\n" + if ( dictTagsXML.has_key(tag) ) : + return dictTagsXML[tag] else : - texte += '# no command' - texte +='\n' - texte +='\n \n' - texte +='\n\n' - return texte - + raise KeyError, "Tag '%s' is undefined. This is an internal bug. Report bug to developers" % tag + pass + + def GetMCVal (self, MC, default = None, mandatory = False) : + ''' + Recupere la chaine associee au MC dans la table DictMCVal. + Leve une exception si le MC n est pas trouve et mandatory vaut True + ''' + if ( self.DictMCVal.has_key(MC) and self.DictMCVal[MC] != None ) : + return self.DictMCVal[MC] + else : + if ( mandatory ) : + raise KeyError, "Keyword '%s' is mandatory" % MC + else : + return default + pass diff --git a/generator/generator_openturns_study.py b/generator/generator_openturns_study.py new file mode 100644 index 00000000..8a76087b --- /dev/null +++ b/generator/generator_openturns_study.py @@ -0,0 +1,148 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +""" + Ce module contient le plugin generateur de fichier au format + openturns pour EFICAS. + +""" +import traceback +import types,string,re + +from generator_python import PythonGenerator +from OpenturnsBase import Generateur +#from OpenturnsXML import XMLGenerateur +#from OpenturnsSTD import STDGenerateur + +def entryPoint(): + """ + Retourne les informations necessaires pour le chargeur de plugins + + Ces informations sont retournees dans un dictionnaire + """ + return { + # Le nom du plugin + 'name' : 'openturns_study', + # La factory pour creer une instance du plugin + 'factory' : OpenturnsGenerator, + } + + +class OpenturnsGenerator(PythonGenerator): + """ + Ce generateur parcourt un objet de type JDC et produit + un texte au format eficas et + un texte au format xml + + """ + # Les extensions de fichier permis? + extensions=('.comm',) + + def initDico(self): + self.dictMCVal={} + self.listeVariables=[] + self.listeFichiers=[] + self.dictMCLois={} + self.dictTempo={} + self.TraiteMCSIMP=1 + self.texteSTD="""#!/usr/bin/env python + import sys + print "Invalid file. Check build process." + sys.exit(1) + """ + + def gener(self,obj,format='brut'): + print "IDM: gener dans generator_openturns_study.py" + self.initDico() + self.text=PythonGenerator.gener(self,obj,format) + self.genereSTD() + return self.text + + def generMCSIMP(self,obj) : + """ + Convertit un objet MCSIMP en texte python + Remplit le dictionnaire des MCSIMP si nous ne sommes ni dans une loi, ni dans une variable + """ + s=PythonGenerator.generMCSIMP(self,obj) + if self.TraiteMCSIMP == 1 : + self.dictMCVal[obj.nom]=obj.val + else : + self.dictTempo[obj.nom]=obj.valeur + return s + +# def generMCFACT(self,obj): +# # Il n est pas possible d utiliser obj.valeur qui n est pas +# # a jour pour les nouvelles variables ou les modifications +# if obj.nom in ( "Variables", "Files", ) : +# self.TraiteMCSIMP=0 +# self.dictTempo={} +# s=PythonGenerator.generMCFACT(self,obj) +# if obj.nom in ( "Variables", ) : +# self.listeVariables.append(self.dictTempo) +# self.dictTempo={} +# else : +# self.listeFichiers.append(self.dictTempo) +# self.TraiteMCSIMP=1 +# return s + + def generETAPE(self,obj): + print "IDM: generETAPE dans generator_openturns_study.py" + print "IDM: obj.nom=", obj.nom + if obj.nom in ( "DISTRIBUTION", ) : + self.TraiteMCSIMP=0 + self.dictTempo={} + s=PythonGenerator.generETAPE(self,obj) + if obj.nom in ( "DISTRIBUTION", ) : + self.dictMCLois[obj.sd]=self.dictTempo + self.dictTempo={} + self.TraiteMCSIMP=1 + return s + + def generPROC_ETAPE(self,obj): + print "IDM: generPROC_ETAPE dans generator_openturns_study.py" + print "IDM: obj.nom=", obj.nom + if obj.nom in ( "VARIABLE", ) : + self.TraiteMCSIMP=0 + self.dictTempo={} + s=PythonGenerator.generPROC_ETAPE(self,obj) + if obj.nom in ( "VARIABLE", ) : + self.listeVariables.append(self.dictTempo) + self.dictTempo={} + self.TraiteMCSIMP=1 + return s + + def genereSTD(self): + print "IDM: genereSTD dans generator_openturns_study.py" + print "IDM: self.listeVariables=", self.listeVariables + MonBaseGenerateur=Generateur(self.appli,self.dictMCVal, self.listeVariables, self.dictMCLois) + MonGenerateur=MonBaseGenerateur.getSTDGenerateur() + #try : + if 1== 1 : + self.texteSTD=MonGenerateur.CreeSTD() + #except : + else : + self.texteSTD="Il y a un pb a la Creation du STD" + + def writeOpenturnsSTD(self, filename): + f = open( str(filename), 'wb') + f.write( self.texteSTD ) + f.close() + + diff --git a/generator/generator_openturns_wrapper.py b/generator/generator_openturns_wrapper.py new file mode 100644 index 00000000..5720bfb4 --- /dev/null +++ b/generator/generator_openturns_wrapper.py @@ -0,0 +1,138 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +""" + Ce module contient le plugin generateur de fichier au format + openturns pour EFICAS. + +""" +import traceback +import types,string,re + +from generator_python import PythonGenerator +from OpenturnsBase import Generateur +#from OpenturnsXML import XMLGenerateur +#from OpenturnsSTD import STDGenerateur + +def entryPoint(): + """ + Retourne les informations necessaires pour le chargeur de plugins + + Ces informations sont retournees dans un dictionnaire + """ + return { + # Le nom du plugin + 'name' : 'openturns_wrapper', + # La factory pour creer une instance du plugin + 'factory' : OpenturnsGenerator, + } + + +class OpenturnsGenerator(PythonGenerator): + """ + Ce generateur parcourt un objet de type JDC et produit + un texte au format eficas et + un texte au format xml + + """ + # Les extensions de fichier permis? + extensions=('.comm',) + + def initDico(self): + self.dictMCVal={} + self.dictVariables={} + self.listeFichiers=[] + self.dictTempo={} + self.traiteMCSIMP=1 + self.numOrdre=0 + self.texteSTD="""#!/usr/bin/env python + import sys + print "Invalid file. Check build process." + sys.exit(1) + """ + self.wrapperXML=None + + def gener(self,obj,format='brut'): + #print "IDM: gener dans generator_openturns_wrapper.py" + self.initDico() + self.text=PythonGenerator.gener(self,obj,format) + self.genereXML() + #self.genereSTD() + return self.text + + def generMCSIMP(self,obj) : + """ + Convertit un objet MCSIMP en texte python + Remplit le dictionnaire des MCSIMP si nous ne sommes ni dans une loi, ni dans une variable + """ + s=PythonGenerator.generMCSIMP(self,obj) + if self.traiteMCSIMP == 1 : + self.dictMCVal[obj.nom]=obj.val + else : + self.dictTempo[obj.nom]=obj.valeur + return s + + def generETAPE(self,obj): + #print "generETAPE" , obj.nom + if obj.nom == "VARIABLE" : + self.traiteMCSIMP=0 + self.dictTempo={} + s=PythonGenerator.generETAPE(self,obj) + if obj.nom == "VARIABLE" : + self.dictTempo["numOrdre"]=self.numOrdre + self.numOrdre = self.numOrdre +1 + if obj.sd == None : + self.dictVariables["SansNom"]=self.dictTempo + else : + self.dictVariables[obj.sd.nom]=self.dictTempo + self.dictTempo={} + self.traiteMCSIMP=1 + return s + + def generMCFACT(self,obj): + # Il n est pas possible d utiliser obj.valeur qui n est pas + # a jour pour les nouvelles variables ou les modifications + #print "generMCFACT" , obj.nom + if obj.nom in ( "Files", ) : + self.traiteMCSIMP=0 + self.dictTempo={} + s=PythonGenerator.generMCFACT(self,obj) + self.listeFichiers.append(self.dictTempo) + self.traiteMCSIMP=1 + return s + + def genereXML(self): + #print "IDM: genereXML dans generator_openturns_wrapper.py" + #print "appli.CONFIGURATION=",self.appli.CONFIGURATION.__dict__ + if self.listeFichiers != [] : + self.dictMCVal["Files"]=self.listeFichiers + print "dictMCVal", self.dictMCVal, "dictVariables", self.dictVariables + MonBaseGenerateur=Generateur(self.appli,self.dictMCVal, [], {} ,self.dictVariables) + MonGenerateur=MonBaseGenerateur.getXMLGenerateur() + #try : + if 1== 1 : + self.wrapperXML=MonGenerateur.CreeXML() + #except : + else : + self.wrapperXML=None + + def writeOpenturnsXML(self, filename): + self.wrapperXML.writeFile( str(filename) ) + diff --git a/generator/generator_vers3DSalome.py b/generator/generator_vers3DSalome.py index 5fdc6af6..298dd547 100644 --- a/generator/generator_vers3DSalome.py +++ b/generator/generator_vers3DSalome.py @@ -128,12 +128,16 @@ class vers3DSalomeGenerator(PythonGenerator): def generMCSIMP(self,obj) : """ """ - #print "MCSIMP : ", obj.nom if obj.nom in dir(self) : suite = self.__class__.__dict__[obj.nom](self,obj) else : clef=self.dict_traduit[obj.nom] - self.dict_attributs[clef]=obj.val + # Traitement des parametres + try : + self.dict_attributs[clef]=obj.val.eval() + except : + self.dict_attributs[clef]=obj.val + def generMCFACT(self,obj): """ @@ -142,15 +146,13 @@ class vers3DSalomeGenerator(PythonGenerator): """ self.init_ligne() self.commande=self.dict_deb_com[obj.nom] - print self.commande for v in obj.mc_liste: self.generator(v) - #print self.commande - #print self.dict_attributs if self.boolGpMa == 1: self.list_commandes.append((self.commande,self.dict_attributs)) else : #showerror("Elements ne portant pas sur un Groupe de Maille","Salome ne sait pas montrer ce type d' element") + print ("Elements ne portant pas sur un Groupe de Maille","Salome ne sait pas montrer ce type d' element") pass def generMCList(self,obj):