MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
opt_triangle.cpp
Aller à la documentation de ce fichier.
1 //####//------------------------------------------------------------
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 
23 
24 #include "gestionversion.h"
25 #include "mg_maillage.h"
26 #include "ot_decalage_parametre.h"
27 #include "opt_triangle.h"
28 #include "fem_triangle3.h"
29 #include "opt_noeud.h"
30 
31 
32 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 {
34  double uv[6];
35 
38  OT_VECTEUR_3D dNi_dZ(0.,0.,0.);
39 
40  OT_MATRICE_3D dNi(dNi_de,dNi_dn,dNi_dZ);
42 }
43 
44 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 {
46 
47 }
48 
50 {
51 
52 }
53 
54 unsigned long OPT_TRIANGLE::get_id(void)
55 {
56  return fem_triangle3->get_id();
57 }
58 
60 {
61  a1_init=angle;
62 }
63 
65 {
66  a2_init=angle;
67 }
68 
70 {
71  a3_init=angle;
72 }
73 
74 void OPT_TRIANGLE::change_angle1(double angle)
75 {
76  a1=angle;
77 }
78 
79 void OPT_TRIANGLE::change_angle2(double angle)
80 {
81  a2=angle;
82 }
83 
84 void OPT_TRIANGLE::change_angle3(double angle)
85 {
86  a3=angle;
87 }
88 
90 {
91  normale_unitaire=vec;
92 }
93 
95 {
96  return normale_unitaire;
97 }
98 
100 {
101  double j[9];
102  double uv[6];
103  double unite;
104 
105  fem_triangle3->get_inverse_jacob(j,uv,unite);
106 
107  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 
111  OT_MATRICE_3D ji(col1_ji,col2_ji,col3_ji);
112  jacobien_inverse=ji;
113  return jacobien_inverse;
114 }
115 
117 {
118  return jacobien_inverse;
119 }
120 
122 {
124  return matrice_abc;
125 }
126 
128 {
129  return matrice_abc;
130 }
131 
133 {
134  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  OT_VECTEUR_3D D(d1,d2,d3);
144 }
145 
147 {
148  return vec_deplacement_reel;
149 }
150 
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);
163 }
164 
166 {
168 }
169 
171 {
172  OT_VECTEUR_3D gradient_deplacement_reel=matrice_abc*vec_deplacement_reel;
173  norme_gradient_deplacement_reel=gradient_deplacement_reel.get_longueur();
174 }
175 
177 {
179 }
180 
182 {
183  /*OPT_NOEUD* opt_n1=get_noeud1();
184  OPT_NOEUD* opt_n2=get_noeud2();
185  OPT_NOEUD* opt_n3=get_noeud3();
186 
187  OT_MATRICE_3D abc=get_matrice_abc();
188 
189  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 
193  OT_VECTEUR_3D D(d1,d2,d3);
194 
195  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 }
199 
201 {
203 }
204 
206 {
207  noeuds_fixes_3=val;
208 }
209 
211 {
212  return noeuds_fixes_3;
213 }
214 
216 {
218 }
219 
221 {
222  return nb_noeuds_fixes_iter;
223 }
224 
226 {
227  return a1_init;
228 }
229 
231 {
232  return a2_init;
233 }
234 
236 {
237  return a3_init;
238 }
239 
241 {
242  return a1;
243 }
244 
246 {
247  return a2;
248 }
249 
251 {
252  return a3;
253 }
254 
256 {
257  return opt_noeud1;
258 }
259 
261 {
262  return opt_noeud2;
263 }
264 
266 {
267  return opt_noeud3;
268 }
269 
271 {
272  return num;
273 }
274 
276 {
277  num=val;
278 }
279 
281 {
282  return voisin1;
283 }
284 
286 {
287  return voisin2;
288 }
289 
291 {
292  return voisin3;
293 }
294 
296 {
297  voisin1=tri;
298 }
299 
301 {
302  voisin2=tri;
303 }
304 
306 {
307  voisin3=tri;
308 }
virtual void get_inverse_jacob(double *jac, double *uv, double unite=1.)
virtual double get_fonction_derive_interpolation(int num, int numvariable, double *uv)
unsigned long get_id()
virtual double get_norme_orientee_deplacement(void)
Definition: opt_noeud.cpp:298
virtual double get_sol_deplacement_virtuel(void)
Definition: opt_noeud.cpp:177
OT_VECTEUR_3D vec_sol_deplacement_virtuel
Definition: opt_triangle.h:117
virtual double get_angle2_initial(void)
virtual void change_vecteur_deplacement_reel(void)
virtual class OPT_NOEUD * get_noeud2(void)
virtual OPT_TRIANGLE * get_voisin1(void)
OPT_TRIANGLE * voisin2
Definition: opt_triangle.h:131
virtual void change_noeuds_fixes_3(int val)
double norme_gradient_deplacement_virtuel
Definition: opt_triangle.h:119
virtual OT_MATRICE_3D change_jacobien_inverse(void)
virtual OPT_TRIANGLE * get_voisin2(void)
virtual OPT_TRIANGLE * get_voisin3(void)
virtual double get_angle1(void)
virtual OT_VECTEUR_3D get_normale_unitaire(void)
virtual void change_angle1_initial(double angle)
virtual OT_VECTEUR_3D get_vecteur_sol_deplacement_virtuel(void)
OT_MATRICE_3D dNi_transpose
Definition: opt_triangle.h:113
virtual void change_angle3_initial(double angle)
double norme_gradient_deplacement_reel
Definition: opt_triangle.h:118
OT_MATRICE_3D jacobien_inverse
Definition: opt_triangle.h:114
OPT_NOEUD * opt_noeud3
Definition: opt_triangle.h:110
virtual void change_normale_unitaire(OT_VECTEUR_3D vec)
OPT_NOEUD * opt_noeud2
Definition: opt_triangle.h:109
virtual double get_norme_gradient_deplacement_reel(void)
virtual OT_MATRICE_3D get_matrice_abc(void)
virtual ~OPT_TRIANGLE()
virtual void change_num(int val)
OPT_TRIANGLE * voisin1
Definition: opt_triangle.h:130
virtual void change_vecteur_sol_deplacement_virtuel(void)
virtual void change_voisin2(OPT_TRIANGLE *tri)
virtual unsigned long get_id(void)
OT_MATRICE_3D matrice_abc
Definition: opt_triangle.h:115
double a2_init
Definition: opt_triangle.h:125
OT_VECTEUR_3D normale_unitaire
Definition: opt_triangle.h:112
virtual double get_norme_gradient_deplacement_virtuel(void)
virtual OT_MATRICE_3D change_matrice_abc(void)
virtual void change_angle1(double angle)
OPT_NOEUD * opt_noeud1
Definition: opt_triangle.h:108
class FEM_TRIANGLE3 * fem_triangle3
Definition: opt_triangle.h:107
virtual OT_VECTEUR_3D get_vecteur_deplacement_reel(void)
virtual double get_angle3(void)
virtual int get_noeuds_fixes_3(void)
double a3_init
Definition: opt_triangle.h:126
virtual void change_nb_noeuds_fixes_iter(int nb)
double a1_init
Definition: opt_triangle.h:124
virtual void change_angle2_initial(double angle)
virtual void change_voisin1(OPT_TRIANGLE *tri)
OT_VECTEUR_3D vec_deplacement_reel
Definition: opt_triangle.h:116
virtual double get_angle2(void)
virtual void change_norme_gradient_deplacement_virtuel(void)
virtual double get_angle1_initial(void)
virtual class OPT_NOEUD * get_noeud1(void)
virtual int get_num(void)
virtual double get_angle3_initial(void)
virtual OT_MATRICE_3D get_jacobien_inverse(void)
virtual void change_angle2(double angle)
virtual class OPT_NOEUD * get_noeud3(void)
virtual void change_norme_gradient_deplacement_reel(void)
virtual void change_voisin3(OPT_TRIANGLE *tri)
int nb_noeuds_fixes_iter
Definition: opt_triangle.h:121
OPT_TRIANGLE * voisin3
Definition: opt_triangle.h:132
virtual int get_nb_noeuds_fixes_iter(void)
virtual void change_angle3(double angle)
OPT_TRIANGLE(class FEM_TRIANGLE3 *fem_tri3, class OPT_NOEUD *noeud1, class OPT_NOEUD *noeud2, class OPT_NOEUD *noeud3)
void transpose(OT_MATRICE_3D &res) const
virtual double get_longueur(void) const