1 |
francois |
249 |
//------------------------------------------------------------
|
2 |
|
|
//------------------------------------------------------------
|
3 |
|
|
// MAGiC
|
4 |
|
|
// Jean Christophe Cuilli�e et Vincent FRANCOIS
|
5 |
|
|
// D�artement de G�ie M�anique - UQTR
|
6 |
|
|
//------------------------------------------------------------
|
7 |
|
|
// Le projet MAGIC est un projet de recherche du d�artement
|
8 |
|
|
// de g�ie m�anique de l'Universit�du Qu�ec �
|
9 |
|
|
// Trois Rivi�es
|
10 |
|
|
// Les librairies ne peuvent �re utilis�s sans l'accord
|
11 |
|
|
// des auteurs (contact : francois@uqtr.ca)
|
12 |
|
|
//------------------------------------------------------------
|
13 |
|
|
//------------------------------------------------------------
|
14 |
|
|
//
|
15 |
|
|
// main.cpp
|
16 |
|
|
//
|
17 |
|
|
//------------------------------------------------------------
|
18 |
|
|
//------------------------------------------------------------
|
19 |
|
|
// COPYRIGHT 2000
|
20 |
|
|
// Version du 02/03/2006 �11H25
|
21 |
|
|
//------------------------------------------------------------
|
22 |
|
|
//------------------------------------------------------------
|
23 |
|
|
#include "gestionversion.h"
|
24 |
|
|
#ifdef WINDOWS_VERSION
|
25 |
|
|
#include "fenetre.h"
|
26 |
|
|
#endif
|
27 |
|
|
|
28 |
|
|
#pragma hdrstop
|
29 |
|
|
|
30 |
|
|
#include "mg_file.h"
|
31 |
|
|
#include "vct_multi_modele.h"
|
32 |
|
|
#include "vct_comparaison.h"
|
33 |
|
|
#include "tpl_octree.h"
|
34 |
|
|
#include "tpl_grille.h"
|
35 |
|
|
#include "ot_decalage_parametre.h"
|
36 |
francois |
259 |
#include "toibrep.h"
|
37 |
francois |
276 |
#include "ot_cpu.h"
|
38 |
francois |
481 |
#include "fct_generateur_3d.h"
|
39 |
francois |
276 |
#include "mailleur3d.h"
|
40 |
francois |
432 |
#include "mg_export.h"
|
41 |
francois |
249 |
#include <fstream>
|
42 |
|
|
#include <string.h>
|
43 |
|
|
//---------------------------------------------------------------------------
|
44 |
|
|
|
45 |
|
|
void affiche(char* message)
|
46 |
|
|
{
|
47 |
|
|
#ifdef WINDOWS_VERSION
|
48 |
|
|
Form1->Memo1->Lines->Add(message);
|
49 |
|
|
#else
|
50 |
|
|
std::cout << message << std::endl;
|
51 |
|
|
#endif
|
52 |
|
|
}
|
53 |
|
|
|
54 |
|
|
|
55 |
|
|
#ifdef WINDOWS_VERSION
|
56 |
|
|
int amain(int argc,char **argv)
|
57 |
|
|
#else
|
58 |
|
|
int main(int argc,char **argv)
|
59 |
|
|
#endif
|
60 |
|
|
{
|
61 |
|
|
char nomfichier[500];
|
62 |
francois |
276 |
char fichiercarte[500];
|
63 |
francois |
249 |
char nomfichiersortie[500];
|
64 |
francois |
258 |
char nomfichieribrep[500];
|
65 |
francois |
276 |
int nummai=0;
|
66 |
|
|
int numgeo=0;
|
67 |
|
|
int numgroupe=0;
|
68 |
|
|
int pas=50;
|
69 |
|
|
int degre=1;
|
70 |
|
|
double coef=2.;
|
71 |
francois |
375 |
nomfichiersortie[0]='0';
|
72 |
|
|
bool versioncompilee=false;
|
73 |
francois |
249 |
for (int i=0;i<argc;i++)
|
74 |
|
|
{
|
75 |
|
|
if (strcmp(argv[i],"-fichier")==0) strcpy(nomfichier,argv[i+1]);
|
76 |
|
|
if (strcmp(argv[i],"-out")==0) strcpy(nomfichiersortie,argv[i+1]);
|
77 |
francois |
258 |
if (strcmp(argv[i],"-ibrep")==0) strcpy(nomfichieribrep,argv[i+1]);
|
78 |
francois |
249 |
if (strcmp(argv[i],"-nummaillage")==0) nummai=atoi(argv[i+1]);
|
79 |
|
|
if (strcmp(argv[i],"-numgeometrie")==0) numgeo=atoi(argv[i+1]);
|
80 |
|
|
if (strcmp(argv[i],"-groupe")==0) numgroupe=atoi(argv[i+1]);
|
81 |
francois |
276 |
if (strcmp(argv[i],"-pas")==0) pas=atoi(argv[i+1]);
|
82 |
|
|
if (strcmp(argv[i],"-carte")==0) strcpy(fichiercarte,argv[i+1]);
|
83 |
|
|
if (strcmp(argv[i],"-degre")==0) degre=atoi(argv[i+1]);
|
84 |
|
|
if (strcmp(argv[i],"-coef")==0) coef=atof(argv[i+1]);
|
85 |
francois |
375 |
if (strcmp(argv[i],"-version")==0) versioncompilee=true;
|
86 |
francois |
249 |
}
|
87 |
francois |
276 |
if (nomfichiersortie[0]=='0') strcpy(nomfichiersortie,nomfichier);
|
88 |
|
|
affiche((char*)"***************************************");
|
89 |
|
|
affiche((char*)" MODELE XFEM ");
|
90 |
|
|
affiche((char*)" UQTR - ERICCA ");
|
91 |
|
|
affiche((char*)"***************************************");
|
92 |
francois |
375 |
if (versioncompilee)
|
93 |
|
|
{
|
94 |
|
|
GESTIONVERSION v;
|
95 |
|
|
char version[500];
|
96 |
|
|
v.print(version);
|
97 |
|
|
affiche(version);
|
98 |
|
|
}
|
99 |
francois |
276 |
affiche((char*)"");
|
100 |
|
|
affiche((char*)"");
|
101 |
|
|
OT_CPU compteur;
|
102 |
francois |
272 |
affiche((char*)"Debut");
|
103 |
|
|
affiche((char*)"Lecture fichier magic");
|
104 |
francois |
249 |
MG_FILE gest(nomfichier);
|
105 |
|
|
MG_GEOMETRIE* geo=gest.get_mg_geometrieid(numgeo);
|
106 |
|
|
MG_GROUPE_TOPOLOGIQUE* mggt=geo->get_mg_groupe_topologiqueid(numgroupe);
|
107 |
francois |
276 |
compteur.ajouter_etape("Lecture fichier");
|
108 |
|
|
FEM_MAILLAGE* mai;
|
109 |
|
|
if (nummai!=0) mai=gest.get_fem_maillageid(nummai);
|
110 |
|
|
else
|
111 |
|
|
{
|
112 |
|
|
affiche((char*)"Lecture carte de taille");
|
113 |
|
|
FCT_GENERATEUR_3D<4> carte;
|
114 |
|
|
carte.lire(fichiercarte);
|
115 |
|
|
compteur.ajouter_etape("Lecture carte de taille");
|
116 |
|
|
affiche((char*)"Mailleur octal");
|
117 |
|
|
MG_MAILLAGE* mgmai=new MG_MAILLAGE(NULL);
|
118 |
|
|
gest.ajouter_mg_maillage(mgmai);
|
119 |
|
|
MAILLEUR3D mailleur(&carte,mgmai);
|
120 |
|
|
mailleur.change_coef(coef);
|
121 |
|
|
mailleur.maille();
|
122 |
|
|
compteur.ajouter_etape("Mailleur octal");
|
123 |
|
|
affiche((char*)"Maillage FEM");
|
124 |
|
|
mai=new FEM_MAILLAGE(mgmai->get_mg_geometrie(),mgmai,degre);
|
125 |
|
|
gest.ajouter_fem_maillage(mai);
|
126 |
|
|
mai->construire(0);
|
127 |
|
|
compteur.ajouter_etape("Mailleur FEM");
|
128 |
|
|
}
|
129 |
|
|
TOIBREP t(&gest,geo,mai,pas,&compteur);
|
130 |
francois |
258 |
//t.exporter_IBrep(nomfichieribrep,mggt);
|
131 |
francois |
276 |
t.active_affichage(affiche);
|
132 |
|
|
|
133 |
|
|
|
134 |
francois |
432 |
//IBrep brep=t.importer(nomfichiersortie,nomfichieribrep,mggt);
|
135 |
|
|
t.importer_et_decouper(NULL);
|
136 |
francois |
276 |
|
137 |
|
|
|
138 |
|
|
|
139 |
|
|
affiche((char*)"enregistrement magic");
|
140 |
francois |
249 |
gest.enregistrer(nomfichiersortie);
|
141 |
francois |
432 |
MG_EXPORT exp;
|
142 |
|
|
exp.gmsh_avec_correspondance(gest.get_fem_maillage(0),nomfichiersortie);
|
143 |
|
|
/*affiche((char*)"enregistrement gmsh");
|
144 |
francois |
276 |
int nlong=strlen(nomfichieribrep);
|
145 |
|
|
for (int i=0;i<nlong;i++)
|
146 |
|
|
if (nomfichieribrep[i]=='.') nomfichieribrep[i]='_';
|
147 |
|
|
strcat(nomfichieribrep,".pos");
|
148 |
|
|
std::ofstream output2((char*)nomfichieribrep);
|
149 |
|
|
brep.togmshpos(output2);
|
150 |
|
|
output2.close();
|
151 |
francois |
272 |
affiche((char*)"fin totale");
|
152 |
francois |
276 |
compteur.ajouter_etape("Enregistrement");
|
153 |
francois |
249 |
|
154 |
francois |
276 |
|
155 |
|
|
std::vector<std::string> tab;
|
156 |
|
|
compteur.get_tabfinal(tab);
|
157 |
|
|
for (int i=0;i<tab.size();i++)
|
158 |
|
|
affiche((char*)tab[i].c_str());
|
159 |
|
|
affiche((char*)"");
|
160 |
|
|
compteur.get_tabfinalcompresse(tab);
|
161 |
|
|
for (int i=0;i<tab.size();i++)
|
162 |
|
|
affiche((char*)tab[i].c_str());
|
163 |
|
|
|
164 |
francois |
432 |
*/
|
165 |
francois |
276 |
|
166 |
|
|
|
167 |
|
|
|
168 |
|
|
|
169 |
francois |
249 |
return 0;
|
170 |
|
|
}
|
171 |
|
|
|
172 |
|
|
|
173 |
|
|
|
174 |
|
|
#pragma package(smart_init)
|