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