ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/aster/src/mgaster.cpp
Revision: 726
Committed: Fri Sep 11 14:19:44 2015 UTC (9 years, 8 months ago) by francois
File size: 5447 byte(s)
Log Message:
possibilite de ne pas donner le choix d'un terminal pour executer code aster pour les tests de fin de soiree en batch

File Contents

# User Rev Content
1 francois 326 #include "gestionversion.h"
2     #include "mgaster.h"
3     #include "fem_maillage.h"
4     #include "mg_gestionnaire.h"
5     #include "mg_export.h"
6     #include "mg_import.h"
7    
8    
9    
10    
11    
12    
13    
14    
15    
16    
17 francois 470 MGASTER::MGASTER():affichageactif(0)
18 francois 326 {
19 francois 725 ini_param();
20 francois 326
21     }
22    
23 francois 470 MGASTER::MGASTER(MGASTER &mdd):affichageactif(mdd.affichageactif)
24 francois 326 {
25 francois 725 ini_param();
26 francois 326 }
27    
28    
29     MGASTER::~MGASTER()
30     {
31     }
32    
33     void MGASTER::active_affichage(void (*fonc)(char*))
34     {
35     affiche=fonc;
36     affichageactif=1;
37     }
38    
39 francois 706 int MGASTER::calcule(char* nomfichierparam,FEM_MAILLAGE* fem,char *nometude,int typeetude,char *code,bool avecenreg)
40 francois 326 {
41 gervaislavoie 382 if (affichageactif==1) affiche((char*)"");
42     if (affichageactif==1) affiche((char*)"*************************");
43     if (affichageactif==1) affiche((char*)" Calcul par code aster");
44     if (affichageactif==1) affiche((char*)"*************************");
45     if (affichageactif==1) affiche((char*)"");
46     if (affichageactif==1) affiche((char*)"");
47     if (affichageactif==1) affiche((char*)"");
48 francois 326 MG_EXPORT exp;
49 francois 706 if (nomfichierparam!=NULL) exp.lire_params_aster(nomfichierparam);
50 francois 581 double version;
51 francois 327 int nb3=fem->get_nb_fem_element3();
52     if (nb3!=0)
53     {
54 francois 706 if ((typeetude == MAGIC::CALCUL_ASTER::ELASTIQUE))
55 mejrim 597 {
56     FEM_ELEMENT3 *ele=fem->get_fem_element3(0);
57     MG_VOLUME* vol=(MG_VOLUME*)ele->get_mg_element_maillage()->get_lien_topologie();
58     char message[500];
59     sprintf(message," Calcul sur le volume %lu",vol->get_id());
60     if (affichageactif==1) affiche(message);
61 francois 706 if (code!=NULL) version=exp.aster(vol,fem,nometude,MAGIC::CALCUL_ASTER::ELASTIQUE,code);
62     else version=exp.aster(vol,fem,nometude,MAGIC::CALCUL_ASTER::ELASTIQUE,(char*)"00011111");
63 mejrim 597 }
64     if ((typeetude == MAGIC::CALCUL_ASTER::THERMIQUE))
65     {
66     FEM_ELEMENT3 *ele=fem->get_fem_element3(0);
67     MG_VOLUME* vol=(MG_VOLUME*)ele->get_mg_element_maillage()->get_lien_topologie();
68     char message[500];
69     sprintf(message," Calcul sur le volume %lu",vol->get_id());
70     if (affichageactif==1) affiche(message);
71     version=exp.aster(vol,fem,nometude,MAGIC::CALCUL_ASTER::THERMIQUE,(char*)"");
72     }
73 couturad 719 if ((typeetude == MAGIC::CALCUL_ASTER::ELASTIQUE_GROT_GDEF))
74     {
75     FEM_ELEMENT3 *ele=fem->get_fem_element3(0);
76     MG_VOLUME* vol=(MG_VOLUME*)ele->get_mg_element_maillage()->get_lien_topologie();
77     char message[500];
78     sprintf(message," Calcul sur le volume %lu",vol->get_id());
79     if (affichageactif==1) affiche(message);
80     if (code!=NULL) version=exp.aster(vol,fem,nometude,MAGIC::CALCUL_ASTER::ELASTIQUE_GROT_GDEF,code);
81     else version=exp.aster(vol,fem,nometude,MAGIC::CALCUL_ASTER::ELASTIQUE_GROT_GDEF,(char*)"00011111");
82     }
83     if ((typeetude == MAGIC::CALCUL_ASTER::PLASTIQUE))
84     {
85     FEM_ELEMENT3 *ele=fem->get_fem_element3(0);
86     MG_VOLUME* vol=(MG_VOLUME*)ele->get_mg_element_maillage()->get_lien_topologie();
87     char message[500];
88     sprintf(message," Calcul sur le volume %lu",vol->get_id());
89     if (affichageactif==1) affiche(message);
90     if (code!=NULL) version=exp.aster(vol,fem,nometude,MAGIC::CALCUL_ASTER::PLASTIQUE,code);
91     else version=exp.aster(vol,fem,nometude,MAGIC::CALCUL_ASTER::PLASTIQUE,(char*)"00011111");
92     }
93 francois 327 }
94     else
95     {
96 francois 706 if ((typeetude == MAGIC::CALCUL_ASTER::ELASTIQUE) || (typeetude == MAGIC::CALCUL_ASTER::CONTRAINTE_PLANE) || (typeetude == MAGIC::CALCUL_ASTER::DEFORMATION_PLANE) )
97 mejrim 597 {
98     FEM_ELEMENT2 *ele=fem->get_fem_element2(0);
99     MG_FACE* face=(MG_FACE*)ele->get_mg_element_maillage()->get_lien_topologie();
100     MG_COQUE* coq=face->get_mg_coface(0)->get_coquille()->get_mg_coque();
101     char message[500];
102     sprintf(message," Calcul sur la coque %lu",coq->get_id());
103     if (affichageactif==1) affiche(message);
104 francois 603 if (code!=NULL) version=exp.aster(coq,fem,nometude,typeetude,code);
105     else version=exp.aster(coq,fem,nometude,typeetude,(char*)"11111111");
106 mejrim 597 }
107 francois 327 }
108 francois 581 if (affichageactif==1)
109     {
110     char messagever[255];
111 francois 691 sprintf(messagever," Calcul aster \033[1;32m%.1lf\033[1;33m ",version);
112 francois 581 affiche(messagever);
113     }
114 francois 326 char nomfichiertmp[255];
115 francois 725 int choix=(int)param.get_valeur("Affiche_Code_Aster");
116 francois 726 #ifdef CHOIXTERMASTER
117 francois 725 if (choix!=0) sprintf(nomfichiertmp,"xterm -e \"%s/as_run %s.export \"",getenv("PATHASTER"),nometude);
118     else sprintf(nomfichiertmp,"%s/as_run %s.export 1>aster.log 2>&1",getenv("PATHASTER"),nometude);
119 francois 726 #else
120     sprintf(nomfichiertmp,"%s/as_run %s.export 1>aster.log 2>&1",getenv("PATHASTER"),nometude);
121     #endif
122 francois 326 int codesortie=system(nomfichiertmp);
123     if (codesortie!=0)
124     {
125     sprintf(nomfichiertmp," Code de sortie aster : %d",codesortie);
126 gervaislavoie 382 if (affichageactif==1) affiche(nomfichiertmp);
127     return codesortie;
128 francois 326 }
129 gervaislavoie 382 if (affichageactif==1) affiche((char*)" Recuperation des resultats");
130 francois 326 MG_IMPORT imp;
131     sprintf(nomfichiertmp,"%s.resu",nometude);
132 francois 581 std::string res=imp.aster(fem,nomfichiertmp,nometude);
133 francois 691 if (affichageactif==1) printf("%s",(char*)("\033[1;31m"+res+"\033[1;33m").c_str());
134 gervaislavoie 382 if (avecenreg==true)
135     {
136     if (affichageactif==1) affiche((char*)" Enregistrement MAGIC");
137     sprintf(nomfichiertmp,"%s.magic",nometude);
138     fem->get_mg_maillage()->get_gestionnaire()->enregistrer(nomfichiertmp);
139     if (affichageactif==1) affiche((char*)" Enregistrement GMSH");
140     exp.gmsh(fem,nometude);
141     }
142 mejrim 597 }
143    
144    
145 francois 725 void MGASTER::ini_param(void)
146     {
147     param.ajouter("Affiche_Code_Aster",0,OT_PARAMETRES::DOUBLE,"0. Affichage redirigé vers le fichier aster.log 1 affichage dans un terminal");
148     char fichier[500];
149     sprintf(fichier,"%s/.magic",getenv("HOME"));
150     param.lire(fichier);
151     param.enregistrer(fichier);
152    
153     }
154 mejrim 597