From 442f9f9cd424e56bd0f57fcad661617820602681 Mon Sep 17 00:00:00 2001 From: Charles Toulemonde Date: Tue, 6 Jul 2010 11:38:03 +0000 Subject: [PATCH] =?utf8?q?ajout=20du=20sch=C3=A9ma=20s=5Fpolymers=5Fst=5F1?= =?utf8?q?=20cr=C3=A9=C3=A9=20avec=20Gr=C3=A9gory=20Marque=20le=205=20juil?= =?utf8?q?let=202010?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- MAP/catalogues_MAP.ini | 9 +- MAP/s_polymers_st_1_V1.py | 52 ++++++ generator/generator_s_polymers_st_1.py | 224 +++++++++++++++++++++++++ 3 files changed, 283 insertions(+), 2 deletions(-) create mode 100644 MAP/s_polymers_st_1_V1.py create mode 100644 generator/generator_s_polymers_st_1.py diff --git a/MAP/catalogues_MAP.ini b/MAP/catalogues_MAP.ini index 0f4ff81a..6b873001 100644 --- a/MAP/catalogues_MAP.ini +++ b/MAP/catalogues_MAP.ini @@ -5,7 +5,12 @@ rep_cata=os.getcwd() catalogues = ( # (ssCode,version,catalogue,formatIn) - ('MAP','s_poly_st_1_V1',os.path.join(rep_cata,'s_poly_st_1_V1.py'),'s_poly_st_1'), - ('MAP','s_scc_st_2_V1',os.path.join(rep_cata,'s_scc_st_2_V1.py'),'s_scc_st_2'), +# ('Map','V0',os.path.join(rep_cata,'Map2_Cata_V0.py'),'map'), + ('Map','V1',os.path.join(rep_cata,'Map1_Cata_V0.py'),'map_OT'), + ('Map','V2',os.path.join(rep_cata,'Map_Openturns.py'),'map_OT'), + ('Map','s_poly_st_1_V1',os.path.join(rep_cata,'s_poly_st_1_V1.py'),'s_poly_st_1'), + ('Map','s_polymers_st_1_V1',os.path.join(rep_cata,'s_polymers_st_1_V1.py'),'s_polymers_st_1'), + ('Map','s_scc_st_2_V1',os.path.join(rep_cata,'s_scc_st_2_V1.py'),'s_scc_st_2'), +# ('Map','s_poly_st_1_V2',os.path.join(rep_cata,'s_poly_st_1_V2.py'),'s_poly_st_1'), ) diff --git a/MAP/s_polymers_st_1_V1.py b/MAP/s_polymers_st_1_V1.py new file mode 100644 index 00000000..c345db10 --- /dev/null +++ b/MAP/s_polymers_st_1_V1.py @@ -0,0 +1,52 @@ +## -*- coding: utf-8 -*- +# +## -------------------------------------------------- +## debut entete +## -------------------------------------------------- +# +from Accas import * +from prefs_Map import PATH_MODULE +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('METHODE',),AU_MOINS_UN('MATERIAUX',),AU_MOINS_UN('DISCRETISATION',),), + )# Fin JDC_CATA +# + +METHODE= PROC(nom="METHODE",op=None, + fr='choix de la methode de calcul (maillage ou grille cartesienne)', + CHOIX=SIMP(statut = "o",fr="elements finis sur maillage ou differences finies sur grilles", typ='TXM', defaut="FD+grid", into=("FEM+mesh","FD+grid")), + LANCEMENT=SIMP(statut = "o",fr="lancement de Code_Aster ou de fdvgrid selon le choix", typ='TXM', defaut="oui", into=("oui","non")), +) + +MATERIAUX= PROC(nom="MATERIAUX",op=None, + fr='definition des proprietes du materiau : fuseau, taille du VER, proprietes des phases', + TAILLE=SIMP(statut = "o",fr="taille du VER", typ='R', defaut=50.), + FUSEAU = SIMP ( statut = "o", fr="Fichier représentant le fuseau granulaire",typ = "Fichier", defaut=PATH_MODULE+"/s_poly_st_1/inclusion_size_distribution.txt"), + DISTANCE=SIMP(statut = "o",fr="distance de replusions", typ='R', defaut=0.1), + 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=10.0, val_min =0.), +) + +DISCRETISATION= PROC(nom="DISCRETISATION",op=None, + fr='definition du nombre d''elements sur le cote du VER', + FINESSE=SIMP(statut = "o",fr="nombre d'elements sur le cote", typ='I', defaut=10 , into=(10,12,20,32,64,128),), +) diff --git a/generator/generator_s_polymers_st_1.py b/generator/generator_s_polymers_st_1.py new file mode 100644 index 00000000..7f3c3cdc --- /dev/null +++ b/generator/generator_s_polymers_st_1.py @@ -0,0 +1,224 @@ +# -* 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_polymers_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 verifie(self): + liste=[] + for i in self.listeCODE: + liste.append(i.keys()[0]) + if len(liste) != len(set(liste)): + raise AsException("il n'est pas prevu d avoir deux fois le meme code dans ce schema") + + + def PYGMEE(self,execution) : + dicoPygmee=self.dictMCVal["PYGMEE"] + self.dictPYGMEE=dicoPygmee + 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 execution=="non" : return "" + + if ('_PYGMEE_LANCEMENT' in dicoPygmee.keys()) and dicoPygmee['_PYGMEE_LANCEMENT'] == 'oui': + commande="echo '__________________';\n" + commande=commande + "echo 'execution de PYGMEE';\n" + commande=commande + "cd "+self.config.PATH_PYGMEE+";\n" + commande=commande + "python "+self.config.PATH_PYGMEE+"/pygmee_v1.py;\n" + commande=commande + "echo 'fin execution de PYGMEE';\n" + commande=commande + "echo '_____________________';\n\n\n" + return commande + else: + return "" + + def BENHUR(self,execution) : + dicoBenhur=self.dictMCVal["BENHUR"] + if hasattr(self,'dictPYGMEE') and '_PYGMEE_TAILLE' in self.dictMCVal['PYGMEE']: + dicoBenhur["_PYGMEE_TAILLE"]=self.dictPYGMEE['_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) + chaine=self.remplaceDICO(chaine2,dicoBenhur) + + try : + f=open(nom_fichier_BHR,'wb') + except : + print "Pb de Generation de BENHUR" + return "" + f.write(chaine) + f.close() + + f=open(nom_BHR_Files,'wb') + f.write(nom_fichier_BHR) + f.write("\n\n\n") + f.close() + + if execution=="non" : return "" + if ('_BENHUR_LANCEMENT' in dicoBenhur.keys()) and dicoBenhur['_BENHUR_LANCEMENT'] == 'oui': + commande="echo '__________________';\n" + commande=commande + "echo 'execution de BENHUR';\n" + commande=commande + "cd "+self.config.PATH_BENHUR+";\n" + commande=commande + "./benhur;\n" + commande=commande + "echo 'fin execution de BENHUR';\n" + commande=commande + "echo '________________________';\n\n\n" + return commande + else: + return "" + + + def BENHURYACS(self) : + print "dans BENHURYACS" + return "" + + def PYGMEEYACS(self) : + print "dans PYGMEEYACS" + return "" + + def ASTER(self,execution) : + print "Generation de ASTER" + dicoAster=self.dictMCVal["ASTER"] + 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,self.dictPYGMEE) + 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" + os.system(commande) + else: + return "" + + def GMSH(self,execution) : + 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 "" + + def METHODE(self,execution) : + print "METHODE" + return "" + + def MATERIAUX(self,execution) : + print "MATERIAUX" + return "" + + def DISCRETISATION(self,execution) : + print "DISCRETISATION" + return "" -- 2.39.2