ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/mvtn_optis/src/main.cpp
Revision: 332
Committed: Tue May 8 14:29:45 2012 UTC (13 years, 3 months ago) by gervaislavoie
File size: 3821 byte(s)
Log Message:
Deplacement d'un maillage pour la méthode des déplacements normaux

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     char nomfichier[500];
62     char fichierout[500];
63    
64     double dpl_max=0.; // Déplacement maximal des noeuds du maillage (en mm)
65     double angle_min=0.; // Angle maximal entre deux triangles voisins (en radians)
66     int nbpas=0.;
67    
68     int deplacement=0;
69     int visualisation=0;
70     int nummai=0;
71     int facteur=0; // Facteur de grossissement des segments tracés pour visualiser les normales
72    
73     fichierout[0]=0;
74     char mess[3000];
75    
76     for (int i=0;i<argc;i++)
77     {
78     if (strcmp(argv[i],"-file")==0) strcpy(nomfichier,argv[i+1]);
79     if (strcmp(argv[i],"-fileout")==0) strcpy(fichierout,argv[i+1]);
80     if (strcmp(argv[i],"-mesh")==0) nummai=atol(argv[i+1]);
81     if (strcmp(argv[i],"-dpl_max")==0) dpl_max=atof(argv[i+1]);
82     if (strcmp(argv[i],"-angle_min")==0) angle_min=atof(argv[i+1]);
83     if (strcmp(argv[i],"-nbpas")==0) nbpas=atol(argv[i+1]);
84     if (strcmp(argv[i],"-deplacement")==0) deplacement=1;
85     if (strcmp(argv[i],"-visualisation")==0) {visualisation=1;facteur=atol(argv[i+1]);}; // Pour visualiser les normales à une géométrie
86     }
87    
88     MG_FILE gest(nomfichier);
89     MG_MAILLAGE* mai=gest.get_mg_maillageid(nummai);
90     unsigned long id=mai->get_id();
91    
92     char *p;
93     char extension[50];
94     sprintf(mess," Fichier : %s",nomfichier);
95     affiche(mess);
96     p=strrchr(nomfichier,'.');
97     strcpy(extension,p);
98     minuscule(extension);
99     char chaine[3000];
100     for (int i=0;i<3000;i++) chaine[i]=0;
101     strncpy(chaine,nomfichier,p-nomfichier);
102     char chaine2[3000];
103     sprintf(chaine2,"%s%lu",chaine,id);
104     std::string namefic=chaine2;
105    
106     if (deplacement==1)
107     {
108     sprintf(mess," Déplacement normal");
109     affiche(mess);
110     MGOPT_MVT_NORMAL opt(mai);
111     opt.deplacement_normal(dpl_max,angle_min,nbpas);
112     }
113    
114     if (visualisation==1)
115     {
116     sprintf(mess," Visualisation des normales");
117     affiche(mess);
118     MGOPT_MVT_NORMAL opt(mai);
119     opt.visualisation(facteur);
120     }
121    
122     if (fichierout[0]==0) strcpy(fichierout,nomfichier);
123     gest.enregistrer(fichierout);
124     MG_EXPORT exp;
125     exp.gmsh(mai,namefic);
126    
127     sprintf(mess,"Fin");
128     affiche(mess);
129    
130     return 0;
131     }
132    
133    
134    
135     #pragma package(smart_init)