ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/fem_tetra10.cpp
Revision: 638
Committed: Mon Jan 26 21:56:20 2015 UTC (10 years, 3 months ago) by francois
File size: 19086 byte(s)
Log Message:
ajout d'une méthode qui renvoit le degre max des fonctions d'interpolation et changement de nom de la fonction qui renvoie le nombre de fonction d'interpolation (ajout d'un get pour uniformiser)

File Contents

# User Rev Content
1 francois 283 //------------------------------------------------------------
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 francois 309 // fem_element310.cpp
16 francois 283 //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 � 11H22
21     //------------------------------------------------------------
22     //------------------------------------------------------------
23    
24    
25     #include "gestionversion.h"
26     #include "fem_tetra10.h"
27     #include "fem_noeud.h"
28     #include "mg_element_maillage.h"
29     #include "fem_maillage.h"
30    
31    
32 francois 309 FEM_TETRA10::FEM_TETRA10(unsigned long num,class MG_ELEMENT_MAILLAGE* mai,class FEM_NOEUD** tabnoeud):FEM_ELEMENT3(num,mai),FEM_TEMPLATE_ELEMENT<10>(tabnoeud)
33 francois 283 {
34     if (liaison_topologique!=NULL) if (liaison_topologique->get_dimension()==3) liaison_topologique->get_lien_fem_maillage()->ajouter(this);
35 francois 309 tab[0]->get_lien_element3()->ajouter(this);
36     tab[1]->get_lien_element3()->ajouter(this);
37     tab[2]->get_lien_element3()->ajouter(this);
38     tab[3]->get_lien_element3()->ajouter(this);
39     tab[4]->get_lien_element3()->ajouter(this);
40     tab[5]->get_lien_element3()->ajouter(this);
41     tab[6]->get_lien_element3()->ajouter(this);
42     tab[7]->get_lien_element3()->ajouter(this);
43     tab[8]->get_lien_element3()->ajouter(this);
44     tab[9]->get_lien_element3()->ajouter(this);
45     get_fem_noeudpetitid()->get_lien_petit_element3()->ajouter(this);
46 francois 283 }
47    
48 francois 309 FEM_TETRA10::FEM_TETRA10(class MG_ELEMENT_MAILLAGE* mai,FEM_NOEUD** tabnoeud):FEM_ELEMENT3(mai),FEM_TEMPLATE_ELEMENT<10>(tabnoeud)
49 francois 283 {
50     if (liaison_topologique!=NULL) if (liaison_topologique->get_dimension()==3) liaison_topologique->get_lien_fem_maillage()->ajouter(this);
51 francois 309 tab[0]->get_lien_element3()->ajouter(this);
52     tab[1]->get_lien_element3()->ajouter(this);
53     tab[2]->get_lien_element3()->ajouter(this);
54     tab[3]->get_lien_element3()->ajouter(this);
55     tab[4]->get_lien_element3()->ajouter(this);
56     tab[5]->get_lien_element3()->ajouter(this);
57     tab[6]->get_lien_element3()->ajouter(this);
58     tab[7]->get_lien_element3()->ajouter(this);
59     tab[8]->get_lien_element3()->ajouter(this);
60     tab[9]->get_lien_element3()->ajouter(this);
61     get_fem_noeudpetitid()->get_lien_petit_element3()->ajouter(this);
62 francois 283 }
63 francois 378 FEM_TETRA10::FEM_TETRA10(unsigned long num,class MG_ELEMENT_TOPOLOGIQUE* topo,class FEM_NOEUD** tabnoeud):FEM_ELEMENT3(num,topo),FEM_TEMPLATE_ELEMENT<10>(tabnoeud)
64     {
65     if (liaison_topologique!=NULL) if (liaison_topologique->get_dimension()==3) liaison_topologique->get_lien_fem_maillage()->ajouter(this);
66     tab[0]->get_lien_element3()->ajouter(this);
67     tab[1]->get_lien_element3()->ajouter(this);
68     tab[2]->get_lien_element3()->ajouter(this);
69     tab[3]->get_lien_element3()->ajouter(this);
70     tab[4]->get_lien_element3()->ajouter(this);
71     tab[5]->get_lien_element3()->ajouter(this);
72     tab[6]->get_lien_element3()->ajouter(this);
73     tab[7]->get_lien_element3()->ajouter(this);
74     tab[8]->get_lien_element3()->ajouter(this);
75     tab[9]->get_lien_element3()->ajouter(this);
76     get_fem_noeudpetitid()->get_lien_petit_element3()->ajouter(this);
77     }
78 francois 283
79 francois 378 FEM_TETRA10::FEM_TETRA10(class MG_ELEMENT_TOPOLOGIQUE* topo,FEM_NOEUD** tabnoeud):FEM_ELEMENT3(topo),FEM_TEMPLATE_ELEMENT<10>(tabnoeud)
80     {
81     if (liaison_topologique!=NULL) if (liaison_topologique->get_dimension()==3) liaison_topologique->get_lien_fem_maillage()->ajouter(this);
82     tab[0]->get_lien_element3()->ajouter(this);
83     tab[1]->get_lien_element3()->ajouter(this);
84     tab[2]->get_lien_element3()->ajouter(this);
85     tab[3]->get_lien_element3()->ajouter(this);
86     tab[4]->get_lien_element3()->ajouter(this);
87     tab[5]->get_lien_element3()->ajouter(this);
88     tab[6]->get_lien_element3()->ajouter(this);
89     tab[7]->get_lien_element3()->ajouter(this);
90     tab[8]->get_lien_element3()->ajouter(this);
91     tab[9]->get_lien_element3()->ajouter(this);
92     get_fem_noeudpetitid()->get_lien_petit_element3()->ajouter(this);
93     }
94     FEM_TETRA10::FEM_TETRA10(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<10>(tabnoeud)
95     {
96     if (liaison_topologique!=NULL) if (liaison_topologique->get_dimension()==3) liaison_topologique->get_lien_fem_maillage()->ajouter(this);
97     tab[0]->get_lien_element3()->ajouter(this);
98     tab[1]->get_lien_element3()->ajouter(this);
99     tab[2]->get_lien_element3()->ajouter(this);
100     tab[3]->get_lien_element3()->ajouter(this);
101     tab[4]->get_lien_element3()->ajouter(this);
102     tab[5]->get_lien_element3()->ajouter(this);
103     tab[6]->get_lien_element3()->ajouter(this);
104     tab[7]->get_lien_element3()->ajouter(this);
105     tab[8]->get_lien_element3()->ajouter(this);
106     tab[9]->get_lien_element3()->ajouter(this);
107     get_fem_noeudpetitid()->get_lien_petit_element3()->ajouter(this);
108     }
109    
110     FEM_TETRA10::FEM_TETRA10(class MG_ELEMENT_TOPOLOGIQUE* topo,class MG_ELEMENT_MAILLAGE* mai,FEM_NOEUD** tabnoeud):FEM_ELEMENT3(topo,mai),FEM_TEMPLATE_ELEMENT<10>(tabnoeud)
111     {
112     if (liaison_topologique!=NULL) if (liaison_topologique->get_dimension()==3) liaison_topologique->get_lien_fem_maillage()->ajouter(this);
113     tab[0]->get_lien_element3()->ajouter(this);
114     tab[1]->get_lien_element3()->ajouter(this);
115     tab[2]->get_lien_element3()->ajouter(this);
116     tab[3]->get_lien_element3()->ajouter(this);
117     tab[4]->get_lien_element3()->ajouter(this);
118     tab[5]->get_lien_element3()->ajouter(this);
119     tab[6]->get_lien_element3()->ajouter(this);
120     tab[7]->get_lien_element3()->ajouter(this);
121     tab[8]->get_lien_element3()->ajouter(this);
122     tab[9]->get_lien_element3()->ajouter(this);
123     get_fem_noeudpetitid()->get_lien_petit_element3()->ajouter(this);
124     }
125    
126    
127    
128    
129    
130    
131    
132 francois 309 FEM_TETRA10::FEM_TETRA10(FEM_TETRA10& mdd):FEM_ELEMENT3(mdd),FEM_TEMPLATE_ELEMENT<10>(mdd)
133 francois 283 {
134     if (liaison_topologique!=NULL) if (liaison_topologique->get_dimension()==3) liaison_topologique->get_lien_fem_maillage()->ajouter(this);
135 francois 309 tab[0]->get_lien_element3()->ajouter(this);
136     tab[1]->get_lien_element3()->ajouter(this);
137     tab[2]->get_lien_element3()->ajouter(this);
138     tab[3]->get_lien_element3()->ajouter(this);
139     tab[4]->get_lien_element3()->ajouter(this);
140     tab[5]->get_lien_element3()->ajouter(this);
141     tab[6]->get_lien_element3()->ajouter(this);
142     tab[7]->get_lien_element3()->ajouter(this);
143     tab[8]->get_lien_element3()->ajouter(this);
144     tab[9]->get_lien_element3()->ajouter(this);
145     get_fem_noeudpetitid()->get_lien_petit_element3()->ajouter(this);
146 francois 283 }
147     FEM_TETRA10::~FEM_TETRA10()
148     {
149     if (liaison_topologique==NULL) return;
150     if (liaison_topologique->get_dimension()==0) liaison_topologique->get_lien_fem_maillage()->supprimer(this);
151 francois 309 tab[0]->get_lien_element3()->supprimer(this);
152     tab[1]->get_lien_element3()->supprimer(this);
153     tab[2]->get_lien_element3()->supprimer(this);
154     tab[3]->get_lien_element3()->supprimer(this);
155     tab[4]->get_lien_element3()->supprimer(this);
156     tab[5]->get_lien_element3()->supprimer(this);
157     tab[6]->get_lien_element3()->supprimer(this);
158     tab[7]->get_lien_element3()->supprimer(this);
159     tab[8]->get_lien_element3()->supprimer(this);
160     tab[9]->get_lien_element3()->supprimer(this);
161     get_fem_noeudpetitid()->get_lien_petit_element3()->supprimer(this);
162 francois 283 }
163    
164     FEM_ELEMENT_MAILLAGE* FEM_TETRA10::dupliquer(FEM_MAILLAGE *femmai,long decalage)
165     {
166     FEM_NOEUD* tabnoeud[10];
167     tabnoeud[0]=femmai->get_fem_noeudid(tab[0]->get_id()+decalage);
168     tabnoeud[1]=femmai->get_fem_noeudid(tab[1]->get_id()+decalage);
169     tabnoeud[2]=femmai->get_fem_noeudid(tab[2]->get_id()+decalage);
170     tabnoeud[3]=femmai->get_fem_noeudid(tab[3]->get_id()+decalage);
171     tabnoeud[4]=femmai->get_fem_noeudid(tab[4]->get_id()+decalage);
172     tabnoeud[5]=femmai->get_fem_noeudid(tab[5]->get_id()+decalage);
173     tabnoeud[6]=femmai->get_fem_noeudid(tab[6]->get_id()+decalage);
174     tabnoeud[7]=femmai->get_fem_noeudid(tab[7]->get_id()+decalage);
175     tabnoeud[8]=femmai->get_fem_noeudid(tab[8]->get_id()+decalage);
176     tabnoeud[9]=femmai->get_fem_noeudid(tab[9]->get_id()+decalage);
177     FEM_TETRA10* tet=new FEM_TETRA10(get_id()+decalage,maillage,tabnoeud);
178 francois 309 femmai->ajouter_fem_element3(tet);
179 francois 283 return tet;
180     }
181    
182    
183    
184    
185    
186     int FEM_TETRA10::get_type_entite(void)
187     {
188     return IDFEM_TETRA10;
189     }
190    
191     int FEM_TETRA10::get_dimension(void)
192     {
193     return 3;
194     }
195    
196    
197     int FEM_TETRA10::get_nb_fem_noeud(void)
198     {
199     return FEM_TEMPLATE_ELEMENT<10>::get_nb_fem_noeud();
200     }
201    
202     FEM_NOEUD* FEM_TETRA10::get_fem_noeud(int num)
203     {
204     return FEM_TEMPLATE_ELEMENT<10>::get_fem_noeud(num);
205     }
206    
207     void FEM_TETRA10::change_noeud(int num,FEM_NOEUD* noeud)
208     {
209     FEM_TEMPLATE_ELEMENT<10>::change_noeud(num,noeud);
210     }
211    
212     BOITE_3D& FEM_TETRA10::get_boite_3D(void)
213     {
214     return FEM_TEMPLATE_ELEMENT<10>::get_boite_3D();
215     }
216    
217    
218 francois 637 int FEM_TETRA10::get_nb_pt_gauss(int degre)
219     {
220     if (degre<2) return 1;
221     if (degre<3) return 4;
222     if (degre<4) return 5;
223     if (degre<5) return 11;
224     return 0;
225     }
226     void FEM_TETRA10::get_pt_gauss(int degre,int num,double &w,double *uvw)
227     {
228     if (degre<2)
229     {
230     if (num==0) {w=0.166666666666667;uvw[0]=0.25;uvw[1]=0.25;uvw[2]=0.25;}
231     return;
232     }
233     if (degre<3)
234     {
235     if (num==0) {w=0.041666666666667;uvw[0]=0.138196601125011;uvw[1]=0.138196601125011;uvw[2]=0.138196601125011;}
236     if (num==1) {w=0.041666666666667;uvw[0]=0.138196601125011;uvw[1]=0.138196601125011;uvw[2]=0.585410196624968;}
237     if (num==2) {w=0.041666666666667;uvw[0]=0.138196601125011;uvw[1]=0.585410196624968;uvw[2]=0.138196601125011;}
238     if (num==3) {w=0.041666666666667;uvw[0]=0.585410196624968;uvw[1]=0.138196601125011;uvw[2]=0.138196601125011;}
239     return;
240     }
241     if (degre<4)
242     {
243     if (num==0) {w=-0.133333333333333;uvw[0]=0.25;uvw[1]=0.25;uvw[2]=0.25;}
244     if (num==1) {w=0.075;uvw[0]=0.166666666666667;uvw[1]=0.166666666666667;uvw[2]=0.166666666666667;}
245     if (num==2) {w=0.075;uvw[0]=0.166666666666667;uvw[1]=0.166666666666667;uvw[2]=0.5;}
246     if (num==3) {w=0.075;uvw[0]=0.166666666666667;uvw[1]=0.5;uvw[2]=0.166666666666667;}
247     if (num==4) {w=0.075;uvw[0]=0.5;uvw[1]=0.166666666666667;uvw[2]=0.166666666666667;}
248     return;
249     }
250     if (degre<6)
251     {
252     double a=0.25;
253     double b1=0.3197936278;
254     double b2=0.0919710781;
255     double c2=0.7240867658;
256     double c1=0.0406191165;
257     double d=0.0563508327;
258     double e=0.4436491673;
259     double w1=0.0197530864;
260     double w3=0.011989514;
261     double w2=0.0115113679;
262     double w4=0.0088183422;
263     if (num==0) {w=w1;uvw[0]=a;uvw[1]=a;uvw[2]=a;}
264     if (num==1) {w=w2;uvw[0]=b1;uvw[1]=b1;uvw[2]=b1;}
265     if (num==2) {w=w2;uvw[0]=c1;uvw[1]=b1;uvw[2]=b1;}
266     if (num==3) {w=w2;uvw[0]=b1;uvw[1]=c1;uvw[2]=b1;}
267     if (num==4) {w=w2;uvw[0]=b1;uvw[1]=b1;uvw[2]=c1;}
268     if (num==5) {w=w3;uvw[0]=b2;uvw[1]=b2;uvw[2]=b2;}
269     if (num==6) {w=w3;uvw[0]=c2;uvw[1]=b2;uvw[2]=b2;}
270     if (num==7) {w=w3;uvw[0]=b2;uvw[1]=c2;uvw[2]=b2;}
271     if (num==8) {w=w3;uvw[0]=b2;uvw[1]=b2;uvw[2]=c2;}
272     if (num==9) {w=w4;uvw[0]=e;uvw[1]=d;uvw[2]=d;}
273     if (num==10) {w=w4;uvw[0]=d;uvw[1]=e;uvw[2]=d;}
274     if (num==11) {w=w4;uvw[0]=d;uvw[1]=d;uvw[2]=e;}
275     if (num==12) {w=w4;uvw[0]=d;uvw[1]=e;uvw[2]=e;}
276     if (num==13) {w=w4;uvw[0]=e;uvw[1]=d;uvw[2]=e;}
277     if (num==14) {w=w4;uvw[0]=e;uvw[1]=e;uvw[2]=d;}
278     return;
279     }
280     }
281 francois 283
282 francois 637
283 francois 638 int FEM_TETRA10::get_nb_fonction_interpolation(void)
284 francois 283 {
285     return 10;
286     }
287    
288 francois 638 int FEM_TETRA10::get_degremax_fonction_interpolation(void)
289     {
290     return 2;
291     }
292 francois 283 double FEM_TETRA10::get_fonction_interpolation(int num,double* uv)
293     {
294     double val;
295     double landa=1-uv[0]-uv[1]-uv[2];
296     switch (num)
297     {
298     case 1:
299     val=-landa*(1-2*landa);
300     break;
301     case 2:
302     val=4*uv[0]*landa;
303     break;
304     case 3:
305     val=-uv[0]*(1-2*uv[0]);
306     break;
307     case 4:
308     val=4*uv[0]*uv[1];
309     break;
310     case 5:
311     val=-uv[1]*(1-2*uv[1]);
312     break;
313     case 6:
314     val=4*uv[1]*landa;
315     break;
316     case 7:
317     val=4*uv[2]*landa;
318     break;
319     case 8:
320     val=4*uv[0]*uv[2];
321     break;
322     case 9:
323     val=4*uv[1]*uv[2];
324     break;
325     case 10:
326     val=-uv[2]*(1-2*uv[2]);
327     break;
328     }
329     return val;
330     }
331    
332     double FEM_TETRA10::get_fonction_derive_interpolation(int num,int num_variable,double* uv)
333     {
334     double val;
335     double landa=1-uv[0]-uv[1]-uv[2];
336     switch (num)
337     {
338     case 1:
339     switch (num_variable)
340     {
341     case 1:
342     val=1-4*landa;
343     break;
344     case 2:
345     val=1-4*landa;
346     break;
347     case 3:
348     val=1-4*landa;
349     break;
350     } break;
351     case 2:
352     switch (num_variable)
353     {
354     case 1:
355     val=4*(landa-uv[0]);
356     break;
357     case 2:
358     val=-4*uv[0];
359     break;
360     case 3:
361     val=-4*uv[0];
362     break;
363     }break;
364     case 3:
365     switch (num_variable)
366     {
367     case 1:
368     val=-1+4*uv[0];
369     break;
370     case 2:
371     val=0.;
372     break;
373     case 3:
374     val=0.;
375     break;
376     }break;
377     case 4:
378     switch (num_variable)
379     {
380     case 1:
381     val=4*uv[1];
382     break;
383     case 2:
384     val=4*uv[0];
385     break;
386     case 3:
387     val=0.;
388     break;
389     }break;
390     case 5:
391     switch (num_variable)
392     {
393     case 1:
394     val=0.;
395     break;
396     case 2:
397     val=-1+4*uv[1];
398     break;
399     case 3:
400     val=0.;
401     break;
402     }break;
403     case 6:
404     switch (num_variable)
405     {
406     case 1:
407     val=-4*uv[1];
408     break;
409     case 2:
410     val=4*(landa-uv[1]);
411     break;
412     case 3:
413     val=-4*uv[1];
414     break;
415     }break;
416     case 7:
417     switch (num_variable)
418     {
419     case 1:
420     val=-4*uv[2];
421     break;
422     case 2:
423     val=-4*uv[2];
424     break;
425     case 3:
426     val=4*(landa-uv[2]);
427     break;
428     }break;
429     case 8:
430     switch (num_variable)
431     {
432     case 1:
433     val=4*uv[2];
434     break;
435     case 2:
436     val=0;
437     break;
438     case 3:
439     val=4*uv[0];
440     break;
441     }break;
442     case 9:
443     switch (num_variable)
444     {
445     case 1:
446     val=0.;
447     break;
448     case 2:
449     val=4*uv[2];
450     break;
451     case 3:
452     val=4*uv[1];
453     break;
454     }break;
455     case 10:
456     switch (num_variable)
457     {
458     case 1:
459     val=0.;
460     break;
461     case 2:
462     val=0.;
463     break;
464     case 3:
465     val=-1+4*uv[2];
466     break;
467     }break;
468     }
469     return val;
470    
471     }
472    
473     double FEM_TETRA10::get_jacobien(double* jac,double *uv,int& lig,int& col,double unite)
474     {
475     lig=3;
476     col=3;
477    
478    
479 francois 638 double nb_fct_int=this->get_nb_fonction_interpolation();
480 francois 283
481     double xyz[30];
482    
483     int nb_nd=get_nb_fem_noeud();
484    
485     for (int i=0;i<nb_nd;i++)
486     {
487     FEM_NOEUD* fmnd=get_fem_noeud(i);
488     double *xyz1=fmnd->get_coord();
489    
490     xyz[3*i]=unite*xyz1[0];
491     xyz[3*i+1]=unite*xyz1[1];
492     xyz[3*i+2]=unite*xyz1[2];
493    
494     }
495    
496     for (int i=0;i<lig;i++)
497     {
498     for (int j=0;j<col;j++)
499     {
500     jac[i*col+j]=0.0;
501     for (int k=0;k<nb_fct_int;k++)
502     {
503     double NDERI=this->get_fonction_derive_interpolation(k+1,i+1,uv);
504    
505     jac[i*col+j]+=NDERI*xyz[3*k+j];
506     }
507     }
508     }
509    
510     double SIX_V= jac[0]*(jac[4]*jac[8]-jac[7]*jac[5])+jac[1]*(jac[5]*jac[6]-jac[8]*jac[3])+jac[2]*(jac[3]*jac[7]-jac[6]*jac[4]);
511    
512     return SIX_V;
513    
514     }
515    
516    
517     void FEM_TETRA10::get_inverse_jacob(double* j,double *uv,double unite)
518     {
519     double jac[9];
520     int lig,col;
521     double detj=this->get_jacobien(jac,uv,lig,col,unite);
522    
523    
524     j[0*3+0] = (jac[1*3+1]*jac[2*3+2]-jac[1*3+2]*jac[2*3+1])/(detj);
525     j[0*3+1] = -(jac[0*3+1]*jac[2*3+2]-jac[0*3+2]*jac[2*3+1])/(detj);
526     j[0*3+2] =-(-jac[0*3+1]*jac[1*3+2]+jac[0*3+2]*jac[1*3+1])/(detj);
527    
528     j[1*3+0] = -(jac[1*3+0]*jac[2*3+2]-jac[1*3+2]*jac[2*3+0])/(detj);
529     j[1*3+1] = (jac[0*3+0]*jac[2*3+2]-jac[0*3+2]*jac[2*3+0])/(detj);
530     j[1*3+2] = -(jac[0*3+0]*jac[1*3+2]-jac[0*3+2]*jac[1*3+0])/(detj);
531    
532     j[2*3+0] =-(-jac[1*3+0]*jac[2*3+1]+jac[1*3+1]*jac[2*3+0])/(detj);
533     j[2*3+1] = -(jac[0*3+0]*jac[2*3+1]-jac[0*3+1]*jac[2*3+0])/(detj);
534     j[2*3+2] = (jac[0*3+0]*jac[1*3+1]-jac[0*3+1]*jac[1*3+0])/(detj);
535    
536    
537     }
538    
539 francois 635 bool FEM_TETRA10::valide_parametre_EF(double* uvw)
540     {
541     if (uvw[0]>=-1e-10)
542     if (uvw[1]>=-1e-10)
543     if (uvw[2]>=-1e-10)
544     if (uvw[0]+uvw[1]+uvw[2]<=1.+1e-10)
545     return true;
546     return false;
547     }
548 francois 283
549    
550     void FEM_TETRA10::enregistrer(std::ostream& o)
551     {
552 francois 378 if (maillage!=NULL)
553     if (get_lien_topologie()!=NULL) o << "%" << get_id() << "=FEM_TETRA10($"<< 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()<< ");" << std::endl;
554     else o << "%" << get_id() << "=FEM_TETRA10(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() << ");" << std::endl;
555     else
556     if (get_lien_topologie()!=NULL) o << "%" << get_id() << "=FEM_TETRA10($"<< 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()<< ");" << std::endl;
557     else o << "%" << get_id() << "=FEM_TETRA10(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() << ");" << std::endl;
558    
559 francois 283 }
560 francois 405
561    
562 francois 406 int FEM_TETRA10::verifie_validite_decoupage_xfem(double *vol)
563 francois 405 {
564    
565     }