ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/mtu/src/fem_maillage.h
Revision: 1158
Committed: Thu Jun 13 22:18:49 2024 UTC (11 months, 1 week ago) by francois
Content type: text/plain
File size: 9792 byte(s)
Log Message:
compatibilité Ubuntu 22.04
Suppression des refeences à Windows
Ajout d'une banière

File Contents

# User Rev Content
1 francois 1158 //####//------------------------------------------------------------
2     //####//------------------------------------------------------------
3     //####// MAGiC
4     //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5     //####// Departement de Genie Mecanique - UQTR
6     //####//------------------------------------------------------------
7     //####// MAGIC est un projet de recherche de l equipe ERICCA
8     //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9     //####// http://www.uqtr.ca/ericca
10     //####// http://www.uqtr.ca/
11     //####//------------------------------------------------------------
12     //####//------------------------------------------------------------
13     //####//
14     //####// fem_maillage.h
15     //####//
16     //####//------------------------------------------------------------
17     //####//------------------------------------------------------------
18     //####// COPYRIGHT 2000-2024
19     //####// jeu 13 jun 2024 11:58:54 EDT
20     //####//------------------------------------------------------------
21     //####//------------------------------------------------------------
22 francois 283 #ifndef __FEMMAILLAGE_
23     #define __FEMMAILLAGE_
24    
25    
26    
27 francois 1158
28    
29 francois 283 #include <map>
30     #include <set>
31    
32    
33 francois 1158
34 francois 283 #include "mg_identificateur.h"
35     #include "fem_noeud.h"
36 francois 399 #include "fem_element0.h"
37 francois 310 #include "fem_element1.h"
38     #include "fem_element2.h"
39     #include "fem_element3.h"
40 francois 399 #include "xfem_element0.h"
41 francois 380 #include "xfem_element1.h"
42     #include "xfem_element2.h"
43 francois 339 #include "xfem_element3.h"
44 francois 481 #include "ot_boite_3d.h"
45 francois 767 #include "tpl_map_entite.h"
46 francois 310
47 francois 375 #include "mg_definition.h"
48 francois 283
49    
50    
51    
52     typedef std::set<MG_IDENTIFICATEUR*,inf<MG_IDENTIFICATEUR*> > LISTE_ENTITE;
53     typedef std::map<unsigned long,FEM_NOEUD*,std::less<unsigned long> > LISTE_FEM_NOEUD;
54 francois 399 typedef std::map<unsigned long,FEM_ELEMENT0*,std::less<unsigned long> > LISTE_FEM_ELEMENT0;
55 francois 309 typedef std::map<unsigned long,FEM_ELEMENT1*,std::less<unsigned long> > LISTE_FEM_ELEMENT1;
56     typedef std::map<unsigned long,FEM_ELEMENT2*,std::less<unsigned long> > LISTE_FEM_ELEMENT2;
57     typedef std::map<unsigned long,FEM_ELEMENT3*,std::less<unsigned long> > LISTE_FEM_ELEMENT3;
58 francois 399 typedef std::map<unsigned long,XFEM_ELEMENT0*,std::less<unsigned long> > LISTE_XFEM_ELEMENT0;
59 francois 380 typedef std::map<unsigned long,XFEM_ELEMENT1*,std::less<unsigned long> > LISTE_XFEM_ELEMENT1;
60     typedef std::map<unsigned long,XFEM_ELEMENT2*,std::less<unsigned long> > LISTE_XFEM_ELEMENT2;
61 francois 339 typedef std::map<unsigned long,XFEM_ELEMENT3*,std::less<unsigned long> > LISTE_XFEM_ELEMENT3;
62 francois 283
63 francois 1158 std::ostream& operator << (std::ostream& o,class FEM_MAILLAGE& maillage);
64 francois 283
65    
66 francois 1158 class FEM_MAILLAGE : public MG_IDENTIFICATEUR
67 francois 283 {
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 francois 1112 void adapte_degre_importation_maillage(int deg);
77 francois 283
78    
79     FEM_NOEUD* ajouter_fem_noeud(MG_NOEUD* mgnoeud,unsigned long num=0);
80     int ajouter_fem_noeud(FEM_NOEUD *femnoeud);
81     FEM_NOEUD* get_fem_noeudid(unsigned long num);
82     FEM_NOEUD* get_fem_noeud(unsigned int num);
83     FEM_NOEUD* get_premier_noeud(LISTE_FEM_NOEUD::iterator & it);
84     FEM_NOEUD* get_suivant_noeud(LISTE_FEM_NOEUD::iterator & it);
85     unsigned int get_nb_fem_noeud(void);
86     int supprimer_fem_noeudid(unsigned long num);
87     int supprimer_fem_noeud(unsigned int num);
88     void supprimer_tout_fem_noeud(void);
89    
90    
91    
92 francois 399 int ajouter_fem_element0(FEM_ELEMENT0 *femnoeud);
93     FEM_ELEMENT0* get_fem_element0id(unsigned long num);
94     FEM_ELEMENT0* get_fem_element0(unsigned int num);
95     FEM_ELEMENT0* get_premier_element0(LISTE_FEM_ELEMENT0::iterator & it);
96     FEM_ELEMENT0* get_suivant_element0(LISTE_FEM_ELEMENT0::iterator & it);
97     unsigned int get_nb_fem_element0(void);
98     int supprimer_fem_element0id(unsigned long num);
99     int supprimer_fem_element0(unsigned int num);
100     void supprimer_tout_fem_element0(void);
101    
102 francois 309 int ajouter_fem_element1(FEM_ELEMENT1 *femsegment);
103     FEM_ELEMENT1* get_fem_element1id(unsigned long num);
104     FEM_ELEMENT1* get_fem_element1(unsigned int num);
105     FEM_ELEMENT1* get_premier_element1(LISTE_FEM_ELEMENT1::iterator & it);
106     FEM_ELEMENT1* get_suivant_element1(LISTE_FEM_ELEMENT1::iterator & it);
107     unsigned int get_nb_fem_element1(void);
108     int supprimer_fem_element1id(unsigned long num);
109     int supprimer_fem_element1(unsigned int num);
110     void supprimer_tout_fem_element1(void);
111 francois 283
112    
113    
114 francois 309 int ajouter_fem_element2(FEM_ELEMENT2 *femtriangle);
115     FEM_ELEMENT2* get_fem_element2id(unsigned long num);
116     FEM_ELEMENT2* get_fem_element2(unsigned int num);
117     FEM_ELEMENT2* get_premier_element2(LISTE_FEM_ELEMENT2::iterator & it) ;
118     FEM_ELEMENT2* get_suivant_element2(LISTE_FEM_ELEMENT2::iterator & it) ;
119     unsigned int get_nb_fem_element2(void);
120     int supprimer_fem_element2id(unsigned long num);
121     int supprimer_fem_element2(unsigned int num);
122     void supprimer_tout_fem_element2(void);
123 francois 283
124 francois 309 int ajouter_fem_element3(FEM_ELEMENT3 *femelement3);
125     FEM_ELEMENT3* get_fem_element3id(unsigned long num);
126     FEM_ELEMENT3* get_fem_element3(unsigned int num);
127     FEM_ELEMENT3* get_premier_element3(LISTE_FEM_ELEMENT3::iterator & it);
128     FEM_ELEMENT3* get_suivant_element3(LISTE_FEM_ELEMENT3::iterator & it);
129     unsigned int get_nb_fem_element3(void);
130     int supprimer_fem_element3id(unsigned long num);
131     int supprimer_fem_element3(unsigned int num);
132     void supprimer_tout_fem_element3(void);
133 francois 399
134     int ajouter_xfem_element0(XFEM_ELEMENT0 *femelement0);
135     XFEM_ELEMENT0* get_xfem_element0id(unsigned long num);
136     XFEM_ELEMENT0* get_xfem_element0(unsigned int num);
137     XFEM_ELEMENT0* get_premier_xelement0(LISTE_XFEM_ELEMENT0::iterator & it);
138     XFEM_ELEMENT0* get_suivant_xelement0(LISTE_XFEM_ELEMENT0::iterator & it);
139     unsigned int get_nb_xfem_element0(void);
140     int supprimer_xfem_element0id(unsigned long num);
141     int supprimer_xfem_element0(unsigned int num);
142     void supprimer_tout_xfem_element0(void);
143    
144 francois 380 int ajouter_xfem_element1(XFEM_ELEMENT1 *femelement1);
145     XFEM_ELEMENT1* get_xfem_element1id(unsigned long num);
146     XFEM_ELEMENT1* get_xfem_element1(unsigned int num);
147     XFEM_ELEMENT1* get_premier_xelement1(LISTE_XFEM_ELEMENT1::iterator & it);
148     XFEM_ELEMENT1* get_suivant_xelement1(LISTE_XFEM_ELEMENT1::iterator & it);
149     unsigned int get_nb_xfem_element1(void);
150     int supprimer_xfem_element1id(unsigned long num);
151     int supprimer_xfem_element1(unsigned int num);
152     void supprimer_tout_xfem_element1(void);
153    
154     int ajouter_xfem_element2(XFEM_ELEMENT2 *femelement2);
155     XFEM_ELEMENT2* get_xfem_element2id(unsigned long num);
156     XFEM_ELEMENT2* get_xfem_element2(unsigned int num);
157     XFEM_ELEMENT2* get_premier_xelement2(LISTE_XFEM_ELEMENT2::iterator & it);
158     XFEM_ELEMENT2* get_suivant_xelement2(LISTE_XFEM_ELEMENT2::iterator & it);
159     unsigned int get_nb_xfem_element2(void);
160     int supprimer_xfem_element2id(unsigned long num);
161     int supprimer_xfem_element2(unsigned int num);
162     void supprimer_tout_xfem_element2(void);
163    
164 francois 339 int ajouter_xfem_element3(XFEM_ELEMENT3 *femelement3);
165     XFEM_ELEMENT3* get_xfem_element3id(unsigned long num);
166     XFEM_ELEMENT3* get_xfem_element3(unsigned int num);
167     XFEM_ELEMENT3* get_premier_xelement3(LISTE_XFEM_ELEMENT3::iterator & it);
168     XFEM_ELEMENT3* get_suivant_xelement3(LISTE_XFEM_ELEMENT3::iterator & it);
169     unsigned int get_nb_xfem_element3(void);
170     int supprimer_xfem_element3id(unsigned long num);
171     int supprimer_xfem_element3(unsigned int num);
172     void supprimer_tout_xfem_element3(void);
173 francois 380
174    
175 francois 883 //void construire(int num=0);
176 francois 283 void exporter_cosmos(std::string& nomfic);
177 francois 883 //void optimise_numerotation(void);
178     //void copie_numerotation_opt(void);
179 francois 283 bool contient ( MG_IDENTIFICATEUR * id );
180    
181 francois 767 void recherche_connexion_multidimension(TPL_MAP_ENTITE<class MG_SEGMENT*> &mini);
182 francois 339
183    
184 francois 283 void calcul_deforme(class FEM_SOLUTION* solx,int numx,class FEM_SOLUTION* soly,int numy,class FEM_SOLUTION* solz,int numz);
185     int existe_deforme(void);
186     void active_deforme(void);
187 gervaislavoie 304 void desactive_deforme(void);
188 francois 339 int existe_reaction(void);
189     void active_reaction(void);
190     void desactive_reaction(void);
191 francois 283 double calcul_coef(void);
192 francois 325 void calcul_somme_reaction(double &rx,double &ry,double &rz);
193 francois 763 virtual void enregistrer(std::ostream& o,double version);
194 francois 910 virtual void get_fichier_dependant(std::vector<std::string> &liste_fichier);
195 francois 283 FEM_MAILLAGE* dupliquer(MG_GESTIONNAIRE* gest);
196 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);
197 francois 283 friend std::ostream& operator << (std::ostream& o,FEM_MAILLAGE& maillage);
198 francois 465 void change_param_structure(BOITE_3D btmp,int nxtmp,int nytmp,int nztmp);
199     bool get_param_structure(BOITE_3D &btmp,int &nxtmp,int &nytmp,int &nztmp);
200     bool get_est_structure(void);
201    
202 francois 283 private:
203 francois 883 //void construire_lineaire(TPL_MAP_ENTITE<MG_SEGMENT*> &mini);
204     //void construire_quadratique(void);
205 francois 283 LISTE_ENTITE lst_entite;
206     LISTE_FEM_NOEUD lst_fem_noeud;
207 francois 399 LISTE_FEM_ELEMENT0 lst_fem_element0;
208 francois 309 LISTE_FEM_ELEMENT1 lst_fem_element1;
209     LISTE_FEM_ELEMENT2 lst_fem_element2;
210     LISTE_FEM_ELEMENT3 lst_fem_element3;
211 francois 399 LISTE_XFEM_ELEMENT0 lst_xfem_element0;
212 francois 380 LISTE_XFEM_ELEMENT1 lst_xfem_element1;
213     LISTE_XFEM_ELEMENT2 lst_xfem_element2;
214 francois 339 LISTE_XFEM_ELEMENT3 lst_xfem_element3;
215 francois 283 MG_GEOMETRIE* mg_geometrie;
216     MG_GESTIONNAIRE *gest;
217     MG_MAILLAGE* maillage;
218     int degre;
219     int deforme;
220 francois 339 int reaction;
221 francois 465
222    
223     BOITE_3D boite_englobante;
224     int nx,ny,nz;
225     bool est_structure;
226 francois 339
227 francois 283 };
228    
229    
230    
231     #endif
232    
233