111 const IntTab& vert_elems = dom_->domaine().les_elems();
112 int nb_elem_tot = dom_->nb_elem_tot();
114 const DoubleTab& xs = dom_->domaine().les_sommets();
115 DoubleVect& volumes = dom_->volumes();
116 const IntTab& nfaces_elem = dom_->get_nfaces_elem();
117 const IntTab& elem_faces = dom_->elem_faces();
118 const IntTab& face_sommets = dom_->face_sommets();
119 const DoubleTab& xp = dom_->xp();
125 DoubleTab lambda_tri;
131 tri_in_quad.
resize(::N_TRI_IN_QUAD, 3);
132 if (dom_->get_type_elem()->que_suis_je() ==
"Quadri_poly")
134 for (
int n_tri = 0; n_tri < ::N_TRI_IN_QUAD; n_tri++)
135 for (
int i = 0; i < 3; i++)
136 tri_in_quad(n_tri, i) = ::TRI_IN_CART[n_tri][i];
140 for (
int n_tri = 0; n_tri < ::N_TRI_IN_QUAD; n_tri++)
141 for (
int i = 0; i < 3; i++)
142 tri_in_quad(n_tri, i) = ::TRI_IN_QUAD[n_tri][i];
145 for (
int e = 0; e < dom_->nb_elem_tot(); e++)
147 int nsom = nfaces_elem(e);
153 cumul += ::nb_pts_integ_tri;
157 nb_pts_quad = 2 * ::nb_pts_integ_tri;
160 cumul += nb_pts_quad;
164 int nb_pts_integ_e = nsom * ::nb_pts_integ_tri;
167 cumul += nb_pts_integ_e;
175 lambda_tri.
resize(::nb_pts_integ_tri, 3);
176 for (
int pts = 0; pts < ::nb_pts_integ_tri; pts++)
178 if (pts < nb_pts_integ_tri - 1)
183 lambda_tri(pts, 0) = ::LAMBDA_TRI[pts][0];
184 lambda_tri(pts, 1) = ::LAMBDA_TRI[pts][1];
185 lambda_tri(pts, 2) = 1. - lambda_tri(pts, 1) - lambda_tri(pts, 0);
195 for (
int e = 0; e < nb_elem_tot; e++)
198 int nsom = nfaces_elem(e);
202 for (
int pts = 0; pts < ::nb_pts_integ_tri; pts++)
204 for (
int dim = 0; dim < ndim; dim++)
205 for (
int loc_vert = 0; loc_vert < 3; loc_vert++)
206 integ_points_(ind_elem_e + pts, dim) += xs(vert_elems(e, loc_vert), dim) * lambda_tri(pts, loc_vert);
211 for (
int n_tri = 0; n_tri < ::N_TRI_IN_QUAD; n_tri++)
213 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));
214 for (
int pts = 0; pts < ::nb_pts_integ_tri; pts++)
216 for (
int dim = 0; dim < ndim; dim++)
217 for (
int loc_vert = 0; loc_vert < 3; loc_vert++)
218 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);
224 for (
int n_tri = 0; n_tri < nsom; n_tri++)
226 int f = elem_faces(e, n_tri);
227 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));
228 for (
int pts = 0; pts < ::nb_pts_integ_tri; pts++)
230 for (
int dim = 0; dim < ndim; dim++)
232 for (
int loc_vert = 0; loc_vert < 2; loc_vert++)
233 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);
234 integ_points_(ind_elem_e + pts + n_tri * ::nb_pts_integ_tri, dim) += xp(e, dim) * lambda_tri(pts, 2);