ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/optimisation/src/opt_noeud.h
Revision: 398
Committed: Fri Apr 26 21:01:59 2013 UTC (12 years ago) by gervaislavoie
Content type: text/plain
File size: 3305 byte(s)
Log Message:
Deplacement des noeuds obtenus en minimisant une fonction par l'algorithme du gradient.
Cas Matlab fonctionne.
Reste certains problemes pour le tube en flexion mais prometteur.

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     #include "mg_noeud.h"
15    
16    
17    
18     class DLLPORTGEOMETRIE OPT_NOEUD
19     {
20     public:
21     OPT_NOEUD(MG_NOEUD* nd);
22     OPT_NOEUD(OPT_NOEUD& mdd);
23     virtual ~OPT_NOEUD();
24    
25     virtual unsigned long get_id(void);
26     virtual class MG_ELEMENT_TOPOLOGIQUE* get_lien_topologie(void);
27     virtual double get_x(void);
28     virtual double get_y(void);
29     virtual double get_z(void);
30 gervaislavoie 398 virtual double get_x_initial(void);
31     virtual double get_y_initial(void);
32     virtual double get_z_initial(void);
33 gervaislavoie 332 virtual double* get_coord(void);
34    
35     virtual void change_x(double xx);
36     virtual void change_y(double yy);
37     virtual void change_z(double zz);
38 gervaislavoie 398 virtual void change_x_initial(double x_initial);
39     virtual void change_y_initial(double y_initial);
40     virtual void change_z_initial(double z_initial);
41 gervaislavoie 332 virtual void change_coord(double *coo);
42    
43     virtual void change_normale(OT_VECTEUR_3D vec);
44     virtual OT_VECTEUR_3D get_normale(void);
45     virtual OT_VECTEUR_3D get_normale_initiale(void);
46     virtual void change_normale_initiale(void);
47     virtual void change_solution(double val);
48     virtual double get_solution(void);
49    
50     virtual int get_dimension(void);
51    
52     virtual int get_num(void);
53     virtual void change_num(int val);
54    
55 gervaislavoie 398 virtual int get_variable(void);
56     virtual void change_variable(int var);
57    
58     virtual int get_num_global(void);
59     virtual void change_num_global(int num);
60    
61     //virtual double get_norme_orientee_deplacement(void);
62     //virtual void change_norme_orientee_deplacement(double norme);
63    
64     virtual double get_terme_gradient_f(void);
65     virtual void change_terme_gradient_f(double valeur);
66    
67 gervaislavoie 332 virtual class BOITE_2D get_boite_2D(double periodeu,double periodev);
68     virtual class BOITE_3D get_boite_3D(void);
69    
70     virtual void change_u(double uu);
71     virtual void change_v(double vv);
72     virtual double get_u(void);
73     virtual double get_v(void);
74    
75     TPL_LISTE_ENTITE<class MG_SEGMENT*> *get_lien_segment(void);
76     TPL_LISTE_ENTITE<class MG_SEGMENT*> *get_lien_petit_segment(void);
77    
78     TPL_LISTE_ENTITE<class MG_TRIANGLE*> *get_lien_triangle(void);
79     TPL_LISTE_ENTITE<class MG_TRIANGLE*> *get_lien_petit_triangle(void);
80    
81    
82     TPL_LISTE_ENTITE<class MG_QUADRANGLE*> *get_lien_quadrangle(void);
83     TPL_LISTE_ENTITE<class MG_QUADRANGLE*> *get_lien_petit_quadrangle(void);
84    
85     TPL_LISTE_ENTITE<class MG_TETRA*> *get_lien_tetra(void);
86     TPL_LISTE_ENTITE<class MG_TETRA*> *get_lien_petit_tetra(void);
87    
88    
89     TPL_LISTE_ENTITE<class MG_HEXA*> *get_lien_hexa(void);
90     TPL_LISTE_ENTITE<class MG_HEXA*> *get_lien_petit_hexa(void);
91    
92    
93     private:
94     MG_NOEUD *noeud;
95 gervaislavoie 398 double x0;
96     double y0;
97     double z0;
98 gervaislavoie 332 OT_VECTEUR_3D normale;
99 gervaislavoie 398 OT_VECTEUR_3D normale_initiale;
100 gervaislavoie 332 int num;
101 gervaislavoie 398 int variable; // Si variable==1, le déplacement à ce noeud est inconnu
102     int num_global; // Numérotation globale du noeud pour l'écriture de la fonction f
103     double terme_gradient_f; // Terme i du gradient de f où i correspond à la numérotation globale du noeud
104 gervaislavoie 332 };
105    
106     #endif