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

# Content
1 //------------------------------------------------------------
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 char fichier[500];
62 char fichierout[500];
63 char fichierparam[500];
64 int nummai=0;
65 double dpl_max=0.; // Déplacement maximal des noeuds du maillage (en mm)
66 double angle_min=0.; // Angle maximal entre deux triangles voisins (en radians)
67 int nbpas=0.;
68 int deplacement=0;
69 int optimisation=0;
70 int visualisation=0;
71 int facteur=0; // Facteur de grossissement des segments tracés pour visualiser les normales
72 fichierout[0]=0;
73 fichierparam[0]=0;
74 char mess[3000];
75
76 for (int i=0;i<argc;i++)
77 {
78 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 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
88 if (strcmp(argv[i],"-optimisation")==0) optimisation=1;
89 if (strcmp(argv[i],"-visualisation")==0) {visualisation=1;facteur=atol(argv[i+1]);}; // Pour visualiser les normales à une géométrie
90 }
91
92 MG_FILE file(fichier);
93 MG_MAILLAGE* mai=file.get_mg_maillage(0);
94
95 char *p=strchr(fichier,'.');
96 char extension[50];
97 strcpy(extension,p);
98 minuscule(extension);
99 char etude[500];
100 strncpy(etude,fichier,p-fichier);
101 etude[p-fichier]=0;
102
103 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 if (deplacement==1)
119 {
120 sprintf(mess," Fichier : %s",fichier);
121 affiche(mess);
122 sprintf(mess,"Déplacement normal Calcul en cours...");
123 affiche(mess);
124 MGOPT_MVT_NORMAL opt(mai);
125 opt.deplacement_normal(dpl_max,angle_min,nbpas);
126 }
127
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
144 if (visualisation==1)
145 {
146 sprintf(mess,"Visualisation des normales");
147 affiche(mess);
148 MGOPT_MVT_NORMAL opt(mai);
149 opt.visualisation(facteur);
150 }
151
152 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
160 sprintf(mess,"Fin");
161 affiche(mess);
162
163 return 0;
164 }
165
166
167
168 #pragma package(smart_init)