]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
ajout du schéma s_polymers_st_1 créé avec Grégory Marque le 5 juillet 2010
authorCharles Toulemonde <charles.toulemonde@edf.fr>
Tue, 6 Jul 2010 11:38:03 +0000 (11:38 +0000)
committerCharles Toulemonde <charles.toulemonde@edf.fr>
Tue, 6 Jul 2010 11:38:03 +0000 (11:38 +0000)
MAP/catalogues_MAP.ini
MAP/s_polymers_st_1_V1.py [new file with mode: 0644]
generator/generator_s_polymers_st_1.py [new file with mode: 0644]

index 0f4ff81a91a74ed288889d2496ef31b455676a57..6b87300173b7da02daef6330e0495e24c8e8fc78 100644 (file)
@@ -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 (file)
index 0000000..c345db1
--- /dev/null
@@ -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 (file)
index 0000000..7f3c3cd
--- /dev/null
@@ -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 ""