]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
debug of s_polymers_st_1
authorCharles Toulemonde <charles.toulemonde@edf.fr>
Tue, 26 Oct 2010 14:55:06 +0000 (14:55 +0000)
committerCharles Toulemonde <charles.toulemonde@edf.fr>
Tue, 26 Oct 2010 14:55:06 +0000 (14:55 +0000)
MAP/Templates/s_polymers_st_1/benhur_template.txt [new file with mode: 0644]
MAP/Templates/s_polymers_st_1/s_polymers_st_1_aster_template.comm [new file with mode: 0644]
MAP/Templates/s_polymers_st_1/s_polymers_st_1_aster_template.export [new file with mode: 0644]
MAP/prefs_MAP.py
MAP/s_polymers_st_1_V1.py
generator/generator_s_polymers_st_1.py

diff --git a/MAP/Templates/s_polymers_st_1/benhur_template.txt b/MAP/Templates/s_polymers_st_1/benhur_template.txt
new file mode 100644 (file)
index 0000000..a9cb869
--- /dev/null
@@ -0,0 +1,28 @@
+OPTIONS
+3D BENHUR SCALE
+I - Morphologie (MESSALA)
+1) dimension du VER cubique [m] (entree)
+%_RVE_SIZE%
+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)
+%_INCLUSION_FILE%
+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)
+%_PATH_BENHUR%/bin/regular_mesh_3D_%_MESH_SIZE%.msh
+2) fichier sortie du maillage  (sortie)
+%_PATH_STUDY%/%_NAME_SCHEME%_benhur_%_MESH_SIZE%.msh
+3) fichier commentaire sur les statistiques décrivant le maillage (sortie)
+%_PATH_STUDY%/%_NAME_SCHEME%_benhur_%_MESH_SIZE%.log
+4) fichier BMP décrivant une coupe binarisée du VER (sortie)
+%_PATH_STUDY%/%_NAME_SCHEME%_benhur_%_MESH_SIZE%.bmp
+5) fichier TXT donnant la level set du contour aux noeuds (sortie)
+%_PATH_STUDY%/%_NAME_SCHEME%_benhur_%_MESH_SIZE%_levelset.txt
+
diff --git a/MAP/Templates/s_polymers_st_1/s_polymers_st_1_aster_template.comm b/MAP/Templates/s_polymers_st_1/s_polymers_st_1_aster_template.comm
new file mode 100644 (file)
index 0000000..f343fdc
--- /dev/null
@@ -0,0 +1,203 @@
+#===========================================
+# 20090416 jsn
+# cas test thermique : cube homogene isotrope
+# soumis a un -gradT homogene au contour qcq (donne par ses 3 composantes mg1,mg2,mg3)
+# les champs sont sortis au format gmsh
+# les moyennes des champs de gradient de temperature et de flux de chaleur sont calcules
+#
+# teste en STA9.4
+#============================================
+
+# nbre de classes (de 0% a 100% d'inclusions)
+nb_classes=11
+# specifier le repertoire dans lequel on trouve "entree_schema.dat", "entree_cl.dat" et dans lequel on ecrit "sortie_resultats.dat"
+racine="%_PATH_MODULE%/s_poly_st_1/"
+# nb_classes lignes de float : les lambda donnes par le schema pour la fraction d'incl de chaque classe (de 0% incl a 100% incl tous les N% selon nb_classes)
+fic_entree_schema   =racine+"s_poly_st_1_aster.mat"
+
+# cote cube
+L=%_RVE_SIZE%
+
+# conductivite isotrope
+lambd=1.
+# -gradT homogene au contour
+mg1=1.0
+mg2=0.0
+mg3=0.0
+# nbre de classes (de 0% a 100% d'inclusions)
+nb_classes=11
+# lecture schema = lambda pour chaque classe
+lambda_t = [0.0]*nb_classes
+print("'\n")
+for i in range(0,nb_classes):
+       alpha=float((i-1)/(nb_classes-1))
+       lambda_t[i]=(1-alpha)*%_CONDUCTIVITE_M%+(alpha)*%_CONDUCTIVITE_I%
+
+DEBUT(PAR_LOT='OUI',); # 'OUI' evite l'alarme
+
+# lecture maillage format gmsh
+PRE_GMSH();
+mail=LIRE_MAILLAGE();
+
+# definition des gpes de mailles (surfaces de type 'xp' (x=L) ,'xm' (x=0),... et volume 'vol' regroupant toutes les mailles)
+GMsur_gmsh_noms  = ['GM1001', 'GM1002', 'GM1003', 'GM1004', 'GM1005', 'GM1006',]
+GMsur_aster_noms = ['xm', 'xp', 'ym', 'yp', 'zm', 'zp',]
+GMsur_aster_list = [ _F(NOM=GMsur_aster_noms[i],GROUP_MA=GMsur_gmsh_noms[i],) for i in range(0,len(GMsur_gmsh_noms)) ]
+
+GMvol_gmsh_noms  = ['GM10000', 'GM10100', 'GM10200', 'GM10300', 'GM10400', 'GM10500', 'GM10600', 'GM10700', 'GM10800', 'GM10900', 'GM11000',]
+GMvol_aster_nom  = 'vol'
+GMvol_aster_list = [ _F(NOM=GMvol_aster_nom,UNION=GMvol_gmsh_noms) ]
+
+mail=DEFI_GROUP(reuse =mail,
+                MAILLAGE=mail,
+                CREA_GROUP_MA=GMsur_aster_list+GMvol_aster_list,);
+
+# definition d'1 groupe de noeuds contenant le nd en (0,0,0)->nd0 afin de fixer la temperature en un point (supprimer les "mvts de corps rigide") ds le cas de CL en flux homogene au contour
+# definition par intersection des faces du cube
+mail=DEFI_GROUP(reuse =mail,
+                MAILLAGE=mail,
+                CREA_GROUP_NO=(_F(GROUP_MA=('xm','xp','ym','yp','zm','zp',),
+                               CRIT_NOEUD='TOUS',),
+                               ),);
+mail=DEFI_GROUP(reuse =mail,
+                MAILLAGE=mail,
+                CREA_GROUP_NO=(_F(NOM='nd0',
+                               INTERSEC=('xm','ym','zm',),),
+                               ),);
+
+# on s'assure que sur la frontiere du cube la normale soit bien sortante
+mail = MODI_MAILLAGE(reuse =mail,
+                     MAILLAGE=mail,
+                     ORIE_PEAU_3D=_F(GROUP_MA=('xm','xp','ym','yp','zm','zp',),),
+                       );
+
+# modele : thermique 3D (affecte a toutes les mailles)
+modl=AFFE_MODELE(MAILLAGE=mail,
+               AFFE=_F(TOUT='OUI',
+                       PHENOMENE='THERMIQUE',
+                       MODELISATION='3D',),);
+
+# materiau unique (cube homogene)
+mat=DEFI_MATERIAU(THER=_F(LAMBDA=lambd,
+                              RHO_CP=1,),);
+
+# definition materiaux mat[0] (0% incl) a mat[nb_classes-1] (100% incl) 
+mat_t=[0.]*nb_classes
+for i in range(0,nb_classes):
+    mat_t[i]=DEFI_MATERIAU(THER=_F(LAMBDA=lambda_t[i],
+                              RHO_CP=1,),);
+
+# affectation de chaque materiau au groupe de mailles correspondant, si celui ci existe
+affe_mater_list = [ _F(GROUP_MA=GMvol_gmsh_noms[i], MATER=mat_t[i],) for i in range(0,nb_classes) ]
+
+chmat=AFFE_MATERIAU(MAILLAGE=mail,
+                    AFFE=affe_mater_list,);
+
+#chmat=AFFE_MATERIAU(MAILLAGE=mail,
+#                    AFFE=_F(GROUP_MA='vol', MATER=mat,),);
+
+# preparation CL en -gradT homogene au contour (composantes mg1,mg2,mg3)
+# T = - (mg1*x + mg2*y + mg3*z)
+# ne depend que de 2 variables d'espace sur chaque face du cube, et de plus lineairement => utilisation de nappes
+l_temp=[]
+nap=[None]*6
+mg=[mg1,mg2,mg3]
+var = ['X','Y','Z']
+l_gma=[['zm','zp'],['xm','xp'],['ym','yp']] # groupes de mailles identifiant les 6 faces du cube
+for i in range(0,3):
+    par1 = var[(1+i)%3] # 1er parametre nappe
+    par2 = var[(0+i)%3] # 2e  parametre nappe
+    val00 = 0                              # valeur prise lorsque par1=0, par2=0
+    val01 = -(mg[(0+i)%3]*L)               # valeur prise lorsque par1=0, par2=L
+    val10 = -(mg[(1+i)%3]*L)               # valeur prise lorsque par1=L, par2=0
+    val11 = -(mg[(0+i)%3]*L+mg[(1+i)%3]*L) # valeur prise lorsque par1=L, par2=L
+    for j in range(0,2):
+        nap[i*2+j] = DEFI_NAPPE ( NOM_PARA = par1, PROL_DROITE = 'LINEAIRE', PROL_GAUCHE = 'LINEAIRE',
+                  PARA = (0, L),
+                  NOM_PARA_FONC = par2,
+                  DEFI_FONCTION =     (
+                        _F( PROL_DROITE = 'LINEAIRE', PROL_GAUCHE = 'LINEAIRE',
+                            VALE =(0,val00  ,  L,val01),
+                            ),
+                        _F( PROL_DROITE = 'LINEAIRE', PROL_GAUCHE = 'LINEAIRE',
+                            VALE =(0,val10  ,  L,val11),
+                            ),
+                        )
+                  )
+        l_temp.append( _F(GROUP_MA=(l_gma[i][j],), TEMP=nap[i*2+j],) )
+        # passage de la face - a la face + :
+        val00 += -(mg[(2+i)%3]*L)
+        val01 += -(mg[(2+i)%3]*L)
+        val10 += -(mg[(2+i)%3]*L)
+        val11 += -(mg[(2+i)%3]*L)
+
+# affectation CL en -gradT homogene au contour
+climites=AFFE_CHAR_THER_F(MODELE=modl,
+                    TEMP_IMPO= l_temp )
+
+# resolution F=K.u
+resther = THER_LINEAIRE(MODELE=modl,
+                       CHAM_MATER=chmat, # caracteristiques materiau
+                       EXCIT=(_F(CHARGE=climites),), # chargement (ici seulement des cl)
+                       );
+
+# calcul flux chaleur aux points de gauss
+resther=CALC_ELEM(reuse =resther, 
+                    RESULTAT=resther,
+                    OPTION='FLUX_ELGA_TEMP',); 
+
+###############################
+# DEBUT calcul champ (- gradient de temperature) en passant par un materiau homogene fictif de conductivite 1 (suggestion de JM Proix, voir fiche rex aster 13175)
+matfict=DEFI_MATERIAU(THER=_F(LAMBDA=1,
+                              RHO_CP=1,),);
+cmatfict=AFFE_MATERIAU(MAILLAGE=mail,
+                    AFFE=_F(TOUT='OUI', MATER=matfict,),);
+resmgrad=CALC_ELEM(RESULTAT=resther,
+                   OPTION='FLUX_ELGA_TEMP',
+                   CHAM_MATER=cmatfict); 
+# FIN calcul champ (- gradient de temperature) en passant par un materiau homogene fictif de conductivite 1 (suggestion de JM Proix, voir fiche rex aster 13175)
+# dans m_gradm le champ de flux de chaleur est en fait egal au champ de (- grad T)
+###############################
+
+# impression resultats format gmsh : champs de temperature, flux, gradient de temperature
+IMPR_RESU( MODELE=modl,
+          FORMAT='GMSH',
+#         FORMAT='MED',
+          UNITE=37,
+          RESU=(_F(RESULTAT = resther,),
+                _F(RESULTAT = resmgrad,
+                   NOM_CHAM='FLUX_ELGA_TEMP',
+                   NOM_CMP=('FLUX','FLUY','FLUZ',),)
+                ));
+
+IMPR_RESU(
+          FORMAT='MED',
+          UNITE=38,
+          RESU=(_F(RESULTAT = resther,),
+                _F(RESULTAT = resmgrad,
+                   NOM_CHAM='FLUX_ELGA_TEMP',
+                   NOM_CMP=('FLUX','FLUY','FLUZ',),)
+                ));
+
+# calcul integrale et moyenne du flux de chaleur sur l'ensemble du cube
+fluxmtot = POST_ELEM(INTEGRALE=_F(GROUP_MA='vol',
+                            NOM_CHAM='FLUX_ELGA_TEMP',
+                            NOM_CMP=('FLUX','FLUY','FLUZ',),),
+               MODELE=modl,
+               RESULTAT=resther,);
+# idem moyenne du gradient de temperature
+m_gradm = POST_ELEM(INTEGRALE=_F(GROUP_MA='vol',
+                            NOM_CHAM='FLUX_ELGA_TEMP',
+                            NOM_CMP=('FLUX','FLUY','FLUZ',),),
+               MODELE=modl,
+               RESULTAT=resmgrad,);
+
+# impression des flux moy
+IMPR_TABLE(TABLE=fluxmtot,
+           NOM_PARA=('VOL','MOYE_FLUX','MOYE_FLUY','MOYE_FLUZ',),);
+# et moy du grad de temperature
+IMPR_TABLE(TABLE=m_gradm,
+           NOM_PARA=('VOL','MOYE_FLUX','MOYE_FLUY','MOYE_FLUZ',),);
+
+# fin de l'execution
+FIN();
diff --git a/MAP/Templates/s_polymers_st_1/s_polymers_st_1_aster_template.export b/MAP/Templates/s_polymers_st_1/s_polymers_st_1_aster_template.export
new file mode 100644 (file)
index 0000000..4427088
--- /dev/null
@@ -0,0 +1,36 @@
+P serveur localhost
+P version %_ASTER_VERSION%
+P lang fr
+P debug debug
+P mode interactif
+P ncpus 1
+P mpi_nbcpu 1
+P mpi_nbnoeud 1
+P classe 
+P depart 
+P distrib 
+P flashdir 
+P exectool 
+P nomjob %_NAME_STUDY%
+P origine ASTK 1.8.0
+A args 
+A memjeveux 218.75
+P mem_aster 100.0
+A tpmax 3600
+P memjob 1792000
+P tpsjob 60
+P follow_output yes
+P nbmaxnook 5
+P cpresok RESNOOK
+P facmtps 1
+P corefilesize unlimited
+F comm %_PATH_STUDY%/s_polymers_st_1_aster.comm D 1
+F msh %_PATH_STUDY%/s_polymers_st_1_benhur_%_MESH_SIZE%.msh D 19
+F resu %_PATH_STUDY%/s_polymers_st_1_aster.resu R 8
+F mess %_PATH_STUDY%/s_polymers_st_1_aster.mess R 6
+F erre %_PATH_STUDY%/s_polymers_st_1_aster.erre R 9
+F msh %_PATH_STUDY%/s_polymers_st_1_aster.resu.msh R 37
+F med %_PATH_STUDY%/s_polymers_st_1_aster.resu.med R 38
+P consbtc oui
+P soumbtc oui
+P actions make_etude
index f864b1ffdcd550e2a91a94e91a3e54d535252017..6602c33d3bb172704a4a4351b176fe96e91a79f2 100644 (file)
@@ -32,12 +32,13 @@ initialdir=REPINI
 # INSTALLDIR sert à localiser l'installation d'Eficas\r
 INSTALLDIR=os.path.join(REPINI,'..')\r
 PATH_MAP="/local/noyret/MAP/"\r
