46 const IntTab& Face_sommets,
47 const IntTab& Face_voisins,
48 const IntTab& elem_faces,
49 const Domaine& domaine_geom)
const
56 double x1,y1,z1,x2,y2,z2;
60 int n0 = Face_sommets(num_Face,0);
61 int n1 = Face_sommets(num_Face,1);
62 int n2 = Face_sommets(num_Face,2);
65 x1 = les_coords(n0,0) - les_coords(n1,0);
66 y1 = les_coords(n0,1) - les_coords(n1,1);
67 z1 = les_coords(n0,2) - les_coords(n1,2);
69 x2 = les_coords(n2,0) - les_coords(n1,0);
70 y2 = les_coords(n2,1) - les_coords(n1,1);
71 z2 = les_coords(n2,2) - les_coords(n1,2);
73 nx = (y1*z2 - y2*z1)/2;
74 ny = (-x1*z2 + x2*z1)/2;
75 nz = (x1*y2 - x2*y1)/2;
80 int elem1 = Face_voisins(num_Face,0);
81 if ( (f0 = elem_faces(elem1,0)) == num_Face )
82 f0 = elem_faces(elem1,1);
84 if ( (no4 = Face_sommets(f0,0)) != n0 && no4 != n1
87 else if ( (no4 = Face_sommets(f0,1)) != n0 && no4 != n1
91 no4 = Face_sommets(f0,2);
93 x1 = les_coords(no4,0) - les_coords(n0,0);
94 y1 = les_coords(no4,1) - les_coords(n0,1);
95 z1 = les_coords(no4,2) - les_coords(n0,2);
97 if ( (nx*x1+ny*y1+nz*z1) > 0 )
99 Face_normales(num_Face,0) = - nx;
100 Face_normales(num_Face,1) = - ny;
101 Face_normales(num_Face,2) = - nz;
105 Face_normales(num_Face,0) = nx;
106 Face_normales(num_Face,1) = ny;
107 Face_normales(num_Face,2) = nz;
115 const ArrOfDouble& vs,
const DoubleTab& vsom,
125 for (comp=0; comp<3; comp++)
126 vc[comp] = 0.25*vs[comp];
132 for (comp=0; comp<3; comp++)
133 vc[comp] = vitesse.
valeurs()(Face[3],comp)*porosite_face[Face[3]];
139 for (comp=0; comp<3; comp++)
140 vc[comp] = vitesse.
valeurs()(Face[2],comp)*porosite_face[Face[2]];
146 for (comp=0; comp<3; comp++)
147 vc[comp] = vitesse.
valeurs()(Face[1],comp)*porosite_face[Face[1]];
153 for (comp=0; comp<3; comp++)
154 vc[comp] = vitesse.
valeurs()(Face[0],comp)*porosite_face[Face[0]];
160 for (comp=0; comp<3; comp++)
161 vc[comp] = 0.5* (vsom(0,comp) + vsom(1,comp));
167 for (comp=0; comp<3; comp++)
168 vc[comp] = 0.5* (vsom(0,comp) + vsom(2,comp));
174 for (comp=0; comp<3; comp++)
175 vc[comp] = 0.5* (vsom(0,comp) + vsom(3,comp));
181 for (comp=0; comp<3; comp++)
182 vc[comp] = 0.5* (vsom(1,comp) + vsom(2,comp));
188 for (comp=0; comp<3; comp++)
189 vc[comp] = 0.5* (vsom(1,comp) + vsom(3,comp));
195 for (comp=0; comp<3; comp++)
196 vc[comp] = 0.5*(vsom(2,comp) + vsom(3,comp));
202 for (comp=0; comp<3; comp++)
203 vc[comp] = vsom(0,comp);
209 for (comp=0; comp<3; comp++)
210 vc[comp] = vsom(1,comp);
216 for (comp=0; comp<3; comp++)
217 vc[comp] = vsom(2,comp);
223 for (comp=0; comp<3; comp++)
224 vc[comp] = vsom(3,comp);
236 int& idirichlet,
int& n1,
int& n2,
int& n3)
const
245 for (j=0; j<dim; j++)
246 xg[j]=0.25*(x(0,j)+x(1,j)+x(2,j)+x(3,j));
260 for (j=0; j<dim; j++)
261 xg[j]=(x(0,j)+x(1,j)+x(2,j))/3.;
275 for (j=0; j<dim; j++)
276 xg[j]=(x(0,j)+x(1,j)+x(3,j))/3.;
289 for (j=0; j<dim; j++)
290 xg[j]=(x(0,j)+x(2,j)+x(3,j))/3.;
303 for (j=0; j<dim; j++)
304 xg[j]=(x(1,j)+x(2,j)+x(3,j))/3.;
315 for (j=0; j<dim; j++)
316 xg[j]= 0.5*(x(0,j)+x(1,j));
329 for (j=0; j<dim; j++)
330 xg[j]= 0.5*(x(0,j)+x(2,j));
342 for (j=0; j<dim; j++)
343 xg[j]= 0.5*(x(0,j)+x(3,j));
355 for (j=0; j<dim; j++)
356 xg[j]= 0.5*(x(1,j)+x(2,j));
368 for (j=0; j<dim; j++)
369 xg[j]= 0.5*(x(1,j)+x(3,j));
382 for (j=0; j<dim; j++)
383 xg[j]= 0.5*(x(2,j)+x(3,j));
394 for (j=0; j<dim; j++)
409 for (j=0; j<dim; j++)
424 for (j=0; j<dim; j++)
438 for (j=0; j<dim; j++)
const DoubleTab_t & coord_sommets() const
void calcul_xg(DoubleVect &, const DoubleTab &, const int, int &, int &, int &, int &) const
Computes the coordinates xg of the centre of a non-standard element; also computes idirichlet = numbe...