ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/fem_maillage.h
Revision: 310
Committed: Thu Jan 26 21:14:45 2012 UTC (13 years, 3 months ago) by francois
Content type: text/plain
File size: 5751 byte(s)
Log Message:
Ajout des elements quadrangle et hexaedre dans les maillages FEM
Changement de la version des fichier de visu sous GMSH. Les .pos ont disparus et tout est intégré dans les .msh

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     // fem_maillage.h
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 � 11H22
21     //------------------------------------------------------------
22     //------------------------------------------------------------
23     #ifndef __FEMMAILLAGE_
24     #define __FEMMAILLAGE_
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 "fem_noeud.h"
48 francois 310 #include "fem_element1.h"
49     #include "fem_element2.h"
50     #include "fem_element3.h"
51    
52 francois 283 #include "geom.h"
53    
54    
55    
56    
57     typedef std::set<MG_IDENTIFICATEUR*,inf<MG_IDENTIFICATEUR*> > LISTE_ENTITE;
58     typedef std::map<unsigned long,FEM_NOEUD*,std::less<unsigned long> > LISTE_FEM_NOEUD;
59 francois 309 typedef std::map<unsigned long,FEM_ELEMENT1*,std::less<unsigned long> > LISTE_FEM_ELEMENT1;
60     typedef std::map<unsigned long,FEM_ELEMENT2*,std::less<unsigned long> > LISTE_FEM_ELEMENT2;
61     typedef std::map<unsigned long,FEM_ELEMENT3*,std::less<unsigned long> > LISTE_FEM_ELEMENT3;
62 francois 283
63     DLLPORTGEOMETRIE std::ostream& operator << (std::ostream& o,class FEM_MAILLAGE& maillage);
64    
65    
66     class DLLPORTGEOMETRIE FEM_MAILLAGE : public MG_IDENTIFICATEUR
67     {
68     public:
69     FEM_MAILLAGE(class MG_GEOMETRIE* geo,class MG_MAILLAGE* mai,int deg);
70     FEM_MAILLAGE(unsigned long num,MG_GEOMETRIE* geo,MG_MAILLAGE* mai,int deg);
71     virtual ~FEM_MAILLAGE();
72     MG_GEOMETRIE* get_mg_geometrie(void);
73     MG_MAILLAGE* get_mg_maillage(void);
74     void change_gestionnaire(class MG_GESTIONNAIRE* mggest);
75     int get_degre(void);
76    
77    
78     FEM_NOEUD* ajouter_fem_noeud(MG_NOEUD* mgnoeud,unsigned long num=0);
79     int ajouter_fem_noeud(FEM_NOEUD *femnoeud);
80     FEM_NOEUD* get_fem_noeudid(unsigned long num);
81     FEM_NOEUD* get_fem_noeud(unsigned int num);
82     FEM_NOEUD* get_premier_noeud(LISTE_FEM_NOEUD::iterator & it);
83     FEM_NOEUD* get_suivant_noeud(LISTE_FEM_NOEUD::iterator & it);
84     unsigned int get_nb_fem_noeud(void);
85     int supprimer_fem_noeudid(unsigned long num);
86     int supprimer_fem_noeud(unsigned int num);
87     void supprimer_tout_fem_noeud(void);
88    
89    
90    
91 francois 309 int ajouter_fem_element1(FEM_ELEMENT1 *femsegment);
92     FEM_ELEMENT1* get_fem_element1id(unsigned long num);
93     FEM_ELEMENT1* get_fem_element1(unsigned int num);
94     FEM_ELEMENT1* get_premier_element1(LISTE_FEM_ELEMENT1::iterator & it);
95     FEM_ELEMENT1* get_suivant_element1(LISTE_FEM_ELEMENT1::iterator & it);
96     unsigned int get_nb_fem_element1(void);
97     int supprimer_fem_element1id(unsigned long num);
98     int supprimer_fem_element1(unsigned int num);
99     void supprimer_tout_fem_element1(void);
100 francois 283
101    
102    
103 francois 309 int ajouter_fem_element2(FEM_ELEMENT2 *femtriangle);
104     FEM_ELEMENT2* get_fem_element2id(unsigned long num);
105     FEM_ELEMENT2* get_fem_element2(unsigned int num);
106     FEM_ELEMENT2* get_premier_element2(LISTE_FEM_ELEMENT2::iterator & it) ;
107     FEM_ELEMENT2* get_suivant_element2(LISTE_FEM_ELEMENT2::iterator & it) ;
108     unsigned int get_nb_fem_element2(void);
109     int supprimer_fem_element2id(unsigned long num);
110     int supprimer_fem_element2(unsigned int num);
111     void supprimer_tout_fem_element2(void);
112 francois 283
113 francois 309 int ajouter_fem_element3(FEM_ELEMENT3 *femelement3);
114     FEM_ELEMENT3* get_fem_element3id(unsigned long num);
115     FEM_ELEMENT3* get_fem_element3(unsigned int num);
116     FEM_ELEMENT3* get_premier_element3(LISTE_FEM_ELEMENT3::iterator & it);
117     FEM_ELEMENT3* get_suivant_element3(LISTE_FEM_ELEMENT3::iterator & it);
118     unsigned int get_nb_fem_element3(void);
119     int supprimer_fem_element3id(unsigned long num);
120     int supprimer_fem_element3(unsigned int num);
121     void supprimer_tout_fem_element3(void);
122 francois 283
123    
124     void construire(int num=0);
125     void exporter_cosmos(std::string& nomfic);
126     void optimise_numerotation(void);
127     void echange_numerotation(void);
128     bool contient ( MG_IDENTIFICATEUR * id );
129    
130     void calcul_deforme(class FEM_SOLUTION* solx,int numx,class FEM_SOLUTION* soly,int numy,class FEM_SOLUTION* solz,int numz);
131     int existe_deforme(void);
132     void active_deforme(void);
133 gervaislavoie 304 void desactive_deforme(void);
134 francois 283 double calcul_coef(void);
135    
136     virtual void enregistrer(std::ostream& o);
137     FEM_MAILLAGE* dupliquer(MG_GESTIONNAIRE* gest);
138 francois 310 void decompte(int &nb_noeud,int &nb_seg2,int &nb_seg3,int &nb_tri3,int &nb_tri6,int &nb_quad4,int &nb_quad8,int &nb_tet4,int &nb_tet10,int &nb_hex8,int &nb_hex20);
139 francois 283 friend std::ostream& operator << (std::ostream& o,FEM_MAILLAGE& maillage);
140     private:
141 francois 310 void construire_lineaire(void);
142 francois 283 void construire_quadratique(void);
143     LISTE_ENTITE lst_entite;
144     LISTE_FEM_NOEUD lst_fem_noeud;
145 francois 309 LISTE_FEM_ELEMENT1 lst_fem_element1;
146     LISTE_FEM_ELEMENT2 lst_fem_element2;
147     LISTE_FEM_ELEMENT3 lst_fem_element3;
148 francois 283 MG_GEOMETRIE* mg_geometrie;
149     MG_GESTIONNAIRE *gest;
150     MG_MAILLAGE* maillage;
151     int degre;
152     int deforme;
153     };
154    
155    
156    
157     #endif
158    
159