ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/mg_geometrie.h
Revision: 195
Committed: Thu Jul 16 22:05:49 2009 UTC (15 years, 10 months ago) by francois
Content type: text/plain
Original Path: magic/lib/geometrie/geometrie/src/mg_geometrie.h
File size: 11915 byte(s)
Log Message:
Ajout de groupe de topologie pour appliquer des algos sur une partie du fichier magic seulement
Ajout de methode qui permette de connaitre la topologie sous jacente a une topologie donnee
Gestion des maillages FEM qui ne sont attaches a une geometrie

File Contents

# User Rev Content
1 5 //------------------------------------------------------------
2     //------------------------------------------------------------
3     // MAGiC
4 francois 187 // Jean Christophe Cuilli�re et Vincent FRANCOIS
5     // D�partement de G�nie M�canique - UQTR
6 5 //------------------------------------------------------------
7 francois 187 // 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 5 // des auteurs (contact : francois@uqtr.ca)
12     //------------------------------------------------------------
13     //------------------------------------------------------------
14     //
15     // mg_geometrie.h
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20 francois 187 // Version du 02/03/2006 � 11H22
21 5 //------------------------------------------------------------
22     //------------------------------------------------------------
23     #ifndef __MGGEOMETRIE_
24     #define __MGGEOMETRIE_
25    
26     #ifdef WINDOWS_VERSION
27     #ifdef BUILT_DLL_GEOMETRIE
28     #define DLLPORTGEOMETRIE __declspec(dllexport)
29     #else
30     #define DLLPORTGEOMETRIE __declspec(dllimport)
31     #endif
32     #else
33     #define DLLPORTGEOMETRIE
34     #endif
35    
36    
37     #ifdef BORLANDCPP
38     #include <map.h>
39     #include <set.h>
40     #else
41     #include <map>
42     #include <set>
43     #endif
44    
45    
46     #include "mg_identificateur.h"
47     #include "mg_point.h"
48     #include "mg_courbe.h"
49     #include "mg_surface.h"
50     #include "mg_sommet.h"
51     #include "mg_cosommet.h"
52     #include "mg_arete.h"
53     #include "mg_coarete.h"
54     #include "mg_boucle.h"
55     #include "mg_coface.h"
56     #include "mg_face.h"
57     #include "mg_coquille.h"
58     #include "mg_volume.h"
59     #include "mg_poutre.h"
60     #include "mg_coque.h"
61     #include "mg_visu_courbe.h"
62 francois 195 #include "mg_groupe_topologique.h"
63 5
64    
65     #include "geom.h"
66    
67    
68     typedef std::set<MG_IDENTIFICATEUR*,inf<MG_IDENTIFICATEUR*> > LISTE_ENTITE;
69     typedef std::map<unsigned long,MG_POINT*,std::less<unsigned long> > LISTE_MG_POINT;
70     typedef std::map<unsigned long,MG_COURBE*,std::less<unsigned long> > LISTE_MG_COURBE;
71     typedef std::map<unsigned long,MG_SURFACE*,std::less<unsigned long> > LISTE_MG_SURFACE;
72     typedef std::map<unsigned long,MG_SOMMET*,std::less<unsigned long> > LISTE_MG_SOMMET;
73     typedef std::map<unsigned long,MG_COSOMMET*,std::less<unsigned long> > LISTE_MG_COSOMMET;
74     typedef std::map<unsigned long,MG_ARETE*,std::less<unsigned long> > LISTE_MG_ARETE;
75     typedef std::map<unsigned long,MG_COARETE*,std::less<unsigned long> > LISTE_MG_COARETE;
76     typedef std::map<unsigned long,MG_BOUCLE*,std::less<unsigned long> > LISTE_MG_BOUCLE;
77     typedef std::map<unsigned long,MG_FACE*,std::less<unsigned long> > LISTE_MG_FACE;
78     typedef std::map<unsigned long,MG_COFACE*,std::less<unsigned long> > LISTE_MG_COFACE;
79     typedef std::map<unsigned long,MG_COQUILLE*,std::less<unsigned long> > LISTE_MG_COQUILLE;
80     typedef std::map<unsigned long,MG_VOLUME*,std::less<unsigned long> > LISTE_MG_VOLUME;
81     typedef std::map<unsigned long,MG_COQUE*,std::less<unsigned long> > LISTE_MG_COQUE;
82     typedef std::map<unsigned long,MG_POUTRE*,std::less<unsigned long> > LISTE_MG_POUTRE;
83     typedef std::map<unsigned long,MG_VISU_COURBE*,std::less<unsigned long> > LISTE_MG_VISU_COURBE;
84 francois 195 typedef std::map<unsigned long,MG_GROUPE_TOPOLOGIQUE*,std::less<unsigned long> > LISTE_MG_GROUPE_TOPOLOGIQUE;
85 5
86    
87    
88     DLLPORTGEOMETRIE std::ostream& operator << (std::ostream& o,class MG_GEOMETRIE& geo);
89    
90     class DLLPORTGEOMETRIE MG_GEOMETRIE : public MG_IDENTIFICATEUR
91     {
92     public:
93 francois 187 MG_GEOMETRIE(char *type,const char *nom=NULL,double unite=1.0,double eps=1e-6);
94     MG_GEOMETRIE(char *type,unsigned long num,const char *nom=NULL,double unite=1.0,double eps=1e-6);
95 5 virtual ~MG_GEOMETRIE();
96    
97     int ajouter_mg_point(MG_POINT *mgpt);
98     MG_POINT* get_mg_pointid(unsigned long num);
99     MG_POINT* get_mg_point(unsigned int num);
100     MG_POINT* get_premier_point(LISTE_MG_POINT::iterator & it);
101     MG_POINT* get_suivant_point(LISTE_MG_POINT::iterator & it);
102     unsigned int get_nb_mg_point(void);
103     int supprimer_mg_pointid(unsigned long num);
104     int supprimer_mg_point(unsigned int num);
105     void supprimer_tout_mg_point(void);
106    
107     int ajouter_mg_courbe(MG_COURBE *mgcrb);
108     MG_COURBE* get_mg_courbeid(unsigned long num);
109     MG_COURBE* get_mg_courbe(unsigned int num);
110     MG_COURBE* get_premier_courbe(LISTE_MG_COURBE::iterator & it) ;
111     MG_COURBE* get_suivant_courbe(LISTE_MG_COURBE::iterator & it) ;
112     unsigned int get_nb_mg_courbe(void);
113     int supprimer_mg_courbeid(unsigned long num);
114     int supprimer_mg_courbe(unsigned int num);
115     void supprimer_tout_mg_courbe(void);
116    
117    
118     int ajouter_mg_surface(MG_SURFACE *mgsrf);
119     MG_SURFACE* get_mg_surfaceid(unsigned long num);
120     MG_SURFACE* get_mg_surface(unsigned int num);
121     MG_SURFACE* get_premier_surface(LISTE_MG_SURFACE::iterator & it);
122     MG_SURFACE* get_suivant_surface(LISTE_MG_SURFACE::iterator & it);
123     unsigned int get_nb_mg_surface(void);
124     int supprimer_mg_surfaceid(unsigned long num);
125     int supprimer_mg_surface(unsigned int num);
126     void supprimer_tout_mg_surface(void);
127    
128    
129     int ajouter_mg_sommet(MG_SOMMET *mgsom);
130     MG_SOMMET* get_mg_sommetid(unsigned long num);
131     MG_SOMMET* get_mg_sommetid(std::string id);
132     MG_SOMMET* get_mg_sommet(unsigned int num);
133     MG_SOMMET* get_premier_sommet(LISTE_MG_SOMMET::iterator & it) ;
134     MG_SOMMET* get_suivant_sommet(LISTE_MG_SOMMET::iterator & it) ;
135     unsigned int get_nb_mg_sommet(void);
136     int supprimer_mg_sommetid(unsigned long num);
137     int supprimer_mg_sommet(unsigned int num);
138     void supprimer_tout_mg_sommet(void);
139    
140     int ajouter_mg_arete(MG_ARETE *mgarete);
141     MG_ARETE* get_mg_areteid(unsigned long num);
142     MG_ARETE* get_mg_areteid(std::string id);
143     MG_ARETE* get_mg_arete(unsigned int num);
144     MG_ARETE* get_premier_arete(LISTE_MG_ARETE::iterator & it);
145     MG_ARETE* get_suivant_arete(LISTE_MG_ARETE::iterator & it);
146     unsigned int get_nb_mg_arete(void);
147     int supprimer_mg_areteid(unsigned long num);
148     int supprimer_mg_arete(unsigned int num);
149     void supprimer_tout_mg_arete(void);
150    
151     int ajouter_mg_boucle(MG_BOUCLE *mgboucle,MG_FACE* mgface);
152     int ajouter_mg_boucle(MG_BOUCLE *mgboucle,MG_POUTRE* mgpoutre);
153     MG_BOUCLE* get_mg_boucleid(unsigned long num);
154     MG_BOUCLE* get_mg_boucle(unsigned int num);
155     MG_BOUCLE* get_premier_boucle(LISTE_MG_BOUCLE::iterator & it);
156     MG_BOUCLE* get_suivant_boucle(LISTE_MG_BOUCLE::iterator & it);
157     unsigned int get_nb_mg_boucle(void);
158     int supprimer_mg_boucleid(unsigned long num);
159     int supprimer_mg_boucle(unsigned int num);
160     void supprimer_tout_mg_boucle(void);
161    
162    
163     int ajouter_mg_face(MG_FACE *mgface);
164     MG_FACE* get_mg_faceid(unsigned long num);
165     MG_FACE* get_mg_faceid(std::string num);
166     MG_FACE* get_mg_face(unsigned int num);
167     MG_FACE* get_premier_face(LISTE_MG_FACE::iterator & it);
168     MG_FACE* get_suivant_face(LISTE_MG_FACE::iterator & it);
169     unsigned int get_nb_mg_face(void);
170     int supprimer_mg_faceid(unsigned long num);
171     int supprimer_mg_face(unsigned int num);
172     void supprimer_tout_mg_face(void);
173    
174     int ajouter_mg_coquille(MG_COQUILLE *mgcoq,MG_VOLUME *mgvol);
175     int ajouter_mg_coquille(MG_COQUILLE *mgcoq,MG_COQUE *mgcoque);
176     MG_COQUILLE* get_mg_coquilleid(unsigned long num);
177     MG_COQUILLE* get_mg_coquille(unsigned int num);
178     MG_COQUILLE* get_premier_coquille(LISTE_MG_COQUILLE::iterator & it);
179     MG_COQUILLE* get_suivant_coquille(LISTE_MG_COQUILLE::iterator & it) ;
180     unsigned int get_nb_mg_coquille(void);
181     int supprimer_mg_coquilleid(unsigned long num);
182     int supprimer_mg_coquille(unsigned int num);
183     void supprimer_tout_mg_coquille(void);
184    
185     int ajouter_mg_volume(MG_VOLUME *mgvol);
186     MG_VOLUME* get_mg_volumeid(unsigned long num);
187     MG_VOLUME* get_mg_volumeid(std::string id);
188     MG_VOLUME* get_mg_volume(unsigned int num);
189     MG_VOLUME* get_premier_volume(LISTE_MG_VOLUME::iterator & it) ;
190     MG_VOLUME* get_suivant_volume(LISTE_MG_VOLUME::iterator & it) ;
191     unsigned int get_nb_mg_volume(void);
192     int supprimer_mg_volumeid(unsigned long num);
193     int supprimer_mg_volume(unsigned int num);
194     void supprimer_tout_mg_volume(void);
195    
196    
197     int ajouter_mg_coque(MG_COQUE *mgvol);
198     MG_COQUE* get_mg_coqueid(unsigned long num);
199     MG_COQUE* get_mg_coqueid(std::string id);
200     MG_COQUE* get_mg_coque(unsigned int num);
201     MG_COQUE* get_premier_coque(LISTE_MG_COQUE::iterator & it);
202     MG_COQUE* get_suivant_coque(LISTE_MG_COQUE::iterator & it) ;
203     unsigned int get_nb_mg_coque(void);
204     int supprimer_mg_coqueid(unsigned long num);
205     int supprimer_mg_coque(unsigned int num);
206     void supprimer_tout_mg_coque(void);
207    
208    
209     int ajouter_mg_poutre(MG_POUTRE *mgvol);
210     MG_POUTRE* get_mg_poutreid(unsigned long num);
211     MG_POUTRE* get_mg_poutreid(std::string id);
212     MG_POUTRE* get_mg_poutre(unsigned int num);
213     MG_POUTRE* get_premier_poutre(LISTE_MG_POUTRE::iterator & it) ;
214     MG_POUTRE* get_suivant_poutre(LISTE_MG_POUTRE::iterator & it) ;
215     unsigned int get_nb_mg_poutre(void);
216     int supprimer_mg_poutreid(unsigned long num);
217     int supprimer_mg_poutre(unsigned int num);
218     void supprimer_tout_mg_poutre(void);
219    
220 francois 195 int ajouter_mg_groupe_topologique(MG_GROUPE_TOPOLOGIQUE *mgvol);
221     MG_GROUPE_TOPOLOGIQUE* get_mg_groupe_topologiqueid(unsigned long num);
222     MG_GROUPE_TOPOLOGIQUE* get_mg_groupe_topologique(unsigned int num);
223     MG_GROUPE_TOPOLOGIQUE* get_premier_groupe_topologique(LISTE_MG_GROUPE_TOPOLOGIQUE::iterator & it) ;
224     MG_GROUPE_TOPOLOGIQUE* get_suivant_groupe_topologique(LISTE_MG_GROUPE_TOPOLOGIQUE::iterator & it) ;
225     unsigned int get_nb_mg_groupe_topologique(void);
226     int supprimer_mg_groupe_topologiqueid(unsigned long num);
227     int supprimer_mg_groupe_topologique(unsigned int num);
228     void supprimer_tout_mg_groupe_topologique(void);
229 5
230    
231 francois 195
232     MG_COSOMMET* ajouter_mg_cosommet(MG_ARETE *mgarete,MG_SOMMET *mgsom);
233 5 MG_COSOMMET* ajouter_mg_cosommet(unsigned long num,MG_ARETE *mgarete,MG_SOMMET *mgsom);
234     int supprimer_mg_cosommet(MG_COSOMMET* mgcosom);
235    
236    
237     MG_COARETE* ajouter_mg_coarete(MG_ARETE *mgarete,MG_BOUCLE *mgboucle,int sens);
238     MG_COARETE* ajouter_mg_coarete(unsigned long num,MG_ARETE *mgarete,MG_BOUCLE *mgboucle,int sens);
239     int supprimer_mg_coarete(MG_COARETE* mgcoarete);
240    
241    
242     MG_COFACE* ajouter_mg_coface(MG_FACE *mgface,MG_COQUILLE *mgcoq,int sens);
243     MG_COFACE* ajouter_mg_coface(unsigned long num,MG_FACE *mgface,MG_COQUILLE *mgcoq,int sens);
244     int supprimer_mg_coface(MG_COFACE* mgcoface);
245    
246    
247     int ajouter_mg_visu_courbe(MG_VISU_COURBE *mgvcrb);
248     MG_VISU_COURBE* get_mg_visu_courbeid(unsigned long num);
249     MG_VISU_COURBE* get_mg_visu_courbe(unsigned int num);
250     unsigned int get_nb_mg_visu_courbe(void);
251     int supprimer_mg_visu_courbeid(unsigned long num);
252     int supprimer_mg_visu_courbe(unsigned int num);
253     void supprimer_tout_mg_visu_courbe(void);
254    
255     void change_gest_materiau(char* nom);
256     char* get_gest_materiau(void);
257    
258    
259     virtual void enregistrer(std::ostream& o);
260     friend std::ostream& operator << (std::ostream& o,MG_GEOMETRIE& geo);
261    
262     char* get_nom_du_fichier(void);
263     char* get_type_geometrie(void);
264    
265     void cree_entite_visuel(double facteur=1.);
266    
267    
268     void change_gestionnaire(class MG_GESTIONNAIRE* mggest);
269     double get_valeur_unite(void);
270     void change_valeur_unite(double val);
271 francois 187 double get_valeur_precision(void);
272     void change_valeur_precision(double val);
273 5
274     private:
275     char *nom_du_fichier;
276     char type_geo[8];
277    
278 francois 187 double precision;
279    
280 5 std::string gest_materiau;
281    
282    
283     LISTE_ENTITE lst_entite;
284     LISTE_MG_POINT lst_mg_point;
285     LISTE_MG_COURBE lst_mg_courbe;
286     LISTE_MG_SURFACE lst_mg_surface;
287     LISTE_MG_SOMMET lst_mg_sommet;
288     LISTE_MG_COSOMMET lst_mg_cosommet;
289     LISTE_MG_ARETE lst_mg_arete;
290     LISTE_MG_COARETE lst_mg_coarete;
291     LISTE_MG_BOUCLE lst_mg_boucle;
292     LISTE_MG_FACE lst_mg_face;
293     LISTE_MG_COFACE lst_mg_coface;
294     LISTE_MG_COQUILLE lst_mg_coquille;
295     LISTE_MG_VOLUME lst_mg_volume;
296     LISTE_MG_COQUE lst_mg_coque;
297     LISTE_MG_POUTRE lst_mg_poutre;
298 francois 195 LISTE_MG_GROUPE_TOPOLOGIQUE lst_mg_groupe_topologique;
299 5 LISTE_MG_VISU_COURBE lst_mg_visu_courbe;
300     MG_GESTIONNAIRE *gest;
301     double valeur_unite;
302     };
303    
304    
305    
306     #endif
307    
308    
309    
310