ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/mgoperation/src/main.cpp
Revision: 241
Committed: Mon Mar 15 22:13:49 2010 UTC (15 years, 3 months ago) by francois
Original Path: magic/app/mgoperation/mgoperation/src/main.cpp
File size: 19553 byte(s)
Log Message:
parametrage de eta dans la methode SIMP + correction bug affichage dans mgoperation

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