From af78f0d3699db7dceb321b772eda56f113069441 Mon Sep 17 00:00:00 2001 From: Pascale Noyret Date: Tue, 12 Jan 2010 10:15:10 +0000 Subject: [PATCH] *** empty log message *** --- MAP/Map1_Cata_V1.py | 67 +++++++++++++++ MAP/Map_Cata_V0.py | 62 ++++++++++++++ MAP/catalogues_Map.ini | 13 +++ MAP/configuration_Map.py | 177 +++++++++++++++++++++++++++++++++++++++ MAP/prefs_Map.py | 50 +++++++++++ MAP/properties.py | 24 ++++++ MAP/qtEficas_map.py | 37 ++++++++ MAP/style.py | 1 + MAP/test_module.bhr | 29 +++++++ 9 files changed, 460 insertions(+) create mode 100644 MAP/Map1_Cata_V1.py create mode 100644 MAP/Map_Cata_V0.py create mode 100644 MAP/catalogues_Map.ini create mode 100644 MAP/configuration_Map.py create mode 100644 MAP/prefs_Map.py create mode 100644 MAP/properties.py create mode 100755 MAP/qtEficas_map.py create mode 100644 MAP/style.py create mode 100644 MAP/test_module.bhr diff --git a/MAP/Map1_Cata_V1.py b/MAP/Map1_Cata_V1.py new file mode 100644 index 00000000..e3b042e5 --- /dev/null +++ b/MAP/Map1_Cata_V1.py @@ -0,0 +1,67 @@ +## -*- coding: utf-8 -*- +# +## -------------------------------------------------- +## debut entete +## -------------------------------------------------- +# +from Accas import * +class Tuple: + def __init__(self,ntuple): + self.ntuple=ntuple + + def __convert__(self,valeur): + if type(valeur) == types.StringType: + return None + if len(valeur) != self.ntuple: + return None + return valeur + + def info(self): + return "Tuple de %s elements" % self.ntuple + + __repr__=info + __str__=info + +# +#CONTEXT.debug = 1 +JdC = JDC_CATA ( code = 'MAP', + execmodul = None, + regles=(AU_MOINS_UN('PYGMEE',),AU_MOINS_UN('BENHUR',), AVANT ('PYGMEE' , 'BENHUR'),), + )# Fin JDC_CATA +# + +PYGMEE= PROC(nom="PYGMEE",op=None, + fr='definition de la morphologie', + +# NBPHASES=SIMP(statut='o',typ='I',defaut=1,into=(1,2)), + FUSEAU1=FACT(fr="entree de lecfus", statut='o', + FORME=SIMP(statut = "o", typ='TXM', defaut="fichier", into=("manuel","fichier")), + + b_forme=BLOC( condition = "FORME == 'fichier'", + FORMAT = SIMP(statut = "o", typ='TXM', defaut="croissant", into=("croissant","decroissant")), + FICHIER = SIMP ( statut = "o", typ = "Fichier", defaut="/local00/bin/MAP/modules/test_module/pygmee_v1/fuseau_1.txt"), + ), + + b_manuel=BLOC( condition = "FORME == 'manuel'", + LFUSEAU = SIMP ( statut = "o", typ=Tuple(2),validators=VerifTypeTuple(('R','R')), max="**",) ,),), + + + TAILLE=SIMP(statut = "o",fr="taille du VER", typ='R', defaut=50.), + DISTANCE=SIMP(statut = "o",fr="distance de replusions", typ='R', defaut=0.1), + LANCEMENT=SIMP(statut = "o",fr="lancement de PYGMEE", typ='TXM', defaut="oui", into=("oui","non")), +) + +BENHUR= PROC(nom="BENHUR",op=None, + fr='definition du maillage', + + FINESSE=SIMP(statut = "o",fr="nombre d\'elements par cote", typ='I', into=(10,12), defaut=10), + LANCEMENT=SIMP(statut = "o",fr="lancement de BENHUR", typ='TXM', defaut="oui", into=("oui","non")), +) + +ASTER= PROC(nom="ASTER",op=None, + fr='definition du calcul', + + CONDUCTIVITE_M=SIMP(statut = "o",fr="conductivite de la matrice", typ='R', defaut=1.0 , val_min =0.), + CONDUCTIVITE_I=SIMP(statut = "o",fr="conductivite des inclusions", typ='R', defaut=1.0, val_min =0.), + LANCEMENT=SIMP(statut = "o",fr="lancement de Code_Aster", typ='TXM', defaut="non", into=("oui","non")), +) diff --git a/MAP/Map_Cata_V0.py b/MAP/Map_Cata_V0.py new file mode 100644 index 00000000..5036f45c --- /dev/null +++ b/MAP/Map_Cata_V0.py @@ -0,0 +1,62 @@ +# -*- 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 = 'PERFECT', + execmodul = None, + regles = ( AU_MOINS_UN ( 'RPV' , 'INTERNALS'), ), + ) # 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) +RPV = PROC(nom = "RPV", + op = 68, + fr = "end-products RPV-2 and ToughnessModule", + regles = ( AU_MOINS_UN ( 'RPV2' , 'ToughnessModule'), ), + RPV2 = FACT(statut='f', + regles = ( AU_MOINS_UN ( 'IRRAD' , 'CONVOLVE', 'LONG_TERM','HARD'), ), + IRRAD = FACT( statut='f', + neutron_spectrum = SIMP(statut='f',typ='R', max='**'), + fcc_crystal = FACT(statut='o', + nu = SIMP(statut='o',typ='R',defaut=0.3), + mu = SIMP(statut='o',typ='R',defaut=70),), + operating_conditions = FACT(statut = 'o', + relative_time_increments = SIMP(statut='o',typ='R', max='**'), + time_irrad = SIMP(statut='o',typ='R',defaut=1e+07,), + temp_irrad = SIMP(statut='o',typ='R',defaut=573,), + flux_cut_off_energy = SIMP (statut='o',typ='R',defaut=1),) + ), + CONVOLVE = FACT(statut='f', + UNITE_RESU = SIMP(statut='f',typ='I',defaut=32), + UNITE_RESU2 = SIMP(statut='f',typ='I',defaut=32), + )) +); + +INTERNALS = PROC ( nom = "INTERNALS", + op = 68, + fr = "end-products INTERN-1", + # regles = ( AU_MOINS_UN ( 'RPV2' , 'ToughnessModule'), ), + INTERN1 = FACT(statut='f', + UNITE_RESU_FORC = SIMP(statut='f',typ='I',defaut=33), + UNITE_RESU_IMPE = SIMP(statut='f',typ='I',defaut=32),) +); + diff --git a/MAP/catalogues_Map.ini b/MAP/catalogues_Map.ini new file mode 100644 index 00000000..96c94e37 --- /dev/null +++ b/MAP/catalogues_Map.ini @@ -0,0 +1,13 @@ +# Choix des catalogues +import os +#rep_cata=os.path.dirname(os.path.abspath(__file__)) +rep_cata=os.getcwd() + +catalogues = ( +# (code,version,catalogue,formatIn) + #('Map','V0',os.path.join(rep_cata,'Map_Cata_V0.py'),'map'), + #('Map','V0',os.path.join(rep_cata,'Map1_Cata_V0.py'),'map'), + ('Map','V1',os.path.join(rep_cata,'Map1_Cata_V1.py'),'map'), + ('Map2','V0',os.path.join(rep_cata,'Map2_Cata_V0.py'),'map'), +) + diff --git a/MAP/configuration_Map.py b/MAP/configuration_Map.py new file mode 100644 index 00000000..ff86ca91 --- /dev/null +++ b/MAP/configuration_Map.py @@ -0,0 +1,177 @@ +# -*- 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 +from PyQt4.QtGui import * +from utils import read_file + +# 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 + + if self.appli: + self.parent=appli.top + self.appli.mode_nouv_commande='initial' + else: self.parent=None + + + # Valeurs par defaut + self.rep_user = os.path.join(os.environ['HOME'],'.Eficas_Map') + if not os.path.isdir(self.rep_user) : os.mkdir(self.rep_user) + self.initialdir = self.rep_user + self.path_doc = self.rep_user + self.savedir = self.rep_user + self.exec_acrobat = self.rep_user + + self.labels_user=('exec_acrobat', 'catalogues','savedir','path_doc','map_path','PATH_PYGMEE','PATH_BENHUR') + self.labels_eficas=("map_path","rep_user","INSTALLDIR","path_doc","exec_acrobat","rep_cata","initialdir","savedir","catalogues",'PATH_PYGMEE','PATH_BENHUR') + + #Lecture des fichiers utilisateurs + self.lecture_fichier_ini_standard() + self.lecture_fichier_ini_utilisateur() + self.lecture_catalogues() + + #-------------------------------------- + def lecture_fichier_ini_standard(self): + #-------------------------------------- + # Verifie l'existence du fichier "standard" + # appelle la lecture de ce fichier + import prefs + name='prefs_'+prefs.code + prefsCode=__import__(name) + self.prefsUser=name+".py" + for k in self.labels_eficas : + try : + valeur=getattr(prefsCode,k) + setattr(self,k,valeur) + except : + pass + if hasattr(self,'map_path') : + oldPath=self.map_path + + + #-------------------------------------- + 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.prefsUser) + if not os.path.isfile(self.fic_ini_utilisateur): return + + 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_user : + try : + setattr(self,k,d[k]) + except : + pass + + if hasattr(self,'map_path') : + if hasattr(self,'oldPath'): + if self.map_path != self.oldPath: + sys.path.remove(self.oldPath) + sys.path[:0]=[self.map_path] + else : + sys.path[:0]=[self.map_path] + + + #-------------------------------------- + def lecture_catalogues(self): + #-------------------------------------- + rep_mat=" " # Compatibilite Aster + if hasattr(self,"catalogues") : + return + + fic_ini = os.path.join(self.repIni,"catalogues_Map.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) + + txt = utils.read_file(fic_ini) + 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 " + fic_ini ) + sys.exit(0) + + + + #-------------------------------------- + def save_params(self): + #-------------------------------------- + # sauvegarde + # les nouveaux paramètres dans le fichier de configuration utilisateur + # + texte="" + for clef in self.labels_user : + if hasattr(self,clef): + valeur=getattr(self,clef) + texte= texte + clef+" = " + repr(valeur) +"\n" + f=open(self.fic_ini_utilisateur,'w+') + print self.fic_ini_utilisateur + 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/MAP/prefs_Map.py b/MAP/prefs_Map.py new file mode 100644 index 00000000..57b5e22e --- /dev/null +++ b/MAP/prefs_Map.py @@ -0,0 +1,50 @@ +# -*- 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 : +print "import des prefs de MAP" + +# 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,'..') +PATH_PYGMEE="/local00/bin/MAP/modules/test_module/pygmee_v1" +PATH_BENHUR="/local00/bin/MAP/modules/test_module/benhur" + + +# 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" +savedir = os.environ['HOME'] + + +sys.path[:0]=[INSTALLDIR] diff --git a/MAP/properties.py b/MAP/properties.py new file mode 100644 index 00000000..ce5f1a2e --- /dev/null +++ b/MAP/properties.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# 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/MAP/qtEficas_map.py b/MAP/qtEficas_map.py new file mode 100755 index 00000000..f9cd06e6 --- /dev/null +++ b/MAP/qtEficas_map.py @@ -0,0 +1,37 @@ +#!/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 Perfect +""" +# Modules Python + +# Modules Eficas +import prefs +name='prefs_'+prefs.code +__import__(name) + +import sys +from InterfaceQT4 import eficas_go +#permet de choisir le module +#eficas_go.lance_eficas(code=prefs.code,choix="oui") +eficas_go.lance_eficas(code=prefs.code,choix="non") diff --git a/MAP/style.py b/MAP/style.py new file mode 100644 index 00000000..7da9d534 --- /dev/null +++ b/MAP/style.py @@ -0,0 +1 @@ +# Necessaire pour compatibilite avec Aster diff --git a/MAP/test_module.bhr b/MAP/test_module.bhr new file mode 100644 index 00000000..0198dcbc --- /dev/null +++ b/MAP/test_module.bhr @@ -0,0 +1,29 @@ +OPTIONS +3D BENHUR SCALE +I - Morphologie (MESSALA) +1) dimension du VER cubique [m] (entree) +50.0 +2) fraction volumique seuil écrétant le fuseau (entree) +.11 +3) fichier decrivant le fuseau granulaire descendant (entree) +- +4) fichier decrivant la position et la taille des boules (sortie) +/local00/bin/MAP/modules/test_module/pygmee_v1/benhur_input.txt +5) fichier CAO de la morphologie (sortie) +- +6) facteur de correction de fraction volumique (entree) +1.0 + +II - Maillage (BENHUR) +1) fichier entree décrivant le maillage support (entree) +/local00/bin/MAP/modules/test_module/benhur/regular_mesh_3D_10.msh +2) fichier sortie du maillage (sortie) +test_module_10.msh +3) fichier commentaire sur les statistiques décrivant le maillage (sortie) +test_module_10.log +4) fichier BMP décrivant une coupe binarisée du VER (sortie) +test_module_10.bmp +5) fichier TXT donnant la level set du contour aux noeuds (sortie) +test_module_10_levelset.txt + + -- 2.39.2