ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/mgoperation/src/main.cpp
Revision: 272
Committed: Mon Dec 13 21:04:45 2010 UTC (14 years, 6 months ago) by francois
File size: 19967 byte(s)
Log Message:
suppression des warnings

File Contents

# User Rev Content
1 francois 226
2     //------------------------------------------------------------
3     //------------------------------------------------------------
4     // MAGiC
5     // Jean Christophe Cuilli�e et Vincent FRANCOIS
6     // D�artement de G�ie M�anique - UQTR
7     //------------------------------------------------------------
8     // Le projet MAGIC est un projet de recherche du d�artement
9     // de g�ie m�anique de l'Universit�du Qu�ec �
10     // Trois Rivi�es
11     // Les librairies ne peuvent �re utilis�s sans l'accord
12     // des auteurs (contact : francois@uqtr.ca)
13     //------------------------------------------------------------
14     //------------------------------------------------------------
15     //
16     // main.cpp
17     //
18     //------------------------------------------------------------
19     //------------------------------------------------------------
20     // COPYRIGHT 2000
21     // Version du 02/03/2006 �11H25
22     //------------------------------------------------------------
23     //------------------------------------------------------------
24     #include "gestionversion.h"
25     #ifdef WINDOWS_VERSION
26     #include "fenetre.h"
27     #endif
28    
29    
30     #include <string.h>
31     #include "main.h"
32     #include "mg_file.h"
33     #include "mg_export.h"
34     #include "mg_import.h"
35     #include "mg_lissage.h"
36     #include "step_import.h"
37     #include "acis_import.h"
38     #include "step_import.h"
39     #include "occ_import.h"
40     #include "aide.h"
41     #include "vct_multi_modele.h"
42     #include <ctype.h>
43 picher 230 #include <math.h>
44 francois 226
45    
46     //---------------------------------------------------------------------------
47    
48     void affiche(char* message)
49     {
50     #ifdef WINDOWS_VERSION
51     Form1->Memo1->Lines->Add(message);
52     #else
53     std::cout << message << std::endl;
54     #endif
55     }
56    
57     void minuscule(char * mess)
58     {
59     int nb=strlen(mess);
60     for (int i=0;i<nb;i++)
61     mess[i]=tolower(mess[i]);
62     }
63    
64     #ifdef WINDOWS_VERSION
65     int amain(int argc,char **argv)
66     #else
67     int main(int argc,char **argv)
68     #endif
69     {
70 francois 272 affiche((char*)"Operation dans l'environnement MAGiC\n\n");
71 francois 226 char nomfichier[3000];
72     char fichierout[3000];
73     char fichieraster[3000];
74     char fichieroptis[3000];
75     char fichierflottant[3000];
76 picher 233 char fichierdensite[3000];
77 francois 226 char coderesu[10];
78     int nummai;
79     int degre;
80     int action=0;
81     int numgeo=0;
82     int numgt=0;
83     int numentite=0;
84     int expand=0;
85     int numsol1=0;
86     int numsol2=0;
87     int numsol3=0;
88     int numchamp1=0;
89     int numchamp2=0;
90     int numchamp3=0;
91 picher 233 int flottant=0;
92     int consimpose=0;
93     int consmailleurauto=0;
94 francois 232 int consopti=0;
95 francois 226 double unite=1;
96     double seuil=0.8;
97     double eps=1e-6;
98 picher 230 double niveau=150.;
99     int iter_max = 10;
100     double sigma;
101 picher 248 double gamma=1.; //par défaut 1.0
102     double sigmaf=1.; //par défaut 1.0
103     double sigmag=1.; //par défaut 1.0
104 picher 233 int reactivation = 0;
105 picher 231 int bruitage = 0;
106     int lissage = 0;
107 francois 234 sigma = 0.038/sqrt(10.); //valeur par d�faut
108 francois 226 INIAIDE;
109     if (argc==2) strcpy(nomfichier,argv[1]);
110     else if (argc>2)
111     {
112     for (int i=0;i<argc;i++)
113     {
114     if (strcmp(argv[i],"-file")==0) strcpy(nomfichier,argv[i+1]);
115     if (strcmp(argv[i],"-fileout")==0) strcpy(fichierout,argv[i+1]);
116     if (strcmp(argv[i],"-mesh")==0) nummai=atol(argv[i+1]);
117     if (strcmp(argv[i],"-numsol1")==0) numsol1=atol(argv[i+1]);
118     if (strcmp(argv[i],"-numsol2")==0) numsol2=atol(argv[i+1]);
119     if (strcmp(argv[i],"-numsol3")==0) numsol3=atol(argv[i+1]);
120     if (strcmp(argv[i],"-numchamp1")==0) numchamp1=atol(argv[i+1]);
121     if (strcmp(argv[i],"-numchamp2")==0) numchamp2=atol(argv[i+1]);
122     if (strcmp(argv[i],"-numchamp3")==0) numchamp3=atol(argv[i+1]);
123     if (strcmp(argv[i],"-geo")==0) numgeo=atol(argv[i+1]);
124     if (strcmp(argv[i],"-groupe")==0) numgt=atol(argv[i+1]);
125     if (strcmp(argv[i],"-entite")==0) numentite=atol(argv[i+1]);
126     if (strcmp(argv[i],"-degre")==0) degre=atoi(argv[i+1]);
127     if (strcmp(argv[i],"-unite")==0) unite=atof(argv[i+1]);
128     if (strcmp(argv[i],"-seuil")==0) seuil=atof(argv[i+1]);
129     if (strcmp(argv[i],"-niveau")==0) niveau=atof(argv[i+1]);
130     if (strcmp(argv[i],"-aster")==0) strcpy(fichieraster,argv[i+1]);
131 picher 233 if (strcmp(argv[i],"-densite")==0) strcpy(fichierdensite,argv[i+1]);
132 francois 226 if (strcmp(argv[i],"-optis")==0) strcpy(fichieroptis,argv[i+1]);
133     if (strcmp(argv[i],"-ficflottant")==0) strcpy(fichierflottant,argv[i+1]);
134     if (strcmp(argv[i],"-coderesu")==0) strcpy(coderesu,argv[i+1]);
135     if (strcmp(argv[i],"-flottant")==0) flottant = 1;
136     if (strcmp(argv[i],"-eps")==0) eps=atof(argv[i+1]);
137 picher 230 if (strcmp(argv[i],"-iter")==0) iter_max=atol(argv[i+1]);
138     if (strcmp(argv[i],"-sigma")==0) sigma=atof(argv[i+1]);
139 picher 248 if (strcmp(argv[i],"-gamma")==0) gamma=atof(argv[i+1]);
140     if (strcmp(argv[i],"-sigmaf")==0) sigmaf=atof(argv[i+1]);
141     if (strcmp(argv[i],"-sigmag")==0) sigmag=atof(argv[i+1]);
142 francois 226 if (strcmp(argv[i],"-fem")==0) action=1;
143     if (strcmp(argv[i],"-femdef")==0) action=15;
144     if (strcmp(argv[i],"-expand")==0) expand=1;
145     if (strcmp(argv[i],"-stepocc")==0) action=2;
146     if (strcmp(argv[i],"-magicgmsh")==0) action=3;
147     if (strcmp(argv[i],"-magicaster")==0) action=4;
148     if (strcmp(argv[i],"-stepmagic")==0) action=5;
149     if (strcmp(argv[i],"-satmagic")==0) action=6;
150     if (strcmp(argv[i],"-cttgmsh")==0) action=7;
151     if (strcmp(argv[i],"-occmagic")==0) action=8;
152     if (strcmp(argv[i],"-astermagic")==0) action=9;
153     if (strcmp(argv[i],"-magicoptis")==0) action=10;
154     if (strcmp(argv[i],"-optismagic")==0) action=11;
155     if (strcmp(argv[i],"-selectionne")==0) action=12;
156     if (strcmp(argv[i],"-deselectionne")==0) action=13;
157     if (strcmp(argv[i],"-examine")==0) action=14;
158     if (strcmp(argv[i],"-fusiongeo")==0) action=17;
159 picher 233 if (strcmp(argv[i],"-importdensite")==0) action=18;
160 picher 231 if (strcmp(argv[i],"-lissage")==0) action=16;
161 picher 248 if (strcmp(argv[i],"-liss1")==0) lissage = 1;
162     if (strcmp(argv[i],"-liss2")==0) lissage = 2;
163     if (strcmp(argv[i],"-liss3")==0) lissage = 3;
164 picher 231 if (strcmp(argv[i],"-bruitage")==0) bruitage = 1;
165 picher 233 if (strcmp(argv[i],"-reactivation")==0) reactivation = 1;
166 francois 232 if (strcmp(argv[i],"-cons_optimise")==0) consopti = 1;
167     if (strcmp(argv[i],"-cons_impose")==0) consimpose = 1;
168     if (strcmp(argv[i],"-cons_mailleurauto")==0) consmailleurauto = 1;
169 francois 226 }
170     }
171     else {AFFAIDE;return 0;}
172    
173 picher 230
174    
175    
176 francois 226 char mess[3000];
177     sprintf(mess," Fichier : %s",nomfichier);
178     affiche(mess);
179     char *p=strrchr(nomfichier,'.');
180     char extension[50];
181     strcpy(extension,p);
182     minuscule(extension);
183     char chaine[3000];for (int i=0;i<3000;i++) chaine[i]=0;
184     if ( ((strcmp(extension,".magic")==0) && (action==0)) || (action==3))
185     {
186     sprintf(mess," Conversion MAGiC vers GMSH");
187     affiche(mess);
188     MG_FILE gest(nomfichier);
189     int nb=gest.get_nb_mg_maillage();
190     char chaine[3000];
191     for (int i=0;i<nb;i++)
192     {
193     MG_MAILLAGE* mai=gest.get_mg_maillage(i);
194     unsigned long id=mai->get_id();
195     strncpy(chaine,nomfichier,p-nomfichier);
196     char chaine2[3000];
197     sprintf(chaine2,"%s%lu",chaine,id);
198     std::string namefic=chaine2;
199     MG_EXPORT exp;
200 francois 239 exp.gmsh(mai,namefic);
201 francois 226 }
202     nb=gest.get_nb_fem_maillage();
203     for (int i=0;i<nb;i++)
204     {
205     FEM_MAILLAGE* mai=gest.get_fem_maillage(i);
206     unsigned long id=mai->get_id();
207     strncpy(chaine,nomfichier,p-nomfichier);
208     char chaine2[3000];
209     sprintf(chaine2,"%s%lu",chaine,id);
210     std::string namefic=chaine2;
211     MG_EXPORT exp;
212     double coef=eps;
213     if (coef<0.)
214     {
215     coef=mai->calcul_coef();
216     sprintf(mess," Coefficient de deforme pour le maillage %lu est de %le",mai->get_id(),coef);
217     affiche(mess);
218     }
219     exp.gmsh(mai,namefic,coef);
220     }
221     }
222     if (action==4)
223     {
224     sprintf(mess," Conversion MAGiC vers code ASTER");
225     affiche(mess);
226     MG_FILE gest(nomfichier);
227     int nb=gest.get_nb_fem_maillage();
228     char chaine[1000];
229     for (int i=0;i<nb;i++)
230     {
231     FEM_MAILLAGE* mai=gest.get_fem_maillage(i);
232     unsigned long id=mai->get_id();
233     strncpy(chaine,nomfichier,p-nomfichier);
234     char chaine2[3000];
235     sprintf(chaine2,"%s%lu",chaine,id);
236     std::string namefic=chaine2;
237     MG_EXPORT exp;
238 francois 239 exp.aster(mai,namefic,0,coderesu);
239 francois 226 }
240     }
241     if (((strcmp(extension,".ctt")==0) && (action==0)) || (action==7))
242     {
243     sprintf(mess," Conversion carte de taille vers GMSH");
244     affiche(mess);
245     FCT_GENERATEUR_3D<4> carte;
246     carte.lire(nomfichier);
247     strncpy(chaine,nomfichier,p-nomfichier);
248     std::string namefic=chaine;
249     MG_EXPORT exp;
250     exp.gmsh(&carte,namefic);
251     }
252     if (((strcmp(extension,".step")==0) &&(action==0)) || (action==5))
253     {
254     sprintf(mess," Conversion STEP vers MAGiC");
255     affiche(mess);
256     STEP_IMPORT stepimport;
257     MG_GESTIONNAIRE gest;
258     stepimport.importer(gest,nomfichier) ;
259     strncpy(chaine,nomfichier,p-nomfichier);
260     std::string namefic=chaine;namefic=namefic + ".magic";
261     int nb=gest.get_nb_mg_geometrie();
262     for (int i=0;i<nb;i++)
263     gest.get_mg_geometrie(i)->change_valeur_unite(unite);
264     gest.enregistrer(namefic.c_str());
265     }
266     if (((strcmp(extension,".sat")==0) && (action==0)) || (action==6))
267     {
268     sprintf(mess," Conversion SAT vers MAGiC");
269     affiche(mess);
270     MG_GESTIONNAIRE gest;
271     ACIS_IMPORT acisimport;
272     acisimport.importer(gest,nomfichier) ;
273     strncpy(chaine,nomfichier,p-nomfichier);
274     std::string namefic=chaine;namefic=namefic + ".magic";
275     int nb=gest.get_nb_mg_geometrie();
276     for (int i=0;i<nb;i++)
277     gest.get_mg_geometrie(i)->change_valeur_unite(unite);
278     gest.enregistrer(namefic.c_str());
279 picher 230 }
280 francois 226 if (((strcmp(extension,".brep")==0) && (action==0)) ||(action==8))
281     {
282     #ifdef BREP_OCC
283     sprintf(mess," Conversion OpenCascade vers MAGiC");
284     affiche(mess);
285     MG_GESTIONNAIRE gest;
286     OCC_IMPORT occimport;
287     occimport.importer(gest,nomfichier,FICHIEROCC,unite,eps) ;
288     strncpy(chaine,nomfichier,p-nomfichier);
289     std::string namefic=chaine;namefic=namefic + ".magic";
290     int nb=gest.get_nb_mg_geometrie();
291     for (int i=0;i<nb;i++)
292     gest.get_mg_geometrie(i)->change_valeur_unite(unite);
293     gest.enregistrer(namefic.c_str());
294     #endif
295     }
296     if (action==2)
297     {
298     #ifdef BREP_OCC
299     sprintf(mess," Conversion STEP via OpenCascade vers MAGiC avec epsilon=%lf",eps);
300     affiche(mess);
301     MG_GESTIONNAIRE gest;
302     OCC_IMPORT occimport;
303     occimport.importer(gest,nomfichier,FICHIERSTEP,unite,eps) ;
304     strncpy(chaine,nomfichier,p-nomfichier);
305     std::string namefic=chaine;namefic=namefic + ".magic";
306     int nb=gest.get_nb_mg_geometrie();
307     for (int i=0;i<nb;i++)
308     gest.get_mg_geometrie(i)->change_valeur_unite(unite);
309     gest.enregistrer(namefic.c_str());
310     #endif
311     }
312     if (action==1)
313     {
314     sprintf(mess," Creation d'un maillage FEM");
315     affiche(mess);
316     MG_FILE gest(nomfichier);
317     MG_MAILLAGE* mai=gest.get_mg_maillageid(nummai);
318     FEM_MAILLAGE* fem=new FEM_MAILLAGE(mai->get_mg_geometrie(),mai,degre);
319     gest.ajouter_fem_maillage(fem);
320     fem->construire(0);
321     gest.enregistrer(nomfichier);
322     }
323     if (action==9)
324     {
325     sprintf(mess," Importation des résultats ASTER vers MAGIC");
326     affiche(mess);
327     MG_FILE gest(nomfichier);
328     FEM_MAILLAGE* mai=gest.get_fem_maillageid(nummai);
329     MG_IMPORT imp;
330     imp.aster(mai,fichieraster,nomfichier);
331     gest.enregistrer(nomfichier);
332     }
333     if (action==10)
334     {
335     sprintf(mess," Conversion MAGiC vers OPTIS");
336     affiche(mess);
337     MG_FILE gest(nomfichier);
338     int nb=gest.get_nb_fem_maillage();
339     char chaine[1000];
340     for (int i=0;i<nb;i++)
341     {
342     FEM_MAILLAGE* mai=gest.get_fem_maillage(i);
343     unsigned long id=mai->get_id();
344     strncpy(chaine,nomfichier,p-nomfichier);
345     char chaine2[3000];
346     sprintf(chaine2,"%s%lu",chaine,id);
347     std::string namefic=chaine2;
348     MG_EXPORT exp;
349 francois 239 exp.aster(mai,namefic,1,coderesu);
350 francois 226 }
351     }
352     if (action==11)
353     {
354     sprintf(mess," Importation des résultats d'optimisation vers MAGIC");
355     affiche(mess);
356     MG_FILE gest(nomfichier);
357     FEM_MAILLAGE* mai=gest.get_fem_maillageid(nummai);
358     MG_IMPORT imp;
359     imp.optis(mai,fichieroptis,fichierflottant,seuil,niveau,flottant);
360     gest.enregistrer(nomfichier);
361     }
362     if (action==12)
363     {
364     sprintf(mess," Selection dans MAGIC");
365     affiche(mess);
366     MG_FILE gest(nomfichier);
367     MG_GEOMETRIE* mggeo=gest.get_mg_geometrieid(numgeo);
368     MG_GROUPE_TOPOLOGIQUE* mggt;
369     if (numgt==0)
370     {
371     mggt=new MG_GROUPE_TOPOLOGIQUE;
372     mggeo->ajouter_mg_groupe_topologique(mggt);
373     }
374     else mggt=mggeo->get_mg_groupe_topologiqueid(numgt);
375     MG_ELEMENT_TOPOLOGIQUE* ele;
376     ele=mggeo->get_mg_sommetid(numentite);
377     if (ele==NULL) ele=mggeo->get_mg_areteid(numentite);
378     if (ele==NULL) ele=mggeo->get_mg_faceid(numentite);
379     if (ele==NULL) ele=mggeo->get_mg_volumeid(numentite);
380     if (ele!=NULL)
381     {
382     mggt->ajouter(ele);
383     if (expand)
384     {
385     TPL_MAP_ENTITE<MG_ELEMENT_TOPOLOGIQUE*> lst;
386     ele->get_topologie_sousjacente(&lst);
387     TPL_MAP_ENTITE<MG_ELEMENT_TOPOLOGIQUE*>::ITERATEUR it;
388     for (MG_ELEMENT_TOPOLOGIQUE *ele2=lst.get_premier(it);ele2!=NULL;ele2=lst.get_suivant(it))
389     mggt->ajouter(ele2);
390     }
391     }
392     gest.enregistrer(nomfichier);
393     }
394     if (action==13)
395     {
396     sprintf(mess," Deselection dans MAGIC");
397     affiche(mess);
398     MG_FILE gest(nomfichier);
399     MG_GEOMETRIE* mggeo=gest.get_mg_geometrieid(numgeo);
400     MG_GROUPE_TOPOLOGIQUE* mggt=mggeo->get_mg_groupe_topologiqueid(numgt);
401     MG_ELEMENT_TOPOLOGIQUE* ele;
402     ele=mggeo->get_mg_sommetid(numentite);
403     if (ele==NULL) ele=mggeo->get_mg_areteid(numentite);
404     if (ele==NULL) ele=mggeo->get_mg_faceid(numentite);
405     if (ele==NULL) ele=mggeo->get_mg_volumeid(numentite);
406     if (ele!=NULL)
407     {
408     mggt->supprimer(ele);
409     if (expand)
410     {
411     TPL_MAP_ENTITE<MG_ELEMENT_TOPOLOGIQUE*> lst;
412     ele->get_topologie_sousjacente(&lst);
413     TPL_MAP_ENTITE<MG_ELEMENT_TOPOLOGIQUE*>::ITERATEUR it;
414     for (MG_ELEMENT_TOPOLOGIQUE *ele2=lst.get_premier(it);ele2!=NULL;ele2=lst.get_suivant(it))
415     mggt->supprimer(ele2);
416     }
417     }
418     gest.enregistrer(nomfichier);
419     }
420     if (action==16)
421     {
422 picher 231 sprintf(mess," Lissage de l'enveloppe externe du maillage optimisee");
423 francois 226 affiche(mess);
424     MG_FILE gest(nomfichier);
425 picher 231 FEM_MAILLAGE* mai=gest.get_fem_maillageid(nummai);
426 francois 226 MG_GESTIONNAIRE gest2;
427 picher 233 MG_LISSAGE liss;
428 francois 232 liss.active_affichage(affiche);
429 picher 248 liss.lisse(mai,gest2,eps,sigma,sigmaf,sigmag,gamma,iter_max,reactivation,bruitage,lissage,consopti,consimpose,consmailleurauto);
430 francois 226 gest2.enregistrer(fichierout);
431     }
432     sprintf(mess,"Conversion reussie");
433    
434     if (action==14)
435     {
436     sprintf(mess," Analyse MAGIC");
437     affiche(mess);
438     MG_FILE gest(nomfichier);
439     char message [5000];
440     int nbgeo=gest.get_nb_mg_geometrie();
441     sprintf(message," %d geometrie :",nbgeo);
442     for (int i=0;i<nbgeo;i++)
443     {
444     MG_GEOMETRIE* geo=gest.get_mg_geometrie(i);
445     sprintf(message,"%s %lu ",message,geo->get_id());
446     }
447     affiche(message);
448     for (int i=0;i<nbgeo;i++)
449     {
450     MG_GEOMETRIE* geo=gest.get_mg_geometrie(i);
451     sprintf(message," geometrie %lu",geo->get_id());
452     affiche(message);
453     int nbmg=geo->get_nb_mg_groupe_topologique();
454     sprintf(message," %d groupe topologique",nbmg);
455     for (int j=0;j<nbmg;j++)
456     {
457     MG_GROUPE_TOPOLOGIQUE* mggp=geo->get_mg_groupe_topologique(j);
458     sprintf(message,"%s %lu ",message,mggp->get_id());
459     }
460 picher 233 affiche(message);
461 francois 232 sprintf(message," %d faces",geo->get_nb_mg_face());
462 picher 233 affiche(message);
463 francois 232 sprintf(message," %d aretes",geo->get_nb_mg_arete());
464 picher 233 affiche(message);
465 francois 232 sprintf(message," %d sommets",geo->get_nb_mg_sommet());
466 picher 233 affiche(message);
467 francois 232
468 francois 226 }
469     int nbmai=gest.get_nb_mg_maillage();
470     sprintf(message," %d maillage geometrique :",nbmai);
471 francois 232 affiche(message);
472 francois 226 for (int i=0;i<nbmai;i++)
473     {
474     MG_MAILLAGE* mai=gest.get_mg_maillage(i);
475 francois 234 sprintf(message," maillage geometrique %lu ",mai->get_id());
476 francois 232 affiche(message);
477     sprintf(message," %d noeuds",mai->get_nb_mg_noeud());
478 picher 233 affiche(message);
479 francois 232 sprintf(message," %d segments",mai->get_nb_mg_segment());
480 picher 233 affiche(message);
481 francois 232 sprintf(message," %d triangles",mai->get_nb_mg_triangle());
482 picher 233 affiche(message);
483 francois 232 sprintf(message," %d tetras",mai->get_nb_mg_tetra());
484 picher 233 affiche(message);
485 francois 226 }
486     int nbmaif=gest.get_nb_fem_maillage();
487     sprintf(message," %d maillage FEM :",nbmaif);
488 francois 232 affiche(message);
489 francois 226 for (int i=0;i<nbmaif;i++)
490     {
491     FEM_MAILLAGE* maif=gest.get_fem_maillage(i);
492 francois 241 sprintf(message," maillage FEM %lu ",maif->get_id());
493 francois 232 affiche(message);
494     sprintf(message," %d noeuds",maif->get_nb_fem_noeud());
495 picher 233 affiche(message);
496 francois 232 sprintf(message," %d segments",maif->get_nb_fem_segment());
497 picher 233 affiche(message);
498 francois 232 sprintf(message," %d triangles",maif->get_nb_fem_triangle());
499 picher 233 affiche(message);
500 francois 232 sprintf(message," %d tetras",maif->get_nb_fem_tetra());
501 picher 233 affiche(message);
502 francois 226 }
503     int nbsol=gest.get_nb_mg_solution();
504     sprintf(message," %d solution maillage geometrique :",nbsol);
505     for (int i=0;i<nbsol;i++)
506     {
507     MG_SOLUTION* sol=gest.get_mg_solution(i);
508     sprintf(message,"%s %lu ",message,sol->get_id());
509     }
510 francois 234 affiche(message);
511 francois 226 int nbsolf=gest.get_nb_fem_solution();
512 francois 234 sprintf(message," %d solution maillage FEM :",nbsolf);
513 francois 226 for (int i=0;i<nbsolf;i++)
514     {
515     FEM_SOLUTION* sol=gest.get_fem_solution(i);
516     sprintf(message,"%s %lu ",message,sol->get_id());
517     }
518 francois 234 affiche(message);
519 francois 226 }
520     if (action==15)
521     {
522     sprintf(mess," Calcul de deforme");
523     affiche(mess);
524     MG_FILE gest(nomfichier);
525     FEM_MAILLAGE* mai=gest.get_fem_maillageid(nummai);
526     FEM_SOLUTION* sol1=gest.get_fem_solutionid(numsol1);
527     FEM_SOLUTION* sol2=gest.get_fem_solutionid(numsol2);
528     FEM_SOLUTION* sol3=gest.get_fem_solutionid(numsol3);
529     affiche(mess);
530     mai->calcul_deforme(sol1,numchamp1,sol2,numchamp2,sol3,numchamp3);
531     gest.enregistrer(nomfichier);
532     }
533     if (action==17)
534     {
535     sprintf(mess," Fusion de géométrie");
536     affiche(mess);
537     MG_FILE gest(nomfichier);
538     MG_GEOMETRIE* mggeo=gest.get_mg_geometrieid(numgeo);
539     VCT_MULTI_MODELE fusion(mggeo);
540     fusion.recherche_identite();
541     gest.enregistrer(nomfichier);
542     }
543 picher 233 if (action==18)
544     {
545 francois 234 sprintf(mess," Cr�ation d'une pseudo-solution de la r�partition de densit�");
546 picher 233 affiche(mess);
547     MG_FILE gest(nomfichier);
548     FEM_MAILLAGE* mai=gest.get_fem_maillageid(nummai);
549     MG_IMPORT imp;
550     imp.import_densite(mai,fichierdensite,nomfichier);
551     gest.enregistrer(nomfichier);
552     }
553 francois 226 sprintf(mess,"Fin");
554     affiche(mess);
555    
556     return 0;
557     }
558    
559    
560    
561     #pragma package(smart_init)