-PATH_PYGMEE=PATH_MAP+"/components/pygmee_v1"\r
+PATH_PYGMEE=PATH_MAP+"/components/pygmee_v2"\r
 PATH_BENHUR=PATH_MAP+"/components/benhur"\r
 PATH_FDVGRID=PATH_MAP+"components/fdvgrid/ther2d/bin"\r
 PATH_MODULE=PATH_MAP+"/modules/polymers"\r
-PATH_STUDY=PATH_MAP+"/studies/demonstrateur_poly_st1"\r
-PATH_ASTER="/local/noyret/bin/Aster10/bin"\r
+PATH_STUDY=PATH_MAP+"/studies/demonstrateur_s_polymers_st_1"\r
+#PATH_ASTER="/local/noyret/bin/Aster10/bin"\r
+PATH_ASTER="/local00/aster"\r
 PATH_GMSH="/usr/bin"\r
 \r
 \r
index c345db107467cf0c798d0de456716abe0f3d32a4..d3ce44c662f0c0b19c07f0c73116aac660a8f58d 100644 (file)
@@ -5,7 +5,7 @@
 ## --------------------------------------------------
 #
 from Accas import *
-from prefs_Map import PATH_MODULE
+from prefs_MAP import PATH_MODULE
 class Tuple:
   def __init__(self,ntuple):
     self.ntuple=ntuple
