ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/aster/src/opt_triangle.cpp
Revision: 398
Committed: Fri Apr 26 21:01:59 2013 UTC (12 years ago) by gervaislavoie
Original Path: magic/lib/optimisation/src/opt_triangle.cpp
File size: 4553 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 //------------------------------------------------------------
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     // opt_triangle.cpp
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 � 11H22
21     //------------------------------------------------------------
22     //------------------------------------------------------------
23    
24    
25     #include "gestionversion.h"
26     #include "mg_maillage.h"
27     #include "ot_decalage_parametre.h"
28     #include "opt_triangle.h"
29    
30    
31    
32     OPT_TRIANGLE::OPT_TRIANGLE(MG_TRIANGLE* tri):triangle(tri)
33     {
34    
35     }
36    
37     OPT_TRIANGLE::OPT_TRIANGLE(OPT_TRIANGLE& mdd):triangle(mdd.triangle)
38     {
39    
40     }
41    
42     OPT_TRIANGLE::~OPT_TRIANGLE()
43     {
44    
45     }
46    
47    
48    
49     unsigned long OPT_TRIANGLE::get_id(void)
50     {
51     return triangle->get_id();
52     }
53    
54     MG_ELEMENT_TOPOLOGIQUE* OPT_TRIANGLE::get_lien_topologie(void)
55     {
56     return triangle->get_lien_topologie();
57     }
58    
59 gervaislavoie 382 void OPT_TRIANGLE::change_normale_unitaire(OT_VECTEUR_3D vec)
60 gervaislavoie 332 {
61 gervaislavoie 382 normale_unitaire=vec;
62 gervaislavoie 332 }
63    
64 gervaislavoie 392 void OPT_TRIANGLE::change_jacobien_inverse(OT_MATRICE_3D j)
65     {
66     jacobien_inverse=j;
67     }
68    
69 gervaislavoie 332 double OPT_TRIANGLE::change_angle1_initial(double angle)
70     {
71     a1_init=angle;
72     }
73    
74     double OPT_TRIANGLE::change_angle2_initial(double angle)
75     {
76     a2_init=angle;
77     }
78    
79     double OPT_TRIANGLE::change_angle3_initial(double angle)
80     {
81     a3_init=angle;
82     }
83    
84     double OPT_TRIANGLE::change_angle1(double angle)
85     {
86     a1=angle;
87     }
88    
89     double OPT_TRIANGLE::change_angle2(double angle)
90     {
91     a2=angle;
92     }
93    
94     double OPT_TRIANGLE::change_angle3(double angle)
95     {
96     a3=angle;
97     }
98    
99 gervaislavoie 382 OT_VECTEUR_3D OPT_TRIANGLE::get_normale_unitaire(void)
100 gervaislavoie 332 {
101 gervaislavoie 382 return normale_unitaire;
102 gervaislavoie 332 }
103    
104 gervaislavoie 392 OT_MATRICE_3D OPT_TRIANGLE::get_jacobien_inverse(void )
105     {
106     return jacobien_inverse;
107     }
108    
109 gervaislavoie 398 OT_MATRICE_3D OPT_TRIANGLE::get_matrice_abc(void )
110     {
111     OT_VECTEUR_3D dNi_de(-1.,1.,0.);
112     OT_VECTEUR_3D dNi_dn(-1.,0.,1.);
113     OT_VECTEUR_3D dNi_dZ(0.,0.,0.);
114     OT_MATRICE_3D dNi(dNi_de,dNi_dn,dNi_dZ);
115     OT_MATRICE_3D dNi_transpose=dNi.transpose();
116     abc=get_jacobien_inverse()*dNi_transpose;
117     return abc;
118     }
119    
120 gervaislavoie 332 double OPT_TRIANGLE::get_angle1_initial(void )
121     {
122     return a1_init;
123     }
124    
125     double OPT_TRIANGLE::get_angle2_initial(void )
126     {
127     return a2_init;
128     }
129    
130     double OPT_TRIANGLE::get_angle3_initial(void )
131     {
132     return a3_init;
133     }
134    
135     double OPT_TRIANGLE::get_angle1(void)
136     {
137     return a1;
138     }
139    
140     double OPT_TRIANGLE::get_angle2(void)
141     {
142     return a2;
143     }
144    
145     double OPT_TRIANGLE::get_angle3(void)
146     {
147     return a3;
148     }
149    
150    
151    
152     MG_NOEUD* OPT_TRIANGLE::get_noeud1(void)
153     {
154     return triangle->get_noeud1();
155     }
156    
157     MG_NOEUD* OPT_TRIANGLE::get_noeud2(void)
158     {
159     return triangle->get_noeud2();
160     }
161    
162     MG_NOEUD* OPT_TRIANGLE::get_noeud3(void)
163     {
164     return triangle->get_noeud3();
165     }
166    
167     MG_SEGMENT* OPT_TRIANGLE::get_segment1(void)
168     {
169     return triangle->get_segment1();
170     }
171    
172     MG_SEGMENT* OPT_TRIANGLE::get_segment2(void)
173     {
174     return triangle->get_segment2();
175     }
176    
177     MG_SEGMENT* OPT_TRIANGLE::get_segment3(void)
178     {
179     return triangle->get_segment3();
180     }
181    
182     int OPT_TRIANGLE::get_dimension(void)
183     {
184     return 2;
185     }
186    
187     double OPT_TRIANGLE::get_longueur(void)
188     {
189     return triangle->get_longueur();
190     }
191    
192     TPL_LISTE_ENTITE<class MG_TETRA*>* OPT_TRIANGLE::get_lien_tetra(void)
193     {
194     return triangle->get_lien_tetra();
195     }
196    
197     int OPT_TRIANGLE::get_num(void)
198     {
199     return num;
200     }
201    
202     void OPT_TRIANGLE::change_num(int val)
203     {
204     num=val;
205     }
206    
207    
208     BOITE_2D OPT_TRIANGLE::get_boite_2D(double periodeu,double periodev)
209     {
210     return triangle->get_boite_2D(periodeu,periodev);
211     }
212    
213     BOITE_3D OPT_TRIANGLE::get_boite_3D(void)
214     {
215     return triangle->get_boite_3D();
216     }
217    
218    
219     OPT_TRIANGLE* OPT_TRIANGLE::get_voisin1(void)
220     {
221     return voisin1;
222     }
223    
224     OPT_TRIANGLE* OPT_TRIANGLE::get_voisin2(void)
225     {
226     return voisin2;
227     }
228    
229     OPT_TRIANGLE* OPT_TRIANGLE::get_voisin3(void)
230     {
231     return voisin3;
232     }
233    
234     void OPT_TRIANGLE::change_voisin1(OPT_TRIANGLE* tri)
235     {
236     voisin1=tri;
237     }
238    
239     void OPT_TRIANGLE::change_voisin2(OPT_TRIANGLE* tri)
240     {
241     voisin2=tri;
242     }
243    
244     void OPT_TRIANGLE::change_voisin3(OPT_TRIANGLE* tri)
245     {
246     voisin3=tri;
247     }