ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/aster/src/opt_triangle.cpp
Revision: 1075
Committed: Tue Aug 10 17:02:54 2021 UTC (3 years, 9 months ago) by francois
File size: 7118 byte(s)
Log Message:
suppression de warning avec le dernier compilateur

File Contents

# User Rev Content
1 gervaislavoie 332 //------------------------------------------------------------
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     // opt_triangle.cpp
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 � 11H22
21     //------------------------------------------------------------
22     //------------------------------------------------------------
23    
24    
25     #include "gestionversion.h"
26     #include "mg_maillage.h"
27     #include "ot_decalage_parametre.h"
28     #include "opt_triangle.h"
29 francois 470 #include "fem_triangle3.h"
30     #include "opt_noeud.h"
31 gervaislavoie 332
32    
33 francois 470 OPT_TRIANGLE::OPT_TRIANGLE(FEM_TRIANGLE3* fem_tri3,OPT_NOEUD* noeud1,OPT_NOEUD* noeud2,OPT_NOEUD* noeud3):fem_triangle3(fem_tri3),opt_noeud1(noeud1),opt_noeud2(noeud2),opt_noeud3(noeud3)
34 gervaislavoie 332 {
35 francois 470 double uv[6];
36 gervaislavoie 332
37 francois 470 OT_VECTEUR_3D dNi_de(fem_tri3->get_fonction_derive_interpolation(1,1,uv),fem_tri3->get_fonction_derive_interpolation(2,1,uv),fem_tri3->get_fonction_derive_interpolation(3,1,uv));
38     OT_VECTEUR_3D dNi_dn(fem_tri3->get_fonction_derive_interpolation(1,2,uv),fem_tri3->get_fonction_derive_interpolation(2,2,uv),fem_tri3->get_fonction_derive_interpolation(3,2,uv));
39     OT_VECTEUR_3D dNi_dZ(0.,0.,0.);
40    
41     OT_MATRICE_3D dNi(dNi_de,dNi_dn,dNi_dZ);
42     dNi_transpose=dNi.transpose();
43 gervaislavoie 332 }
44    
45 francois 470 OPT_TRIANGLE::OPT_TRIANGLE(OPT_TRIANGLE& mdd):fem_triangle3(mdd.fem_triangle3),opt_noeud1(mdd.opt_noeud1),opt_noeud2(mdd.opt_noeud2),opt_noeud3(mdd.opt_noeud3)
46 gervaislavoie 332 {
47 francois 470
48 gervaislavoie 332 }
49    
50     OPT_TRIANGLE::~OPT_TRIANGLE()
51     {
52 francois 470
53 gervaislavoie 332 }
54    
55     unsigned long OPT_TRIANGLE::get_id(void)
56     {
57 francois 470 return fem_triangle3->get_id();
58 gervaislavoie 332 }
59    
60 francois 1075 void OPT_TRIANGLE::change_angle1_initial(double angle)
61 gervaislavoie 332 {
62     a1_init=angle;
63     }
64    
65 francois 1075 void OPT_TRIANGLE::change_angle2_initial(double angle)
66 gervaislavoie 332 {
67     a2_init=angle;
68     }
69    
70 francois 1075 void OPT_TRIANGLE::change_angle3_initial(double angle)
71 gervaislavoie 332 {
72     a3_init=angle;
73     }
74    
75 francois 1075 void OPT_TRIANGLE::change_angle1(double angle)
76 gervaislavoie 332 {
77     a1=angle;
78     }
79    
80 francois 1075 void OPT_TRIANGLE::change_angle2(double angle)
81 gervaislavoie 332 {
82     a2=angle;
83     }
84    
85 francois 1075 void OPT_TRIANGLE::change_angle3(double angle)
86 gervaislavoie 332 {
87     a3=angle;
88     }
89    
90 gervaislavoie 495 void OPT_TRIANGLE::change_normale_unitaire(OT_VECTEUR_3D vec)
91     {
92     normale_unitaire=vec;
93     }
94    
95 gervaislavoie 382 OT_VECTEUR_3D OPT_TRIANGLE::get_normale_unitaire(void)
96 gervaislavoie 332 {
97 gervaislavoie 382 return normale_unitaire;
98 gervaislavoie 332 }
99    
100 francois 470 OT_MATRICE_3D OPT_TRIANGLE::change_jacobien_inverse(void)
101 gervaislavoie 392 {
102 francois 470 double j[9];
103     double uv[6];
104     double unite;
105    
106     fem_triangle3->get_inverse_jacob(j,uv,unite);
107    
108 francois 647 OT_VECTEUR_3D col1_ji(j[0],j[3],j[6]);
109     OT_VECTEUR_3D col2_ji(j[1],j[4],j[7]);
110     OT_VECTEUR_3D col3_ji(j[2],j[5],j[8]);
111 francois 470
112     OT_MATRICE_3D ji(col1_ji,col2_ji,col3_ji);
113     jacobien_inverse=ji;
114 francois 1075 return jacobien_inverse;
115 gervaislavoie 392 }
116    
117 gervaislavoie 495 OT_MATRICE_3D OPT_TRIANGLE::get_jacobien_inverse(void)
118 gervaislavoie 398 {
119 gervaislavoie 495 return jacobien_inverse;
120 gervaislavoie 398 }
121    
122 gervaislavoie 495 OT_MATRICE_3D OPT_TRIANGLE::change_matrice_abc(void)
123 gervaislavoie 332 {
124 gervaislavoie 495 matrice_abc=jacobien_inverse*dNi_transpose;
125 francois 1075 return matrice_abc;
126 gervaislavoie 332 }
127    
128 francois 470 OT_MATRICE_3D OPT_TRIANGLE::get_matrice_abc(void)
129 gervaislavoie 332 {
130 francois 470 return matrice_abc;
131 gervaislavoie 332 }
132    
133 gervaislavoie 528 void OPT_TRIANGLE::change_vecteur_deplacement_reel(void)
134 gervaislavoie 332 {
135 francois 470 OPT_NOEUD* opt_n1=get_noeud1();
136     OPT_NOEUD* opt_n2=get_noeud2();
137     OPT_NOEUD* opt_n3=get_noeud3();
138    
139     double d1=opt_n1->get_norme_orientee_deplacement();
140     double d2=opt_n2->get_norme_orientee_deplacement();
141     double d3=opt_n3->get_norme_orientee_deplacement();
142    
143 gervaislavoie 528 OT_VECTEUR_3D D(d1,d2,d3);
144     vec_deplacement_reel=D;
145 gervaislavoie 332 }
146    
147 gervaislavoie 528 OT_VECTEUR_3D OPT_TRIANGLE::get_vecteur_deplacement_reel(void)
148 gervaislavoie 332 {
149 gervaislavoie 528 return vec_deplacement_reel;
150 gervaislavoie 332 }
151    
152 gervaislavoie 528 void OPT_TRIANGLE::change_vecteur_sol_deplacement_virtuel(void )
153     {
154     OPT_NOEUD* opt_n1=get_noeud1();
155     OPT_NOEUD* opt_n2=get_noeud2();
156     OPT_NOEUD* opt_n3=get_noeud3();
157    
158     double d1=opt_n1->get_sol_deplacement_virtuel();
159     double d2=opt_n2->get_sol_deplacement_virtuel();
160     double d3=opt_n3->get_sol_deplacement_virtuel();
161    
162     OT_VECTEUR_3D D(d1,d2,d3);
163     vec_sol_deplacement_virtuel=D;
164     }
165    
166     OT_VECTEUR_3D OPT_TRIANGLE::get_vecteur_sol_deplacement_virtuel(void )
167     {
168     return vec_sol_deplacement_virtuel;
169     }
170    
171 gervaislavoie 495 void OPT_TRIANGLE::change_norme_gradient_deplacement_reel(void)
172 gervaislavoie 332 {
173 gervaislavoie 528 OT_VECTEUR_3D gradient_deplacement_reel=matrice_abc*vec_deplacement_reel;
174     norme_gradient_deplacement_reel=gradient_deplacement_reel.get_longueur();
175 gervaislavoie 332 }
176    
177 gervaislavoie 495 double OPT_TRIANGLE::get_norme_gradient_deplacement_reel(void)
178     {
179     return norme_gradient_deplacement_reel;
180     }
181    
182     void OPT_TRIANGLE::change_norme_gradient_deplacement_virtuel(void)
183     {
184 gervaislavoie 528 /*OPT_NOEUD* opt_n1=get_noeud1();
185 gervaislavoie 495 OPT_NOEUD* opt_n2=get_noeud2();
186     OPT_NOEUD* opt_n3=get_noeud3();
187    
188     OT_MATRICE_3D abc=get_matrice_abc();
189    
190 gervaislavoie 528 double d1=opt_n1->get_sol_deplacement_virtuel();
191     double d2=opt_n2->get_sol_deplacement_virtuel();
192     double d3=opt_n3->get_sol_deplacement_virtuel();
193 gervaislavoie 495
194     OT_VECTEUR_3D D(d1,d2,d3);
195    
196 gervaislavoie 528 OT_VECTEUR_3D gradient_deplacement=abc*D;*/
197     OT_VECTEUR_3D gradient_deplacement_virtuel=matrice_abc*vec_sol_deplacement_virtuel;
198     norme_gradient_deplacement_virtuel=gradient_deplacement_virtuel.get_longueur();
199 gervaislavoie 495 }
200    
201     double OPT_TRIANGLE::get_norme_gradient_deplacement_virtuel(void)
202     {
203     return norme_gradient_deplacement_virtuel;
204     }
205    
206     void OPT_TRIANGLE::change_noeuds_fixes_3(int val)
207     {
208     noeuds_fixes_3=val;
209     }
210    
211     int OPT_TRIANGLE::get_noeuds_fixes_3(void)
212     {
213     return noeuds_fixes_3;
214     }
215    
216 gervaislavoie 528 void OPT_TRIANGLE::change_nb_noeuds_fixes_iter(int nb)
217     {
218     nb_noeuds_fixes_iter=nb;
219     }
220    
221     int OPT_TRIANGLE::get_nb_noeuds_fixes_iter(void)
222     {
223     return nb_noeuds_fixes_iter;
224     }
225    
226 francois 470 double OPT_TRIANGLE::get_angle1_initial(void)
227 gervaislavoie 332 {
228 francois 470 return a1_init;
229 gervaislavoie 332 }
230    
231 francois 470 double OPT_TRIANGLE::get_angle2_initial(void)
232 gervaislavoie 332 {
233 francois 470 return a2_init;
234 gervaislavoie 332 }
235    
236 francois 470 double OPT_TRIANGLE::get_angle3_initial(void)
237 gervaislavoie 332 {
238 francois 470 return a3_init;
239 gervaislavoie 332 }
240    
241 francois 470 double OPT_TRIANGLE::get_angle1(void)
242 gervaislavoie 332 {
243 francois 470 return a1;
244 gervaislavoie 332 }
245    
246 francois 470 double OPT_TRIANGLE::get_angle2(void)
247 gervaislavoie 332 {
248 francois 470 return a2;
249 gervaislavoie 332 }
250    
251 francois 470 double OPT_TRIANGLE::get_angle3(void)
252 gervaislavoie 332 {
253 francois 470 return a3;
254 gervaislavoie 332 }
255    
256 francois 470 OPT_NOEUD* OPT_TRIANGLE::get_noeud1(void)
257 gervaislavoie 332 {
258 francois 470 return opt_noeud1;
259 gervaislavoie 332 }
260    
261 francois 470 OPT_NOEUD* OPT_TRIANGLE::get_noeud2(void)
262 gervaislavoie 332 {
263 francois 470 return opt_noeud2;
264 gervaislavoie 332 }
265    
266 francois 470 OPT_NOEUD* OPT_TRIANGLE::get_noeud3(void)
267 gervaislavoie 332 {
268 francois 470 return opt_noeud3;
269 gervaislavoie 332 }
270    
271     int OPT_TRIANGLE::get_num(void)
272     {
273 francois 470 return num;
274 gervaislavoie 332 }
275    
276     void OPT_TRIANGLE::change_num(int val)
277     {
278     num=val;
279     }
280    
281     OPT_TRIANGLE* OPT_TRIANGLE::get_voisin1(void)
282     {
283     return voisin1;
284     }
285    
286     OPT_TRIANGLE* OPT_TRIANGLE::get_voisin2(void)
287     {
288     return voisin2;
289     }
290    
291     OPT_TRIANGLE* OPT_TRIANGLE::get_voisin3(void)
292     {
293     return voisin3;
294     }
295    
296     void OPT_TRIANGLE::change_voisin1(OPT_TRIANGLE* tri)
297     {
298     voisin1=tri;
299     }
300    
301     void OPT_TRIANGLE::change_voisin2(OPT_TRIANGLE* tri)
302     {
303     voisin2=tri;
304     }
305    
306     void OPT_TRIANGLE::change_voisin3(OPT_TRIANGLE* tri)
307     {
308     voisin3=tri;
309 francois 1075 }