index 77a2baaaf06381c6a992971a2135ac1be587f7ec..d860004089d827e3b4d245b915709a83da706f36 100644 (file)
@@ -132,6 +132,8 @@ class s_poly_st_1Generator(MapGenerator):
          return ""
 
    def METHODE(self,execution) :
+      self.config.PATH_STUDY=self.config.PATH_MAP+"/studies/demonstrateur_s_polymers_st_1"
+      print "self.config.PATH_STUDY has been forced to :", self.config.PATH_STUDY
       self.dicoMETHODE=self.dictMCVal["METHODE"]
       print "_____________________"
       print self.dicoMETHODE
@@ -146,6 +148,7 @@ class s_poly_st_1Generator(MapGenerator):
          self.inclusion_name=self.config.PATH_STUDY+"/pygmee_v2_test_1.inclusions"
          self.rve_name=self.config.PATH_STUDY+"/pygmee_v2_test_1.rve"
          pygmee_v2_input=self.config.PATH_STUDY+"/pygmee_v2.input"
+         print "pygmee_v2_input =", pygmee_v2_input
          parameter=MAP_parameters()
          parameter.add_component(composant)
          parameter.add_parameter(composant, 'rve_size', self.size)
@@ -169,10 +172,11 @@ class s_poly_st_1Generator(MapGenerator):
          self.contrast=float(self.dicoMATERIAUX['_MATERIAUX_CONDUCTIVITE_I']/self.dicoMATERIAUX['_MATERIAUX_CONDUCTIVITE_M'])
          choix=self.dicoMETHODE['_METHODE_CHOIX']
 
