1 |
gervaislavoie |
332 |
#ifndef _OPTNOEUD_ |
2 |
|
|
#define _OPTNOEUD_ |
3 |
|
|
|
4 |
|
|
#ifdef WINDOWS_VERSION |
5 |
|
|
#ifdef BUILT_DLL_GEOMETRIE |
6 |
|
|
#define DLLPORTGEOMETRIE __declspec(dllexport) |
7 |
|
|
#else |
8 |
|
|
#define DLLPORTGEOMETRIE __declspec(dllimport) |
9 |
|
|
#endif |
10 |
|
|
#else |
11 |
|
|
#define DLLPORTGEOMETRIE |
12 |
|
|
#endif |
13 |
|
|
|
14 |
francois |
470 |
#include "fem_noeud.h" |
15 |
gervaislavoie |
332 |
|
16 |
|
|
|
17 |
|
|
|
18 |
|
|
class DLLPORTGEOMETRIE OPT_NOEUD |
19 |
|
|
{ |
20 |
|
|
public: |
21 |
francois |
470 |
OPT_NOEUD(FEM_NOEUD* noeud); |
22 |
gervaislavoie |
332 |
OPT_NOEUD(OPT_NOEUD& mdd); |
23 |
|
|
virtual ~OPT_NOEUD(); |
24 |
francois |
470 |
|
25 |
|
|
virtual FEM_NOEUD* get_fem_noeud(void); |
26 |
gervaislavoie |
332 |
virtual unsigned long get_id(void); |
27 |
francois |
470 |
|
28 |
gervaislavoie |
332 |
virtual double get_x(void); |
29 |
|
|
virtual double get_y(void); |
30 |
|
|
virtual double get_z(void); |
31 |
gervaislavoie |
398 |
virtual double get_x_initial(void); |
32 |
|
|
virtual double get_y_initial(void); |
33 |
|
|
virtual double get_z_initial(void); |
34 |
gervaislavoie |
332 |
virtual double* get_coord(void); |
35 |
|
|
|
36 |
|
|
virtual void change_x(double xx); |
37 |
|
|
virtual void change_y(double yy); |
38 |
|
|
virtual void change_z(double zz); |
39 |
gervaislavoie |
398 |
virtual void change_x_initial(double x_initial); |
40 |
|
|
virtual void change_y_initial(double y_initial); |
41 |
|
|
virtual void change_z_initial(double z_initial); |
42 |
gervaislavoie |
332 |
virtual void change_coord(double *coo); |
43 |
|
|
|
44 |
francois |
470 |
virtual double get_norme_orientee_deplacement(void); |
45 |
|
|
virtual void change_norme_orientee_deplacement(void); |
46 |
|
|
|
47 |
|
|
virtual OT_VECTEUR_3D get_normale(void); |
48 |
gervaislavoie |
332 |
virtual void change_normale(OT_VECTEUR_3D vec); |
49 |
francois |
470 |
|
50 |
gervaislavoie |
332 |
virtual OT_VECTEUR_3D get_normale_initiale(void); |
51 |
|
|
virtual void change_normale_initiale(void); |
52 |
francois |
470 |
|
53 |
gervaislavoie |
332 |
virtual void change_solution(double val); |
54 |
|
|
virtual double get_solution(void); |
55 |
|
|
|
56 |
|
|
virtual int get_num(void); |
57 |
|
|
virtual void change_num(int val); |
58 |
|
|
|
59 |
gervaislavoie |
495 |
virtual int get_mvt_normal(void); |
60 |
|
|
virtual void change_mvt_normal(int mvt); |
61 |
gervaislavoie |
398 |
|
62 |
gervaislavoie |
495 |
/*virtual int get_contrainte(void); |
63 |
|
|
virtual void change_contrainte(int cont);*/ |
64 |
francois |
470 |
|
65 |
gervaislavoie |
495 |
virtual int get_gradient(void); |
66 |
|
|
virtual void change_gradient(int grad); |
67 |
gervaislavoie |
398 |
|
68 |
gervaislavoie |
495 |
/*virtual int get_fixe_au_depart(void); |
69 |
|
|
virtual void change_fixe_au_depart(int fixe);*/ |
70 |
gervaislavoie |
398 |
|
71 |
gervaislavoie |
495 |
virtual int get_mobile_au_depart(void); |
72 |
|
|
virtual void change_mobile_au_depart(int mob); |
73 |
|
|
|
74 |
|
|
virtual int get_mobile(void); |
75 |
|
|
virtual void change_mobile(int mob); |
76 |
|
|
|
77 |
|
|
virtual int get_a_replacer(void); |
78 |
|
|
virtual void change_a_replacer(int replacer); |
79 |
|
|
|
80 |
|
|
virtual int get_a_ete_replace(void); |
81 |
|
|
virtual void change_a_ete_replace(int replace); |
82 |
|
|
|
83 |
gervaislavoie |
398 |
virtual double get_terme_gradient_f(void); |
84 |
|
|
virtual void change_terme_gradient_f(double valeur); |
85 |
|
|
|
86 |
gervaislavoie |
495 |
virtual double get_sol_deplacement(void); |
87 |
|
|
virtual void change_sol_deplacement(double deplacement); |
88 |
gervaislavoie |
332 |
|
89 |
|
|
private: |
90 |
francois |
470 |
FEM_NOEUD* fem_noeud; |
91 |
|
|
double xyz0[3]; |
92 |
|
|
double norme_orientee_deplacement; |
93 |
gervaislavoie |
332 |
OT_VECTEUR_3D normale; |
94 |
gervaislavoie |
398 |
OT_VECTEUR_3D normale_initiale; |
95 |
gervaislavoie |
332 |
int num; |
96 |
gervaislavoie |
495 |
int mvt_normal; // Si mvt_normal==1, le noeud doit être déplacé par la méthode du mouvement normal |
97 |
|
|
//int contrainte; // Si contrainte==1, le noeud a été bloqué par la contrainte |
98 |
|
|
int gradient; // Si gradient==1, le noeud a été bloqué par le gradient |
99 |
|
|
//int fixe_au_depart; // Si fixe_au_depart==1, le noeud ne doit pas être déplacé par la méthode d'optimisation |
100 |
|
|
int mobile_au_depart; // Pour afficher le gradient des triangles qui ont 3 noeuds fixes et qui avaient 3 noeuds mobiles au départ |
101 |
|
|
int mobile; // Si mobile==1, le noeud peut être déplacé et appartient à un triangle ayant 1 ou 2 noeuds fixes |
102 |
|
|
int a_replacer; // Noeud mobile à replacer par l'algo du gradient (au moins un triangle dépasse la valeur seuil) |
103 |
|
|
int a_ete_replace; // Noeud replacé par l'algorithme du gradient |
104 |
gervaislavoie |
398 |
double terme_gradient_f; // Terme i du gradient de f où i correspond à la numérotation globale du noeud |
105 |
gervaislavoie |
495 |
double sol_deplacement; // Déplacement virtuel du noeud |
106 |
gervaislavoie |
332 |
}; |
107 |
|
|
|
108 |
|
|
#endif |