MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
opt_noeud.h
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_noeud.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:57 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #ifndef _OPTNOEUD_
23 #define _OPTNOEUD_
24 
25 
26 
27 #include "fem_noeud.h"
28 #include "opt_triangle.h"
29 
30 
31 class OPT_NOEUD
32 {
33 public:
34  OPT_NOEUD(FEM_NOEUD* noeud);
35  OPT_NOEUD(OPT_NOEUD& mdd);
36  virtual ~OPT_NOEUD();
37 
38  virtual FEM_NOEUD* get_fem_noeud(void);
39  virtual unsigned long get_id(void);
40 
41  virtual double get_x(void);
42  virtual double get_y(void);
43  virtual double get_z(void);
44  virtual double get_x_initial(void);
45  virtual double get_y_initial(void);
46  virtual double get_z_initial(void);
47  virtual double* get_coord(void);
48 
49  virtual void change_x(double xx);
50  virtual void change_y(double yy);
51  virtual void change_z(double zz);
52  virtual void change_x_initial(double x_initial);
53  virtual void change_y_initial(double y_initial);
54  virtual void change_z_initial(double z_initial);
55  virtual void change_coord(double *coo);
56 
57  virtual double get_norme_orientee_deplacement(void);
58  virtual void change_norme_orientee_deplacement(void);
59 
60  virtual OT_VECTEUR_3D get_normale(void);
61  virtual void change_normale(OT_VECTEUR_3D vec);
62 
63  virtual OT_VECTEUR_3D get_normale2(void);
64  virtual void change_normale2(OT_VECTEUR_3D vec);
65 
66  virtual OT_VECTEUR_3D get_normale_initiale(void);
67  virtual void change_normale_initiale(void);
68 
69  virtual void change_solution(double val);
70  virtual double get_solution(void);
71 
72  virtual int get_num(void);
73  virtual void change_num(int val);
74 
75  virtual int get_mvt_normal(void);
76  virtual void change_mvt_normal(int mvt);
77 
78  /*virtual int get_contrainte(void);
79  virtual void change_contrainte(int cont);*/
80 
81  virtual int get_arret_gradient(void);
82  virtual void change_arret_gradient(int grad);
83 
84  /*virtual int get_fixe_au_depart(void);
85  virtual void change_fixe_au_depart(int fixe);*/
86 
87  virtual int get_mobile_au_depart(void);
88  virtual void change_mobile_au_depart(int mob);
89 
90  virtual int get_mobile(void);
91  virtual void change_mobile(int mob);
92 
93  virtual int get_a_replacer(void);
94  virtual void change_a_replacer(int replacer);
95 
96  /*virtual int get_a_ete_replace(void);
97  virtual void change_a_ete_replace(int replace);*/
98 
99  virtual int get_num_replacement(void);
100  virtual void change_num_replacement(int num);
101 
102  virtual double get_terme_gradient_f(void);
103  virtual void change_terme_gradient_f(double valeur);
104 
105  virtual double get_sol_deplacement_virtuel(void);
106  virtual void change_sol_deplacement_virtuel(double deplacement);
107 
108  virtual double get_vonmises__precedent(void);
109  virtual void change_vonmises__precedent(double von);
110 
111  virtual double get_sens_depl_virtuel(void);
112  virtual void change_sens_depl_virtuel(double signe);
113 
114  //virtual double get_depl_reel_precedent(void);
115  //virtual void change_depl_reel_precedent(double depl);
116 
117  virtual double get_depl_avant_algo_grad(void);
118  virtual void change_depl_avant_algo_grad(double signe);
119 
120  virtual double* get_coord_lissee(void);
121  virtual void change_coord_lissee(double* coord);
122 
125 
128 
129  /*virtual TPL_MAP_ENTITE<class OPT_TRIANGLE*> get_liste_tri_voisin(void);
130  virtual void change_liste_tri_voisin(TPL_MAP_ENTITE<class OPT_TRIANGLE*> lst);*/
131 
132 private:
134  double xyz0[3];
135  double xyz_lissee[3]; // Sert à garder en mémoire la position lissée de chaque noeud lors du lissage
140  int num;
141  int mvt_normal; // Si mvt_normal==1, le noeud doit être déplacé par la méthode du mouvement normal
142  int arret_gradient; // Si arret_gradient==1, le noeud a été bloqué par le gradient
143  int mobile_au_depart; // Pour afficher le gradient des triangles qui ont 3 noeuds fixes et qui avaient 3 noeuds mobiles au départ
144  int mobile; // Si mobile==1, le noeud peut être déplacé et appartient à un triangle ayant 1 ou 2 noeuds fixes
145  int a_replacer; // Noeud mobile à replacer par l'algo du gradient (au moins un triangle dépasse la valeur seuil)
146  //int a_ete_replace; // Noeud replacé par l'algorithme du gradient (enlever)
147  int num_replacement; // 1 si dans fonction f1, 2 si dans fonction f2
148  double terme_gradient_f; // Terme i du gradient de f où i correspond à la numérotation globale du noeud
149  double sol_deplacement_virtuel; // Déplacement virtuel du noeud
150  double sens_depl_virtuel; // Sens du déplacement virtuel total
151  double von_mises;
152  double von_mises2;
153  //double depl_reel_precedent; // Valeur du déplacement réel à l'itération précédente (enlever)
154  double depl_avant_algo_grad; // Déplacement du noeud avant l'algo du gradient (pour pondérer le pas de l'algo)
156 
158  //TPL_MAP_ENTITE<class OPT_TRIANGLE*> lst_tri_voisin; // Triangles voisins au noeud
159 };
160 
161 #endif
virtual void change_mobile_au_depart(int mob)
Definition: opt_noeud.cpp:122
double depl_avant_algo_grad
Definition: opt_noeud.h:154
virtual void change_liste_noeud_voisin(TPL_MAP_ENTITE< class OPT_NOEUD * > lst)
Definition: opt_noeud.cpp:233
virtual void change_vonmises__precedent(double von)
Definition: opt_noeud.cpp:211
virtual TPL_MAP_ENTITE< class OPT_NOEUD * > get_liste_noeud_filtre(void)
Definition: opt_noeud.cpp:243
virtual int get_num(void)
Definition: opt_noeud.cpp:68
virtual void change_z(double zz)
Definition: opt_noeud.cpp:354
virtual void change_coord_lissee(double *coord)
Definition: opt_noeud.cpp:221
virtual void change_depl_avant_algo_grad(double signe)
Definition: opt_noeud.cpp:202
virtual void change_arret_gradient(int grad)
Definition: opt_noeud.cpp:102
virtual void change_normale_initiale(void)
Definition: opt_noeud.cpp:339
virtual void change_coord(double *coo)
Definition: opt_noeud.cpp:374
virtual int get_arret_gradient(void)
Definition: opt_noeud.cpp:97
virtual void change_a_replacer(int replacer)
Definition: opt_noeud.cpp:142
virtual double get_solution(void)
Definition: opt_noeud.cpp:384
double von_mises2
Definition: opt_noeud.h:152
double norme_orientee_deplacement
Definition: opt_noeud.h:136
virtual int get_mvt_normal(void)
Definition: opt_noeud.cpp:78
double xyz0[3]
Definition: opt_noeud.h:134
virtual double get_terme_gradient_f(void)
Definition: opt_noeud.cpp:167
virtual double get_vonmises__precedent(void)
Definition: opt_noeud.cpp:206
virtual double * get_coord_lissee(void)
Definition: opt_noeud.cpp:216
virtual int get_mobile(void)
Definition: opt_noeud.cpp:127
virtual void change_x_initial(double x_initial)
Definition: opt_noeud.cpp:359
virtual TPL_MAP_ENTITE< class OPT_NOEUD * > get_liste_noeud_voisin(void)
Definition: opt_noeud.cpp:228
int mobile_au_depart
Definition: opt_noeud.h:143
double von_mises
Definition: opt_noeud.h:151
virtual double get_norme_orientee_deplacement(void)
Definition: opt_noeud.cpp:298
virtual OT_VECTEUR_3D get_normale(void)
Definition: opt_noeud.cpp:320
virtual void change_terme_gradient_f(double valeur)
Definition: opt_noeud.cpp:172
virtual double get_z_initial(void)
Definition: opt_noeud.cpp:288
OT_VECTEUR_3D normale2
Definition: opt_noeud.h:138
OT_VECTEUR_3D normale
Definition: opt_noeud.h:137
virtual void change_sens_depl_virtuel(double signe)
Definition: opt_noeud.cpp:192
virtual double get_z(void)
Definition: opt_noeud.cpp:273
int mobile
Definition: opt_noeud.h:144
virtual OT_VECTEUR_3D get_normale2(void)
Definition: opt_noeud.cpp:329
virtual double get_sol_deplacement_virtuel(void)
Definition: opt_noeud.cpp:177
double terme_gradient_f
Definition: opt_noeud.h:148
TPL_MAP_ENTITE< class OPT_NOEUD * > lst_noeud_voisin
Definition: opt_noeud.h:155
virtual double get_y(void)
Definition: opt_noeud.cpp:268
virtual void change_z_initial(double z_initial)
Definition: opt_noeud.cpp:369
virtual void change_sol_deplacement_virtuel(double deplacement)
Definition: opt_noeud.cpp:182
virtual void change_y_initial(double y_initial)
Definition: opt_noeud.cpp:364
virtual double get_x(void)
Definition: opt_noeud.cpp:263
double sens_depl_virtuel
Definition: opt_noeud.h:150
virtual unsigned long get_id(void)
Definition: opt_noeud.cpp:258
virtual int get_num_replacement(void)
Definition: opt_noeud.cpp:157
int num_replacement
Definition: opt_noeud.h:147
virtual void change_num_replacement(int num)
Definition: opt_noeud.cpp:162
virtual void change_solution(double val)
Definition: opt_noeud.cpp:379
FEM_NOEUD * fem_noeud
Definition: opt_noeud.h:133
virtual double get_sens_depl_virtuel(void)
Definition: opt_noeud.cpp:187
int arret_gradient
Definition: opt_noeud.h:142
virtual ~OPT_NOEUD()
Definition: opt_noeud.cpp:58
virtual double get_y_initial(void)
Definition: opt_noeud.cpp:283
virtual int get_a_replacer(void)
Definition: opt_noeud.cpp:137
virtual void change_norme_orientee_deplacement(void)
Definition: opt_noeud.cpp:303
OT_VECTEUR_3D normale_initiale
Definition: opt_noeud.h:139
virtual double get_x_initial(void)
Definition: opt_noeud.cpp:278
double sol_deplacement_virtuel
Definition: opt_noeud.h:149
virtual void change_normale(OT_VECTEUR_3D vec)
Definition: opt_noeud.cpp:315
virtual void change_y(double yy)
Definition: opt_noeud.cpp:349
virtual FEM_NOEUD * get_fem_noeud(void)
Definition: opt_noeud.cpp:63
int a_replacer
Definition: opt_noeud.h:145
virtual double * get_coord(void)
Definition: opt_noeud.cpp:293
virtual void change_mobile(int mob)
Definition: opt_noeud.cpp:132
OPT_NOEUD(FEM_NOEUD *noeud)
Definition: opt_noeud.cpp:28
virtual double get_depl_avant_algo_grad(void)
Definition: opt_noeud.cpp:197
virtual void change_x(double xx)
Definition: opt_noeud.cpp:344
TPL_MAP_ENTITE< class OPT_NOEUD * > lst_noeud_filtre
Definition: opt_noeud.h:157
int mvt_normal
Definition: opt_noeud.h:141
virtual int get_mobile_au_depart(void)
Definition: opt_noeud.cpp:117
virtual OT_VECTEUR_3D get_normale_initiale(void)
Definition: opt_noeud.cpp:334
virtual void change_normale2(OT_VECTEUR_3D vec)
Definition: opt_noeud.cpp:324
virtual void change_num(int val)
Definition: opt_noeud.cpp:73
double xyz_lissee[3]
Definition: opt_noeud.h:135
virtual void change_liste_noeud_filtre(TPL_MAP_ENTITE< class OPT_NOEUD * > lst)
Definition: opt_noeud.cpp:238
virtual void change_mvt_normal(int mvt)
Definition: opt_noeud.cpp:82