ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/mg_maillage.h
Revision: 763
Committed: Wed Dec 2 19:55:53 2015 UTC (9 years, 5 months ago) by francois
Content type: text/plain
File size: 8756 byte(s)
Log Message:
Le fichier MAGiC est maintenant versionné. LA version actuelle est 2.0. L'ancienne version est 1.0.
Tout est transparent pour l'utilisateur. Les vieilles versions sont lisibles mais les nouveaux enregistrements sont dans la version la plus récente.
Changement des conditions aux limites : ajout d'un parametre pour dire si la condition numerique est une valeur ou une formule ou un lien vers une autre entité magic.
Les parametres pour saisir sont maintenant -ccf -ccfi -ccff -ccft -ccfit -ccfft

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     // mg_maillage.h
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 � 11H22
21     //------------------------------------------------------------
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 francois 308 #include "mg_quadrangle.h"
51 francois 283 #include "mg_tetra.h"
52 francois 308 #include "mg_hexa.h"
53 francois 283 #include "mg_geometrie.h"
54 francois 481 #include "ot_boite_3d.h"
55 francois 283
56    
57 francois 375 #include "mg_definition.h"
58 francois 283
59    
60     typedef std::set<MG_IDENTIFICATEUR*,inf<MG_IDENTIFICATEUR*> > LISTE_ENTITE;
61     typedef std::map<unsigned long,MG_NOEUD*,std::less<unsigned long> > LISTE_MG_NOEUD;
62     typedef std::map<unsigned long,MG_SEGMENT*,std::less<unsigned long> > LISTE_MG_SEGMENT;
63     typedef std::map<unsigned long,MG_TRIANGLE*,std::less<unsigned long> > LISTE_MG_TRIANGLE;
64 francois 308 typedef std::map<unsigned long,MG_QUADRANGLE*,std::less<unsigned long> > LISTE_MG_QUADRANGLE;
65 francois 283 typedef std::map<unsigned long,MG_TETRA*,std::less<unsigned long> > LISTE_MG_TETRA;
66 francois 308 typedef std::map<unsigned long,MG_HEXA*,std::less<unsigned long> > LISTE_MG_HEXA;
67 francois 283
68     DLLPORTGEOMETRIE std::ostream& operator << (std::ostream& o,class MG_MAILLAGE& maillage);
69    
70    
71     class DLLPORTGEOMETRIE MG_MAILLAGE : public MG_IDENTIFICATEUR
72     {
73     public:
74     MG_MAILLAGE(MG_GEOMETRIE* geo);
75     MG_MAILLAGE(unsigned long num,MG_GEOMETRIE* geo);
76 francois 516 MG_MAILLAGE(FEM_MAILLAGE* fem,double coef);
77 francois 283 virtual ~MG_MAILLAGE();
78     MG_MAILLAGE* dupliquer(MG_GESTIONNAIRE *gest);
79 francois 517 MG_MAILLAGE* detacher(MG_GESTIONNAIRE *gest);
80 francois 283 MG_GEOMETRIE* get_mg_geometrie(void);
81 francois 581 void change_mg_geometrie(MG_GEOMETRIE* geo) {mg_geometrie=geo;};
82 francois 283
83     bool contient ( MG_IDENTIFICATEUR * id );
84    
85     MG_NOEUD* ajouter_mg_noeud(MG_ELEMENT_TOPOLOGIQUE* topo,double xx,double yy,double zz,int origine,unsigned long num=0);
86     int ajouter_mg_noeud(MG_NOEUD *mgnoeud);
87     MG_NOEUD* get_mg_noeudid(unsigned long num);
88     MG_NOEUD* get_mg_noeud(unsigned int num);
89     MG_NOEUD* get_premier_noeud(LISTE_MG_NOEUD::iterator & it);
90     MG_NOEUD* get_suivant_noeud(LISTE_MG_NOEUD::iterator & it);
91     unsigned int get_nb_mg_noeud(void);
92     int supprimer_mg_noeudid(unsigned long num);
93     int supprimer_mg_noeud(unsigned int num);
94     void supprimer_tout_mg_noeud(void);
95    
96    
97    
98     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);
99     int ajouter_mg_segment(MG_SEGMENT *mgsegment);
100     MG_SEGMENT* get_mg_segmentid(unsigned long num);
101     MG_SEGMENT* get_mg_segment(unsigned int num);
102     MG_SEGMENT* get_mg_segment(unsigned long noeud1id,unsigned long noeud2id);
103     MG_SEGMENT* get_premier_segment(LISTE_MG_SEGMENT::iterator & );
104     MG_SEGMENT* get_suivant_segment(LISTE_MG_SEGMENT::iterator & );
105     unsigned int get_nb_mg_segment(void);
106     int supprimer_mg_segmentid(unsigned long num);
107     int supprimer_mg_segment(unsigned int num);
108     void supprimer_tout_mg_segment(void);
109    
110    
111     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);
112     int ajouter_mg_triangle(MG_TRIANGLE *mgtriangle);
113     MG_TRIANGLE* get_mg_triangleid(unsigned long num);
114     MG_TRIANGLE* get_mg_triangle(unsigned int num);
115     MG_TRIANGLE* get_mg_triangle(unsigned long noeud1id,unsigned long noeud2id,unsigned long noeud3id);
116     MG_TRIANGLE* get_premier_triangle(LISTE_MG_TRIANGLE::iterator & it);
117     MG_TRIANGLE* get_suivant_triangle(LISTE_MG_TRIANGLE::iterator & it);
118     unsigned int get_nb_mg_triangle(void);
119     int supprimer_mg_triangleid(unsigned long num);
120     int supprimer_mg_triangle(unsigned int num);
121     void supprimer_tout_mg_triangle(void);
122 francois 308
123    
124     MG_QUADRANGLE* ajouter_mg_quadrangle(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);
125     int ajouter_mg_quadrangle(MG_QUADRANGLE *mgquadrangle);
126     MG_QUADRANGLE* get_mg_quadrangleid(unsigned long num);
127     MG_QUADRANGLE* get_mg_quadrangle(unsigned int num);
128     MG_QUADRANGLE* get_mg_quadrangle(unsigned long noeud1id,unsigned long noeud2id,unsigned long noeud3id,unsigned long noeud4id);
129     MG_QUADRANGLE* get_premier_quadrangle(LISTE_MG_QUADRANGLE::iterator & it);
130     MG_QUADRANGLE* get_suivant_quadrangle(LISTE_MG_QUADRANGLE::iterator & it);
131     unsigned int get_nb_mg_quadrangle(void);
132     int supprimer_mg_quadrangleid(unsigned long num);
133     int supprimer_mg_quadrangle(unsigned int num);
134     void supprimer_tout_mg_quadrangle(void);
135 francois 283
136     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);
137     int ajouter_mg_tetra(MG_TETRA *mgtetra);
138     MG_TETRA* get_mg_tetraid(unsigned long num);
139     MG_TETRA* get_mg_tetra(unsigned int num);
140 francois 363 MG_TETRA* get_mg_tetra(MG_NOEUD* noeud1,MG_NOEUD* noeud2,MG_NOEUD* noeud3,MG_NOEUD* noeud4);
141 francois 283 MG_TETRA* get_premier_tetra(LISTE_MG_TETRA::iterator & it);
142     MG_TETRA* get_suivant_tetra(LISTE_MG_TETRA::iterator & it);
143     unsigned int get_nb_mg_tetra(void);
144     int supprimer_mg_tetraid(unsigned long num);
145     int supprimer_mg_tetra(unsigned int num);
146     void supprimer_tout_mg_tetra(void);
147 francois 308
148    
149     MG_HEXA* ajouter_mg_hexa(MG_ELEMENT_TOPOLOGIQUE* topo,class MG_NOEUD *mgnoeud1,class MG_NOEUD *mgnoeud2,class MG_NOEUD *mgnoeud3,class MG_NOEUD *mgnoeud4,class MG_NOEUD *mgnoeud5,class MG_NOEUD *mgnoeud6,class MG_NOEUD *mgnoeud7,class MG_NOEUD *mgnoeud8,int origine,unsigned long num=0);
150     int ajouter_mg_hexa(MG_HEXA *mghexa);
151     MG_HEXA* get_mg_hexaid(unsigned long num);
152     MG_HEXA* get_mg_hexa(unsigned int num);
153 francois 363 MG_HEXA* get_mg_hexa(MG_NOEUD* noeud1,MG_NOEUD* noeud2,MG_NOEUD* noeud3,MG_NOEUD* noeud4,MG_NOEUD* noeud5,MG_NOEUD* noeud6,MG_NOEUD* noeud7,MG_NOEUD* noeud8);
154 francois 308 MG_HEXA* get_premier_hexa(LISTE_MG_HEXA::iterator & it);
155     MG_HEXA* get_suivant_hexa(LISTE_MG_HEXA::iterator & it);
156     unsigned int get_nb_mg_hexa(void);
157     int supprimer_mg_hexaid(unsigned long num);
158     int supprimer_mg_hexa(unsigned int num);
159     void supprimer_tout_mg_hexa(void);
160    
161    
162 francois 283 static int DIMENSIONMAILLAGESANSTOPO;
163    
164     void change_gestionnaire(class MG_GESTIONNAIRE* mggest);
165    
166 francois 763 virtual void enregistrer(std::ostream& o,double version);
167 francois 283 virtual void enregistrer_sous_mesh_1D(std::ostream& o);
168     virtual void enregistrer_sous_mesh_2D(std::ostream& o);
169     virtual void enregistrer_sous_mesh_3D(std::ostream& o);
170    
171     //virtual void exporter_cosmos(std::string& nomfic); en commentaire dans le .cpp
172     virtual void exporter_mesh(std::string& nomfic);
173     virtual void exporter_giref(std::string& nomfic);
174    
175     friend std::ostream& operator << (std::ostream& o,MG_MAILLAGE& maillage);
176     class MG_SOLUTION* calculer_carte_taille_reelle(char* nomfichier);
177     MG_GESTIONNAIRE* get_gestionnaire(void);
178 francois 465 void change_param_structure(BOITE_3D btmp,int nxtmp,int nytmp,int nztmp);
179     bool get_param_structure(BOITE_3D &btmp,int &nxtmp,int &nytmp,int &nztmp);
180     bool get_est_structure(void);
181    
182    
183 francois 283 private:
184    
185     LISTE_ENTITE lst_entite;
186     LISTE_MG_NOEUD lst_mg_noeud;
187     LISTE_MG_SEGMENT lst_mg_segment;
188     LISTE_MG_TRIANGLE lst_mg_triangle;
189 francois 308 LISTE_MG_QUADRANGLE lst_mg_quadrangle;
190 francois 283 LISTE_MG_TETRA lst_mg_tetra;
191 francois 308 LISTE_MG_HEXA lst_mg_hexa;
192 francois 283
193     MG_GEOMETRIE* mg_geometrie;
194     MG_GESTIONNAIRE *gest;
195 francois 465
196    
197     BOITE_3D boite_englobante;
198     int nx,ny,nz;
199     bool est_structure;
200 francois 558
201     friend class MAILLEUR3D;
202 francois 283 };
203    
204    
205    
206     #endif
207    
208