From 561f6123f2dc3c9f95145840082ad554bb4867dc Mon Sep 17 00:00:00 2001 From: Pascale Noyret Date: Wed, 26 May 2010 09:41:10 +0000 Subject: [PATCH] PN ajout du choix du schema --- InterfaceQT4/qtEficas.py | 6 +- Map/qtEficas_map.py | 2 +- generator/generator_map.py | 174 ++------------------------ generator/generator_s_poly_st_1.py | 190 +++++++++++++++++++++++++++++ 4 files changed, 209 insertions(+), 163 deletions(-) create mode 100644 generator/generator_s_poly_st_1.py diff --git a/InterfaceQT4/qtEficas.py b/InterfaceQT4/qtEficas.py index 0399ce18..849abee9 100644 --- a/InterfaceQT4/qtEficas.py +++ b/InterfaceQT4/qtEficas.py @@ -24,7 +24,6 @@ class Appli(Ui_Eficas,QMainWindow): self.code=code self.ssCode=ssCode self.salome=salome - self.format_fichier="python" #par defaut self.top = self #(pour CONFIGURATION) self.QWParent=None #(Pour lancement sans IHM) self.indice=0 @@ -37,6 +36,11 @@ class Appli(Ui_Eficas,QMainWindow): self.REPINI=prefsCode.REPINI self.RepIcon=prefsCode.INSTALLDIR+"/Editeur/icons" self.INSTALLDIR=prefsCode.INSTALLDIR + if ssCode != None : + self.format_fichier= ssCode #par defaut + prefsCode.NAME_SCHEME=ssCode + else : + self.format_fichier="python" #par defaut if salome : import sys diff --git a/Map/qtEficas_map.py b/Map/qtEficas_map.py index a50af894..e33a9ee5 100755 --- a/Map/qtEficas_map.py +++ b/Map/qtEficas_map.py @@ -55,5 +55,5 @@ res=app.exec_() #permet de choisir le module print MonChoixCata.nom -eficas_go.lance_eficas(code=prefs.code) +eficas_go.lance_eficas(code=prefs.code,ssCode=MonChoixCata.nom) #eficas_go.lance_eficas(code=prefs.code,choix="non") diff --git a/generator/generator_map.py b/generator/generator_map.py index 9d7501f9..854bc374 100644 --- a/generator/generator_map.py +++ b/generator/generator_map.py @@ -28,39 +28,6 @@ import types,string,re,os from generator_python import PythonGenerator -#____________________________________________________________________________________ -# PYGMEEDict contient une equivalence entre le catalogue Map et les lignes generees -# comme entete (commentaire ?) dans le fichier d'input de pygmee -# - -CONFIGliste=('NAME_SCHEME', 'PATH_ASTER', 'PATH_BENHUR', 'PATH_MODULE', 'PATH_PYGMEE', 'PATH_STUDY', 'repIni') -PYGMEEDict={ - "_PYGMEE_FUSEAU1_b_forme_FICHIER" : "#fuseau 1 (entree de lecfus) format : diametre DCE croissant / fraction cumulee decroisant ", - "FUSEAU2" : "#fuseau 2 (entree de lecfus) format : diametre DCE croissant / fraction cumulee decroisant", - "_PYGMEE_TAILLE" : "# taille du VER en microns ", - "_PYGMEE_DISTANCE" : "# distance de repulsion :", - } - -#_______________________________________________________________________________________________________ -# listeOrdonneeMCPygmee contient une liste (donc ordonnee) des mots clefs pour -# imposer l'ordre des lignes generees -listeOrdonneeMCPygmee =('_PYGMEE_FUSEAU1_b_forme_FICHIER', 'FUSEAU2', '_PYGMEE_TAILLE','_PYGMEE_DISTANCE') - - -BENHURDict={ - "_BENHUR_FINESSE" : "discretisation des arretes du VER ", - } - - -ASTERDict={ - "_ASTER_LANCEMENT" : "execution de Code_Aster", - "_ASTER_CONDUCTIVITE_I" : "conductivite des inclusions", - "_ASTER_CONDUCTIVITE_M" : "conductivite de la matrice", - } - -GMSHDict={ - "_GMSH_LANCEMENT" : "execution de GMSH", - } def entryPoint(): """ @@ -84,9 +51,10 @@ class MapGenerator(PythonGenerator): """ # Les extensions de fichier permis? - extensions=('.comm',) + extensions=('.map',) def gener(self,obj,format='brut',config=None): + print 'generation dans generator_map' self.config=config self.dictMCVal={} self.listeTemp=[] @@ -94,16 +62,19 @@ class MapGenerator(PythonGenerator): self.generePythonMap() return self.text - def generRUN(self,obj,format='brut',config=None): + def generRUN(self,obj,format='brut',config=None,): + print 'generRUN dans generator_map' self.config=config self.dictMCVal={} self.listeTemp=[] self.text=PythonGenerator.gener(self,obj,format) - #self.generePythonMap() dicoRun={} for code in self.dictMCVal.keys(): - listeTexte=apply(MapGenerator.__dict__[code],(self,)) - dicoRun[code]=listeTexte + if code in self.__class__.__dict__.keys(): + listeTexte=apply(self.__class__.__dict__[code],(self,)) + dicoRun[code]=listeTexte + else : + dicoRun[code]="" return dicoRun @@ -115,7 +86,8 @@ class MapGenerator(PythonGenerator): ''' for code in self.dictMCVal.keys(): - self.texte=apply(MapGenerator.__dict__[code],(self,)) + if code in self.__class__.__dict__.keys(): + self.texte=apply(self.__class__.__dict__[code],(self,)) def generPROC_ETAPE(self,obj): #print "PN: generPROC_ETAPE dans generatorMap" @@ -139,75 +111,9 @@ class MapGenerator(PythonGenerator): self.DictTemp[clef]=obj.valeur return s - def PYGMEE(self) : - print "Generation de PYGMEE" - dicoPygmee=self.dictMCVal["PYGMEE"] - - monFichier=self.config.PATH_PYGMEE+"/pygmee_input.txt" - - #Lecture du fichier a trous - f = file(self.config.repIni+"/pygmee_input.txt","r") - chaine = f.read() - f.close() - chaine2=self.remplaceCONFIG(chaine) - chaine=self.remplaceDICO(chaine2,dicoPygmee) - - if os.path.isfile(monFichier) : - #print "je detruis pygmee_input.txt" - commande="rm -rf " + monFichier - os.system (commande) - f=open(monFichier,'wb') - f.write(chaine) - f.close() - if ('_PYGMEE_LANCEMENT' in dicoPygmee.keys()) and dicoPygmee['_PYGMEE_LANCEMENT'] == 'oui': - commande="cd "+self.config.PATH_PYGMEE+";" - commande=commande + "python "+self.config.PATH_PYGMEE+"/pygmee_v1.py" - #print commande - os.system(commande) - else: - return "" - def BENHUR(self) : - print "Generation de BENHUR" - dicoBenhur=self.dictMCVal["BENHUR"] - if ("PYGMEE" in self.dictMCVal.keys()) and '_PYGMEE_TAILLE' in self.dictMCVal['PYGMEE']: - dicoBenhur["_PYGMEE_TAILLE"]=self.dictMCVal["PYGMEE"]['_PYGMEE_TAILLE'] - else : - dicoBenhur["_PYGMEE_TAILLE"]=0 - print "Attention la variable Taille_VER non definie" - - finesse=str(dicoBenhur["_BENHUR_FINESSE"]) - nom_fichier_BHR=self.config.PATH_STUDY+"/"+self.config.NAME_SCHEME+"_benhur_"+finesse+".bhr" - nom_BHR_Files=self.config.PATH_BENHUR+"/BHR_files.txt" - - #Lecture du fichier a trous - f = file(self.config.repIni+"/benhur_pygmee.txt","r") - chaine = f.read() - f.close() - chaine2=self.remplaceCONFIG(chaine) - print "chaine2 =", chaine2 - chaine=self.remplaceDICO(chaine2,dicoBenhur) - print "chaine =", chaine - - f=open(nom_fichier_BHR,'wb') - f.write(chaine) - f.close() - - f=open(nom_BHR_Files,'wb') - f.write(nom_fichier_BHR) - f.write("\n\n\n") - f.close() - - if ('_BENHUR_LANCEMENT' in dicoBenhur.keys()) and dicoBenhur['_BENHUR_LANCEMENT'] == 'oui': - commande="cd "+self.config.PATH_BENHUR+";" - commande=commande + "./benhur" - print commande - os.system(commande) - else: - return "" - - def remplaceCONFIG(self,chaine) : - for mot in CONFIGliste : + def remplaceCONFIG(self,chaine,liste) : + for mot in liste : rplact="%_"+mot+"%" result=chaine.replace(rplact,self.config.__dict__[mot]) chaine=result @@ -217,59 +123,5 @@ class MapGenerator(PythonGenerator): for mot in dico.keys() : rplact="%"+mot+"%" result=chaine.replace(rplact,str(dico[mot])) - print rplact - print str(dico[mot]) chaine=result return chaine - - - def ASTER(self) : - print "Generation de ASTER" - dicoAster=self.dictMCVal["ASTER"] - dicoPygmee=self.dictMCVal["PYGMEE"] - nom_racine=self.config.PATH_MODULE+"/"+self.config.NAME_SCHEME+"/"+self.config.NAME_SCHEME - nom_fichier_ASTER=nom_racine+"_aster.comm" -# nom_mat=nom_racine+"_aster.mat" -# lambda_matrice=self.dictMCVal["ASTER"]['_ASTER_CONDUCTIVITE_M'] -# lambda_inclusions=self.dictMCVal["ASTER"]['_ASTER_CONDUCTIVITE_I'] -# contraste=lambda_inclusions/lambda_matrice -# f=open(nom_mat,'wb') -# for i in range(11): -# fraction=(1.0*i/10) -# lambda_local=1.0+fraction -# f.write(str(lambda_local)) -# f.write("\n") -# f.close() - - #Lecture du fichier a trous - f = file(self.config.repIni+"/s_poly_st_1_aster_template.comm","r") - chaine = f.read() - f.close() - chaine2=self.remplaceDICO(chaine,dicoPygmee) - print "chaine2 =", chaine2 - chaine=self.remplaceDICO(chaine2,dicoAster) - print "chaine =", chaine - - f=open(nom_fichier_ASTER,'wb') - f.write(chaine) - f.close() - - if ('_ASTER_LANCEMENT' in dicoAster.keys()) and dicoAster['_ASTER_LANCEMENT'] == 'oui': - commande="cd "+self.config.PATH_MODULE+";" - commande=commande + self.config.PATH_ASTER + "/as_run "+self.config.PATH_MODULE - commande=commande + "/"+self.config.NAME_SCHEME+"/"+self.config.NAME_SCHEME+"_aster.export" - print commande - os.system(commande) - else: - return "" - - def GMSH(self) : - print "Generation de GMSH" - dicoGmsh=self.dictMCVal["GMSH"] - if ('_GMSH_LANCEMENT' in dicoGmsh.keys()) and dicoGmsh['_GMSH_LANCEMENT'] == 'oui': - commande="cd "+self.config.PATH_MODULE+";" - commande=commande + "gmsh "+self.config.PATH_MODULE+"/"+self.config.NAME_SCHEME+"/"+self.config.NAME_SCHEME+"_aster.resu.msh" - print commande - os.system(commande) - else: - return "" diff --git a/generator/generator_s_poly_st_1.py b/generator/generator_s_poly_st_1.py new file mode 100644 index 00000000..5eab6344 --- /dev/null +++ b/generator/generator_s_poly_st_1.py @@ -0,0 +1,190 @@ +# -*- 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 + SEP pour EFICAS. + +""" +import traceback +import types,string,re,os + +from generator_map import MapGenerator + +#____________________________________________________________________________________ +# PYGMEEDict contient une equivalence entre le catalogue Map et les lignes generees +# comme entete (commentaire ?) dans le fichier d'input de pygmee +# + +CONFIGliste=('NAME_SCHEME', 'PATH_ASTER', 'PATH_BENHUR', 'PATH_MODULE', 'PATH_PYGMEE', 'PATH_STUDY', 'repIni') +PYGMEEDict={ + "_PYGMEE_FUSEAU1_b_forme_FICHIER" : "#fuseau 1 (entree de lecfus) format : diametre DCE croissant / fraction cumulee decroisant ", + "FUSEAU2" : "#fuseau 2 (entree de lecfus) format : diametre DCE croissant / fraction cumulee decroisant", + "_PYGMEE_TAILLE" : "# taille du VER en microns ", + "_PYGMEE_DISTANCE" : "# distance de repulsion :", + } + +#_______________________________________________________________________________________________________ +# listeOrdonneeMCPygmee contient une liste (donc ordonnee) des mots clefs pour +# imposer l'ordre des lignes generees +listeOrdonneeMCPygmee =('_PYGMEE_FUSEAU1_b_forme_FICHIER', 'FUSEAU2', '_PYGMEE_TAILLE','_PYGMEE_DISTANCE') + + +BENHURDict={ + "_BENHUR_FINESSE" : "discretisation des arretes du VER ", + } + +ASTERDict={ + "_ASTER_LANCEMENT" : "execution de Code_Aster", + "_ASTER_CONDUCTIVITE_I" : "conductivite des inclusions", + "_ASTER_CONDUCTIVITE_M" : "conductivite de la matrice", + } + +GMSHDict={ + "_GMSH_LANCEMENT" : "execution de GMSH", + } + +def entryPoint(): + """ + Retourne les informations necessaires pour le chargeur de plugins + + Ces informations sont retournees dans un dictionnaire + """ + return { + # Le nom du plugin + 'name' : 's_poly_st_1', + # La factory pour creer une instance du plugin + 'factory' : s_poly_st_1Generator, + } + + +class s_poly_st_1Generator(MapGenerator): + """ + Ce generateur parcourt un objet de type JDC et produit + un texte au format eficas et + un texte au format py + + """ + + + def PYGMEE(self) : + print "Generation de PYGMEE" + dicoPygmee=self.dictMCVal["PYGMEE"] + monFichier=self.config.PATH_PYGMEE+"/pygmee_input.txt" + + #Lecture du fichier a trous + f = file(self.config.repIni+"/pygmee_input.txt","r") + chaine = f.read() + f.close() + chaine2=self.remplaceCONFIG(chaine,CONFIGliste) + chaine=self.remplaceDICO(chaine2,dicoPygmee) + + if os.path.isfile(monFichier) : + #print "je detruis pygmee_input.txt" + commande="rm -rf " + monFichier + os.system (commande) + f=open(monFichier,'wb') + f.write(chaine) + f.close() + if ('_PYGMEE_LANCEMENT' in dicoPygmee.keys()) and dicoPygmee['_PYGMEE_LANCEMENT'] == 'oui': + commande="cd "+self.config.PATH_PYGMEE+";" + commande=commande + "python "+self.config.PATH_PYGMEE+"/pygmee_v1.py" + #print commande + os.system(commande) + else: + return "" + + def BENHUR(self) : + print "Generation de BENHUR" + dicoBenhur=self.dictMCVal["BENHUR"] + if ("PYGMEE" in self.dictMCVal.keys()) and '_PYGMEE_TAILLE' in self.dictMCVal['PYGMEE']: + dicoBenhur["_PYGMEE_TAILLE"]=self.dictMCVal["PYGMEE"]['_PYGMEE_TAILLE'] + else : + dicoBenhur["_PYGMEE_TAILLE"]=0 + print "Attention la variable Taille_VER non definie" + + finesse=str(dicoBenhur["_BENHUR_FINESSE"]) + nom_fichier_BHR=self.config.PATH_STUDY+"/"+self.config.NAME_SCHEME+"_benhur_"+finesse+".bhr" + nom_BHR_Files=self.config.PATH_BENHUR+"/BHR_files.txt" + + #Lecture du fichier a trous + f = file(self.config.repIni+"/benhur_pygmee.txt","r") + chaine = f.read() + f.close() + chaine2=self.remplaceCONFIG(chaine,CONFIGliste) + print "chaine2 =", chaine2 + chaine=self.remplaceDICO(chaine2,dicoBenhur) + print "chaine =", chaine + + f=open(nom_fichier_BHR,'wb') + f.write(chaine) + f.close() + + f=open(nom_BHR_Files,'wb') + f.write(nom_fichier_BHR) + f.write("\n\n\n") + f.close() + + if ('_BENHUR_LANCEMENT' in dicoBenhur.keys()) and dicoBenhur['_BENHUR_LANCEMENT'] == 'oui': + commande="cd "+self.config.PATH_BENHUR+";" + commande=commande + "./benhur" + print commande + os.system(commande) + else: + return "" + + + + def ASTER(self) : + print "Generation de ASTER" + dicoAster=self.dictMCVal["ASTER"] + dicoPygmee=self.dictMCVal["PYGMEE"] + nom_racine=self.config.PATH_MODULE+"/"+self.config.NAME_SCHEME+"/"+self.config.NAME_SCHEME + nom_fichier_ASTER=nom_racine+"_aster.comm" + + #Lecture du fichier a trous + f = file(self.config.repIni+"/s_poly_st_1_aster_template.comm","r") + chaine = f.read() + f.close() + chaine2=self.remplaceDICO(chaine,dicoPygmee) + chaine=self.remplaceDICO(chaine2,dicoAster) + + f=open(nom_fichier_ASTER,'wb') + f.write(chaine) + f.close() + + if ('_ASTER_LANCEMENT' in dicoAster.keys()) and dicoAster['_ASTER_LANCEMENT'] == 'oui': + commande="cd "+self.config.PATH_MODULE+";" + commande=commande + self.config.PATH_ASTER + "/as_run "+self.config.PATH_MODULE + commande=commande + "/"+self.config.NAME_SCHEME+"/"+self.config.NAME_SCHEME+"_aster.export" + print commande + os.system(commande) + else: + return "" + + def GMSH(self) : + dicoGmsh=self.dictMCVal["GMSH"] + if ('_GMSH_LANCEMENT' in dicoGmsh.keys()) and dicoGmsh['_GMSH_LANCEMENT'] == 'oui': + commande="cd "+self.config.PATH_MODULE+";" + commande=commande + "gmsh "+self.config.PATH_MODULE+"/"+self.config.NAME_SCHEME+"/"+self.config.NAME_SCHEME+"_aster.resu.msh" + print commande + os.system(commande) + else: + return "" -- 2.39.2