ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/aster/src/mgaster.cpp
Revision: 757
Committed: Fri Nov 6 13:42:55 2015 UTC (9 years, 6 months ago) by francois
File size: 3902 byte(s)
Log Message:
Possibilite de calculer les comtraintes et les deformations aux points de gauss
Tester en elasticite volumique

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 748 MG_GEOMETRIE* geo=fem->get_mg_maillage()->get_mg_geometrie();
52     char message[500];
53     if ((typeetude == MAGIC::CALCUL_ASTER::ELASTIQUE)) sprintf(message," Calcul elastique sur la geometrie %lu",geo->get_id());
54     if ((typeetude == MAGIC::CALCUL_ASTER::THERMIQUE)) sprintf(message," Calcul thermique sur la geometrie %lu",geo->get_id());
55     if ((typeetude == MAGIC::CALCUL_ASTER::ELASTIQUE_GROT_GDEF)) sprintf(message," Calcul elastique grand deplacement sur la geometrie %lu",geo->get_id());
56     if ((typeetude == MAGIC::CALCUL_ASTER::PLASTIQUE)) sprintf(message," Calcul plastique sur la geometrie %lu",geo->get_id());
57     if ((typeetude == MAGIC::CALCUL_ASTER::CONTRAINTE_PLANE)) sprintf(message," Calcul de contrainte plane sur la geometrie %lu",geo->get_id());
58     if ((typeetude == MAGIC::CALCUL_ASTER::DEFORMATION_PLANE)) sprintf(message," Calcul de deformation plane sur la geometrie %lu",geo->get_id());
59     if (affichageactif==1) affiche(message);
60     char resultat[10];
61     strcpy(resultat,"00011111");
62     if ((typeetude == MAGIC::CALCUL_ASTER::THERMIQUE)) strcpy(resultat,"");
63     if (code!=NULL) strcpy(resultat,code);
64     version=exp.aster(geo,fem,nometude,typeetude,resultat);
65 francois 757 int base=exp.get_base_aster();
66 francois 748
67 francois 581 if (affichageactif==1)
68     {
69     char messagever[255];
70 francois 691 sprintf(messagever," Calcul aster \033[1;32m%.1lf\033[1;33m ",version);
71 francois 581 affiche(messagever);
72     }
73 francois 326 char nomfichiertmp[255];
74 francois 725 int choix=(int)param.get_valeur("Affiche_Code_Aster");
75 francois 726 #ifdef CHOIXTERMASTER
76 francois 725 if (choix!=0) sprintf(nomfichiertmp,"xterm -e \"%s/as_run %s.export \"",getenv("PATHASTER"),nometude);
77     else sprintf(nomfichiertmp,"%s/as_run %s.export 1>aster.log 2>&1",getenv("PATHASTER"),nometude);
78 francois 726 #else
79     sprintf(nomfichiertmp,"%s/as_run %s.export 1>aster.log 2>&1",getenv("PATHASTER"),nometude);
80     #endif
81 francois 326 int codesortie=system(nomfichiertmp);
82     if (codesortie!=0)
83     {
84     sprintf(nomfichiertmp," Code de sortie aster : %d",codesortie);
85 gervaislavoie 382 if (affichageactif==1) affiche(nomfichiertmp);
86     return codesortie;
87 francois 326 }
88 gervaislavoie 382 if (affichageactif==1) affiche((char*)" Recuperation des resultats");
89 francois 326 MG_IMPORT imp;
90     sprintf(nomfichiertmp,"%s.resu",nometude);
91 francois 757 std::string res=imp.aster(base,fem,nomfichiertmp,nometude);
92 francois 691 if (affichageactif==1) printf("%s",(char*)("\033[1;31m"+res+"\033[1;33m").c_str());
93 gervaislavoie 382 if (avecenreg==true)
94     {
95     if (affichageactif==1) affiche((char*)" Enregistrement MAGIC");
96     sprintf(nomfichiertmp,"%s.magic",nometude);
97     fem->get_mg_maillage()->get_gestionnaire()->enregistrer(nomfichiertmp);
98     if (affichageactif==1) affiche((char*)" Enregistrement GMSH");
99     exp.gmsh(fem,nometude);
100     }
101 mejrim 597 }
102    
103    
104 francois 725 void MGASTER::ini_param(void)
105     {
106     param.ajouter("Affiche_Code_Aster",0,OT_PARAMETRES::DOUBLE,"0. Affichage redirigé vers le fichier aster.log 1 affichage dans un terminal");
107     char fichier[500];
108     sprintf(fichier,"%s/.magic",getenv("HOME"));
109     param.lire(fichier);
110     param.enregistrer(fichier);
111    
112     }
113 mejrim 597