+         finesse=int(self.dicoDISCRETISATION['_DISCRETISATION_FINESSE'])
+
          if (choix=="FD+grid") :
             commande+= "echo 'execution de FDVGRID';\n"
             commande+= "cd "+self.config.PATH_FDVGRID+";\n"
-            finesse=int(self.dicoDISCRETISATION['_DISCRETISATION_FINESSE'])
             if (finesse<32):
                finesse=32
             commande+= "echo "+str(self.size)+" > "+"rve.input"+";\n"
@@ -183,6 +187,83 @@ class s_poly_st_1Generator(MapGenerator):
             
          if (choix=="FEM+mesh") :
             print "option Code_Aster"
+            commande+= "echo 'execution de BENHUR';\n"
+
+            #Lecture du fichier a trous
+            print "name_SCHEME =", self.config.NAME_SCHEME
+            monFichierInput=self.config.INSTALLDIR+"/MAP/Templates/"+self.config.NAME_SCHEME+"/benhur_template.txt"
+            monFichierOutput=self.config.PATH_STUDY+"/"+self.config.NAME_SCHEME+"_benhur_"+str(finesse)+".bhr"
+
+            f = file(monFichierInput)
+            string_0 = f.read()  
+            f.close()
+            # find and replace with CONFIG idctionnary
+            string_1=self.remplaceCONFIG(string_0,CONFIGliste)
+            dicoBenhur=dict()
+            dicoBenhur["_RVE_SIZE"]=self.size
+            dicoBenhur["_MESH_SIZE"]=finesse
+            dicoBenhur["_INCLUSION_FILE"]=self.inclusion_name
+            # find and replace with BENHUR idctionnary
+            string_2=self.remplaceDICO(string_1,dicoBenhur)
+            # write into ouput file
+            f=open(monFichierOutput,'wb')
+            f.write(string_2)
+            f.close()
+            # launch of BENHUR on the previous file
+            commande=commande + "cd "+self.config.PATH_BENHUR+"/bin;\n"
+            #commande=commande + "./benhur -i "+monFichierOutput+";\n"
+            commande=commande + "echo 'fin execution de BENHUR';\n"
+       
+            commande+= "echo 'execution de CODE_ASTER';\n"
+            monFichierCommInput=self.config.INSTALLDIR+"/MAP/Templates/"+self.config.NAME_SCHEME+"/s_polymers_st_1_aster_template.comm"
+            monFichierExportInput=self.config.INSTALLDIR+"/MAP/Templates/"+self.config.NAME_SCHEME+"/s_polymers_st_1_aster_template.export"
+
+            monFichierCommOutput=self.config.PATH_STUDY+"/s_polymers_st_1_aster.comm"
+            monFichierExportOutput=self.config.PATH_STUDY+"/s_polymers_st_1_aster.export"
+            # Lecture du fichier a trous a pour le fichier export
+            f = file(monFichierExportInput)
+            string_0 = f.read()  
+            f.close()
+            # find and replace with CONFIG dictionnary
+            string_1=self.remplaceCONFIG(string_0,CONFIGliste)            
+            # find and replace with CODE_ASTER dictionnary
+            dicoAster=dict()
+            dicoAster["_MESH_SIZE"]=finesse
+            dicoAster["_ASTER_VERSION"]="STA10"
+            dicoAster["_NAME_STUDY"]="s_polymers_st_1"
+            string_2=self.remplaceDICO(string_1,dicoAster)
+            # write into output file
+            f=open(monFichierExportOutput,'wb')
+            f.write(string_2)
+            f.close()
+
+            # Lecture du fichier a trous a pour le fichier comm
+            f = file(monFichierCommInput)
+            string_0 = f.read()  
+            f.close()
+            # find and replace with CONFIG dictionnary
+            string_1=self.remplaceCONFIG(string_0,CONFIGliste)       
+            # find and replace with CODE_ASTER dictionnary
+            dicoAster=dict()
+            dicoAster["_RVE_SIZE"]=self.size
+            dicoAster["_CONDUCTIVITE_I"]=self.dicoMATERIAUX["_MATERIAUX_CONDUCTIVITE_I"]
+            dicoAster["_CONDUCTIVITE_M"]=self.dicoMATERIAUX["_MATERIAUX_CONDUCTIVITE_M"]
+            string_2=self.remplaceDICO(string_1,dicoAster)
+            # write into output file
+            f=open(monFichierCommOutput,'wb')
+            f.write(string_2)
+            f.close()
+
+            # launch of CODE_ASTER on the study
+            commande="cd "+self.config.PATH_STUDY+";"
+            commande=commande + self.config.PATH_ASTER + "/as_run "+monFichierExportOutput +";\n"
+            commande=commande + "echo 'fin execution de CODE_ASTER';\n"
+            
+            print commande
+            
+            return commande
+
+            
       print "METHODE Ok"
       print "_____________________\n"
       return commande