ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/fem_hexa8.cpp
Revision: 684
Committed: Tue Jun 30 15:21:22 2015 UTC (9 years, 10 months ago) by francois
File size: 17029 byte(s)
Log Message:
mise a jour de la boite englobante quand une coordonnees change  dans un fem_noeud

File Contents

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