113 const IntTab& vert_elems = dom_->domaine().les_elems();
114 int nb_elem_tot = dom_->nb_elem_tot();
116 const DoubleTab& xs = dom_->domaine().les_sommets();
117 DoubleVect& volumes = dom_->volumes();
118 const IntTab& nfaces_elem = dom_->get_nfaces_elem();
119 const IntTab& elem_faces = dom_->elem_faces();
120 const IntTab& face_sommets = dom_->face_sommets();
121 const DoubleTab& xp = dom_->xp();
127 DoubleTab lambda_tri;
133 tri_in_quad.
resize(::N_TRI_IN_QUAD, 3);
134 if (dom_->get_type_elem()->que_suis_je() ==
"Quadri_poly")
136 for (
int n_tri = 0; n_tri < ::N_TRI_IN_QUAD; n_tri++)
137 for (
int i = 0; i < 3; i++)
138 tri_in_quad(n_tri, i) = ::TRI_IN_CART[n_tri][i];
142 for (
int n_tri = 0; n_tri < ::N_TRI_IN_QUAD; n_tri++)
143 for (
int i = 0; i < 3; i++)
144 tri_in_quad(n_tri, i) = ::TRI_IN_QUAD[n_tri][i];
147 for (
int e = 0; e < dom_->nb_elem_tot(); e++)
149 int nsom = nfaces_elem(e);
155 cumul += ::nb_pts_integ_tri;
159 nb_pts_quad = 2 * ::nb_pts_integ_tri;
162 cumul += nb_pts_quad;
166 int nb_pts_integ_e = nsom * ::nb_pts_integ_tri;
169 cumul += nb_pts_integ_e;
177 lambda_tri.
resize(::nb_pts_integ_tri, 3);
178 for (
int pts = 0; pts < ::nb_pts_integ_tri; pts++)
180 if (pts < nb_pts_integ_tri - 1)
185 lambda_tri(pts, 0) = ::LAMBDA_TRI[pts][0];
186 lambda_tri(pts, 1) = ::LAMBDA_TRI[pts][1];
187 lambda_tri(pts, 2) = 1. - lambda_tri(pts, 1) - lambda_tri(pts, 0);
197 for (
int e = 0; e < nb_elem_tot; e++)
200 int nsom = nfaces_elem(e);
204 for (
int pts = 0; pts < ::nb_pts_integ_tri; pts++)
206 for (
int dim = 0; dim < ndim; dim++)
207 for (
int loc_vert = 0; loc_vert < 3; loc_vert++)
208 integ_points_(ind_elem_e + pts, dim) += xs(vert_elems(e, loc_vert), dim) * lambda_tri(pts, loc_vert);
213 for (
int n_tri = 0; n_tri < ::N_TRI_IN_QUAD; n_tri++)
215 double weight_scale =
calculateWeightScale(vert_elems, xs, volumes, e, tri_in_quad(n_tri, 0), tri_in_quad(n_tri, 1), tri_in_quad(n_tri, 2));
216 for (
int pts = 0; pts < ::nb_pts_integ_tri; pts++)
218 for (
int dim = 0; dim < ndim; dim++)
219 for (
int loc_vert = 0; loc_vert < 3; loc_vert++)
220 integ_points_(ind_elem_e + pts + n_tri * ::nb_pts_integ_tri, dim) += xs(vert_elems(e, tri_in_quad(n_tri, loc_vert)), dim) * lambda_tri(pts, loc_vert);
226 for (
int n_tri = 0; n_tri < nsom; n_tri++)
228 int f = elem_faces(e, n_tri);
229 double weight_scale =
calculateWeightScale(volumes(e), xs(face_sommets(f, 0), 0), xs(face_sommets(f, 0), 1), xs(face_sommets(f, 1), 0), xs(face_sommets(f, 1), 1), xp(e, 0), xp(e, 1));
230 for (
int pts = 0; pts < ::nb_pts_integ_tri; pts++)
232 for (
int dim = 0; dim < ndim; dim++)
234 for (
int loc_vert = 0; loc_vert < 2; loc_vert++)
235 integ_points_(ind_elem_e + pts + n_tri * ::nb_pts_integ_tri, dim) += xs(face_sommets(f, loc_vert), dim) * lambda_tri(pts, loc_vert);
236 integ_points_(ind_elem_e + pts + n_tri * ::nb_pts_integ_tri, dim) += xp(e, dim) * lambda_tri(pts, 2);