ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/aster/src/mgaster.cpp
Revision: 719
Committed: Tue Sep 8 15:34:38 2015 UTC (9 years, 8 months ago) by couturad
File size: 4837 byte(s)
Log Message:
ajout des études non lineaires dans MAGiC via code ASTER

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    
20     }
21    
22 francois 470 MGASTER::MGASTER(MGASTER &mdd):affichageactif(mdd.affichageactif)
23 francois 326 {
24     }
25    
26    
27     MGASTER::~MGASTER()
28     {
29     }
30    
31     void MGASTER::active_affichage(void (*fonc)(char*))
32     {
33     affiche=fonc;
34     affichageactif=1;
35     }
36    
37 francois 706 int MGASTER::calcule(char* nomfichierparam,FEM_MAILLAGE* fem,char *nometude,int typeetude,char *code,bool avecenreg)
38 francois 326 {
39 gervaislavoie 382 if (affichageactif==1) affiche((char*)"");
40     if (affichageactif==1) affiche((char*)"*************************");
41     if (affichageactif==1) affiche((char*)" Calcul par code aster");
42     if (affichageactif==1) affiche((char*)"*************************");
43     if (affichageactif==1) affiche((char*)"");
44     if (affichageactif==1) affiche((char*)"");
45     if (affichageactif==1) affiche((char*)"");
46 francois 326 MG_EXPORT exp;
47 francois 706 if (nomfichierparam!=NULL) exp.lire_params_aster(nomfichierparam);
48 francois 581 double version;
49 francois 327 int nb3=fem->get_nb_fem_element3();
50     if (nb3!=0)
51     {
52 francois 706 if ((typeetude == MAGIC::CALCUL_ASTER::ELASTIQUE))
53 mejrim 597 {
54     FEM_ELEMENT3 *ele=fem->get_fem_element3(0);
55     MG_VOLUME* vol=(MG_VOLUME*)ele->get_mg_element_maillage()->get_lien_topologie();
56     char message[500];
57     sprintf(message," Calcul sur le volume %lu",vol->get_id());
58     if (affichageactif==1) affiche(message);
59 francois 706 if (code!=NULL) version=exp.aster(vol,fem,nometude,MAGIC::CALCUL_ASTER::ELASTIQUE,code);
60     else version=exp.aster(vol,fem,nometude,MAGIC::CALCUL_ASTER::ELASTIQUE,(char*)"00011111");
61 mejrim 597 }
62     if ((typeetude == MAGIC::CALCUL_ASTER::THERMIQUE))
63     {
64     FEM_ELEMENT3 *ele=fem->get_fem_element3(0);
65     MG_VOLUME* vol=(MG_VOLUME*)ele->get_mg_element_maillage()->get_lien_topologie();
66     char message[500];
67     sprintf(message," Calcul sur le volume %lu",vol->get_id());
68     if (affichageactif==1) affiche(message);
69     version=exp.aster(vol,fem,nometude,MAGIC::CALCUL_ASTER::THERMIQUE,(char*)"");
70     }
71 couturad 719 if ((typeetude == MAGIC::CALCUL_ASTER::ELASTIQUE_GROT_GDEF))
72     {
73     FEM_ELEMENT3 *ele=fem->get_fem_element3(0);
74     MG_VOLUME* vol=(MG_VOLUME*)ele->get_mg_element_maillage()->get_lien_topologie();
75     char message[500];
76     sprintf(message," Calcul sur le volume %lu",vol->get_id());
77     if (affichageactif==1) affiche(message);
78     if (code!=NULL) version=exp.aster(vol,fem,nometude,MAGIC::CALCUL_ASTER::ELASTIQUE_GROT_GDEF,code);
79     else version=exp.aster(vol,fem,nometude,MAGIC::CALCUL_ASTER::ELASTIQUE_GROT_GDEF,(char*)"00011111");
80     }
81     if ((typeetude == MAGIC::CALCUL_ASTER::PLASTIQUE))
82     {
83     FEM_ELEMENT3 *ele=fem->get_fem_element3(0);
84     MG_VOLUME* vol=(MG_VOLUME*)ele->get_mg_element_maillage()->get_lien_topologie();
85     char message[500];
86     sprintf(message," Calcul sur le volume %lu",vol->get_id());
87     if (affichageactif==1) affiche(message);
88     if (code!=NULL) version=exp.aster(vol,fem,nometude,MAGIC::CALCUL_ASTER::PLASTIQUE,code);
89     else version=exp.aster(vol,fem,nometude,MAGIC::CALCUL_ASTER::PLASTIQUE,(char*)"00011111");
90     }
91 francois 327 }
92     else
93     {
94 francois 706 if ((typeetude == MAGIC::CALCUL_ASTER::ELASTIQUE) || (typeetude == MAGIC::CALCUL_ASTER::CONTRAINTE_PLANE) || (typeetude == MAGIC::CALCUL_ASTER::DEFORMATION_PLANE) )
95 mejrim 597 {
96     FEM_ELEMENT2 *ele=fem->get_fem_element2(0);
97     MG_FACE* face=(MG_FACE*)ele->get_mg_element_maillage()->get_lien_topologie();
98     MG_COQUE* coq=face->get_mg_coface(0)->get_coquille()->get_mg_coque();
99     char message[500];
100     sprintf(message," Calcul sur la coque %lu",coq->get_id());
101     if (affichageactif==1) affiche(message);
102 francois 603 if (code!=NULL) version=exp.aster(coq,fem,nometude,typeetude,code);
103     else version=exp.aster(coq,fem,nometude,typeetude,(char*)"11111111");
104 mejrim 597 }
105 francois 327 }
106 francois 581 if (affichageactif==1)
107     {
108     char messagever[255];
109 francois 691 sprintf(messagever," Calcul aster \033[1;32m%.1lf\033[1;33m ",version);
110 francois 581 affiche(messagever);
111     }
112 francois 326 char nomfichiertmp[255];
113     sprintf(nomfichiertmp,"%s/as_run %s.export 1>aster.log 2>&1",getenv("PATHASTER"),nometude);
114     int codesortie=system(nomfichiertmp);
115     if (codesortie!=0)
116     {
117     sprintf(nomfichiertmp," Code de sortie aster : %d",codesortie);
118 gervaislavoie 382 if (affichageactif==1) affiche(nomfichiertmp);
119     return codesortie;
120 francois 326 }
121 gervaislavoie 382 if (affichageactif==1) affiche((char*)" Recuperation des resultats");
122 francois 326 MG_IMPORT imp;
123     sprintf(nomfichiertmp,"%s.resu",nometude);
124 francois 581 std::string res=imp.aster(fem,nomfichiertmp,nometude);
125 francois 691 if (affichageactif==1) printf("%s",(char*)("\033[1;31m"+res+"\033[1;33m").c_str());
126 gervaislavoie 382 if (avecenreg==true)
127     {
128     if (affichageactif==1) affiche((char*)" Enregistrement MAGIC");
129     sprintf(nomfichiertmp,"%s.magic",nometude);
130     fem->get_mg_maillage()->get_gestionnaire()->enregistrer(nomfichiertmp);
131     if (affichageactif==1) affiche((char*)" Enregistrement GMSH");
132     exp.gmsh(fem,nometude);
133     }
134 mejrim 597 }
135    
136    
137    
138