MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
fem_penta15.cpp
Aller à la documentation de ce fichier.
1 //####//------------------------------------------------------------
2 //####//------------------------------------------------------------
3 //####// MAGiC
4 //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5 //####// Departement de Genie Mecanique - UQTR
6 //####//------------------------------------------------------------
7 //####// MAGIC est un projet de recherche de l equipe ERICCA
8 //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9 //####// http://www.uqtr.ca/ericca
10 //####// http://www.uqtr.ca/
11 //####//------------------------------------------------------------
12 //####//------------------------------------------------------------
13 //####//
14 //####// fem_penta15.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 
24 #include "gestionversion.h"
25 #include "fem_penta15.h"
26 #include "fem_maillage.h"
27 #include "fem_noeud.h"
28 #include "mg_element_maillage.h"
29 #include "ot_tenseur.h"
30 #include "ot_quadrature_gauss.h"
31 
32 
33 FEM_PENTA15::FEM_PENTA15(unsigned long num,class MG_ELEMENT_MAILLAGE* mai,class FEM_NOEUD** tabnoeud):FEM_ELEMENT3(num,mai),FEM_TEMPLATE_ELEMENT<15>(tabnoeud)
34 {
36  tab[0]->get_lien_element3()->ajouter(this);
37  tab[1]->get_lien_element3()->ajouter(this);
38  tab[2]->get_lien_element3()->ajouter(this);
39  tab[3]->get_lien_element3()->ajouter(this);
40  tab[4]->get_lien_element3()->ajouter(this);
41  tab[5]->get_lien_element3()->ajouter(this);
42  tab[6]->get_lien_element3()->ajouter(this);
43  tab[7]->get_lien_element3()->ajouter(this);
44  tab[8]->get_lien_element3()->ajouter(this);
45  tab[9]->get_lien_element3()->ajouter(this);
46  tab[10]->get_lien_element3()->ajouter(this);
47  tab[11]->get_lien_element3()->ajouter(this);
48  tab[12]->get_lien_element3()->ajouter(this);
49  tab[13]->get_lien_element3()->ajouter(this);
50  tab[14]->get_lien_element3()->ajouter(this);
52 }
53 
55 {
57  tab[0]->get_lien_element3()->ajouter(this);
58  tab[1]->get_lien_element3()->ajouter(this);
59  tab[2]->get_lien_element3()->ajouter(this);
60  tab[3]->get_lien_element3()->ajouter(this);
61  tab[4]->get_lien_element3()->ajouter(this);
62  tab[5]->get_lien_element3()->ajouter(this);
63  tab[6]->get_lien_element3()->ajouter(this);
64  tab[7]->get_lien_element3()->ajouter(this);
65  tab[8]->get_lien_element3()->ajouter(this);
66  tab[9]->get_lien_element3()->ajouter(this);
67  tab[10]->get_lien_element3()->ajouter(this);
68  tab[11]->get_lien_element3()->ajouter(this);
69  tab[12]->get_lien_element3()->ajouter(this);
70  tab[13]->get_lien_element3()->ajouter(this);
71  tab[14]->get_lien_element3()->ajouter(this);
73 }
74 
75 FEM_PENTA15::FEM_PENTA15(unsigned long num,class MG_ELEMENT_TOPOLOGIQUE* topo,class FEM_NOEUD** tabnoeud):FEM_ELEMENT3(num,topo),FEM_TEMPLATE_ELEMENT<15>(tabnoeud)
76 {
78  tab[0]->get_lien_element3()->ajouter(this);
79  tab[1]->get_lien_element3()->ajouter(this);
80  tab[2]->get_lien_element3()->ajouter(this);
81  tab[3]->get_lien_element3()->ajouter(this);
82  tab[4]->get_lien_element3()->ajouter(this);
83  tab[5]->get_lien_element3()->ajouter(this);
84  tab[6]->get_lien_element3()->ajouter(this);
85  tab[7]->get_lien_element3()->ajouter(this);
86  tab[8]->get_lien_element3()->ajouter(this);
87  tab[9]->get_lien_element3()->ajouter(this);
88  tab[10]->get_lien_element3()->ajouter(this);
89  tab[11]->get_lien_element3()->ajouter(this);
90  tab[12]->get_lien_element3()->ajouter(this);
91  tab[13]->get_lien_element3()->ajouter(this);
92  tab[14]->get_lien_element3()->ajouter(this);
94 }
95 
97 {
99  tab[0]->get_lien_element3()->ajouter(this);
100  tab[1]->get_lien_element3()->ajouter(this);
101  tab[2]->get_lien_element3()->ajouter(this);
102  tab[3]->get_lien_element3()->ajouter(this);
103  tab[4]->get_lien_element3()->ajouter(this);
104  tab[5]->get_lien_element3()->ajouter(this);
105  tab[6]->get_lien_element3()->ajouter(this);
106  tab[7]->get_lien_element3()->ajouter(this);
107  tab[8]->get_lien_element3()->ajouter(this);
108  tab[9]->get_lien_element3()->ajouter(this);
109  tab[10]->get_lien_element3()->ajouter(this);
110  tab[11]->get_lien_element3()->ajouter(this);
111  tab[12]->get_lien_element3()->ajouter(this);
112  tab[13]->get_lien_element3()->ajouter(this);
113  tab[14]->get_lien_element3()->ajouter(this);
115 }
116 
117 FEM_PENTA15::FEM_PENTA15(unsigned long num,class MG_ELEMENT_TOPOLOGIQUE* topo,class MG_ELEMENT_MAILLAGE* mai,class FEM_NOEUD** tabnoeud):FEM_ELEMENT3(num,topo,mai),FEM_TEMPLATE_ELEMENT<15>(tabnoeud)
118 {
120  tab[0]->get_lien_element3()->ajouter(this);
121  tab[1]->get_lien_element3()->ajouter(this);
122  tab[2]->get_lien_element3()->ajouter(this);
123  tab[3]->get_lien_element3()->ajouter(this);
124  tab[4]->get_lien_element3()->ajouter(this);
125  tab[5]->get_lien_element3()->ajouter(this);
126  tab[6]->get_lien_element3()->ajouter(this);
127  tab[7]->get_lien_element3()->ajouter(this);
128  tab[8]->get_lien_element3()->ajouter(this);
129  tab[9]->get_lien_element3()->ajouter(this);
130  tab[10]->get_lien_element3()->ajouter(this);
131  tab[11]->get_lien_element3()->ajouter(this);
132  tab[12]->get_lien_element3()->ajouter(this);
133  tab[13]->get_lien_element3()->ajouter(this);
134  tab[14]->get_lien_element3()->ajouter(this);
136 }
137 
139 {
141  tab[0]->get_lien_element3()->ajouter(this);
142  tab[1]->get_lien_element3()->ajouter(this);
143  tab[2]->get_lien_element3()->ajouter(this);
144  tab[3]->get_lien_element3()->ajouter(this);
145  tab[4]->get_lien_element3()->ajouter(this);
146  tab[5]->get_lien_element3()->ajouter(this);
147  tab[6]->get_lien_element3()->ajouter(this);
148  tab[7]->get_lien_element3()->ajouter(this);
149  tab[8]->get_lien_element3()->ajouter(this);
150  tab[9]->get_lien_element3()->ajouter(this);
151  tab[10]->get_lien_element3()->ajouter(this);
152  tab[11]->get_lien_element3()->ajouter(this);
153  tab[12]->get_lien_element3()->ajouter(this);
154  tab[13]->get_lien_element3()->ajouter(this);
155  tab[14]->get_lien_element3()->ajouter(this);
157 }
158 
159 
160 
161 
163 {
165  tab[0]->get_lien_element3()->ajouter(this);
166  tab[1]->get_lien_element3()->ajouter(this);
167  tab[2]->get_lien_element3()->ajouter(this);
168  tab[3]->get_lien_element3()->ajouter(this);
169  tab[4]->get_lien_element3()->ajouter(this);
170  tab[5]->get_lien_element3()->ajouter(this);
171  tab[6]->get_lien_element3()->ajouter(this);
172  tab[7]->get_lien_element3()->ajouter(this);
173  tab[8]->get_lien_element3()->ajouter(this);
174  tab[9]->get_lien_element3()->ajouter(this);
175  tab[10]->get_lien_element3()->ajouter(this);
176  tab[11]->get_lien_element3()->ajouter(this);
177  tab[12]->get_lien_element3()->ajouter(this);
178  tab[13]->get_lien_element3()->ajouter(this);
179  tab[14]->get_lien_element3()->ajouter(this);
181 }
183 {
184  if (liaison_topologique!=NULL)
186  tab[0]->get_lien_element3()->supprimer(this);
187  tab[1]->get_lien_element3()->supprimer(this);
188  tab[2]->get_lien_element3()->supprimer(this);
189  tab[3]->get_lien_element3()->supprimer(this);
190  tab[4]->get_lien_element3()->supprimer(this);
191  tab[5]->get_lien_element3()->supprimer(this);
192  tab[6]->get_lien_element3()->supprimer(this);
193  tab[7]->get_lien_element3()->supprimer(this);
194  tab[8]->get_lien_element3()->supprimer(this);
195  tab[9]->get_lien_element3()->supprimer(this);
196  tab[10]->get_lien_element3()->supprimer(this);
197  tab[11]->get_lien_element3()->supprimer(this);
198  tab[12]->get_lien_element3()->supprimer(this);
199  tab[13]->get_lien_element3()->supprimer(this);
200  tab[14]->get_lien_element3()->supprimer(this);
202 }
203 
204 
206 {
207  FEM_NOEUD* tabnoeud[15];
208  tabnoeud[0]=femmai->get_fem_noeudid(tab[0]->get_id()+decalage);
209  tabnoeud[1]=femmai->get_fem_noeudid(tab[1]->get_id()+decalage);
210  tabnoeud[2]=femmai->get_fem_noeudid(tab[2]->get_id()+decalage);
211  tabnoeud[3]=femmai->get_fem_noeudid(tab[3]->get_id()+decalage);
212  tabnoeud[4]=femmai->get_fem_noeudid(tab[4]->get_id()+decalage);
213  tabnoeud[5]=femmai->get_fem_noeudid(tab[5]->get_id()+decalage);
214  tabnoeud[6]=femmai->get_fem_noeudid(tab[5]->get_id()+decalage);
215  tabnoeud[7]=femmai->get_fem_noeudid(tab[6]->get_id()+decalage);
216  tabnoeud[8]=femmai->get_fem_noeudid(tab[8]->get_id()+decalage);
217  tabnoeud[9]=femmai->get_fem_noeudid(tab[9]->get_id()+decalage);
218  tabnoeud[10]=femmai->get_fem_noeudid(tab[10]->get_id()+decalage);
219  tabnoeud[11]=femmai->get_fem_noeudid(tab[11]->get_id()+decalage);
220  tabnoeud[12]=femmai->get_fem_noeudid(tab[12]->get_id()+decalage);
221  tabnoeud[13]=femmai->get_fem_noeudid(tab[13]->get_id()+decalage);
222  tabnoeud[14]=femmai->get_fem_noeudid(tab[14]->get_id()+decalage);
223  FEM_PENTA15* pen=new FEM_PENTA15(get_id()+decalage,maillage,tabnoeud);
224  femmai->ajouter_fem_element3(pen);
225  return pen;
226 }
227 
229 {
230 voisin.vide();
231 if (no==tab[0])
232  {
233  voisin.ajouter(tab[1]);
234  voisin.ajouter(tab[5]);
235  voisin.ajouter(tab[6]);
236  }
237 if (no==tab[1])
238  {
239  voisin.ajouter(tab[0]);
240  voisin.ajouter(tab[2]);
241  }
242 if (no==tab[2])
243  {
244  voisin.ajouter(tab[1]);
245  voisin.ajouter(tab[3]);
246  voisin.ajouter(tab[7]);
247  }
248 if (no==tab[3])
249  {
250  voisin.ajouter(tab[2]);
251  voisin.ajouter(tab[4]);
252  }
253 if (no==tab[4])
254  {
255  voisin.ajouter(tab[3]);
256  voisin.ajouter(tab[5]);
257  voisin.ajouter(tab[8]);
258  }
259 if (no==tab[5])
260  {
261  voisin.ajouter(tab[0]);
262  voisin.ajouter(tab[4]);
263  }
264 if (no==tab[6])
265  {
266  voisin.ajouter(tab[0]);
267  voisin.ajouter(tab[9]);
268  }
269 if (no==tab[7])
270  {
271  voisin.ajouter(tab[2]);
272  voisin.ajouter(tab[11]);
273  }
274 if (no==tab[8])
275  {
276  voisin.ajouter(tab[4]);
277  voisin.ajouter(tab[13]);
278  }
279 if (no==tab[9])
280  {
281  voisin.ajouter(tab[6]);
282  voisin.ajouter(tab[10]);
283  voisin.ajouter(tab[14]);
284  }
285 if (no==tab[10])
286  {
287  voisin.ajouter(tab[9]);
288  voisin.ajouter(tab[11]);
289  }
290 if (no==tab[11])
291  {
292  voisin.ajouter(tab[7]);
293  voisin.ajouter(tab[10]);
294  voisin.ajouter(tab[12]);
295  }
296 if (no==tab[12])
297  {
298  voisin.ajouter(tab[11]);
299  voisin.ajouter(tab[13]);
300  }
301 if (no==tab[13])
302  {
303  voisin.ajouter(tab[8]);
304  voisin.ajouter(tab[12]);
305  voisin.ajouter(tab[14]);
306  }
307 if (no==tab[14])
308  {
309  voisin.ajouter(tab[9]);
310  voisin.ajouter(tab[13]);
311  }
312 
313 
314 
315 }
316 
318 {
319 if (uvw[0]>=-1e-10)
320  if (uvw[1]>=-1e-10)
321  if (uvw[2]>=-1.-1e-10)
322  if (1.-uvw[0]-uvw[1]<=1.+1e-10)
323  if (uvw[2]<=1.+1e-10)
324  return true;
325 return false;
326 }
327 
329 {
331 }
332 
334 {
336 }
337 
339 {
340  return 3;
341 }
342 
343 
344 
346 {
348 }
349 
351 {
353 }
354 
356 {
358 }
359 
361 {
363 }
364 
365 
366 void FEM_PENTA15::enregistrer(std::ostream& o,double version)
367 {
368  if (maillage!=NULL)
369  if (get_lien_topologie()!=NULL) o << "%" << get_id() << "=FEM_PENTA15($"<< get_lien_topologie()->get_id() << ",$" << maillage->get_id() << ",$" << tab[0]->get_id() << ",$" << tab[1]->get_id() << ",$" << tab[2]->get_id()<< ",$" << tab[3]->get_id() << ",$" << tab[4]->get_id() << ",$" << tab[5]->get_id() << ",$" << tab[6]->get_id() << ",$" << tab[7]->get_id() << ",$" << tab[8]->get_id() << ",$" << tab[9]->get_id() << ",$" << tab[10]->get_id() << ",$" << tab[11]->get_id() << ",$" << tab[12]->get_id() << ",$" << tab[13]->get_id() << ",$" << tab[14]->get_id() << ");" << std::endl;
370  else o << "%" << get_id() << "=FEM_PENTA15(NULL,$" << maillage->get_id() << ",$" << tab[0]->get_id() << ",$" << tab[1]->get_id() << ",$" << tab[2]->get_id()<< ",$" << tab[3]->get_id() << ",$" << tab[4]->get_id() << ",$" << tab[5]->get_id() << ",$" << tab[6]->get_id() << ",$" << tab[7]->get_id() << ",$" << tab[8]->get_id() << ",$" << tab[9]->get_id() << ",$" << tab[10]->get_id() << ",$" << tab[11]->get_id() << ",$" << tab[12]->get_id() << ",$" << tab[13]->get_id() << ",$" << tab[14]->get_id() << ");" << std::endl;
371  else
372  if (get_lien_topologie()!=NULL) o << "%" << get_id() << "=FEM_PENTA15($"<< get_lien_topologie()->get_id() << ",NULL,$" << tab[0]->get_id() << ",$" << tab[1]->get_id() << ",$" << tab[2]->get_id()<< ",$" << tab[3]->get_id() << ",$" << tab[4]->get_id() << ",$" << tab[5]->get_id() << ",$" << tab[6]->get_id() << ",$" << tab[7]->get_id() << ",$" << tab[8]->get_id() << ",$" << tab[9]->get_id() << ",$" << tab[10]->get_id() << ",$" << tab[11]->get_id() << ",$" << tab[12]->get_id() << ",$" << tab[13]->get_id() << ",$" << tab[14]->get_id() << ");" << std::endl;
373  else o << "%" << get_id() << "=FEM_PENTA15(NULL,NULL,$" << tab[0]->get_id() << ",$" << tab[1]->get_id() << ",$" << tab[2]->get_id()<< ",$" << tab[3]->get_id() << ",$" << tab[4]->get_id() << ",$" << tab[5]->get_id() << ",$" << tab[6]->get_id() << ",$" << tab[7]->get_id() << ",$" << tab[8]->get_id() << ",$" << tab[9]->get_id() << ",$" << tab[10]->get_id() << ",$" << tab[11]->get_id() << ",$" << tab[12]->get_id() << ",$" << tab[13]->get_id() << ",$" << tab[14]->get_id() << ");" << std::endl;
374 
375 }
376 
377 
379 {
381 }
382 
383 void FEM_PENTA15::get_pt_gauss(int degre,int num,double &w,double *uvw)
384 {
385 return OT_POINTS_GAUSS::get_pt_gauss_penta(degre,num,w,uvw);
386 }
387 
389 {
391 }
392 
394 {
395  return 15;
396 }
397 
399 {
400  return 3;
401 }
402 double FEM_PENTA15::get_fonction_interpolation(int num,double *uv)
403 {
404  double val;
405  switch (num)
406  {
407  case 1:
408  val=uv[1]*(1.-uv[0])*(2.*uv[1]-2.-uv[0])/2.;
409  break;
410  case 3:
411  val=uv[2]*(1.-uv[0])*(2.*uv[2]-2.-uv[0])/2.;
412  break;
413  case 5:
414  val=(uv[0]-1.)*(1.-uv[1]-uv[2])*(uv[0]+2*uv[1]+2*uv[2])/2.;
415  break;
416  case 10:
417  val=uv[1]*(1.+uv[0])*(2*uv[1]-2.+uv[0])/2.;
418  break;
419  case 12:
420  val=uv[2]*(1.+uv[0])*(2*uv[2]-2.+uv[0])/2.;
421  break;
422  case 14:
423  val=(-uv[0]-1.)*(1.-uv[1]-uv[2])*(-uv[0]+2*uv[1]+2*uv[2])/2.;
424  break;
425  case 2:
426  val=2.*uv[1]*uv[2]*(1.-uv[0]);
427  break;
428  case 4:
429  val=2.*uv[2]*(1.-uv[0])*(1.-uv[1]-uv[2]);
430  break;
431  case 6:
432  val=2.*uv[1]*(1.-uv[0])*(1.-uv[1]-uv[2]);
433  break;
434  case 7:
435  val=uv[1]*(1.-uv[0]*uv[0]);
436  break;
437  case 8:
438  val=uv[2]*(1.-uv[0]*uv[0]);
439  break;
440  case 9:
441  val=(1.-uv[0]*uv[0])*(1.-uv[1]-uv[2]);
442  break;
443  case 11:
444  val=2*uv[1]*uv[2]*(1+uv[0]);
445  break;
446  case 13:
447  val=2*uv[2]*(1-uv[1]-uv[2])*(1.+uv[0]);
448  break;
449  case 15:
450  val=2*uv[1]*(1-uv[1]-uv[2])*(1.+uv[0]);
451  break;
452  }
453  return val;
454 }
455 
456 double FEM_PENTA15::get_fonction_derive_interpolation(int num,int num_variable,double *uv)
457 {
458  double val;
459  switch (num)
460  {
461  case 1:
462  switch (num_variable)
463  {
464  case 1:
465  val=uv[1]*(2.*uv[0]-2.*uv[1]+1.)/2.;
466  break;
467  case 2:
468  val=(uv[0]-1.)*(uv[0]-4.*uv[1]+2.)/2.;
469  break;
470  case 3:
471  val=0.;
472  break;
473  } break;
474  case 3:
475  switch (num_variable)
476  {
477  case 1:
478  val=uv[2]*(2.*uv[0]-2.*uv[2]+1.)/2.;
479  break;
480  case 2:
481  val=0.;
482  break;
483  case 3:
484  val=(uv[0]-1.)*(uv[0]-4.*uv[2]+2.)/2.;
485  break;
486  } break;
487  case 5:
488  switch (num_variable)
489  {
490  case 1:
491  val=(1.-uv[1]-uv[2])*(2.*uv[0]+2.*uv[1]+2.*uv[2]-1.)/2.;
492  break;
493  case 2:
494  val=(1.-uv[0])*(uv[0]+4.*uv[1]+4.*uv[2]-2.)/2.;
495  break;
496  case 3:
497  val=(1.-uv[0])*(uv[0]+4.*uv[1]+4.*uv[2]-2.)/2.;
498  break;
499  } break;
500  case 10:
501  switch (num_variable)
502  {
503  case 1:
504  val=uv[1]*(2.*uv[0]+2.*uv[1]-1.)/2.;
505  break;
506  case 2:
507  val=(uv[0]+1.)*(uv[0]+4.*uv[1]-2.)/2.;
508  break;
509  case 3:
510  val=0.;
511  break;
512  } break;
513  case 12:
514  switch (num_variable)
515  {
516  case 1:
517  val=uv[2]*(2.*uv[0]+2*uv[2]-1.)/2.;
518  break;
519  case 2:
520  val=0;
521  break;
522  case 3:
523  val=(uv[0]+1.)*(uv[0]+4.*uv[2]-2.)/2.;
524  break;
525  } break;
526  case 14:
527  switch (num_variable)
528  {
529  case 1:
530  val=(1.-uv[1]-uv[2])*(2.*uv[0]-2.*uv[1]-2.*uv[2]+1.)/2.;
531  break;
532  case 2:
533  val=-(uv[0]+1.)*(uv[0]-4.*uv[1]-4.*uv[2]+2.)/2.;
534  break;
535  case 3:
536  val=-(uv[0]+1.)*(uv[0]-4.*uv[1]-4.*uv[2]+2.)/2.;
537  break;
538  } break;
539  case 2:
540  switch (num_variable)
541  {
542  case 1:
543  val=-2.*uv[1]*uv[2];
544  break;
545  case 2:
546  val=-2.*uv[2]*(uv[0]-1.);
547  break;
548  case 3:
549  val=-2.*uv[1]*(uv[0]-1.);
550  break;
551  } break;
552  case 4:
553  switch (num_variable)
554  {
555  case 1:
556  val=2.*uv[2]*(uv[1]+uv[2]-1.);
557  break;
558  case 2:
559  val=-2.*uv[2]*(uv[0]-1.);
560  break;
561  case 3:
562  val=-2.*(uv[0]-1.)*(uv[1]+2.*uv[2]+1.);
563  break;
564  } break;
565  case 6:
566  switch (num_variable)
567  {
568  case 1:
569  val=2.*uv[1]*(uv[1]+uv[2]-1.);
570  break;
571  case 2:
572  val=2.*(uv[0]-1.)*(2.*uv[1]+uv[2]-1.);
573  break;
574  case 3:
575  val=2.*uv[1]*(uv[0]-1.);
576  break;
577  } break;
578  case 7:
579  switch (num_variable)
580  {
581  case 1:
582  val=-2.*uv[0]*uv[1];
583  break;
584  case 2:
585  val=1-uv[0]*uv[0];
586  break;
587  case 3:
588  val=0.;
589  break;
590  } break;
591  case 8:
592  switch (num_variable)
593  {
594  case 1:
595  val=-2.*uv[0]*uv[2];
596  break;
597  case 2:
598  val=0.;
599  break;
600  case 3:
601  val=1.-uv[0]*uv[0];
602  break;
603  } break;
604  case 9:
605  switch (num_variable)
606  {
607  case 1:
608  val=-2.*uv[0]*(uv[1]+uv[2]-1.);
609  break;
610  case 2:
611  val=uv[0]*uv[0]-1.;
612  break;
613  case 3:
614  val=uv[0]*uv[0]-1.;
615  break;
616  } break;
617  case 11:
618  switch (num_variable)
619  {
620  case 1:
621  val=-2.*uv[1]*uv[2];
622  break;
623  case 2:
624  val=2.*uv[2]*(1.+uv[0]);
625  break;
626  case 3:
627  val=2.*uv[1]*(1.+uv[0]);
628  break;
629  } break;
630  case 13:
631  switch (num_variable)
632  {
633  case 1:
634  val=-2.*uv[2]*(uv[1]+uv[2]-1.);
635  break;
636  case 2:
637  val=-2.*uv[2]*(uv[0]+1.);
638  break;
639  case 3:
640  val=-2.*(uv[0]+1.)*(uv[1]+2.*uv[2]-1.);
641  break;
642  } break;
643  case 15:
644  switch (num_variable)
645  {
646  case 1:
647  val=-2.*uv[1]*(uv[1]+uv[2]-1.);
648  break;
649  case 2:
650  val=-2*(uv[0]+1.)*(2*uv[1]+uv[2]-1.);
651  break;
652  case 3:
653  val=-2.*uv[1]*(uv[0]+1.);
654  break;
655  } break;
656  }
657  return val;
658 }
659 
660 
661 
662 
663 
665 {
666 return 0.;
667 }
FEM_PENTA15::get_degre_gauss
virtual int get_degre_gauss(int num)
Definition: fem_penta15.cpp:388
FEM_PENTA15::reinit_boite_3D
virtual void reinit_boite_3D(void)
Definition: fem_penta15.cpp:328
FEM_PENTA15::get_type_entite
virtual int get_type_entite(void)
Definition: fem_penta15.cpp:333
FEM_PENTA15::change_noeud
virtual void change_noeud(int num, FEM_NOEUD *noeud)
Definition: fem_penta15.cpp:355
gestionversion.h
FEM_NOEUD::get_lien_petit_element3
TPL_LISTE_ENTITE< class FEM_ELEMENT3 * > * get_lien_petit_element3(void)
Definition: fem_noeud.cpp:423
FEM_TEMPLATE_ELEMENT::get_boite_3D
virtual BOITE_3D & get_boite_3D(void)
Definition: fem_template_element.cpp:127
FEM_PENTA15::enregistrer
virtual void enregistrer(std::ostream &o, double version)
Definition: fem_penta15.cpp:366
MG_IDENTIFICATEUR::get_id
unsigned long get_id()
Definition: mg_identificateur.cpp:53
fem_maillage.h
FEM_PENTA15::get_boite_3D
virtual BOITE_3D & get_boite_3D(void)
Definition: fem_penta15.cpp:360
FEM_PENTA15::get_voisin_noeud
virtual void get_voisin_noeud(class FEM_NOEUD *no, TPL_LISTE_ENTITE< FEM_NOEUD * > &voisin)
Definition: fem_penta15.cpp:228
fem_noeud.h
MG_ELEMENT_MAILLAGE
Definition: mg_element_maillage.h:38
FEM_ELEMENT_MAILLAGE::get_lien_topologie
virtual class MG_ELEMENT_TOPOLOGIQUE * get_lien_topologie(void)
Definition: fem_element_maillage.cpp:89
FEM_PENTA15::get_degremax_fonction_interpolation
virtual int get_degremax_fonction_interpolation(void)
Definition: fem_penta15.cpp:398
FEM_ELEMENT3
Definition: fem_element3.h:34
MG_ELEMENT_TOPOLOGIQUE::get_dimension
virtual int get_dimension(void)=0
FEM_PENTA15::dupliquer
virtual FEM_ELEMENT_MAILLAGE * dupliquer(class FEM_MAILLAGE *femmai, long decalage)
Definition: fem_penta15.cpp:205
FEM_PENTA15::~FEM_PENTA15
virtual ~FEM_PENTA15()
Definition: fem_penta15.cpp:182
mg_element_maillage.h
FEM_ELEMENT_MAILLAGE::liaison_topologique
class MG_ELEMENT_TOPOLOGIQUE * liaison_topologique
Definition: fem_element_maillage.h:73
FEM_PENTA15::verifie_validite_decoupage_xfem
virtual int verifie_validite_decoupage_xfem(double *vol=NULL)
Definition: fem_penta15.cpp:664
FEM_MAILLAGE::get_fem_noeudid
FEM_NOEUD * get_fem_noeudid(unsigned long num)
Definition: fem_maillage.cpp:150
FEM_TEMPLATE_ELEMENT::get_fem_noeud
virtual FEM_NOEUD * get_fem_noeud(int num)
Definition: fem_template_element.cpp:100
FEM_PENTA15::get_fonction_interpolation
virtual double get_fonction_interpolation(int num, double *uv)
Definition: fem_penta15.cpp:402
FEM_PENTA15::get_fonction_derive_interpolation
virtual double get_fonction_derive_interpolation(int num, int numvariable, double *uv)
Definition: fem_penta15.cpp:456
MG_ELEMENT_TOPOLOGIQUE
Definition: mg_element_topologique.h:51
FEM_PENTA15::FEM_PENTA15
FEM_PENTA15(unsigned long num, class MG_ELEMENT_MAILLAGE *mai, class FEM_NOEUD **tabnoeud)
Definition: fem_penta15.cpp:33
FEM_ELEMENT_MAILLAGE
Definition: fem_element_maillage.h:35
FEM_TEMPLATE_ELEMENT::change_noeud
virtual void change_noeud(int num, FEM_NOEUD *noeud)
Definition: fem_template_element.cpp:106
FEM_MAILLAGE
Definition: fem_maillage.h:66
FEM_PENTA15::get_dimension
virtual int get_dimension(void)
Definition: fem_penta15.cpp:338
FEM_NOEUD::get_lien_element3
TPL_LISTE_ENTITE< class FEM_ELEMENT3 * > * get_lien_element3(void)
Definition: fem_noeud.cpp:417
TPL_LISTE_ENTITE::ajouter
virtual void ajouter(X x)
Definition: tpl_liste_entite.h:38
FEM_TEMPLATE_ELEMENT< 15 >::get_fem_noeudpetitid
virtual FEM_NOEUD * get_fem_noeudpetitid(void)
Definition: fem_template_element.cpp:111
fem_penta15.h
FEM_NOEUD
Definition: fem_noeud.h:35
FEM_PENTA15::get_nb_fem_noeud
virtual int get_nb_fem_noeud(void)
Definition: fem_penta15.cpp:345
FEM_PENTA15::get_fem_noeud
virtual FEM_NOEUD * get_fem_noeud(int num)
Definition: fem_penta15.cpp:350
FEM_PENTA15::get_nb_fonction_interpolation
virtual int get_nb_fonction_interpolation(void)
Definition: fem_penta15.cpp:393
TPL_LISTE_ENTITE::vide
virtual void vide(void)
Definition: tpl_liste_entite.h:77
ot_tenseur.h
BOITE_3D
Definition: ot_boite_3d.h:27
FEM_TEMPLATE_ELEMENT::get_nb_fem_noeud
virtual int get_nb_fem_noeud(void)
Definition: fem_template_element.cpp:94
FEM_ELEMENT_MAILLAGE::maillage
class MG_ELEMENT_MAILLAGE * maillage
Definition: fem_element_maillage.h:72
FEM_PENTA15::get_nb_pt_gauss
virtual int get_nb_pt_gauss(int degre)
Definition: fem_penta15.cpp:378
FEM_TEMPLATE_ELEMENT< 15 >::tab
FEM_NOEUD * tab[N]
Definition: fem_template_element.h:57
MG_ELEMENT_TOPOLOGIQUE::get_lien_fem_maillage
virtual TPL_LISTE_ENTITE< FEM_ELEMENT_MAILLAGE * > * get_lien_fem_maillage(void)
Definition: mg_element_topologique.cpp:67
OT_POINTS_GAUSS::get_degre_gauss_penta
static int get_degre_gauss_penta(int num)
Definition: ot_quadrature_gauss.cpp:203
TPL_LISTE_ENTITE
Definition: tpl_liste_entite.h:32
FEM_TEMPLATE_ELEMENT::reinit_boite_3D
virtual void reinit_boite_3D(void)
Definition: fem_template_element.cpp:57
ot_quadrature_gauss.h
OT_POINTS_GAUSS::get_pt_gauss_penta
static void get_pt_gauss_penta(int degre, int num, double &w, double *uvw)
Definition: ot_quadrature_gauss.cpp:544
TPL_LISTE_ENTITE::supprimer
virtual void supprimer(X x)
Definition: tpl_liste_entite.h:42
FEM_PENTA15::get_pt_gauss
virtual void get_pt_gauss(int degre, int num, double &w, double *uvw)
Definition: fem_penta15.cpp:383
MAGIC::TYPE_ENTITE::IDFEM_PENTA15
@ IDFEM_PENTA15
Definition: mg_definition.h:70
FEM_PENTA15::valide_parametre_EF
virtual bool valide_parametre_EF(double *uvw)
Definition: fem_penta15.cpp:317
OT_POINTS_GAUSS::get_nb_point_penta
static int get_nb_point_penta(int degre)
Definition: ot_quadrature_gauss.cpp:195
FEM_MAILLAGE::ajouter_fem_element3
int ajouter_fem_element3(FEM_ELEMENT3 *femelement3)
Definition: fem_maillage.cpp:580
FEM_TEMPLATE_ELEMENT
Definition: fem_template_element.h:35
FEM_PENTA15
Definition: fem_penta15.h:35