ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/fem_noeud.cpp
Revision: 5
Committed: Tue Jun 12 20:26:34 2007 UTC (17 years, 11 months ago)
Original Path: magic/lib/geometrie/geometrie/src/fem_noeud.cpp
File size: 6310 byte(s)
Log Message:

File Contents

# User Rev Content
1 5 //------------------------------------------------------------
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_noeud.cpp
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 à 11H22
21     //------------------------------------------------------------
22     //------------------------------------------------------------
23    
24    
25     #include "gestionversion.h"
26     #include "fem_noeud.h"
27     #include "fem_maillage.h"
28     #include "mg_noeud.h"
29    
30    
31    
32    
33    
34     FEM_NOEUD::FEM_NOEUD(MG_NOEUD* noeud):FEM_ELEMENT_MAILLAGE(noeud),numero(-1),numero_opt(-1)
35     {
36     xyz[0]=noeud->get_x();
37     xyz[1]=noeud->get_y();
38     xyz[2]=noeud->get_z();
39     if (liaison_topologique==NULL) return;
40     if (liaison_topologique->get_dimension()==0) liaison_topologique->get_lien_fem_maillage()->ajouter(this);
41     }
42    
43     FEM_NOEUD::FEM_NOEUD(unsigned long num,MG_NOEUD* noeud):FEM_ELEMENT_MAILLAGE(num,noeud),numero(-1),numero_opt(-1)
44     {
45     xyz[0]=noeud->get_x();
46     xyz[1]=noeud->get_y();
47     xyz[2]=noeud->get_z();
48     if (liaison_topologique==NULL) return;
49     if (liaison_topologique->get_dimension()==0) liaison_topologique->get_lien_fem_maillage()->ajouter(this);
50     }
51    
52     FEM_NOEUD::FEM_NOEUD(MG_ELEMENT_MAILLAGE* mai,double x,double y,double z):FEM_ELEMENT_MAILLAGE(mai),numero(-1),numero_opt(-1)
53     {
54     xyz[0]=x;
55     xyz[1]=y;
56     xyz[2]=z;
57     if (liaison_topologique==NULL) return;
58     if (liaison_topologique->get_dimension()==0) liaison_topologique->get_lien_fem_maillage()->ajouter(this);
59     }
60    
61     FEM_NOEUD* FEM_NOEUD::dupliquer(FEM_MAILLAGE *femmai,long decalage)
62     {
63     FEM_NOEUD* noeud=new FEM_NOEUD(this->get_id()+decalage,liaison_topologique,xyz[0],xyz[1],xyz[2]);
64     femmai->ajouter_fem_noeud(noeud);
65     return noeud;
66     }
67    
68    
69     FEM_NOEUD::FEM_NOEUD(unsigned long num,MG_ELEMENT_TOPOLOGIQUE* topo,double x,double y,double z):FEM_ELEMENT_MAILLAGE(num,topo),numero(-1),numero_opt(-1)
70     {
71     xyz[0]=x;
72     xyz[1]=y;
73     xyz[2]=z;
74     if (liaison_topologique==NULL) return;
75     if (liaison_topologique->get_dimension()==0) liaison_topologique->get_lien_fem_maillage()->ajouter(this);
76     }
77    
78     FEM_NOEUD::FEM_NOEUD(unsigned long num,MG_ELEMENT_MAILLAGE* mai,double x,double y,double z):FEM_ELEMENT_MAILLAGE(num,mai),numero(-1),numero_opt(-1)
79     {
80     xyz[0]=x;
81     xyz[1]=y;
82     xyz[2]=z;
83     if (liaison_topologique==NULL) return;
84     if (liaison_topologique->get_dimension()==0) liaison_topologique->get_lien_fem_maillage()->ajouter(this);
85     }
86    
87    
88    
89     FEM_NOEUD::FEM_NOEUD(FEM_NOEUD& mdd):FEM_ELEMENT_MAILLAGE(mdd),numero(-1),numero_opt(-1)
90     {
91     xyz[0]=mdd.xyz[0];
92     xyz[1]=mdd.xyz[1];
93     xyz[2]=mdd.xyz[2];
94     if (liaison_topologique==NULL) return;
95     if (liaison_topologique->get_dimension()==0) liaison_topologique->get_lien_fem_maillage()->ajouter(this);
96     }
97    
98     FEM_NOEUD::~FEM_NOEUD()
99     {
100     if (liaison_topologique==NULL) return;
101     if (liaison_topologique->get_dimension()==0) liaison_topologique->get_lien_fem_maillage()->supprimer(this);
102     }
103    
104    
105     int FEM_NOEUD::get_type_entite(void)
106     {
107     return IDFEM_NOEUD;
108     }
109    
110     double FEM_NOEUD::get_x(void)
111     {
112     return xyz[0];
113     }
114    
115     double FEM_NOEUD::get_y(void)
116     {
117     return xyz[1];
118     }
119    
120     double FEM_NOEUD::get_z(void)
121     {
122     return xyz[2];
123     }
124    
125     double* FEM_NOEUD::get_coord(void)
126     {
127     return xyz;
128     }
129    
130    
131     void FEM_NOEUD::change_x(double xx)
132     {
133     xyz[0]=xx;
134     }
135    
136     void FEM_NOEUD::change_y(double yy)
137     {
138     xyz[1]=yy;
139     }
140    
141     void FEM_NOEUD::change_z(double zz)
142     {
143     xyz[2]=zz;
144     }
145    
146     void FEM_NOEUD::change_coord(double *coo)
147     {
148     xyz[0]=coo[0];
149     xyz[1]=coo[1];
150     xyz[2]=coo[2];
151     }
152    
153     int FEM_NOEUD::get_numero(void)
154     {
155     return numero;
156     }
157    
158     void FEM_NOEUD::change_numero(int num)
159     {
160     numero=num;
161     }
162    
163     int FEM_NOEUD::get_numero_opt(void)
164     {
165     return numero_opt;
166     }
167    
168     void FEM_NOEUD::change_numero_opt(int num)
169     {
170     numero_opt=num;
171     }
172    
173    
174    
175     int FEM_NOEUD::get_dimension(void)
176     {
177     return 0;
178     }
179    
180     void FEM_NOEUD::change_solution(double val)
181     {
182     solution=val;
183     }
184    
185    
186     double FEM_NOEUD::get_solution(void)
187     {
188     return solution;
189     }
190    
191     BOITE_3D FEM_NOEUD::get_boite_3D(void)
192     {
193     BOITE_3D boite(xyz[0],xyz[1],xyz[2],xyz[0],xyz[1],xyz[2]);
194     return boite;
195    
196     }
197    
198     void FEM_NOEUD::enregistrer(std::ostream& o)
199     {
200     if ((get_mg_element_maillage()!=NULL) && (get_lien_topologie()!=NULL)) o << "%" << get_id() << "=FEM_NOEUD($"<< get_lien_topologie()->get_id() << ",$" << maillage->get_id() << "," << xyz[0] << "," << xyz[1] << "," << xyz[2] << "," << numero << "," << numero_opt << ");" << std::endl;
201     else if ((get_mg_element_maillage()!=NULL) && (get_lien_topologie()==NULL)) o << "%" << get_id() << "=FEM_NOEUD(NULL,$" << maillage->get_id() << "," << xyz[0] << "," << xyz[1] << "," << xyz[2] << "," << numero << "," << numero_opt << ");" << std::endl;
202     else if ((get_mg_element_maillage()==NULL) && (get_lien_topologie()!=NULL)) o << "%" << get_id() << "=FEM_NOEUD($" << get_lien_topologie()->get_id() << ",NULL," << xyz[0] << "," << xyz[1] << "," << xyz[2] << "," << numero << "," << numero_opt << ");" << std::endl;
203     else o << "%" << get_id() << "=FEM_NOEUD(NULL,NULL," << xyz[0] << "," << xyz[1] << "," << xyz[2] << "," << numero << "," << numero_opt << ");" << std::endl;
204    
205     }
206    
207    
208    
209     TPL_LISTE_ENTITE<class FEM_SEGMENT*>* FEM_NOEUD::get_lien_segment(void)
210     {
211     return &segment;
212     }
213    
214    
215     TPL_LISTE_ENTITE<class FEM_SEGMENT*>* FEM_NOEUD::get_lien_petit_segment(void)
216     {
217     return &petit_segment;
218     }
219    
220    
221     TPL_LISTE_ENTITE<class FEM_TRIANGLE*>* FEM_NOEUD::get_lien_triangle(void)
222     {
223     return &triangle;
224     }
225    
226    
227     TPL_LISTE_ENTITE<class FEM_TRIANGLE*>* FEM_NOEUD::get_lien_petit_triangle(void)
228     {
229     return &petit_triangle;
230     }
231    
232     TPL_LISTE_ENTITE<class FEM_TETRA*>* FEM_NOEUD::get_lien_tetra(void)
233     {
234     return &tetra;
235     }
236    
237    
238     TPL_LISTE_ENTITE<class FEM_TETRA*>* FEM_NOEUD::get_lien_petit_tetra(void)
239     {
240     return &petit_tetra;
241     }
242    
243