48 const IntTab& Face_sommets,
49 const IntTab& Face_voisins,
50 const IntTab& elem_faces,
51 const Domaine& domaine_geom)
const
58 double x1,y1,z1,x2,y2,z2;
62 int n0 = Face_sommets(num_Face,0);
63 int n1 = Face_sommets(num_Face,1);
64 int n2 = Face_sommets(num_Face,2);
67 x1 = les_coords(n0,0) - les_coords(n1,0);
68 y1 = les_coords(n0,1) - les_coords(n1,1);
69 z1 = les_coords(n0,2) - les_coords(n1,2);
71 x2 = les_coords(n2,0) - les_coords(n1,0);
72 y2 = les_coords(n2,1) - les_coords(n1,1);
73 z2 = les_coords(n2,2) - les_coords(n1,2);
75 nx = (y1*z2 - y2*z1)/2;
76 ny = (-x1*z2 + x2*z1)/2;
77 nz = (x1*y2 - x2*y1)/2;
82 int elem1 = Face_voisins(num_Face,0);
83 if ( (f0 = elem_faces(elem1,0)) == num_Face )
84 f0 = elem_faces(elem1,1);
86 if ( (no4 = Face_sommets(f0,0)) != n0 && no4 != n1
89 else if ( (no4 = Face_sommets(f0,1)) != n0 && no4 != n1
93 no4 = Face_sommets(f0,2);
95 x1 = les_coords(no4,0) - les_coords(n0,0);
96 y1 = les_coords(no4,1) - les_coords(n0,1);
97 z1 = les_coords(no4,2) - les_coords(n0,2);
99 if ( (nx*x1+ny*y1+nz*z1) > 0 )
101 Face_normales(num_Face,0) = - nx;
102 Face_normales(num_Face,1) = - ny;
103 Face_normales(num_Face,2) = - nz;
107 Face_normales(num_Face,0) = nx;
108 Face_normales(num_Face,1) = ny;
109 Face_normales(num_Face,2) = nz;
117 const ArrOfDouble& vs,
const DoubleTab& vsom,
127 for (comp=0; comp<3; comp++)
128 vc[comp] = 0.25*vs[comp];
134 for (comp=0; comp<3; comp++)
135 vc[comp] = vitesse.
valeurs()(Face[3],comp)*porosite_face[Face[3]];
141 for (comp=0; comp<3; comp++)
142 vc[comp] = vitesse.
valeurs()(Face[2],comp)*porosite_face[Face[2]];
148 for (comp=0; comp<3; comp++)
149 vc[comp] = vitesse.
valeurs()(Face[1],comp)*porosite_face[Face[1]];
155 for (comp=0; comp<3; comp++)
156 vc[comp] = vitesse.
valeurs()(Face[0],comp)*porosite_face[Face[0]];
162 for (comp=0; comp<3; comp++)
163 vc[comp] = 0.5* (vsom(0,comp) + vsom(1,comp));
169 for (comp=0; comp<3; comp++)
170 vc[comp] = 0.5* (vsom(0,comp) + vsom(2,comp));
176 for (comp=0; comp<3; comp++)
177 vc[comp] = 0.5* (vsom(0,comp) + vsom(3,comp));
183 for (comp=0; comp<3; comp++)
184 vc[comp] = 0.5* (vsom(1,comp) + vsom(2,comp));
190 for (comp=0; comp<3; comp++)
191 vc[comp] = 0.5* (vsom(1,comp) + vsom(3,comp));
197 for (comp=0; comp<3; comp++)
198 vc[comp] = 0.5*(vsom(2,comp) + vsom(3,comp));
204 for (comp=0; comp<3; comp++)
205 vc[comp] = vsom(0,comp);
211 for (comp=0; comp<3; comp++)
212 vc[comp] = vsom(1,comp);
218 for (comp=0; comp<3; comp++)
219 vc[comp] = vsom(2,comp);
225 for (comp=0; comp<3; comp++)
226 vc[comp] = vsom(3,comp);
237 int& idirichlet,
int& n1,
int& n2,
int& n3)
const
246 for (j=0; j<dim; j++)
247 xg[j]=0.25*(x(0,j)+x(1,j)+x(2,j)+x(3,j));
262 for (j=0; j<dim; j++)
263 xg[j]=(x(0,j)+x(1,j)+x(2,j))/3.;
278 for (j=0; j<dim; j++)
279 xg[j]=(x(0,j)+x(1,j)+x(3,j))/3.;
293 for (j=0; j<dim; j++)
294 xg[j]=(x(0,j)+x(2,j)+x(3,j))/3.;
308 for (j=0; j<dim; j++)
309 xg[j]=(x(1,j)+x(2,j)+x(3,j))/3.;
320 for (j=0; j<dim; j++)
321 xg[j]= 0.5*(x(0,j)+x(1,j));
334 for (j=0; j<dim; j++)
335 xg[j]= 0.5*(x(0,j)+x(2,j));
347 for (j=0; j<dim; j++)
348 xg[j]= 0.5*(x(0,j)+x(3,j));
360 for (j=0; j<dim; j++)
361 xg[j]= 0.5*(x(1,j)+x(2,j));
373 for (j=0; j<dim; j++)
374 xg[j]= 0.5*(x(1,j)+x(3,j));
387 for (j=0; j<dim; j++)
388 xg[j]= 0.5*(x(2,j)+x(3,j));
399 for (j=0; j<dim; j++)
414 for (j=0; j<dim; j++)
429 for (j=0; j<dim; j++)
443 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 override
calcule les coord xg du centre d'un element non standard calcule aussi idirichlet=nb de faces de Diri...
void calcul_vc(const ArrOfInt &, ArrOfDouble &, const ArrOfDouble &, const DoubleTab &, const Champ_Inc_base &, int) const override