ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/mg_maillage.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_maillage.h
File size: 6137 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 195 // Jean Christophe Cuilli�re et Vincent FRANCOIS
5     // D�partement de G�nie M�canique - UQTR
6 5 //------------------------------------------------------------
7 francois 195 // 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_maillage.h
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20 francois 195 // Version du 02/03/2006 � 11H22
21 5 //------------------------------------------------------------
22     //------------------------------------------------------------
23     #ifndef __MGMAILLAGE_
24     #define __MGMAILLAGE_
25    
26    
27     #ifdef WINDOWS_VERSION
28     #ifdef BUILT_DLL_GEOMETRIE
29     #define DLLPORTGEOMETRIE __declspec(dllexport)
30     #else
31     #define DLLPORTGEOMETRIE __declspec(dllimport)
32     #endif
33     #else
34     #define DLLPORTGEOMETRIE
35     #endif
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_noeud.h"
48     #include "mg_segment.h"
49     #include "mg_triangle.h"
50     #include "mg_tetra.h"
51     #include "mg_geometrie.h"
52    
53    
54     #include "geom.h"
55    
56    
57     typedef std::set<MG_IDENTIFICATEUR*,inf<MG_IDENTIFICATEUR*> > LISTE_ENTITE;
58     typedef std::map<unsigned long,MG_NOEUD*,std::less<unsigned long> > LISTE_MG_NOEUD;
59     typedef std::map<unsigned long,MG_SEGMENT*,std::less<unsigned long> > LISTE_MG_SEGMENT;
60     typedef std::map<unsigned long,MG_TRIANGLE*,std::less<unsigned long> > LISTE_MG_TRIANGLE;
61     typedef std::map<unsigned long,MG_TETRA*,std::less<unsigned long> > LISTE_MG_TETRA;
62    
63     DLLPORTGEOMETRIE std::ostream& operator << (std::ostream& o,class MG_MAILLAGE& maillage);
64    
65    
66     class DLLPORTGEOMETRIE MG_MAILLAGE : public MG_IDENTIFICATEUR
67     {
68     public:
69     MG_MAILLAGE(MG_GEOMETRIE* geo);
70     MG_MAILLAGE(unsigned long num,MG_GEOMETRIE* geo);
71     virtual ~MG_MAILLAGE();
72     MG_MAILLAGE* dupliquer(MG_GESTIONNAIRE *gest);
73     MG_GEOMETRIE* get_mg_geometrie(void);
74    
75     bool contient ( MG_IDENTIFICATEUR * id );
76    
77 francois 35 MG_NOEUD* ajouter_mg_noeud(MG_ELEMENT_TOPOLOGIQUE* topo,double xx,double yy,double zz,int origine,unsigned long num=0);
78 5 int ajouter_mg_noeud(MG_NOEUD *mgnoeud);
79     MG_NOEUD* get_mg_noeudid(unsigned long num);
80     MG_NOEUD* get_mg_noeud(unsigned int num);
81     MG_NOEUD* get_premier_noeud(LISTE_MG_NOEUD::iterator & it);
82     MG_NOEUD* get_suivant_noeud(LISTE_MG_NOEUD::iterator & it);
83     unsigned int get_nb_mg_noeud(void);
84     int supprimer_mg_noeudid(unsigned long num);
85     int supprimer_mg_noeud(unsigned int num);
86     void supprimer_tout_mg_noeud(void);
87    
88    
89    
90 francois 35 MG_SEGMENT* ajouter_mg_segment(MG_ELEMENT_TOPOLOGIQUE* topo,class MG_NOEUD *mgnoeud1,class MG_NOEUD *mgnoeud2,int origine,double longue=0.0,unsigned long num=0);
91 5 int ajouter_mg_segment(MG_SEGMENT *mgsegment);
92     MG_SEGMENT* get_mg_segmentid(unsigned long num);
93     MG_SEGMENT* get_mg_segment(unsigned int num);
94     MG_SEGMENT* get_mg_segment(unsigned long noeud1id,unsigned long noeud2id);
95     MG_SEGMENT* get_premier_segment(LISTE_MG_SEGMENT::iterator & );
96     MG_SEGMENT* get_suivant_segment(LISTE_MG_SEGMENT::iterator & );
97     unsigned int get_nb_mg_segment(void);
98     int supprimer_mg_segmentid(unsigned long num);
99     int supprimer_mg_segment(unsigned int num);
100     void supprimer_tout_mg_segment(void);
101    
102    
103 francois 35 MG_TRIANGLE* ajouter_mg_triangle(MG_ELEMENT_TOPOLOGIQUE* topo,class MG_NOEUD *mgnoeud1,class MG_NOEUD *mgnoeud2,class MG_NOEUD *mgnoeud3,int origine,unsigned long num=0);
104 5 int ajouter_mg_triangle(MG_TRIANGLE *mgtriangle);
105     MG_TRIANGLE* get_mg_triangleid(unsigned long num);
106     MG_TRIANGLE* get_mg_triangle(unsigned int num);
107     MG_TRIANGLE* get_mg_triangle(unsigned long noeud1id,unsigned long noeud2id,unsigned long noeud3id);
108     MG_TRIANGLE* get_premier_triangle(LISTE_MG_TRIANGLE::iterator & it);
109     MG_TRIANGLE* get_suivant_triangle(LISTE_MG_TRIANGLE::iterator & it);
110     unsigned int get_nb_mg_triangle(void);
111     int supprimer_mg_triangleid(unsigned long num);
112     int supprimer_mg_triangle(unsigned int num);
113     void supprimer_tout_mg_triangle(void);
114    
115    
116 francois 35 MG_TETRA* ajouter_mg_tetra(MG_ELEMENT_TOPOLOGIQUE* topo,class MG_NOEUD *mgnoeud1,class MG_NOEUD *mgnoeud2,class MG_NOEUD *mgnoeud3,class MG_NOEUD *mgnoeud4,int origine,unsigned long num=0);
117 5 int ajouter_mg_tetra(MG_TETRA *mgtetra);
118     MG_TETRA* get_mg_tetraid(unsigned long num);
119     MG_TETRA* get_mg_tetra(unsigned int num);
120     MG_TETRA* get_mg_tetra(unsigned long noeud1id,unsigned long noeud2id,unsigned long noeud3id,unsigned long noeud4id);
121     MG_TETRA* get_premier_tetra(LISTE_MG_TETRA::iterator & it);
122     MG_TETRA* get_suivant_tetra(LISTE_MG_TETRA::iterator & it);
123     unsigned int get_nb_mg_tetra(void);
124     int supprimer_mg_tetraid(unsigned long num);
125     int supprimer_mg_tetra(unsigned int num);
126     void supprimer_tout_mg_tetra(void);
127    
128 francois 195 static int DIMENSIONMAILLAGESANSTOPO;
129 5
130     void change_gestionnaire(class MG_GESTIONNAIRE* mggest);
131    
132     virtual void enregistrer(std::ostream& o);
133     virtual void enregistrer_sous_mesh_1D(std::ostream& o);
134     virtual void enregistrer_sous_mesh_2D(std::ostream& o);
135     virtual void enregistrer_sous_mesh_3D(std::ostream& o);
136    
137     //virtual void exporter_cosmos(std::string& nomfic); en commentaire dans le .cpp
138     virtual void exporter_mesh(std::string& nomfic);
139     virtual void exporter_giref(std::string& nomfic);
140    
141     friend std::ostream& operator << (std::ostream& o,MG_MAILLAGE& maillage);
142 francois 35 class MG_SOLUTION* calculer_carte_taille_reelle(char* nomfichier);
143     MG_GESTIONNAIRE* get_gestionnaire(void);
144 5 private:
145    
146     LISTE_ENTITE lst_entite;
147     LISTE_MG_NOEUD lst_mg_noeud;
148     LISTE_MG_SEGMENT lst_mg_segment;
149     LISTE_MG_TRIANGLE lst_mg_triangle;
150     LISTE_MG_TETRA lst_mg_tetra;
151    
152     MG_GEOMETRIE* mg_geometrie;
153     MG_GESTIONNAIRE *gest;
154     };
155    
156    
157    
158     #endif
159    
160