ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/aster/src/opt_noeud.h
Revision: 744
Committed: Mon Oct 5 15:17:13 2015 UTC (9 years, 7 months ago) by zeggar
Content type: text/plain
File size: 5631 byte(s)
Log Message:
Méthode du mouvement normal avec un maillage quadratique
cas test MMN avec un maillage quadratique

File Contents

# User Rev Content
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 528 #include "opt_triangle.h"
16 gervaislavoie 332
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 zeggar 744 virtual OT_VECTEUR_3D get_normale2(void);
51     virtual void change_normale2(OT_VECTEUR_3D vec);
52    
53 gervaislavoie 332 virtual OT_VECTEUR_3D get_normale_initiale(void);
54     virtual void change_normale_initiale(void);
55 francois 470
56 gervaislavoie 332 virtual void change_solution(double val);
57     virtual double get_solution(void);
58    
59     virtual int get_num(void);
60     virtual void change_num(int val);
61    
62 gervaislavoie 495 virtual int get_mvt_normal(void);
63     virtual void change_mvt_normal(int mvt);
64 gervaislavoie 398
65 gervaislavoie 495 /*virtual int get_contrainte(void);
66     virtual void change_contrainte(int cont);*/
67 francois 470
68 gervaislavoie 528 virtual int get_arret_gradient(void);
69     virtual void change_arret_gradient(int grad);
70 gervaislavoie 398
71 gervaislavoie 495 /*virtual int get_fixe_au_depart(void);
72     virtual void change_fixe_au_depart(int fixe);*/
73 gervaislavoie 398
74 gervaislavoie 495 virtual int get_mobile_au_depart(void);
75     virtual void change_mobile_au_depart(int mob);
76    
77     virtual int get_mobile(void);
78     virtual void change_mobile(int mob);
79    
80     virtual int get_a_replacer(void);
81     virtual void change_a_replacer(int replacer);
82    
83 gervaislavoie 528 /*virtual int get_a_ete_replace(void);
84     virtual void change_a_ete_replace(int replace);*/
85 gervaislavoie 495
86 gervaislavoie 528 virtual int get_num_replacement(void);
87     virtual void change_num_replacement(int num);
88    
89 gervaislavoie 398 virtual double get_terme_gradient_f(void);
90     virtual void change_terme_gradient_f(double valeur);
91    
92 gervaislavoie 528 virtual double get_sol_deplacement_virtuel(void);
93     virtual void change_sol_deplacement_virtuel(double deplacement);
94    
95 zeggar 744 virtual double get_vonmises__precedent(void);
96     virtual void change_vonmises__precedent(double von);
97    
98 gervaislavoie 528 virtual double get_sens_depl_virtuel(void);
99     virtual void change_sens_depl_virtuel(double signe);
100    
101     //virtual double get_depl_reel_precedent(void);
102     //virtual void change_depl_reel_precedent(double depl);
103    
104     virtual double get_depl_avant_algo_grad(void);
105     virtual void change_depl_avant_algo_grad(double signe);
106    
107     virtual double* get_coord_lissee(void);
108     virtual void change_coord_lissee(double* coord);
109    
110 zeggar 744 virtual void change_liste_noeud_voisin(TPL_MAP_ENTITE<class OPT_NOEUD*> lst);
111 gervaislavoie 528 virtual TPL_MAP_ENTITE<class OPT_NOEUD*> get_liste_noeud_voisin(void);
112    
113 zeggar 744 virtual void change_liste_noeud_filtre(TPL_MAP_ENTITE<class OPT_NOEUD*> lst);
114     virtual TPL_MAP_ENTITE<class OPT_NOEUD*> get_liste_noeud_filtre(void);
115    
116 gervaislavoie 528 /*virtual TPL_MAP_ENTITE<class OPT_TRIANGLE*> get_liste_tri_voisin(void);
117     virtual void change_liste_tri_voisin(TPL_MAP_ENTITE<class OPT_TRIANGLE*> lst);*/
118 gervaislavoie 332
119     private:
120 francois 470 FEM_NOEUD* fem_noeud;
121     double xyz0[3];
122 gervaislavoie 528 double xyz_lissee[3]; // Sert à garder en mémoire la position lissée de chaque noeud lors du lissage
123 francois 470 double norme_orientee_deplacement;
124 gervaislavoie 332 OT_VECTEUR_3D normale;
125 zeggar 744 OT_VECTEUR_3D normale2;
126 gervaislavoie 398 OT_VECTEUR_3D normale_initiale;
127 gervaislavoie 332 int num;
128 gervaislavoie 528 int mvt_normal; // Si mvt_normal==1, le noeud doit être déplacé par la méthode du mouvement normal
129     int arret_gradient; // Si arret_gradient==1, le noeud a été bloqué par le gradient
130     int mobile_au_depart; // Pour afficher le gradient des triangles qui ont 3 noeuds fixes et qui avaient 3 noeuds mobiles au départ
131     int mobile; // Si mobile==1, le noeud peut être déplacé et appartient à un triangle ayant 1 ou 2 noeuds fixes
132     int a_replacer; // Noeud mobile à replacer par l'algo du gradient (au moins un triangle dépasse la valeur seuil)
133     //int a_ete_replace; // Noeud replacé par l'algorithme du gradient (enlever)
134     int num_replacement; // 1 si dans fonction f1, 2 si dans fonction f2
135     double terme_gradient_f; // Terme i du gradient de f où i correspond à la numérotation globale du noeud
136     double sol_deplacement_virtuel; // Déplacement virtuel du noeud
137     double sens_depl_virtuel; // Sens du déplacement virtuel total
138 zeggar 744 double von_mises;
139     double von_mises2;
140 gervaislavoie 528 //double depl_reel_precedent; // Valeur du déplacement réel à l'itération précédente (enlever)
141     double depl_avant_algo_grad; // Déplacement du noeud avant l'algo du gradient (pour pondérer le pas de l'algo)
142     TPL_MAP_ENTITE<class OPT_NOEUD*> lst_noeud_voisin; // Noeuds voisins au noeud
143 zeggar 744
144     TPL_MAP_ENTITE<class OPT_NOEUD*> lst_noeud_filtre;
145 gervaislavoie 528 //TPL_MAP_ENTITE<class OPT_TRIANGLE*> lst_tri_voisin; // Triangles voisins au noeud
146 gervaislavoie 332 };
147    
148     #endif