ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/optimisation/src/mgaster.cpp
Revision: 470
Committed: Fri Dec 6 22:32:32 2013 UTC (11 years, 8 months ago) by francois
File size: 2625 byte(s)
Log Message:
MAGIC V4 pour l'optimisation de mouvement normal

File Contents

# Content
1 #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 MGASTER::MGASTER():affichageactif(0)
18 {
19
20 }
21
22 MGASTER::MGASTER(MGASTER &mdd):affichageactif(mdd.affichageactif)
23 {
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 int MGASTER::calcule(FEM_MAILLAGE* fem,char *nometude,char *code,bool avecenreg)
38 {
39 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 MG_EXPORT exp;
47 int nb3=fem->get_nb_fem_element3();
48 if (nb3!=0)
49 {
50 FEM_ELEMENT3 *ele=fem->get_fem_element3(0);
51 MG_VOLUME* vol=(MG_VOLUME*)ele->get_mg_element_maillage()->get_lien_topologie();
52 char message[500];
53 sprintf(message," Calcul sur le volume %lu",vol->get_id());
54 if (affichageactif==1) affiche(message);
55 if (code!=NULL) exp.aster(vol,fem,nometude,0,code);
56 else exp.aster(vol,fem,nometude,0,(char*)"00011111");
57 }
58 else
59 {
60 FEM_ELEMENT2 *ele=fem->get_fem_element2(0);
61 MG_FACE* face=(MG_FACE*)ele->get_mg_element_maillage()->get_lien_topologie();
62 MG_COQUE* coq=face->get_mg_coface(0)->get_coquille()->get_mg_coque();
63 char message[500];
64 sprintf(message," Calcul sur la coque %lu",coq->get_id());
65 if (affichageactif==1) affiche(message);
66 if (code!=NULL) exp.aster(coq,fem,nometude,0,code);
67 else exp.aster(coq,fem,nometude,0,(char*)"11111111");
68 }
69 if (affichageactif==1) affiche((char*)" Calcul aster");
70 char nomfichiertmp[255];
71 sprintf(nomfichiertmp,"%s/as_run %s.export 1>aster.log 2>&1",getenv("PATHASTER"),nometude);
72 int codesortie=system(nomfichiertmp);
73 if (codesortie!=0)
74 {
75 sprintf(nomfichiertmp," Code de sortie aster : %d",codesortie);
76 if (affichageactif==1) affiche(nomfichiertmp);
77 return codesortie;
78 }
79 if (affichageactif==1) affiche((char*)" Recuperation des resultats");
80 MG_IMPORT imp;
81 sprintf(nomfichiertmp,"%s.resu",nometude);
82 imp.aster(fem,nomfichiertmp,nometude);
83 if (avecenreg==true)
84 {
85 if (affichageactif==1) affiche((char*)" Enregistrement MAGIC");
86 sprintf(nomfichiertmp,"%s.magic",nometude);
87 fem->get_mg_maillage()->get_gestionnaire()->enregistrer(nomfichiertmp);
88 if (affichageactif==1) affiche((char*)" Enregistrement GMSH");
89 exp.gmsh(fem,nometude);
90 }
91 }