57 const IntTab& Face_sommets,
58 const IntTab& Face_voisins,
59 const IntTab& elem_faces,
60 const Domaine& domaine_geom)
const
64 for (
int num_Face=0; num_Face<nb_face_tot; num_Face++)
68 double x1g = 0, y1g = 0;
69 double x2g = 0, y2g = 0;
72 int n0 = Face_sommets(num_Face, 0);
73 int n1 = Face_sommets(num_Face, 1);
74 x1 = les_coords(n0, 0) - les_coords(n1, 0);
75 y1 = les_coords(n0, 1) - les_coords(n1, 1);
78 int elem1 = Face_voisins(num_Face, 0);
79 int elem2 = Face_voisins(num_Face, 1);
87 for (i = 0; i < 4; i++)
89 x1g += les_coords(Face_sommets(elem_faces(elem1, i), 0), 0);
90 x1g += les_coords(Face_sommets(elem_faces(elem1, i), 1), 0);
91 y1g += les_coords(Face_sommets(elem_faces(elem1, i), 0), 1);
92 y1g += les_coords(Face_sommets(elem_faces(elem1, i), 1), 1);
93 x2g += les_coords(Face_sommets(elem_faces(elem2, i), 0), 0);
94 x2g += les_coords(Face_sommets(elem_faces(elem2, i), 1), 0);
95 y2g += les_coords(Face_sommets(elem_faces(elem2, i), 0), 1);
96 y2g += les_coords(Face_sommets(elem_faces(elem2, i), 1), 1);
99 grx = (x2g - x1g) * 0.125;
100 gry = (y2g - y1g) * 0.125;
103 psc = grx * nx + gry * ny;
108 else if (elem2 < elem1)
117 for (i = 0; i < 4; i++)
119 x1g += les_coords(Face_sommets(elem_faces(elem1, i), 0), 0);
120 x1g += les_coords(Face_sommets(elem_faces(elem1, i), 1), 0);
121 y1g += les_coords(Face_sommets(elem_faces(elem1, i), 0), 1);
122 y1g += les_coords(Face_sommets(elem_faces(elem1, i), 1), 1);
126 x2g = les_coords(n0, 0) + les_coords(n1, 0);
127 y2g = les_coords(n0, 1) + les_coords(n1, 1);
128 grx = x2g * 0.5 - x1g * 0.125;
129 gry = y2g * 0.5 - y1g * 0.125;
133 psc = grx * nx + gry * ny;
137 Face_normales(num_Face, 0) = sign * nx;
138 Face_normales(num_Face, 1) = sign * ny;
146 const IntVect& rang_elem_non_std)
const
148 const Domaine& domaine_geom = dom_VEF.
domaine();
149 auto& facette_normales =
const_cast<Domaine_VEF&
>(dom_VEF).facette_normales();
151 const IntTab& les_Polys = domaine_geom.
les_elems();
164 if (facette_normales.dimension(0) != nb_elem_tot)
165 facette_normales.resize(nb_elem_tot,
nb_facette(),2);
167 for(i=0; i<nb_elem_tot; i++)
169 if (rang_elem_non_std(i)==-1)
171 num_som[0]=les_Polys(i,0);
172 num_som[1]=les_Polys(i,1);
173 num_som[2]=les_Polys(i,2);
174 num_som[3]=les_Polys(i,3);
178 x[0][0]=les_coords(num_som[0],0);
179 x[0][1]=les_coords(num_som[0],1);
180 x[1][0]=les_coords(num_som[1],0);
181 x[1][1]=les_coords(num_som[1],1);
182 x[2][0]=les_coords(num_som[2],0);
183 x[2][1]=les_coords(num_som[2],1);
184 x[3][0]=les_coords(num_som[3],0);
185 x[3][1]=les_coords(num_som[3],1);
186 xg[0]=(x[0][0]+x[1][0]+x[2][0]+x[3][0])*0.25;
187 xg[1]=(x[0][1]+x[1][1]+x[2][1]+x[3][1])*0.25;
189 for (fa7=0; fa7<4; fa7++)
193 u[0]= x[fa7][0]-xg[0];
194 u[1]= x[fa7][1]-xg[1];
228 xj0[0]= x[i0][0]-x[i1][0];
229 xj0[1]= x[i0][1]-x[i1][1];
231 psc=xj0[0]*v[0] + xj0[1]*v[1];
237 facette_normales(i,fa7,0) = -v[0];
238 facette_normales(i,fa7,1) = -v[1];
242 facette_normales(i,fa7,0) = v[0];
243 facette_normales(i,fa7,1) = v[1];
258 int num_elem,
const DoubleTab& x,
259 const DoubleVect& xg,
const Domaine& domaine_geom)
const
266 u[0]= x(fa7,0)-xg[0];
267 u[1]= x(fa7,1)-xg[1];
301 xj0[0]= x(i0,0)-x(i1,0);
302 xj0[1]= x(i0,1)-x(i1,1);
304 psc=xj0[0]*v[0] + xj0[1]*v[1];
307 normales_facettes_Cl(num_elem,fa7,0) = -v[0];
308 normales_facettes_Cl(num_elem,fa7,1) = -v[1];
312 normales_facettes_Cl(num_elem,fa7,0) = v[0];
313 normales_facettes_Cl(num_elem,fa7,1) = v[1];
int_t nb_elem_tot() const
const DoubleTab_t & coord_sommets() const
const Domaine & domaine() 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...