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 }
OPT_TRIANGLE::change_noeuds_fixes_3
virtual void change_noeuds_fixes_3(int val)
Definition: opt_triangle.cpp:205
opt_noeud.h
OPT_TRIANGLE::get_angle2
virtual double get_angle2(void)
Definition: opt_triangle.cpp:245
OPT_TRIANGLE::get_id
virtual unsigned long get_id(void)
Definition: opt_triangle.cpp:54
FEM_ELEMENT2::get_inverse_jacob
virtual void get_inverse_jacob(double *jac, double *uv, double unite=1.)
Definition: fem_element2.cpp:182
gestionversion.h
OPT_TRIANGLE::change_angle1_initial
virtual void change_angle1_initial(double angle)
Definition: opt_triangle.cpp:59
OPT_TRIANGLE::a1
double a1
Definition: opt_triangle.h:127
OPT_TRIANGLE::get_voisin3
virtual OPT_TRIANGLE * get_voisin3(void)
Definition: opt_triangle.cpp:290
FEM_TRIANGLE3::get_fonction_derive_interpolation
virtual double get_fonction_derive_interpolation(int num, int numvariable, double *uv)
Definition: fem_triangle3.cpp:224
OPT_TRIANGLE::fem_triangle3
class FEM_TRIANGLE3 * fem_triangle3
Definition: opt_triangle.h:107
OPT_TRIANGLE::nb_noeuds_fixes_iter
int nb_noeuds_fixes_iter
Definition: opt_triangle.h:121
OPT_TRIANGLE::jacobien_inverse
OT_MATRICE_3D jacobien_inverse
Definition: opt_triangle.h:114
OPT_TRIANGLE::a1_init
double a1_init
Definition: opt_triangle.h:124
OPT_TRIANGLE::get_noeud2
virtual class OPT_NOEUD * get_noeud2(void)
Definition: opt_triangle.cpp:260
MG_IDENTIFICATEUR::get_id
unsigned long get_id()
Definition: mg_identificateur.cpp:53
FEM_TRIANGLE3
Definition: fem_triangle3.h:34
OPT_TRIANGLE::get_angle2_initial
virtual double get_angle2_initial(void)
Definition: opt_triangle.cpp:230
OPT_TRIANGLE::a2
double a2
Definition: opt_triangle.h:128
OPT_TRIANGLE::get_vecteur_deplacement_reel
virtual OT_VECTEUR_3D get_vecteur_deplacement_reel(void)
Definition: opt_triangle.cpp:146
OPT_TRIANGLE::norme_gradient_deplacement_virtuel
double norme_gradient_deplacement_virtuel
Definition: opt_triangle.h:119
OPT_TRIANGLE::matrice_abc
OT_MATRICE_3D matrice_abc
Definition: opt_triangle.h:115
OPT_TRIANGLE::voisin2
OPT_TRIANGLE * voisin2
Definition: opt_triangle.h:131
OPT_TRIANGLE::change_num
virtual void change_num(int val)
Definition: opt_triangle.cpp:275
OPT_NOEUD
Definition: opt_noeud.h:31
OPT_NOEUD::get_sol_deplacement_virtuel
virtual double get_sol_deplacement_virtuel(void)
Definition: opt_noeud.cpp:177
OPT_TRIANGLE::change_normale_unitaire
virtual void change_normale_unitaire(OT_VECTEUR_3D vec)
Definition: opt_triangle.cpp:89
OT_MATRICE_3D::transpose
void transpose(OT_MATRICE_3D &res) const
Definition: ot_mathematique.cpp:750
OPT_TRIANGLE::change_matrice_abc
virtual OT_MATRICE_3D change_matrice_abc(void)
Definition: opt_triangle.cpp:121
OPT_TRIANGLE::change_norme_gradient_deplacement_virtuel
virtual void change_norme_gradient_deplacement_virtuel(void)
Definition: opt_triangle.cpp:181
OPT_TRIANGLE::opt_noeud1
OPT_NOEUD * opt_noeud1
Definition: opt_triangle.h:108
ot_decalage_parametre.h
opt_triangle.h
OPT_TRIANGLE::normale_unitaire
OT_VECTEUR_3D normale_unitaire
Definition: opt_triangle.h:112
OPT_TRIANGLE::change_vecteur_sol_deplacement_virtuel
virtual void change_vecteur_sol_deplacement_virtuel(void)
Definition: opt_triangle.cpp:151
OPT_TRIANGLE::change_norme_gradient_deplacement_reel
virtual void change_norme_gradient_deplacement_reel(void)
Definition: opt_triangle.cpp:170
OPT_TRIANGLE::get_nb_noeuds_fixes_iter
virtual int get_nb_noeuds_fixes_iter(void)
Definition: opt_triangle.cpp:220
OPT_TRIANGLE
Definition: opt_triangle.h:35
OPT_TRIANGLE::opt_noeud2
OPT_NOEUD * opt_noeud2
Definition: opt_triangle.h:109
OPT_TRIANGLE::change_angle2
virtual void change_angle2(double angle)
Definition: opt_triangle.cpp:79
OPT_TRIANGLE::dNi_transpose
OT_MATRICE_3D dNi_transpose
Definition: opt_triangle.h:113
OT_MATRICE_3D
Definition: ot_mathematique.h:160
OPT_TRIANGLE::voisin3
OPT_TRIANGLE * voisin3
Definition: opt_triangle.h:132
OPT_TRIANGLE::change_voisin1
virtual void change_voisin1(OPT_TRIANGLE *tri)
Definition: opt_triangle.cpp:295
OPT_TRIANGLE::vec_sol_deplacement_virtuel
OT_VECTEUR_3D vec_sol_deplacement_virtuel
Definition: opt_triangle.h:117
OPT_TRIANGLE::get_voisin2
virtual OPT_TRIANGLE * get_voisin2(void)
Definition: opt_triangle.cpp:285
OPT_TRIANGLE::vec_deplacement_reel
OT_VECTEUR_3D vec_deplacement_reel
Definition: opt_triangle.h:116
OPT_TRIANGLE::get_jacobien_inverse
virtual OT_MATRICE_3D get_jacobien_inverse(void)
Definition: opt_triangle.cpp:116
OPT_TRIANGLE::get_angle1
virtual double get_angle1(void)
Definition: opt_triangle.cpp:240
OPT_TRIANGLE::~OPT_TRIANGLE
virtual ~OPT_TRIANGLE()
Definition: opt_triangle.cpp:49
OPT_TRIANGLE::get_norme_gradient_deplacement_virtuel
virtual double get_norme_gradient_deplacement_virtuel(void)
Definition: opt_triangle.cpp:200
OPT_TRIANGLE::get_angle1_initial
virtual double get_angle1_initial(void)
Definition: opt_triangle.cpp:225
OPT_TRIANGLE::a2_init
double a2_init
Definition: opt_triangle.h:125
OPT_TRIANGLE::change_angle3
virtual void change_angle3(double angle)
Definition: opt_triangle.cpp:84
OPT_NOEUD::get_norme_orientee_deplacement
virtual double get_norme_orientee_deplacement(void)
Definition: opt_noeud.cpp:298
OPT_TRIANGLE::change_angle1
virtual void change_angle1(double angle)
Definition: opt_triangle.cpp:74
OPT_TRIANGLE::noeuds_fixes_3
int noeuds_fixes_3
Definition: opt_triangle.h:120
OPT_TRIANGLE::change_angle2_initial
virtual void change_angle2_initial(double angle)
Definition: opt_triangle.cpp:64
OPT_TRIANGLE::a3
double a3
Definition: opt_triangle.h:129
OPT_TRIANGLE::get_angle3
virtual double get_angle3(void)
Definition: opt_triangle.cpp:250
OT_VECTEUR_3D
Definition: ot_mathematique.h:94
OPT_TRIANGLE::a3_init
double a3_init
Definition: opt_triangle.h:126
OPT_TRIANGLE::change_vecteur_deplacement_reel
virtual void change_vecteur_deplacement_reel(void)
Definition: opt_triangle.cpp:132
OPT_TRIANGLE::get_vecteur_sol_deplacement_virtuel
virtual OT_VECTEUR_3D get_vecteur_sol_deplacement_virtuel(void)
Definition: opt_triangle.cpp:165
mg_maillage.h
OPT_TRIANGLE::change_jacobien_inverse
virtual OT_MATRICE_3D change_jacobien_inverse(void)
Definition: opt_triangle.cpp:99
OPT_TRIANGLE::get_noeud1
virtual class OPT_NOEUD * get_noeud1(void)
Definition: opt_triangle.cpp:255
OPT_TRIANGLE::change_voisin3
virtual void change_voisin3(OPT_TRIANGLE *tri)
Definition: opt_triangle.cpp:305
OPT_TRIANGLE::norme_gradient_deplacement_reel
double norme_gradient_deplacement_reel
Definition: opt_triangle.h:118
OPT_TRIANGLE::num
int num
Definition: opt_triangle.h:123
OPT_TRIANGLE::change_nb_noeuds_fixes_iter
virtual void change_nb_noeuds_fixes_iter(int nb)
Definition: opt_triangle.cpp:215
OPT_TRIANGLE::get_num
virtual int get_num(void)
Definition: opt_triangle.cpp:270
OPT_TRIANGLE::OPT_TRIANGLE
OPT_TRIANGLE(class FEM_TRIANGLE3 *fem_tri3, class OPT_NOEUD *noeud1, class OPT_NOEUD *noeud2, class OPT_NOEUD *noeud3)
Definition: opt_triangle.cpp:32
fem_triangle3.h
OT_VECTEUR_3D::get_longueur
virtual double get_longueur(void) const
Definition: ot_mathematique.cpp:483
OPT_TRIANGLE::get_noeud3
virtual class OPT_NOEUD * get_noeud3(void)
Definition: opt_triangle.cpp:265
OPT_TRIANGLE::get_matrice_abc
virtual OT_MATRICE_3D get_matrice_abc(void)
Definition: opt_triangle.cpp:127
OPT_TRIANGLE::voisin1
OPT_TRIANGLE * voisin1
Definition: opt_triangle.h:130
OPT_TRIANGLE::get_noeuds_fixes_3
virtual int get_noeuds_fixes_3(void)
Definition: opt_triangle.cpp:210
OPT_TRIANGLE::get_voisin1
virtual OPT_TRIANGLE * get_voisin1(void)
Definition: opt_triangle.cpp:280
OPT_TRIANGLE::change_voisin2
virtual void change_voisin2(OPT_TRIANGLE *tri)
Definition: opt_triangle.cpp:300
OPT_TRIANGLE::get_angle3_initial
virtual double get_angle3_initial(void)
Definition: opt_triangle.cpp:235
OPT_TRIANGLE::get_normale_unitaire
virtual OT_VECTEUR_3D get_normale_unitaire(void)
Definition: opt_triangle.cpp:94
OPT_TRIANGLE::change_angle3_initial
virtual void change_angle3_initial(double angle)
Definition: opt_triangle.cpp:69
OPT_TRIANGLE::opt_noeud3
OPT_NOEUD * opt_noeud3
Definition: opt_triangle.h:110
OPT_TRIANGLE::get_norme_gradient_deplacement_reel
virtual double get_norme_gradient_deplacement_reel(void)
Definition: opt_triangle.cpp:176