ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/mvtn_optis/src/main.cpp
Revision: 382
Committed: Wed Dec 19 22:18:06 2012 UTC (12 years, 8 months ago) by gervaislavoie
File size: 4597 byte(s)
Log Message:
Methode du mouvement normale  et jacobien 3D dans fem_triangle3

File Contents

# User Rev Content
1 gervaislavoie 332 //------------------------------------------------------------
2     //------------------------------------------------------------
3     // MAGiC
4     // Jean Christophe Cuilli�re et Vincent FRANCOIS
5     // D�partement de G�nie M�canique - UQTR
6     //------------------------------------------------------------
7     // Le projet MAGIC est un projet de recherche du d�partement
8     // de g�nie m�canique de l'Universit� du Qu�bec �
9     // Trois Rivi�res
10     // Les librairies ne peuvent �tre utilis�es 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    
24    
25    
26    
27     #include "gestionversion.h"
28     #ifdef WINDOWS_VERSION
29     #include "fenetre.h"
30     #endif
31    
32     #pragma hdrstop
33     #include "mg_file.h"
34     #include "mgopt_mvt_normal.h"
35     #include <string.h>
36     #include "mg_export.h"
37     //---------------------------------------------------------------------------
38    
39     void affiche(char* message)
40     {
41     #ifdef WINDOWS_VERSION
42     Form1->Memo1->Lines->Add(message);
43     #else
44     std::cout << message << std::endl;
45     #endif
46     }
47    
48     void minuscule(char * mess)
49     {
50     int nb=strlen(mess);
51     for (int i=0;i<nb;i++)
52     mess[i]=tolower(mess[i]);
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 gervaislavoie 382 char fichier[500];
62 gervaislavoie 332 char fichierout[500];
63 gervaislavoie 382 char fichierparam[500];
64     int nummai=0;
65     double dpl_max=0.; // Déplacement maximal des noeuds du maillage (en mm)
66 gervaislavoie 332 double angle_min=0.; // Angle maximal entre deux triangles voisins (en radians)
67 gervaislavoie 382 int nbpas=0.;
68 gervaislavoie 332 int deplacement=0;
69 gervaislavoie 382 int optimisation=0;
70 gervaislavoie 332 int visualisation=0;
71 gervaislavoie 382 int facteur=0; // Facteur de grossissement des segments tracés pour visualiser les normales
72 gervaislavoie 332 fichierout[0]=0;
73 gervaislavoie 382 fichierparam[0]=0;
74 gervaislavoie 332 char mess[3000];
75    
76     for (int i=0;i<argc;i++)
77     {
78 gervaislavoie 382 if (strcmp(argv[i],"-file")==0) strcpy(fichier,argv[i+1]);
79     if (strcmp(argv[i],"-fileout")==0) strcpy(fichierout,argv[i+1]);
80     if (strcmp(argv[i],"-param")==0) strcpy(fichierparam,argv[i+1]);
81     //if (strcmp(argv[i],"-mesh")==0) nummai=atol(argv[i+1]);
82    
83     if (strcmp(argv[i],"-deplacement")==0) deplacement=1;
84 gervaislavoie 332 if (strcmp(argv[i],"-dpl_max")==0) dpl_max=atof(argv[i+1]);
85     if (strcmp(argv[i],"-angle_min")==0) angle_min=atof(argv[i+1]);
86     if (strcmp(argv[i],"-nbpas")==0) nbpas=atol(argv[i+1]);
87 gervaislavoie 382
88     if (strcmp(argv[i],"-optimisation")==0) optimisation=1;
89 gervaislavoie 332 if (strcmp(argv[i],"-visualisation")==0) {visualisation=1;facteur=atol(argv[i+1]);}; // Pour visualiser les normales à une géométrie
90     }
91    
92 gervaislavoie 382 MG_FILE file(fichier);
93     MG_MAILLAGE* mai=file.get_mg_maillage(0);
94    
95     char *p=strchr(fichier,'.');
96 gervaislavoie 332 char extension[50];
97     strcpy(extension,p);
98     minuscule(extension);
99 gervaislavoie 382 char etude[500];
100     strncpy(etude,fichier,p-fichier);
101     etude[p-fichier]=0;
102 gervaislavoie 332
103 gervaislavoie 382 char etudesortie[500];
104     if (fichierout[0]==0)
105     {
106     strcpy(etudesortie,etude);
107     strcat(etudesortie,"opt");
108     strcpy(fichierout,etudesortie);
109     strcat(fichierout,".magic");
110     }
111     else
112     {
113     char *p2=strchr(fichierout,'.');
114     strncpy(etudesortie,fichierout,p2-fichierout);
115     etudesortie[p2-fichierout]=0;
116     }
117    
118 gervaislavoie 332 if (deplacement==1)
119     {
120 gervaislavoie 382 sprintf(mess," Fichier : %s",fichier);
121 gervaislavoie 332 affiche(mess);
122 gervaislavoie 382 sprintf(mess,"Déplacement normal Calcul en cours...");
123     affiche(mess);
124 gervaislavoie 332 MGOPT_MVT_NORMAL opt(mai);
125     opt.deplacement_normal(dpl_max,angle_min,nbpas);
126     }
127 gervaislavoie 382
128     if (optimisation==1)
129     {
130     sprintf(mess,"Optimisation par la méthode du mouvement normal");
131     affiche(mess);
132     MGOPT_MVT_NORMAL opt(mai);
133     opt.active_affichage(affiche);
134     if (fichierparam[0]==0)
135     {
136     strcpy(fichierparam,"params_");
137     strcat(fichierparam,etudesortie);
138     strcat(fichierparam,".txt");
139     opt.ecrire_fichier_params(fichierparam);
140     }
141     opt.optimisation(fichier,fichierout,fichierparam);
142     }
143 gervaislavoie 332
144     if (visualisation==1)
145     {
146 gervaislavoie 382 sprintf(mess,"Visualisation des normales");
147 gervaislavoie 332 affiche(mess);
148     MGOPT_MVT_NORMAL opt(mai);
149     opt.visualisation(facteur);
150     }
151    
152 gervaislavoie 382 if (optimisation!=1)
153     {
154     if (fichierout[0]==0) strcpy(fichierout,fichier);
155     file.enregistrer(fichierout);
156     MG_EXPORT exp;
157     exp.gmsh(mai,etude);
158     }
159 gervaislavoie 332
160     sprintf(mess,"Fin");
161     affiche(mess);
162    
163     return 0;
164     }
165    
166    
167    
168 gervaislavoie 382 #pragma package(smart_init)