ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/carte/src/main.cpp
Revision: 469
Committed: Wed Nov 27 20:02:22 2013 UTC (11 years, 8 months ago) by francois
File size: 11743 byte(s)
Log Message:
ajout d'un generateur de carte de taille constante pour les nouvelles cartes et decoupage de la librairie mailleur en 2 pour cause d'appel cyclique

File Contents

# User Rev Content
1 francois 283 //------------------------------------------------------------
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 "mg_export.h"
35     #include "fct_generateur_frontiere.h"
36     #include "fct_generateur_constante.h"
37     #include "fct_generateur_fichier.h"
38 francois 469 #include "fct_taille_fem_solution_generateur_constant.h"
39 francois 432 #include "magic_application.h"
40 francois 283 #include <string.h>
41     //---------------------------------------------------------------------------
42    
43    
44    
45    
46     int main(int argc,char **argv)
47     {
48 francois 432 std::vector<MAGIC_PARAMETRE_APPLICATION> lst;
49     MAGIC_PARAMETRE_APPLICATION p1(3,(char*)"-fichierpoint",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier d'échantillonage optionnel pour l'action courbure");
50     MAGIC_PARAMETRE_APPLICATION p2(4,(char*)"-dg",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Densité globale");
51     MAGIC_PARAMETRE_APPLICATION p3(5,(char*)"-eps",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Écart entre le maillage et la géométrie");
52     MAGIC_PARAMETRE_APPLICATION p4(6,(char*)"-taillezone",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Facteur pour la distance de variation de la carte autour de l'échantillon - Defaut 4");
53     MAGIC_PARAMETRE_APPLICATION p5(7,(char*)"-tauxtransfert",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Poid de l'échantillon virtuel place en dehors de la zone de raffinement - Defaut 0.25");
54     MAGIC_PARAMETRE_APPLICATION p6(8,(char*)"-fechantillonnage",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Nombre d'échantillon par entité - Defaut 20");
55     MAGIC_PARAMETRE_APPLICATION p7(9,(char*)"-festimation",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Nombre de cellule dans une direction pour la grille virtuelle - Defaut 10");
56     MAGIC_PARAMETRE_APPLICATION p8(10,(char*)"-constante",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Carte de taille constante");
57     MAGIC_PARAMETRE_APPLICATION p9(11,(char*)"-fichierechan",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Carte de taille par un echantillonnage dans un fichier exterieur");
58     MAGIC_PARAMETRE_APPLICATION p10(12,(char*)"-courbure",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Carte de taille par approximation des courbures");
59     MAGIC_PARAMETRE_APPLICATION p11(13,(char*)"-groupe",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Groupe topologique utilise pour faire le calcul - Defaut 0");
60     MAGIC_PARAMETRE_APPLICATION p12(14,(char*)"-numgeo",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Géométrie du groupe topologique - Defaut 0");
61 francois 469 MAGIC_PARAMETRE_APPLICATION p13(15,(char*)"-constante2",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Carte de taille constante définie par une FEM_SOLUTION");
62     MAGIC_PARAMETRE_APPLICATION p14(16,(char*)"-nx",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Nombre d'intervals sur x - Defaut 10");
63     MAGIC_PARAMETRE_APPLICATION p15(17,(char*)"-ny",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Nombre d'intervals sur y - Defaut 10");
64     MAGIC_PARAMETRE_APPLICATION p16(18,(char*)"-nz",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Nombre d'intervals sur z - Defaut 10");
65     MAGIC_PARAMETRE_APPLICATION p17(19,(char*)"-nomsolution",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Nom du fichier solution");
66 francois 432 p10.ajouter_dependance(1);p10.ajouter_dependance(2);p10.ajouter_dependance(3);p10.ajouter_dependance(4);p10.ajouter_dependance(5);p10.ajouter_dependance(6);p10.ajouter_dependance(7);p10.ajouter_dependance(8);p10.ajouter_dependance(9);p10.ajouter_dependance(13);p10.ajouter_dependance(14);
67     p8.ajouter_dependance(1);p8.ajouter_dependance(2);p8.ajouter_dependance(4);p8.ajouter_dependance(8);p8.ajouter_dependance(9);p8.ajouter_dependance(13);p8.ajouter_dependance(14);
68     p9.ajouter_dependance(1);p9.ajouter_dependance(2);p9.ajouter_dependance(3);p9.ajouter_dependance(4);p9.ajouter_dependance(6);p9.ajouter_dependance(7);p9.ajouter_dependance(8);p9.ajouter_dependance(9);
69 francois 469 p13.ajouter_dependance(1);p13.ajouter_dependance(2);p13.ajouter_dependance(4);p13.ajouter_dependance(8);p13.ajouter_dependance(14);p13.ajouter_dependance(16);p13.ajouter_dependance(17);p13.ajouter_dependance(18);p13.ajouter_dependance(19);
70 francois 432 lst.push_back(p1);
71     lst.push_back(p2);
72     lst.push_back(p3);
73     lst.push_back(p4);
74     lst.push_back(p5);
75     lst.push_back(p6);
76     lst.push_back(p7);
77     lst.push_back(p8);
78     lst.push_back(p9);
79     lst.push_back(p10);
80     lst.push_back(p11);
81     lst.push_back(p12);
82 francois 469 lst.push_back(p13);
83     lst.push_back(p14);
84     lst.push_back(p15);
85     lst.push_back(p16);
86     lst.push_back(p17);
87 francois 432 MAGIC_APPLICATION app((char*)"Generation de carte de taille",argc,argv,lst,true,true);
88     if (app.get_erreur()==true) return 0;
89    
90    
91     if (app.get_action()==12)
92 francois 283 {
93 francois 432 char nomfichier[500];
94     char nomfichiersortie[500];
95     char nomfichierpoint[500];
96     double eng;
97     double eps;
98     double ind1,ind2;
99     int fechan,festim;
100     int numgroupe,numgeo;
101     app.recupere_parametre_string(1,nomfichier,(char*)"Fichier entrant manquant");
102     app.recupere_parametre_string(2,nomfichiersortie,(char*)"Fichier de sortie manquant");
103     app.recupere_parametre_string_avec_defaut(3,nomfichierpoint,(char*)"");
104     app.recupere_parametre_double(4,eng,(char*)"Valeur de l'écart nodal global");
105     app.recupere_parametre_double(5,eps,(char*)"Valeur de l'écart entre la géométrie et le maillage");
106     app.recupere_parametre_double_avec_defaut(6,ind1,4.);
107     app.recupere_parametre_double_avec_defaut(7,ind2,0.25);
108     app.recupere_parametre_int_avec_defaut(8,fechan,20);
109     app.recupere_parametre_int_avec_defaut(9,festim,10);
110     app.recupere_parametre_int_avec_defaut(13,numgroupe,0);
111     app.recupere_parametre_int_avec_defaut(14,numgeo,0);
112     if (app.get_erreur()==true) return 0;
113     app.affiche((char*)"Generation de carte de taille");
114     app.affiche((char*)"Lecture du fichier");
115 francois 283 MG_FILE gest(nomfichier);
116     int nbptctl=0;
117     double *ptctl=NULL;
118     char mess[255];
119 francois 432 if (strlen(nomfichierpoint)>0)
120     {
121     FILE* in=fopen(nomfichierpoint,"rt");
122     if (in!=NULL)
123     {
124     app.affiche((char*)"Lecture du fichier de points de controles");
125     char mess[255];
126     char* res=fgets(mess,255,in);
127     sscanf(mess,"%d",&nbptctl);
128     ptctl=new double[4*nbptctl];
129     for (int i=0;i<nbptctl;i++)
130     {
131 francois 283 char* res=fgets(mess,255,in);
132     sscanf(mess,"%lf %lf %lf %lf",ptctl+4*i,ptctl+4*i+1,ptctl+4*i+2,ptctl+4*i+3);
133 francois 432 }
134     fclose(in);
135     }
136     }
137 francois 283 FCT_GENERATEUR_FRONTIERE carte(gest,eng,eps,ind1,ind2,ptctl,nbptctl);
138 francois 432 app.affiche((char*)"Construction de la carte");
139 francois 283 MG_GROUPE_TOPOLOGIQUE* mggt=NULL;
140     if (numgroupe!=0)
141     {
142     MG_GEOMETRIE* geo=gest.get_mg_geometrieid(numgeo);
143     mggt=geo->get_mg_groupe_topologiqueid(numgroupe);
144     }
145     carte.construit(fechan,festim,mggt);
146 francois 432 app.affiche((char*)"Enregistrement de la carte");
147 francois 283 carte.enregistrer(nomfichiersortie);
148     if (nbptctl!=0) delete [] ptctl;
149 francois 432 app.affiche((char*)"Fin");
150 francois 283 }
151 francois 469 if (app.get_action()==10)
152 francois 283 {
153 francois 432 char nomfichier[500];
154     char nomfichiersortie[500];
155     double eng;
156     int fechan,festim;
157     int numgroupe,numgeo;
158     app.recupere_parametre_string(1,nomfichier,(char*)"Fichier entrant manquant");
159     app.recupere_parametre_string(2,nomfichiersortie,(char*)"Fichier de sortie manquant");
160     app.recupere_parametre_double(4,eng,(char*)"Valeur de l'écart nodal global");
161     app.recupere_parametre_int_avec_defaut(8,fechan,20);
162     app.recupere_parametre_int_avec_defaut(9,festim,10);
163     app.recupere_parametre_int_avec_defaut(13,numgroupe,0);
164     app.recupere_parametre_int_avec_defaut(14,numgeo,0);
165     if (app.get_erreur()==true) return 0;
166     app.affiche((char*)"Generation de carte de taille");
167     app.affiche((char*)"Lecture du fichier");
168 francois 283 MG_FILE gest(nomfichier);
169     FCT_GENERATEUR_CONSTANTE carte(gest,eng);
170 francois 432 app.affiche((char*)"Construction de la carte");
171 francois 283 MG_GROUPE_TOPOLOGIQUE* mggt=NULL;
172     if (numgroupe!=0)
173     {
174     MG_GEOMETRIE* geo=gest.get_mg_geometrieid(numgeo);
175     mggt=geo->get_mg_groupe_topologiqueid(numgroupe);
176     }
177     carte.construit(fechan,festim,mggt);
178 francois 432 app.affiche((char*)"Enregistrement de la carte");
179 francois 283 carte.enregistrer(nomfichiersortie);
180 francois 432 app.affiche((char*)"Fin");
181 francois 283 }
182 francois 432 if (app.get_action()==11)
183 francois 283 {
184 francois 432 char nomfichier[500];
185     char nomfichiersortie[500];
186     char nomfichierpoint[500];
187     double eng;
188     int fechan,festim;
189     double ind1,ind2;
190     app.recupere_parametre_string(1,nomfichier,(char*)"Fichier entrant manquant");
191     app.recupere_parametre_string(2,nomfichiersortie,(char*)"Fichier de sortie manquant");
192     app.recupere_parametre_string(3,nomfichierpoint,(char*)"Fichier de points manquant");
193     app.recupere_parametre_double(4,eng,(char*)"Valeur de l'écart nodal global");
194     app.recupere_parametre_double_avec_defaut(6,ind1,4.);
195     app.recupere_parametre_double_avec_defaut(7,ind2,0.25);
196     app.recupere_parametre_int_avec_defaut(8,fechan,20);
197     app.recupere_parametre_int_avec_defaut(9,festim,10);
198     if (app.get_erreur()==true) return 0;
199     app.affiche((char*)"Generation de carte de taille");
200     app.affiche((char*)" a partir du fichier d'estimation");
201 francois 394 FCT_GENERATEUR_FICHIER carte(nomfichierpoint,eng,ind1,ind2);
202 francois 432 app.affiche((char*)"Construction de la carte");
203 francois 283 carte.construit(fechan,festim);
204 francois 432 app.affiche((char*)"Enregistrement de la carte");
205 francois 283 carte.enregistrer(nomfichiersortie);
206 francois 432 app.affiche((char*)"Fin");
207 francois 283 }
208 francois 469 if (app.get_action()==15)
209     {
210     char nomfichier[500];
211     char nomfichiersortie[500];
212     double eng;
213     int fechan,nx,ny,nz;
214     int numgeo;
215     char nom[1000];
216     app.recupere_parametre_string(1,nomfichier,(char*)"Fichier entrant manquant");
217     app.recupere_parametre_string(2,nomfichiersortie,(char*)"Fichier de sortie manquant");
218     app.recupere_parametre_double(4,eng,(char*)"Valeur de l'écart nodal global");
219     app.recupere_parametre_int_avec_defaut(8,fechan,20);
220     app.recupere_parametre_int_avec_defaut(14,numgeo,0);
221     app.recupere_parametre_int_avec_defaut(16,nx,10);
222     app.recupere_parametre_int_avec_defaut(17,ny,10);
223     app.recupere_parametre_int_avec_defaut(18,nz,10);
224     app.recupere_parametre_string(19,nom,"Nom du fichier solution manquant");
225     if (app.get_erreur()==true) return 0;
226     app.affiche((char*)"Generation de carte de taille");
227     app.affiche((char*)"Lecture du fichier");
228     MG_FILE gest(nomfichier);
229     MG_GEOMETRIE* geo;
230     if (numgeo==0) geo=gest.get_mg_geometrie(0); else geo=gest.get_mg_geometrieid(numgeo);
231     MG_GESTIONNAIRE gest1;
232     FCT_TAILLE_FEM_SOLUTION_GENERATEUR_CONSTANT carte(&gest1,geo,eng,fechan,nx,ny,nz,nom);
233     app.affiche((char*)"Construction de la carte");
234     carte.construit();
235     app.affiche((char*)"Enregistrement de la carte");
236     carte.enregistrer(nomfichiersortie);
237     app.affiche((char*)"Fin");
238     }
239 francois 283
240     return 0;
241     }
242    
243    
244    
245     #pragma package(smart_init)