82 const DoubleTab& vitesse = mon_equation_->inconnue().valeurs();
86 const IntTab& elem_faces = domaine_VDF.
elem_faces();
87 const IntTab& Qdm = domaine_VDF.
Qdm();
88 const IntVect& orientation = domaine_VDF.
orientation();
90 int num0, num1, num2, num3;
92 double diff1, diff2, aux;
115 for (num_elem = 0; num_elem < nb_poly; num_elem++)
117 diff = vitesse[elem_faces(num_elem, 0)] - vitesse[elem_faces(num_elem, 3)];
118 F_Elem(num_elem, 0) = diff * diff;
119 diff = vitesse[elem_faces(num_elem, 1)] - vitesse[elem_faces(num_elem, 4)];
120 F_Elem(num_elem, 1) = diff * diff;
121 diff = vitesse[elem_faces(num_elem, 2)] - vitesse[elem_faces(num_elem, 5)];
122 F_Elem(num_elem, 2) = diff * diff;
129 for (num_arete0 = ndeb0; num_arete0 < nfin0; num_arete0++)
131 num0 = Qdm(num_arete0, 0);
132 num1 = Qdm(num_arete0, 1);
133 num2 = Qdm(num_arete0, 2);
134 num3 = Qdm(num_arete0, 3);
136 aux = vitesse[num1] - vitesse[num0];
137 diff1 = 0.25 * aux * aux;
138 aux = vitesse[num3] - vitesse[num2];
139 diff2 = 0.25 * aux * aux;
140 k1 = orientation(num0);
141 k2 = orientation(num2);
143 F_Elem(face_voisins(num0, 0), k2) += diff1;
144 F_Elem(face_voisins(num0, 1), k2) += diff1;
145 F_Elem(face_voisins(num1, 0), k2) += diff1;
146 F_Elem(face_voisins(num1, 1), k2) += diff1;
147 F_Elem(face_voisins(num2, 0), k1) += diff2;
148 F_Elem(face_voisins(num2, 1), k1) += diff2;
149 F_Elem(face_voisins(num3, 0), k1) += diff2;
150 F_Elem(face_voisins(num3, 1), k1) += diff2;
157 for (num_arete0 = ndeb0; num_arete0 < nfin0; num_arete0++)
159 num0 = Qdm(num_arete0, 0);
160 num1 = Qdm(num_arete0, 1);
161 num2 = Qdm(num_arete0, 2);
162 num3 = Qdm(num_arete0, 3);
164 aux = vitesse[num1] - vitesse[num0];
165 diff1 = 0.25 * aux * aux;
166 aux = vitesse[num3] - vitesse[num2];
167 diff2 = 0.25 * aux * aux;
168 k1 = orientation(num0);
169 k2 = orientation(num2);
172 num_elem = face_voisins(num0, 0);
174 F_Elem(num_elem, k2) += diff1;
175 num_elem = face_voisins(num0, 1);
177 F_Elem(num_elem, k2) += diff1;
178 num_elem = face_voisins(num1, 0);
180 F_Elem(num_elem, k2) += diff1;
181 num_elem = face_voisins(num1, 1);
183 F_Elem(num_elem, k2) += diff1;
184 num_elem = face_voisins(num2, 0);
186 F_Elem(num_elem, k1) += diff2;
187 num_elem = face_voisins(num2, 1);
189 F_Elem(num_elem, k1) += diff2;
190 num_elem = face_voisins(num3, 0);
192 F_Elem(num_elem, k1) += diff2;
193 num_elem = face_voisins(num3, 1);
195 F_Elem(num_elem, k1) += diff2;
204 const int nb_cond_lim = domaine_Cl_VDF.
nb_cond_lim();
206 for (
int i = 0; i < nb_cond_lim; i++)
220 for (num_arete = ndeb; num_arete < nfin; num_arete++)
227 num0 = Qdm(num_arete, 0);
228 num1 = Qdm(num_arete, 1);
229 num2 = Qdm(num_arete, 2);
230 num3 = Qdm(num_arete, 3);
232 aux = vitesse[num1] - vitesse[num0];
233 diff1 = 0.25 * aux * aux;
234 aux = vitesse[num3] - vitesse[num2];
235 diff2 = 0.25 * aux * aux;
236 k1 = orientation(num0);
237 k2 = orientation(num2);
239 F_Elem(face_voisins(num0, 0), k2) += diff1;
240 F_Elem(face_voisins(num0, 1), k2) += diff1;
241 F_Elem(face_voisins(num1, 0), k2) += diff1;
242 F_Elem(face_voisins(num1, 1), k2) += diff1;
243 F_Elem(face_voisins(num2, 0), k1) += diff2;
244 F_Elem(face_voisins(num2, 1), k1) += diff2;
245 F_Elem(face_voisins(num3, 0), k1) += diff2;
246 F_Elem(face_voisins(num3, 1), k1) += diff2;
257 double un_tiers = 1. / 3.;
258 double deux_tiers = 2. / 3.;
260 double h_x, h_y, h_z;
263 for (num_elem = 0; num_elem < nb_poly; num_elem++)
265 for (
int i = 0; i < 6; i++)
266 numfa[i] = elem_faces(num_elem, i);
273 delta_C_axi = pow(h_x * h_y * h_z, un_tiers);
274 F2_[num_elem] = un_tiers
275 * (F_Elem(num_elem, 0) * pow(delta_C_axi / h_x, deux_tiers) + F_Elem(num_elem, 1) * pow(delta_C_axi / h_y, deux_tiers) + F_Elem(num_elem, 2) * pow(delta_C_axi / h_z, deux_tiers));
289 for (
int n_bord = 0; n_bord < domaine_VDF.
nb_front_Cl(); n_bord++)
300 for (num_face = ndeb0; num_face < nfin0; num_face++)
301 if ((n0 = face_voisins(num_face, 0)) != -1)
308 n1 = face_voisins(num_face, 1);
318 for (num_face = ndeb0; num_face < nfin0; num_face++)
319 if ((n0 = face_voisins(num_face, 0)) != -1)
326 n1 = face_voisins(num_face, 1);
331 else if (sub_type(
Symetrie, la_cl.valeur()))
340 for (num_face = ndeb0; num_face < nfin0; num_face++)
341 if ((n0 = face_voisins(num_face, 0)) != -1)
345 n1 = face_voisins(num_face, 1);
353 Cerr <<
"Le modele sous maille fonction de structure" << finl;
354 Cerr <<
"est utilisable uniquement en dimension 3" << finl;