129 int nb_elem = domaine_VDF.
nb_elem();
134 const IntTab& face_voisins = domaine_VDF.
face_voisins();
135 const IntTab& Qdm = domaine_VDF.
Qdm();
136 const IntVect& orientation = domaine_VDF.
orientation();
138 double sum,visco_moy,rac_visc;
139 int i, num_elem, n_arete;
142 DoubleTrav du_dy(nb_elem_tot);
143 DoubleTrav du_dz(nb_elem_tot);
144 DoubleTrav dv_dx(nb_elem_tot);
145 DoubleTrav dv_dz(nb_elem_tot);
146 DoubleTrav dw_dx(nb_elem_tot);
147 DoubleTrav dw_dy(nb_elem_tot);
157 for (n_arete =n_deb; n_arete<n_fin; n_arete++)
161 num[i] = Qdm(n_arete,i);
163 if (visco_turb(face_voisins(num[0],0))>1.e-10 &&
164 visco_turb(face_voisins(num[0],1))>1.e-10 &&
165 visco_turb(face_voisins(num[1],0))>1.e-10 &&
166 visco_turb(face_voisins(num[1],1))>1.e-10)
167 visco_moy = 0.25 * (visco_turb(face_voisins(num[0],0))
168 + visco_turb(face_voisins(num[0],1))
169 + visco_turb(face_voisins(num[1],0))
170 + visco_turb(face_voisins(num[1],1)));
171 rac_visc=sqrt(visco_moy);
172 coef[0] = rac_visc * (vit(num[1])-vit(num[0]))/domaine_VDF.
dist_face(num[0],num[1],0);
173 coef[1] = rac_visc * (vit(num[3])-vit(num[2]))/domaine_VDF.
dist_face(num[2],num[3],1);
174 dv_dx(face_voisins(num[0],0)) += coef[0];
175 dv_dx(face_voisins(num[0],1)) += coef[0];
176 dv_dx(face_voisins(num[1],0)) += coef[0];
177 dv_dx(face_voisins(num[1],1)) += coef[0];
178 du_dy(face_voisins(num[2],0)) += coef[1];
179 du_dy(face_voisins(num[2],1)) += coef[1];
180 du_dy(face_voisins(num[3],0)) += coef[1];
181 du_dy(face_voisins(num[3],1)) += coef[1];
186 for (num_elem=0; num_elem<nb_elem; num_elem++)
189 sum = 0.25*(du_dy(num_elem)+dv_dx(num_elem));
190 uiuj(num_elem) += sum;
202 for (n_arete =n_deb; n_arete<n_fin; n_arete++)
206 num[i] = Qdm(n_arete,i);
208 if (visco_turb(face_voisins(num[0],0))>1.e-10 &&
209 visco_turb(face_voisins(num[0],1))>1.e-10 &&
210 visco_turb(face_voisins(num[1],0))>1.e-10 &&
211 visco_turb(face_voisins(num[1],1))>1.e-10)
212 visco_moy = 0.25 * (visco_turb(face_voisins(num[0],0))
213 + visco_turb(face_voisins(num[0],1))
214 + visco_turb(face_voisins(num[1],0))
215 + visco_turb(face_voisins(num[1],1)));
216 rac_visc=sqrt(visco_moy);
217 if (orientation(num[0]) == 2)
220 if (orientation(num[2]) == 0)
222 coef[0] = rac_visc * (vit(num[1])-vit(num[0]))/domaine_VDF.
dist_face(num[0],num[1],0);
223 coef[1] = rac_visc * (vit(num[3])-vit(num[2]))/domaine_VDF.
dist_face(num[2],num[3],2);
224 dw_dx(face_voisins(num[0],0)) += coef[0];
225 dw_dx(face_voisins(num[0],1)) += coef[0];
226 dw_dx(face_voisins(num[1],0)) += coef[0];
227 dw_dx(face_voisins(num[1],1)) += coef[0];
228 du_dz(face_voisins(num[2],0)) += coef[1];
229 du_dz(face_voisins(num[2],1)) += coef[1];
230 du_dz(face_voisins(num[3],0)) += coef[1];
231 du_dz(face_voisins(num[3],1)) += coef[1];
233 else if (orientation(num[2]) == 1)
235 coef[0] = rac_visc * (vit(num[1])-vit(num[0]))/domaine_VDF.
dist_face(num[0],num[1],1);
236 coef[1] = rac_visc * (vit(num[3])-vit(num[2]))/domaine_VDF.
dist_face(num[2],num[3],2);
237 dw_dy(face_voisins(num[0],0)) += coef[0];
238 dw_dy(face_voisins(num[0],1)) += coef[0];
239 dw_dy(face_voisins(num[1],0)) += coef[0];
240 dw_dy(face_voisins(num[1],1)) += coef[0];
241 dv_dz(face_voisins(num[2],0)) += coef[1];
242 dv_dz(face_voisins(num[2],1)) += coef[1];
243 dv_dz(face_voisins(num[3],0)) += coef[1];
244 dv_dz(face_voisins(num[3],1)) += coef[1];
248 else if (orientation(num[0]) == 1)
250 coef[0] = rac_visc * (vit(num[1])-vit(num[0]))/domaine_VDF.
dist_face(num[0],num[1],0);
251 coef[1] = rac_visc * (vit(num[3])-vit(num[2]))/domaine_VDF.
dist_face(num[2],num[3],1);
252 dv_dx(face_voisins(num[0],0)) += coef[0];
253 dv_dx(face_voisins(num[0],1)) += coef[0];
254 dv_dx(face_voisins(num[1],0)) += coef[0];
255 dv_dx(face_voisins(num[1],1)) += coef[0];
256 du_dy(face_voisins(num[2],0)) += coef[1];
257 du_dy(face_voisins(num[2],1)) += coef[1];
258 du_dy(face_voisins(num[3],0)) += coef[1];
259 du_dy(face_voisins(num[3],1)) += coef[1];
266 for (
int num_elemb=0; num_elemb<nb_elem; num_elemb++)
269 coef[0] = 0.25*(du_dy(num_elemb)+dv_dx(num_elemb));
270 coef[1] = 0.25*(du_dz(num_elemb)+dw_dx(num_elemb));
271 coef[2] = 0.25*(dw_dy(num_elemb)+dv_dz(num_elemb));
273 sum = coef[0]*coef[0] + coef[1]*coef[1] + coef[2]*coef[2];
274 uiuj(num_elemb) += sum;
288 int nb_elem = domaine_VDF.
nb_elem();
293 const IntTab& face_voisins = domaine_VDF.
face_voisins();
294 const IntTab& Qdm = domaine_VDF.
Qdm();
295 const IntVect& orientation = domaine_VDF.
orientation();
297 double visco_moy,rac_visc;
298 int i, num_elem, n_arete;
301 DoubleTrav du_dy(nb_elem_tot);
302 DoubleTrav du_dz(nb_elem_tot);
303 DoubleTrav dv_dx(nb_elem_tot);
304 DoubleTrav dv_dz(nb_elem_tot);
305 DoubleTrav dw_dx(nb_elem_tot);
306 DoubleTrav dw_dy(nb_elem_tot);
316 for (n_arete =n_deb; n_arete<n_fin; n_arete++)
320 num[i] = Qdm(n_arete,i);
322 if (visco_turb(face_voisins(num[0],0))>1.e-10 &&
323 visco_turb(face_voisins(num[0],1))>1.e-10 &&
324 visco_turb(face_voisins(num[1],0))>1.e-10 &&
325 visco_turb(face_voisins(num[1],1))>1.e-10)
326 visco_moy = 0.25 * (visco_turb(face_voisins(num[0],0))
327 + visco_turb(face_voisins(num[0],1))
328 + visco_turb(face_voisins(num[1],0))
329 + visco_turb(face_voisins(num[1],1)));
330 rac_visc=sqrt(visco_moy);
331 coef[0] = rac_visc * (vit(num[1])-vit(num[0]))/domaine_VDF.
dist_face(num[0],num[1],0);
332 coef[1] = rac_visc * (vit(num[3])-vit(num[2]))/domaine_VDF.
dist_face(num[2],num[3],1);
333 dv_dx(face_voisins(num[0],0)) += coef[0];
334 dv_dx(face_voisins(num[0],1)) += coef[0];
335 dv_dx(face_voisins(num[1],0)) += coef[0];
336 dv_dx(face_voisins(num[1],1)) += coef[0];
337 du_dy(face_voisins(num[2],0)) += coef[1];
338 du_dy(face_voisins(num[2],1)) += coef[1];
339 du_dy(face_voisins(num[3],0)) += coef[1];
340 du_dy(face_voisins(num[3],1)) += coef[1];
345 for (num_elem=0; num_elem<nb_elem; num_elem++)
347 Grad_U(num_elem,0,1)= du_dy(num_elem);
348 Grad_U(num_elem,1,0)= dv_dx(num_elem);
366 for (n_arete =n_deb; n_arete<n_fin; n_arete++)
370 num[i] = Qdm(n_arete,i);
372 if (visco_turb(face_voisins(num[0],0))>1.e-10 &&
373 visco_turb(face_voisins(num[0],1))>1.e-10 &&
374 visco_turb(face_voisins(num[1],0))>1.e-10 &&
375 visco_turb(face_voisins(num[1],1))>1.e-10)
376 visco_moy = 0.25 * (visco_turb(face_voisins(num[0],0))
377 + visco_turb(face_voisins(num[0],1))
378 + visco_turb(face_voisins(num[1],0))
379 + visco_turb(face_voisins(num[1],1)));
380 rac_visc=sqrt(visco_moy);
381 if (orientation(num[0]) == 2)
384 if (orientation(num[2]) == 0)
386 coef[0] = rac_visc * (vit(num[1])-vit(num[0]))/domaine_VDF.
dist_face(num[0],num[1],0);
387 coef[1] = rac_visc * (vit(num[3])-vit(num[2]))/domaine_VDF.
dist_face(num[2],num[3],2);
388 dw_dx(face_voisins(num[0],0)) += coef[0];
389 dw_dx(face_voisins(num[0],1)) += coef[0];
390 dw_dx(face_voisins(num[1],0)) += coef[0];
391 dw_dx(face_voisins(num[1],1)) += coef[0];
392 du_dz(face_voisins(num[2],0)) += coef[1];
393 du_dz(face_voisins(num[2],1)) += coef[1];
394 du_dz(face_voisins(num[3],0)) += coef[1];
395 du_dz(face_voisins(num[3],1)) += coef[1];
397 else if (orientation(num[2]) == 1)
399 coef[0] = rac_visc * (vit(num[1])-vit(num[0]))/domaine_VDF.
dist_face(num[0],num[1],1);
400 coef[1] = rac_visc * (vit(num[3])-vit(num[2]))/domaine_VDF.
dist_face(num[2],num[3],2);
401 dw_dy(face_voisins(num[0],0)) += coef[0];
402 dw_dy(face_voisins(num[0],1)) += coef[0];
403 dw_dy(face_voisins(num[1],0)) += coef[0];
404 dw_dy(face_voisins(num[1],1)) += coef[0];
405 dv_dz(face_voisins(num[2],0)) += coef[1];
406 dv_dz(face_voisins(num[2],1)) += coef[1];
407 dv_dz(face_voisins(num[3],0)) += coef[1];
408 dv_dz(face_voisins(num[3],1)) += coef[1];
412 else if (orientation(num[0]) == 1)
414 coef[0] = rac_visc * (vit(num[1])-vit(num[0]))/domaine_VDF.
dist_face(num[0],num[1],0);
415 coef[1] = rac_visc * (vit(num[3])-vit(num[2]))/domaine_VDF.
dist_face(num[2],num[3],1);
416 dv_dx(face_voisins(num[0],0)) += coef[0];
417 dv_dx(face_voisins(num[0],1)) += coef[0];
418 dv_dx(face_voisins(num[1],0)) += coef[0];
419 dv_dx(face_voisins(num[1],1)) += coef[0];
420 du_dy(face_voisins(num[2],0)) += coef[1];
421 du_dy(face_voisins(num[2],1)) += coef[1];
422 du_dy(face_voisins(num[3],0)) += coef[1];
423 du_dy(face_voisins(num[3],1)) += coef[1];
430 for (
int num_elemb=0; num_elemb<nb_elem; num_elemb++)
432 Grad_U(num_elemb,0,1)= du_dy(num_elemb);
433 Grad_U(num_elemb,1,0)= dv_dx(num_elemb);
434 Grad_U(num_elemb,0,2)= du_dz(num_elemb);
435 Grad_U(num_elemb,1,2)= dv_dz(num_elemb);
501 const Domaine_VDF& domaine_VDF = le_dom_VDF.valeur();
503 const IntTab& face_voisins = domaine_VDF.
face_voisins();
504 const IntVect& orientation = domaine_VDF.
orientation();
505 const DoubleTab& temper = eq_thermique->inconnue().valeurs();
506 const DoubleTab& vit = eq_hydraulique->inconnue().valeurs();
507 const RefObjU& modele_turbulence_hydr = eq_hydraulique->get_modele(TURBULENCE);
512 const DoubleTab& K_Eps_Bas_Re = mon_eq_transport_K_Eps_Bas_Re.
inconnue().
valeurs();
516 const DoubleTab& Fluctu_Temperature = mon_eq_transport_Fluctu_Temp.
inconnue().
valeurs();
517 const DoubleTab& Flux_Chaleur_Turb = mon_eq_transport_Flux_Chaleur_Turb_->inconnue().valeurs();
518 const DoubleVect& g = eq_thermique->fluide().gravite().valeurs();
520 const DoubleTab& tab_beta = ch_beta.
valeurs();
521 const DoubleVect& volumes = domaine_VDF.
volumes();
522 int nb_elem = domaine_VDF.
nb_elem();
525 int ori,ori1,num_face,elem1,elem2;
527 int nb_faces = domaine_VDF.
nb_faces();
530 DoubleTab uiuj(nb_elem);
533 calculer_gteta2(domaine_VDF,gteta2 ,Fluctu_Temperature,tab_beta(0,0),g);
539 for (
int n_bord=0; n_bord<domaine_VDF.
nb_front_Cl(); n_bord++)
545 int nfin = ndeb + le_bord.
nb_faces();
546 for (num_face=ndeb; num_face<nfin; num_face++)
549 vol = volumes_entrelaces(num_face)*porosite_surf(num_face);
550 ori = orientation(num_face);
552 elem1 = face_voisins(num_face,0);
555 double contrib = (-1*temper(elem1))/domaine_VDF.
dist_norm_bord(num_face)*uiuj(elem1)
556 -(1-
C2)*Flux_Chaleur_Turb(num_face)*Grad_U(elem1,ori,ori1)
557 -(1-
C3)*gteta2(elem1,ori);
558 if (K_Eps_Bas_Re(elem1,0)>1.e-10)
559 contrib+=-
C1*Flux_Chaleur_Turb(num_face)*K_Eps_Bas_Re(elem1,1)/(K_Eps_Bas_Re(elem1,0));
560 resu(num_face)+=contrib*vol;
564 elem2 = face_voisins(num_face,1);
565 double contrib = (-1*temper(elem2))/domaine_VDF.
dist_norm_bord(num_face)*uiuj(elem2)
566 -(1-
C2)*Flux_Chaleur_Turb(num_face)*Grad_U(elem2,ori,ori1)
567 -(1-
C3)*gteta2(elem2,ori);
568 if (K_Eps_Bas_Re(elem2,0)>1.e-10)
569 contrib+=-
C1*Flux_Chaleur_Turb(num_face)*K_Eps_Bas_Re(elem2,1)/(K_Eps_Bas_Re(elem2,0));
570 resu(num_face)+=contrib*vol;
582 vol = volumes_entrelaces(num_face)*porosite_surf(num_face);
588 Cerr<<
"(1+2)%2 " << (int) (1+2)%2<<
" (1+3)%3 "<< (int) (1+3)%3<<finl;
589 Cerr<<
" Si vous utilisiez "<<
que_suis_je()<<
" priere de contacter l'assistance TRUST"<<finl;
590 Cerr<<
" un gros bug a ete trouve ...."<<finl;
593 ori=orientation(num_face);
594 elem1 = face_voisins(num_face,0);
595 elem2 = face_voisins(num_face,1);
596 double a=volumes(elem1)/(volumes(elem1)+volumes(elem2));
597 double b=volumes(elem2)/(volumes(elem1)+volumes(elem2));
599 double reyn=a*uiuj(elem1)+b*uiuj(elem2);
600 double A=-1*(temper(elem2)-temper(elem1))/domaine_VDF.
dist_norm(num_face)*reyn;
602 if (a*K_Eps_Bas_Re(elem1,0)+b*K_Eps_Bas_Re(elem2,0)>1.e-10)
603 B=-
C1*Flux_Chaleur_Turb(num_face)*((a*K_Eps_Bas_Re(elem1,1)+b*K_Eps_Bas_Re(elem2,1))
604 /(a*K_Eps_Bas_Re(elem1,0)+b*K_Eps_Bas_Re(elem2,0)));
605 double C=-(1-
C2)*Flux_Chaleur_Turb(num_face)*(a*Grad_U(elem1,ori,ori1)+b*Grad_U(elem2,ori,ori1));
606 double D=-(1-
C3)*(a*gteta2(elem1,ori)+b*gteta2(elem2,ori));
612 resu(num_face)+=(A+B+C+D)*vol;
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.