73 const IntTab& vert_elems = dom_->domaine().les_elems();
74 int nb_elem_tot = dom_->nb_elem_tot();
76 const DoubleTab& xs = dom_->domaine().les_sommets();
77 DoubleVect& volumes = dom_->volumes();
78 const IntTab& nfaces_elem = dom_->get_nfaces_elem();
79 const IntTab& elem_faces = dom_->elem_faces();
80 const IntTab& face_sommets = dom_->face_sommets();
81 const DoubleTab& xp = dom_->xp();
93 tri_in_quad.
resize(::N_TRI_IN_QUAD, 3);
94 if (dom_->get_type_elem()->que_suis_je() ==
"Quadri_poly")
96 for (
int n_tri = 0; n_tri < ::N_TRI_IN_QUAD; n_tri++)
97 for (
int i = 0; i < 3; i++)
98 tri_in_quad(n_tri, i) = ::TRI_IN_CART[n_tri][i];
102 for (
int n_tri = 0; n_tri < ::N_TRI_IN_QUAD; n_tri++)
103 for (
int i = 0; i < 3; i++)
104 tri_in_quad(n_tri, i) = ::TRI_IN_QUAD[n_tri][i];
107 for (
int e = 0; e < dom_->nb_elem_tot(); e++)
109 int nsom = nfaces_elem(e);
115 cumul += ::nb_pts_integ_tri;
119 nb_pts_quad = 2 * ::nb_pts_integ_tri;
122 cumul += nb_pts_quad;
126 int nb_pts_integ_e = nsom * ::nb_pts_integ_tri;
129 cumul += nb_pts_integ_e;
137 lambda_tri.
resize(::nb_pts_integ_tri, 3);
138 for (
int pts = 0; pts < ::nb_pts_integ_tri; pts++)
140 if (pts < nb_pts_integ_tri - 1)
145 lambda_tri(pts, 0) = ::LAMBDA_TRI[pts][0];
146 lambda_tri(pts, 1) = ::LAMBDA_TRI[pts][1];
147 lambda_tri(pts, 2) = 1. - lambda_tri(pts, 1) - lambda_tri(pts, 0);
157 for (
int e = 0; e < nb_elem_tot; e++)
160 int nsom = nfaces_elem(e);
164 for (
int pts = 0; pts < ::nb_pts_integ_tri; pts++)
166 for (
int dim = 0; dim < ndim; dim++)
167 for (
int loc_vert = 0; loc_vert < 3; loc_vert++)
168 integ_points_(ind_elem_e + pts, dim) += xs(vert_elems(e, loc_vert), dim) * lambda_tri(pts, loc_vert);
173 for (
int n_tri = 0; n_tri < ::N_TRI_IN_QUAD; n_tri++)
175 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));
176 for (
int pts = 0; pts < ::nb_pts_integ_tri; pts++)
178 for (
int dim = 0; dim < ndim; dim++)
179 for (
int loc_vert = 0; loc_vert < 3; loc_vert++)
180 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);
186 for (
int n_tri = 0; n_tri < nsom; n_tri++)
188 int f = elem_faces(e, n_tri);
189 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));
190 for (
int pts = 0; pts < ::nb_pts_integ_tri; pts++)
192 for (
int dim = 0; dim < ndim; dim++)
194 for (
int loc_vert = 0; loc_vert < 2; loc_vert++)
195 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);
196 integ_points_(ind_elem_e + pts + n_tri * ::nb_pts_integ_tri, dim) += xp(e, dim) * lambda_tri(pts, 2);