ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/mtu/src/fem_maillage.h
Revision: 1114
Committed: Wed May 3 18:29:42 2023 UTC (2 years ago) by francois
Content type: text/plain
File size: 10022 byte(s)
Log Message:
Étape 2  : remplacement du nom geometrie par mtu pour corresponde à la publi de mtu

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 399 #include "fem_element0.h"
49 francois 310 #include "fem_element1.h"
50     #include "fem_element2.h"
51     #include "fem_element3.h"
52 francois 399 #include "xfem_element0.h"
53 francois 380 #include "xfem_element1.h"
54     #include "xfem_element2.h"
55 francois 339 #include "xfem_element3.h"
56 francois 481 #include "ot_boite_3d.h"
57 francois 767 #include "tpl_map_entite.h"
58 francois 310
59 francois 375 #include "mg_definition.h"
60 francois 283
61    
62    
63    
64     typedef std::set<MG_IDENTIFICATEUR*,inf<MG_IDENTIFICATEUR*> > LISTE_ENTITE;
65     typedef std::map<unsigned long,FEM_NOEUD*,std::less<unsigned long> > LISTE_FEM_NOEUD;
66 francois 399 typedef std::map<unsigned long,FEM_ELEMENT0*,std::less<unsigned long> > LISTE_FEM_ELEMENT0;
67 francois 309 typedef std::map<unsigned long,FEM_ELEMENT1*,std::less<unsigned long> > LISTE_FEM_ELEMENT1;
68     typedef std::map<unsigned long,FEM_ELEMENT2*,std::less<unsigned long> > LISTE_FEM_ELEMENT2;
69     typedef std::map<unsigned long,FEM_ELEMENT3*,std::less<unsigned long> > LISTE_FEM_ELEMENT3;
70 francois 399 typedef std::map<unsigned long,XFEM_ELEMENT0*,std::less<unsigned long> > LISTE_XFEM_ELEMENT0;
71 francois 380 typedef std::map<unsigned long,XFEM_ELEMENT1*,std::less<unsigned long> > LISTE_XFEM_ELEMENT1;
72     typedef std::map<unsigned long,XFEM_ELEMENT2*,std::less<unsigned long> > LISTE_XFEM_ELEMENT2;
73 francois 339 typedef std::map<unsigned long,XFEM_ELEMENT3*,std::less<unsigned long> > LISTE_XFEM_ELEMENT3;
74 francois 283
75     DLLPORTGEOMETRIE std::ostream& operator << (std::ostream& o,class FEM_MAILLAGE& maillage);
76    
77    
78     class DLLPORTGEOMETRIE FEM_MAILLAGE : public MG_IDENTIFICATEUR
79     {
80     public:
81     FEM_MAILLAGE(class MG_GEOMETRIE* geo,class MG_MAILLAGE* mai,int deg);
82     FEM_MAILLAGE(unsigned long num,MG_GEOMETRIE* geo,MG_MAILLAGE* mai,int deg);
83     virtual ~FEM_MAILLAGE();
84     MG_GEOMETRIE* get_mg_geometrie(void);
85     MG_MAILLAGE* get_mg_maillage(void);
86     void change_gestionnaire(class MG_GESTIONNAIRE* mggest);
87     int get_degre(void);
88 francois 1112 void adapte_degre_importation_maillage(int deg);
89 francois 283
90    
91     FEM_NOEUD* ajouter_fem_noeud(MG_NOEUD* mgnoeud,unsigned long num=0);
92     int ajouter_fem_noeud(FEM_NOEUD *femnoeud);
93     FEM_NOEUD* get_fem_noeudid(unsigned long num);
94     FEM_NOEUD* get_fem_noeud(unsigned int num);
95     FEM_NOEUD* get_premier_noeud(LISTE_FEM_NOEUD::iterator & it);
96     FEM_NOEUD* get_suivant_noeud(LISTE_FEM_NOEUD::iterator & it);
97     unsigned int get_nb_fem_noeud(void);
98     int supprimer_fem_noeudid(unsigned long num);
99     int supprimer_fem_noeud(unsigned int num);
100     void supprimer_tout_fem_noeud(void);
101    
102    
103    
104 francois 399 int ajouter_fem_element0(FEM_ELEMENT0 *femnoeud);
105     FEM_ELEMENT0* get_fem_element0id(unsigned long num);
106     FEM_ELEMENT0* get_fem_element0(unsigned int num);
107     FEM_ELEMENT0* get_premier_element0(LISTE_FEM_ELEMENT0::iterator & it);
108     FEM_ELEMENT0* get_suivant_element0(LISTE_FEM_ELEMENT0::iterator & it);
109     unsigned int get_nb_fem_element0(void);
110     int supprimer_fem_element0id(unsigned long num);
111     int supprimer_fem_element0(unsigned int num);
112     void supprimer_tout_fem_element0(void);
113    
114 francois 309 int ajouter_fem_element1(FEM_ELEMENT1 *femsegment);
115     FEM_ELEMENT1* get_fem_element1id(unsigned long num);
116     FEM_ELEMENT1* get_fem_element1(unsigned int num);
117     FEM_ELEMENT1* get_premier_element1(LISTE_FEM_ELEMENT1::iterator & it);
118     FEM_ELEMENT1* get_suivant_element1(LISTE_FEM_ELEMENT1::iterator & it);
119     unsigned int get_nb_fem_element1(void);
120     int supprimer_fem_element1id(unsigned long num);
121     int supprimer_fem_element1(unsigned int num);
122     void supprimer_tout_fem_element1(void);
123 francois 283
124    
125    
126 francois 309 int ajouter_fem_element2(FEM_ELEMENT2 *femtriangle);
127     FEM_ELEMENT2* get_fem_element2id(unsigned long num);
128     FEM_ELEMENT2* get_fem_element2(unsigned int num);
129     FEM_ELEMENT2* get_premier_element2(LISTE_FEM_ELEMENT2::iterator & it) ;
130     FEM_ELEMENT2* get_suivant_element2(LISTE_FEM_ELEMENT2::iterator & it) ;
131     unsigned int get_nb_fem_element2(void);
132     int supprimer_fem_element2id(unsigned long num);
133     int supprimer_fem_element2(unsigned int num);
134     void supprimer_tout_fem_element2(void);
135 francois 283
136 francois 309 int ajouter_fem_element3(FEM_ELEMENT3 *femelement3);
137     FEM_ELEMENT3* get_fem_element3id(unsigned long num);
138     FEM_ELEMENT3* get_fem_element3(unsigned int num);
139     FEM_ELEMENT3* get_premier_element3(LISTE_FEM_ELEMENT3::iterator & it);
140     FEM_ELEMENT3* get_suivant_element3(LISTE_FEM_ELEMENT3::iterator & it);
141     unsigned int get_nb_fem_element3(void);
142     int supprimer_fem_element3id(unsigned long num);
143     int supprimer_fem_element3(unsigned int num);
144     void supprimer_tout_fem_element3(void);
145 francois 399
146     int ajouter_xfem_element0(XFEM_ELEMENT0 *femelement0);
147     XFEM_ELEMENT0* get_xfem_element0id(unsigned long num);
148     XFEM_ELEMENT0* get_xfem_element0(unsigned int num);
149     XFEM_ELEMENT0* get_premier_xelement0(LISTE_XFEM_ELEMENT0::iterator & it);
150     XFEM_ELEMENT0* get_suivant_xelement0(LISTE_XFEM_ELEMENT0::iterator & it);
151     unsigned int get_nb_xfem_element0(void);
152     int supprimer_xfem_element0id(unsigned long num);
153     int supprimer_xfem_element0(unsigned int num);
154     void supprimer_tout_xfem_element0(void);
155    
156 francois 380 int ajouter_xfem_element1(XFEM_ELEMENT1 *femelement1);
157     XFEM_ELEMENT1* get_xfem_element1id(unsigned long num);
158     XFEM_ELEMENT1* get_xfem_element1(unsigned int num);
159     XFEM_ELEMENT1* get_premier_xelement1(LISTE_XFEM_ELEMENT1::iterator & it);
160     XFEM_ELEMENT1* get_suivant_xelement1(LISTE_XFEM_ELEMENT1::iterator & it);
161     unsigned int get_nb_xfem_element1(void);
162     int supprimer_xfem_element1id(unsigned long num);
163     int supprimer_xfem_element1(unsigned int num);
164     void supprimer_tout_xfem_element1(void);
165    
166     int ajouter_xfem_element2(XFEM_ELEMENT2 *femelement2);
167     XFEM_ELEMENT2* get_xfem_element2id(unsigned long num);
168     XFEM_ELEMENT2* get_xfem_element2(unsigned int num);
169     XFEM_ELEMENT2* get_premier_xelement2(LISTE_XFEM_ELEMENT2::iterator & it);
170     XFEM_ELEMENT2* get_suivant_xelement2(LISTE_XFEM_ELEMENT2::iterator & it);
171     unsigned int get_nb_xfem_element2(void);
172     int supprimer_xfem_element2id(unsigned long num);
173     int supprimer_xfem_element2(unsigned int num);
174     void supprimer_tout_xfem_element2(void);
175    
176 francois 339 int ajouter_xfem_element3(XFEM_ELEMENT3 *femelement3);
177     XFEM_ELEMENT3* get_xfem_element3id(unsigned long num);
178     XFEM_ELEMENT3* get_xfem_element3(unsigned int num);
179     XFEM_ELEMENT3* get_premier_xelement3(LISTE_XFEM_ELEMENT3::iterator & it);
180     XFEM_ELEMENT3* get_suivant_xelement3(LISTE_XFEM_ELEMENT3::iterator & it);
181     unsigned int get_nb_xfem_element3(void);
182     int supprimer_xfem_element3id(unsigned long num);
183     int supprimer_xfem_element3(unsigned int num);
184     void supprimer_tout_xfem_element3(void);
185 francois 380
186    
187 francois 883 //void construire(int num=0);
188 francois 283 void exporter_cosmos(std::string& nomfic);
189 francois 883 //void optimise_numerotation(void);
190     //void copie_numerotation_opt(void);
191 francois 283 bool contient ( MG_IDENTIFICATEUR * id );
192    
193 francois 767 void recherche_connexion_multidimension(TPL_MAP_ENTITE<class MG_SEGMENT*> &mini);
194 francois 339
195    
196 francois 283 void calcul_deforme(class FEM_SOLUTION* solx,int numx,class FEM_SOLUTION* soly,int numy,class FEM_SOLUTION* solz,int numz);
197     int existe_deforme(void);
198     void active_deforme(void);
199 gervaislavoie 304 void desactive_deforme(void);
200 francois 339 int existe_reaction(void);
201     void active_reaction(void);
202     void desactive_reaction(void);
203 francois 283 double calcul_coef(void);
204 francois 325 void calcul_somme_reaction(double &rx,double &ry,double &rz);
205 francois 763 virtual void enregistrer(std::ostream& o,double version);
206 francois 910 virtual void get_fichier_dependant(std::vector<std::string> &liste_fichier);
207 francois 283 FEM_MAILLAGE* dupliquer(MG_GESTIONNAIRE* gest);
208 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);
209 francois 283 friend std::ostream& operator << (std::ostream& o,FEM_MAILLAGE& maillage);
210 francois 465 void change_param_structure(BOITE_3D btmp,int nxtmp,int nytmp,int nztmp);
211     bool get_param_structure(BOITE_3D &btmp,int &nxtmp,int &nytmp,int &nztmp);
212     bool get_est_structure(void);
213    
214 francois 283 private:
215 francois 883 //void construire_lineaire(TPL_MAP_ENTITE<MG_SEGMENT*> &mini);
216     //void construire_quadratique(void);
217 francois 283 LISTE_ENTITE lst_entite;
218     LISTE_FEM_NOEUD lst_fem_noeud;
219 francois 399 LISTE_FEM_ELEMENT0 lst_fem_element0;
220 francois 309 LISTE_FEM_ELEMENT1 lst_fem_element1;
221     LISTE_FEM_ELEMENT2 lst_fem_element2;
222     LISTE_FEM_ELEMENT3 lst_fem_element3;
223 francois 399 LISTE_XFEM_ELEMENT0 lst_xfem_element0;
224 francois 380 LISTE_XFEM_ELEMENT1 lst_xfem_element1;
225     LISTE_XFEM_ELEMENT2 lst_xfem_element2;
226 francois 339 LISTE_XFEM_ELEMENT3 lst_xfem_element3;
227 francois 283 MG_GEOMETRIE* mg_geometrie;
228     MG_GESTIONNAIRE *gest;
229     MG_MAILLAGE* maillage;
230     int degre;
231     int deforme;
232 francois 339 int reaction;
233 francois 465
234    
235     BOITE_3D boite_englobante;
236     int nx,ny,nz;
237     bool est_structure;
238 francois 339
239 francois 283 };
240    
241    
242    
243     #endif
244    
245