ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/aster/src/opt_noeud.cpp
Revision: 528
Committed: Mon Jun 16 18:46:29 2014 UTC (10 years, 10 months ago) by gervaislavoie
Original Path: magic/lib/optimisation/src/opt_noeud.cpp
File size: 5662 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 #include "gestionversion.h"
2 francois 470 #include "fem_noeud.h"
3 gervaislavoie 332 #include "mg_maillage.h"
4     #include "opt_noeud.h"
5    
6    
7 francois 470 OPT_NOEUD::OPT_NOEUD(FEM_NOEUD* noeud):fem_noeud(noeud)
8 gervaislavoie 332 {
9 francois 470 xyz0[0]=fem_noeud->get_x();
10     xyz0[1]=fem_noeud->get_y();
11     xyz0[2]=fem_noeud->get_z();
12    
13 gervaislavoie 495 normale[0]=0.; //Enlever
14 francois 470 normale[1]=0.;
15     normale[2]=0.;
16    
17 gervaislavoie 495 normale_initiale[0]=0.; //Enlever
18 francois 470 normale_initiale[1]=0.;
19     normale_initiale[2]=0.;
20 gervaislavoie 332 }
21    
22 francois 470 OPT_NOEUD::OPT_NOEUD(OPT_NOEUD& mdd):fem_noeud(mdd.fem_noeud)
23 gervaislavoie 332 {
24 francois 470 xyz0[0]=mdd.get_x_initial();
25     xyz0[1]=mdd.get_y_initial();
26     xyz0[2]=mdd.get_z_initial();
27    
28     normale[0]=mdd.normale[0];
29     normale[1]=mdd.normale[1];
30     normale[2]=mdd.normale[2];
31    
32     normale_initiale[0]=mdd.normale_initiale[0];
33     normale_initiale[1]=mdd.normale_initiale[1];
34     normale_initiale[2]=mdd.normale_initiale[2];
35 gervaislavoie 332 }
36    
37     OPT_NOEUD::~OPT_NOEUD()
38 francois 470 {
39    
40 gervaislavoie 332 }
41    
42 francois 470 FEM_NOEUD* OPT_NOEUD::get_fem_noeud(void)
43     {
44     return fem_noeud;
45     }
46    
47 gervaislavoie 332 int OPT_NOEUD::get_num(void)
48     {
49     return num;
50     }
51    
52     void OPT_NOEUD::change_num(int val)
53     {
54 gervaislavoie 398 num=val;
55 gervaislavoie 332 }
56    
57 gervaislavoie 495 int OPT_NOEUD::get_mvt_normal(void)
58 gervaislavoie 398 {
59 gervaislavoie 495 return mvt_normal;
60 gervaislavoie 398 }
61 gervaislavoie 495 void OPT_NOEUD::change_mvt_normal(int mvt)
62     {
63     mvt_normal=mvt;
64     }
65 gervaislavoie 398
66 gervaislavoie 495 /*int OPT_NOEUD::get_contrainte(void)
67 gervaislavoie 398 {
68 gervaislavoie 495 return contrainte;
69 gervaislavoie 398 }
70    
71 gervaislavoie 495 void OPT_NOEUD::change_contrainte(int cont)
72 gervaislavoie 398 {
73 gervaislavoie 495 contrainte=cont;
74     }*/
75    
76 gervaislavoie 528 int OPT_NOEUD::get_arret_gradient(void)
77 gervaislavoie 495 {
78 gervaislavoie 528 return arret_gradient;
79 francois 470 }
80    
81 gervaislavoie 528 void OPT_NOEUD::change_arret_gradient(int grad)
82 francois 470 {
83 gervaislavoie 528 arret_gradient=grad;
84 francois 470 }
85    
86 gervaislavoie 495 /*int OPT_NOEUD::get_fixe_au_depart(void)
87 francois 470 {
88 gervaislavoie 495 return fixe_au_depart;
89 gervaislavoie 398 }
90    
91 gervaislavoie 495 void OPT_NOEUD::change_fixe_au_depart(int fixe)
92 gervaislavoie 398 {
93 gervaislavoie 495 fixe_au_depart=fixe;
94     }*/
95    
96     int OPT_NOEUD::get_mobile_au_depart(void)
97     {
98     return mobile_au_depart;
99 gervaislavoie 398 }
100    
101 gervaislavoie 495 void OPT_NOEUD::change_mobile_au_depart(int mob)
102     {
103     mobile_au_depart=mob;
104     }
105    
106     int OPT_NOEUD::get_mobile(void)
107     {
108     return mobile;
109     }
110    
111     void OPT_NOEUD::change_mobile(int mob)
112     {
113     mobile=mob;
114     }
115    
116     int OPT_NOEUD::get_a_replacer(void)
117     {
118     return a_replacer;
119     }
120    
121     void OPT_NOEUD::change_a_replacer(int replacer)
122     {
123     a_replacer=replacer;
124     }
125    
126 gervaislavoie 528 /*int OPT_NOEUD::get_a_ete_replace(void)
127 gervaislavoie 495 {
128     return a_ete_replace;
129     }
130    
131     void OPT_NOEUD::change_a_ete_replace(int replace)
132     {
133     a_ete_replace=replace;
134 gervaislavoie 528 }*/
135    
136     int OPT_NOEUD::get_num_replacement(void)
137     {
138     return num_replacement;
139 gervaislavoie 495 }
140    
141 gervaislavoie 528 void OPT_NOEUD::change_num_replacement(int num)
142     {
143     num_replacement=num;
144     }
145    
146 francois 470 double OPT_NOEUD::get_terme_gradient_f(void)
147 gervaislavoie 398 {
148     return terme_gradient_f;
149     }
150    
151     void OPT_NOEUD::change_terme_gradient_f(double valeur)
152     {
153     terme_gradient_f=valeur;
154     }
155    
156 gervaislavoie 528 double OPT_NOEUD::get_sol_deplacement_virtuel(void)
157 gervaislavoie 495 {
158 gervaislavoie 528 return sol_deplacement_virtuel;
159 gervaislavoie 495 }
160    
161 gervaislavoie 528 void OPT_NOEUD::change_sol_deplacement_virtuel(double deplacement)
162 gervaislavoie 495 {
163 gervaislavoie 528 sol_deplacement_virtuel=deplacement;
164 gervaislavoie 495 }
165    
166 gervaislavoie 528 double OPT_NOEUD::get_sens_depl_virtuel(void)
167     {
168     return sens_depl_virtuel;
169     }
170    
171     void OPT_NOEUD::change_sens_depl_virtuel(double signe)
172     {
173     sens_depl_virtuel=signe;
174     }
175    
176     double OPT_NOEUD::get_depl_avant_algo_grad(void)
177     {
178     return depl_avant_algo_grad;
179     }
180    
181     void OPT_NOEUD::change_depl_avant_algo_grad(double depl)
182     {
183     depl_avant_algo_grad=depl;
184     }
185    
186     double* OPT_NOEUD::get_coord_lissee(void)
187     {
188     return xyz_lissee;
189     }
190    
191     void OPT_NOEUD::change_coord_lissee(double* coord)
192     {
193     xyz_lissee[0]=coord[0];
194     xyz_lissee[1]=coord[1];
195     xyz_lissee[2]=coord[2];
196     }
197    
198     TPL_MAP_ENTITE< OPT_NOEUD* > OPT_NOEUD::get_liste_noeud_voisin(void )
199     {
200     return lst_noeud_voisin;
201     }
202    
203     void OPT_NOEUD::change_liste_noeud_voisin(TPL_MAP_ENTITE< OPT_NOEUD* > lst)
204     {
205     lst_noeud_voisin=lst;
206     }
207    
208     /*TPL_MAP_ENTITE< OPT_TRIANGLE* > OPT_NOEUD::get_liste_tri_voisin(void )
209     {
210     return lst_tri_voisin;
211     }
212    
213     void OPT_NOEUD::change_liste_tri_voisin(TPL_MAP_ENTITE< OPT_TRIANGLE* > lst)
214     {
215     lst_tri_voisin=lst;
216     }*/
217    
218 gervaislavoie 332 unsigned long OPT_NOEUD::get_id(void)
219     {
220 francois 470 return fem_noeud->get_id();
221 gervaislavoie 332 }
222    
223     double OPT_NOEUD::get_x(void)
224     {
225 francois 470 return fem_noeud->get_x();
226 gervaislavoie 332 }
227    
228     double OPT_NOEUD::get_y(void)
229     {
230 francois 470 return fem_noeud->get_y();
231 gervaislavoie 332 }
232    
233     double OPT_NOEUD::get_z(void)
234     {
235 francois 470 return fem_noeud->get_z();
236 gervaislavoie 332 }
237    
238 gervaislavoie 398 double OPT_NOEUD::get_x_initial(void)
239     {
240 francois 470 return xyz0[0];
241 gervaislavoie 398 }
242    
243     double OPT_NOEUD::get_y_initial(void)
244     {
245 francois 470 return xyz0[1];
246 gervaislavoie 398 }
247    
248     double OPT_NOEUD::get_z_initial(void)
249     {
250 francois 470 return xyz0[2];
251 gervaislavoie 398 }
252    
253 gervaislavoie 332 double* OPT_NOEUD::get_coord(void)
254     {
255 francois 470 return fem_noeud->get_coord();
256 gervaislavoie 332 }
257    
258 francois 470 double OPT_NOEUD::get_norme_orientee_deplacement(void)
259     {
260     return norme_orientee_deplacement;
261     }
262 gervaislavoie 332
263 francois 470 void OPT_NOEUD::change_norme_orientee_deplacement(void)
264     {
265     OT_VECTEUR_3D n=get_normale_initiale();
266     OT_VECTEUR_3D D(get_x()-get_x_initial(),get_y()-get_y_initial(),get_z()-get_z_initial());
267    
268     int signe=1;
269     double ps_D_n=D*n;
270     if (ps_D_n<0)
271     signe=-1;
272     norme_orientee_deplacement=D.get_longueur()*signe;
273     }
274    
275 gervaislavoie 332 void OPT_NOEUD::change_normale(OT_VECTEUR_3D vec)
276     {
277     normale=vec;
278     }
279    
280     OT_VECTEUR_3D OPT_NOEUD::get_normale(void)
281     {
282     return normale;
283     }
284    
285     OT_VECTEUR_3D OPT_NOEUD::get_normale_initiale(void)
286     {
287 gervaislavoie 398 return normale_initiale;
288 gervaislavoie 332 }
289    
290     void OPT_NOEUD::change_normale_initiale(void)
291     {
292 gervaislavoie 398 normale_initiale=normale;
293 gervaislavoie 332 }
294    
295     void OPT_NOEUD::change_x(double xx)
296     {
297 francois 470 fem_noeud->change_x(xx);
298 gervaislavoie 332 }
299    
300     void OPT_NOEUD::change_y(double yy)
301     {
302 francois 470 fem_noeud->change_y(yy);
303 gervaislavoie 332 }
304    
305     void OPT_NOEUD::change_z(double zz)
306     {
307 francois 470 fem_noeud->change_z(zz);
308 gervaislavoie 332 }
309    
310 gervaislavoie 398 void OPT_NOEUD::change_x_initial(double x_initial)
311     {
312 francois 470 xyz0[0]=x_initial;
313 gervaislavoie 398 }
314    
315     void OPT_NOEUD::change_y_initial(double y_initial)
316     {
317 francois 470 xyz0[1]=y_initial;
318 gervaislavoie 398 }
319    
320     void OPT_NOEUD::change_z_initial(double z_initial)
321     {
322 francois 470 xyz0[2]=z_initial;
323 gervaislavoie 398 }
324    
325 gervaislavoie 332 void OPT_NOEUD::change_coord(double *coo)
326     {
327 francois 470 fem_noeud->change_coord(coo);
328 gervaislavoie 332 }
329    
330 francois 470 void OPT_NOEUD::change_solution(double val)
331 gervaislavoie 332 {
332 francois 470 fem_noeud->change_solution(val);
333 gervaislavoie 332 }
334    
335     double OPT_NOEUD::get_solution(void)
336     {
337 francois 470 fem_noeud->get_solution();
338 gervaislavoie 332 }