ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/optimisation/src/opt_triangle.h
Revision: 528
Committed: Mon Jun 16 18:46:29 2014 UTC (10 years, 10 months ago) by gervaislavoie
Content type: text/plain
File size: 5122 byte(s)
Log Message:
Methode du mouvement normal avec ou sans controle par gradient de deplacement.
Avec ou sans lissage des noeuds a chaque X iteration ou a la fin de la methode.
Voir fonction "init_parametre" dans "mgopt_mvt_normal.cpp" pour plus de details sur les options possibles.

File Contents

# User Rev Content
1 gervaislavoie 332 //------------------------------------------------------------
2     //------------------------------------------------------------
3     // MAGiC
4     // Jean Christophe Cuilli�re et Vincent FRANCOIS
5     // D�partement de G�nie M�canique - UQTR
6     //------------------------------------------------------------
7     // Le projet MAGIC est un projet de recherche du d�partement
8     // de g�nie m�canique de l'Universit� du Qu�bec �
9     // Trois Rivi�res
10     // Les librairies ne peuvent �tre utilis�es sans l'accord
11     // des auteurs (contact : francois@uqtr.ca)
12     //------------------------------------------------------------
13     //------------------------------------------------------------
14     //
15     // mg_triangle.h
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 � 11H22
21     //------------------------------------------------------------
22     //------------------------------------------------------------
23     #ifndef _OPTTRIANGLE_
24     #define _OPTTRIANGLE_
25    
26     #ifdef WINDOWS_VERSION
27     #ifdef BUILT_DLL_GEOMETRIE
28     #define DLLPORTGEOMETRIE __declspec(dllexport)
29     #else
30     #define DLLPORTGEOMETRIE __declspec(dllimport)
31     #endif
32     #else
33     #define DLLPORTGEOMETRIE
34     #endif
35    
36    
37     #include "mg_element_maillage.h"
38     #include "mg_segment.h"
39     #include "mg_noeud.h"
40 francois 470 #include "opt_noeud.h"
41 gervaislavoie 332 #include "ot_reference.h"
42    
43    
44     class DLLPORTGEOMETRIE OPT_TRIANGLE
45     {
46     public:
47 francois 470
48 gervaislavoie 528 OPT_TRIANGLE(class FEM_TRIANGLE3* fem_tri3,class OPT_NOEUD* noeud1,class OPT_NOEUD* noeud2,class OPT_NOEUD* noeud3);
49 gervaislavoie 332 OPT_TRIANGLE(OPT_TRIANGLE& mdd);
50     virtual ~OPT_TRIANGLE();
51    
52 gervaislavoie 528 virtual class OPT_NOEUD* get_noeud1(void);
53     virtual class OPT_NOEUD* get_noeud2(void);
54     virtual class OPT_NOEUD* get_noeud3(void);
55 gervaislavoie 332
56     virtual unsigned long get_id(void);
57 gervaislavoie 382 virtual void change_normale_unitaire(OT_VECTEUR_3D vec);
58 francois 470
59 gervaislavoie 332 virtual double change_angle1_initial(double angle);
60     virtual double change_angle2_initial(double angle);
61     virtual double change_angle3_initial(double angle);
62     virtual double change_angle1(double angle);
63     virtual double change_angle2(double angle);
64     virtual double change_angle3(double angle);
65 gervaislavoie 398
66 francois 470 virtual OT_VECTEUR_3D get_normale_unitaire(void); //Enlever?
67    
68 gervaislavoie 392 virtual OT_MATRICE_3D get_jacobien_inverse(void);
69 gervaislavoie 398 virtual OT_MATRICE_3D get_matrice_abc(void);
70    
71 francois 470 virtual OT_MATRICE_3D change_jacobien_inverse(void);
72     virtual OT_MATRICE_3D change_matrice_abc(void);
73    
74     //virtual OT_MATRICE_3D get_jacobien_inverse_initial(void);
75     //virtual OT_MATRICE_3D get_matrice_abc_initiale(void);
76    
77 gervaislavoie 528 virtual OT_VECTEUR_3D get_vecteur_deplacement_reel(void);
78     virtual void change_vecteur_deplacement_reel(void);
79 francois 470
80 gervaislavoie 528 virtual OT_VECTEUR_3D get_vecteur_sol_deplacement_virtuel(void);
81     virtual void change_vecteur_sol_deplacement_virtuel(void);
82    
83 gervaislavoie 495 virtual double get_norme_gradient_deplacement_reel(void);
84     virtual void change_norme_gradient_deplacement_reel(void);
85 francois 470
86 gervaislavoie 495 virtual double get_norme_gradient_deplacement_virtuel(void);
87     virtual void change_norme_gradient_deplacement_virtuel(void);
88    
89     virtual int get_noeuds_fixes_3(void);
90     virtual void change_noeuds_fixes_3(int val);
91    
92 gervaislavoie 528 virtual int get_nb_noeuds_fixes_iter(void);
93     virtual void change_nb_noeuds_fixes_iter(int nb);
94    
95 gervaislavoie 332 virtual double get_angle1_initial(void);
96     virtual double get_angle2_initial(void);
97     virtual double get_angle3_initial(void);
98     virtual double get_angle1(void);
99     virtual double get_angle2(void);
100     virtual double get_angle3(void);
101    
102    
103     virtual int get_num(void);
104     virtual void change_num(int val);
105    
106     virtual OPT_TRIANGLE* get_voisin1(void);
107     virtual OPT_TRIANGLE* get_voisin2(void);
108     virtual OPT_TRIANGLE* get_voisin3(void);
109     virtual void change_voisin1(OPT_TRIANGLE* tri);
110     virtual void change_voisin2(OPT_TRIANGLE* tri);
111     virtual void change_voisin3(OPT_TRIANGLE* tri);
112    
113 francois 470
114 gervaislavoie 332 protected:
115 francois 470
116     class FEM_TRIANGLE3* fem_triangle3;
117     OPT_NOEUD* opt_noeud1;
118     OPT_NOEUD* opt_noeud2;
119     OPT_NOEUD* opt_noeud3;
120    
121 gervaislavoie 382 OT_VECTEUR_3D normale_unitaire;
122 francois 470 OT_MATRICE_3D dNi_transpose;
123 gervaislavoie 392 OT_MATRICE_3D jacobien_inverse;
124 gervaislavoie 528 OT_MATRICE_3D matrice_abc; // Matrice résultant du produit de la matrice jacobienne inverse par la matrice des dérivées des fonctions d'interpolation
125     OT_VECTEUR_3D vec_deplacement_reel; // Vecteur contenant les déplacements des noeuds par rapport à leur position initiale
126     OT_VECTEUR_3D vec_sol_deplacement_virtuel; // Vecteur contenant les solutions de déplacement virtuel des noeuds
127 gervaislavoie 495 double norme_gradient_deplacement_reel;
128     double norme_gradient_deplacement_virtuel;
129     int noeuds_fixes_3; // Si noeuds_fixes_3==1, le triangle a 3 noeuds fixes
130 gervaislavoie 528 int nb_noeuds_fixes_iter; // Nb de noeuds fixés au cours d'une même itération de la méthode du mvt normal
131 francois 470
132 gervaislavoie 332 int num;
133     double a1_init;
134     double a2_init;
135     double a3_init;
136     double a1;
137     double a2;
138     double a3;
139     OPT_TRIANGLE* voisin1;
140     OPT_TRIANGLE* voisin2;
141     OPT_TRIANGLE* voisin3;
142     };
143    
144     #endif