92 const Domaine_VDF& domaine_VDF = le_dom_VDF.valeur();
95 const IntVect& orientation = domaine_VDF.
orientation();
99 const Domaine& domaine = le_dom_VDF->domaine();
100 int nb_elem = domaine.nb_elem();
104 DoubleVect cell_cent_temp(temperature);
105 int ndeb,nfin,ncomp,num_face;
130 le_dom_VDF->domaine().creer_tableau_elements(cell_cent_vel);
133 DoubleTab temp1(cell_cent_vel);
134 DoubleTab temp2(cell_cent_vel);
135 DoubleTab filt_vel(cell_cent_vel);
136 DoubleTab inc_dv(cell_cent_vel);
143 DoubleVect temp1_t(cell_cent_temp);
144 DoubleVect temp2_t(cell_cent_temp);
145 DoubleVect filt_temp(cell_cent_temp);
146 DoubleVect inc_dt(cell_cent_temp);
147 DoubleVect dQij_j(cell_cent_temp);
152 const IntTab& elem_faces = domaine_VDF.
elem_faces();
154 int num0=-1,num1,num2=-1,num3,num4=-1,num5=-1;
158 DoubleTab uij_filt(cell_cent_vel);
160 for (element_number=0 ; element_number<nb_elem ; element_number ++)
163 cell_cent_temp(element_number)*=ch_beta.
valeurs()(0,0);
164 temp1_t(element_number)=0.;
165 temp2_t(element_number)=0.;
166 filt_temp(element_number)=0.;
167 inc_dt(element_number)=0.;
168 dQij_j(element_number)=0.;
169 num0 = elem_faces(element_number,0);
170 num1 = elem_faces(element_number,1);
171 num2 = elem_faces(element_number,2);
172 num3 = elem_faces(element_number,3);
184 num4 = elem_faces(element_number,4);
185 num5 = elem_faces(element_number,5);
186 inc_dv(element_number,0)=0.;
187 inc_dv(element_number,1)=0.;
188 inc_dv(element_number,2)=0.;
193 cell_cent_vel(element_number,0)=0.5*(vitesse[num0]+vitesse[num2]);
194 cell_cent_vel(element_number,1)=0.5*(vitesse[num1]+vitesse[num3]);
195 inc_dv(element_number,0)=0.;
196 inc_dv(element_number,1)=0.;
200 cell_cent_vel(element_number,0)=0.5*(vitesse[num0]+vitesse[num3]);
201 cell_cent_vel(element_number,1)=0.5*(vitesse[num1]+vitesse[num4]);
202 cell_cent_vel(element_number,2)=0.5*(vitesse[num2]+vitesse[num5]);
218 DoubleTab Qij(cell_cent_vel);
219 DoubleTab Lij(cell_cent_vel);
220 DoubleTab ttemp1(cell_cent_vel);
221 DoubleTab ttemp2(cell_cent_vel);
238 int f0,f1,f2,f3,f4,f5;
240 int num0_1,num1_1,num2_1,num3_1,num4_1,num5_1;
241 int f0_1,f1_1,f2_1,f3_1,f4_1,f5_1;
250 for (element_number=0 ; element_number<nb_elem ; element_number ++)
258 uij_filt(element_number,i)=cell_cent_vel(element_number,i)*
259 cell_cent_temp(element_number);
261 f0 = elem_faces(element_number,0);
262 num0 = face_voisins(f0,0);
263 f2 = elem_faces(element_number,2);
264 num2 = face_voisins(f2,1);
265 if ( (num0 == -1) || (num2 == -1) )
269 temp1(element_number,i)=cell_cent_vel(element_number,i);
270 inc_dv(element_number,i)=0.;
272 temp1_t(element_number)=cell_cent_temp(element_number);
273 inc_dt(element_number)=0.;
280 temp1(element_number,i)=0.25*(cell_cent_vel(num0,i)+
281 2.0*cell_cent_vel(element_number,i)+
282 cell_cent_vel(num2,i));
284 temp1_t(element_number)=0.25*(cell_cent_temp(num0)+
285 2.0*cell_cent_temp(element_number)+
286 cell_cent_temp(num2));
288 f0_1 = elem_faces(num0,0);
289 num0_1 = face_voisins(f0_1,0);
290 f2_1 = elem_faces(num2,2);
291 num2_1 = face_voisins(f2_1,1);
292 if ( (num0_1 == -1) || (num2_1 == -1) )
296 inc_dv(element_number,i)+=(cell_cent_vel(num0,i))-(cell_cent_vel(num2,i));
298 inc_dt(element_number)+=(cell_cent_temp(num0))-(cell_cent_temp(num2));
304 inc_dv(element_number,i)+=(cell_cent_vel(num0_1,i))-(cell_cent_vel(num2_1,i));
306 inc_dt(element_number)+=(cell_cent_temp(num0_1))-(cell_cent_temp(num2_1));
313 for (element_number=0 ; element_number<nb_elem ; element_number ++)
315 f1 = elem_faces(element_number,1);
316 num1 = face_voisins(f1,0);
317 f3 = elem_faces(element_number,3);
318 num3 = face_voisins(f3,1);
319 if ( (num1 == -1) || (num3 == -1) )
323 filt_vel(element_number,i)=temp1(element_number,i);
324 inc_dv(element_number,i)=0.;
326 filt_temp(element_number)=temp1_t(element_number);
327 inc_dt(element_number)=0.;
333 filt_vel(element_number,i)=0.25*(temp1(num1,i)+
334 2.0*temp1(element_number,i)+
337 filt_temp(element_number)=0.25*(temp1_t(num1)+
338 2.0*temp1_t(element_number)+
340 f1_1 = elem_faces(num0,1);
341 num1_1 = face_voisins(f1_1,0);
342 f3_1 = elem_faces(num3,3);
343 num3_1 = face_voisins(f3_1,1);
344 if ( (num1_1 == -1) || (num3_1 == -1) )
347 inc_dv(element_number,i)+=(cell_cent_vel(num1,i))-(cell_cent_vel(num3,i));
348 inc_dt(element_number)+=(cell_cent_temp(num1))-(cell_cent_temp(num3));
354 inc_dv(element_number,i)+=(cell_cent_vel(num1_1,i))-(cell_cent_vel(num3_1,i));
356 inc_dt(element_number)+=(cell_cent_temp(num1_1))-(cell_cent_temp(num3_1));
363 for (element_number=0 ; element_number<nb_elem ; element_number ++)
372 uij_filt(element_number,i)=cell_cent_vel(element_number,i)*
373 cell_cent_temp(element_number);
375 f0 = elem_faces(element_number,0);
376 num0 = face_voisins(f0,0);
377 f3 = elem_faces(element_number,3);
378 num3 = face_voisins(f3,1);
379 if ( (num0 == -1) || (num3 == -1) )
383 temp1(element_number,i)=cell_cent_vel(element_number,i);
384 inc_dv(element_number,i)+=0.;
386 temp1_t(element_number)=cell_cent_temp(element_number);
387 inc_dt(element_number)+=0.;
393 temp1(element_number,i)=0.25*(cell_cent_vel(num0,i)+
394 2.0*cell_cent_vel(element_number,i)+
395 cell_cent_vel(num3,i));
397 temp1_t(element_number)=0.25*(cell_cent_temp(num0)+
398 2.0*cell_cent_temp(element_number)+
399 cell_cent_temp(num3));
401 f0_1 = elem_faces(num0,0);
402 num0_1 = face_voisins(f0_1,0);
403 f3_1 = elem_faces(num3,3);
404 num3_1 = face_voisins(f3_1,1);
405 if ( (num0_1 == -1) || (num3_1 == -1) )
408 inc_dv(element_number,i)+=(cell_cent_vel(num0,i))-(cell_cent_vel(num3,i));
409 inc_dt(element_number)+=(cell_cent_temp(num0))-(cell_cent_temp(num3));
416 inc_dv(element_number,i)+=(cell_cent_vel(num0_1,i))-(cell_cent_vel(num3_1,i));
418 inc_dt(element_number)+=(cell_cent_temp(num0_1))-(cell_cent_temp(num3_1));
425 Cerr <<
" part 1 " << finl;
426 for (element_number=0 ; element_number<nb_elem ; element_number ++)
428 f1 = elem_faces(element_number,1);
429 num1 = face_voisins(f1,0);
430 f4 = elem_faces(element_number,4);
431 num4 = face_voisins(f4,1);
432 if ( (num1 == -1) || (num4 == -1) )
436 temp2(element_number,i)=temp1(element_number,i);
437 inc_dv(element_number,i)+=0.;
439 temp2_t(element_number)=temp1_t(element_number);
440 inc_dt(element_number)+=0.;
446 temp2(element_number,i)=0.25*(temp1(num1,i)+
447 2.0*temp1(element_number,i)+
450 temp2_t(element_number)=0.25*(temp1_t(num1)+
451 2.0*temp1_t(element_number)+
454 f1_1 = elem_faces(num1,1);
455 num1_1 = face_voisins(f1_1,0);
456 f4_1 = elem_faces(num4,4);
457 num4_1 = face_voisins(f4_1,1);
458 if ( (num1_1 == -1) || (num4_1 == -1) )
461 inc_dv(element_number,i)+=(cell_cent_vel(num1,i))-(cell_cent_vel(num4,i));
462 inc_dt(element_number)+=(cell_cent_temp(num1))-(cell_cent_temp(num4));
469 inc_dv(element_number,i)+=(cell_cent_vel(num1_1,i))-(cell_cent_vel(num4_1,i));
471 inc_dt(element_number)+=(cell_cent_temp(num1_1))-(cell_cent_temp(num4_1));
478 for (element_number=0 ; element_number<nb_elem ; element_number ++)
480 f2 = elem_faces(element_number,2);
481 num2 = face_voisins(f2,0);
482 f5 = elem_faces(element_number,5);
483 num5 = face_voisins(f5,1);
484 if ( (num2 == -1) || (num5 == -1) )
488 filt_vel(element_number,i)=temp2(element_number,i);
489 inc_dv(element_number,i)+=0.;
491 filt_temp(element_number)=temp2_t(element_number);
492 inc_dt(element_number)+=0.;
498 filt_vel(element_number,i)=0.25*(temp2(num2,i)+
499 2.0*temp2(element_number,i)+
502 filt_temp(element_number)=0.25*(temp2_t(num2)+
503 2.0*temp2_t(element_number)+
506 f2_1 = elem_faces(num2,2);
507 num2_1 = face_voisins(f2_1,0);
508 f5_1 = elem_faces(num5,5);
509 num5_1 = face_voisins(f5_1,1);
510 if ( (num2_1 == -1) || (num5_1 == -1) )
513 inc_dv(element_number,i)+=(cell_cent_vel(num2,i))-(cell_cent_vel(num5,i));
514 inc_dt(element_number)+=(cell_cent_temp(num2))-(cell_cent_temp(num5));
521 inc_dv(element_number,i)+=(cell_cent_vel(num2_1,i))-(cell_cent_vel(num5_1,i));
523 inc_dt(element_number)+=(cell_cent_temp(num2_1))-(cell_cent_temp(num5_1));
533 Cerr <<
" first loop " << finl;
593 for (element_number=0 ; element_number<nb_elem ; element_number ++)
595 f0 = elem_faces(element_number,0);
596 num0 = face_voisins(f0,0);
597 f2 = elem_faces(element_number,2);
598 num2 = face_voisins(f2,1);
599 if ( (num0 == -1) || (num2 == -1) )
605 ttemp1(element_number,i)=uij_filt(element_number,i);
618 ttemp1(element_number,i)=0.25*(uij_filt(num0,i)+
619 2.0*uij_filt(element_number,i)+
626 for (element_number=0 ; element_number<nb_elem ; element_number ++)
628 f1 = elem_faces(element_number,1);
629 num1 = face_voisins(f1,0);
630 f3 = elem_faces(element_number,3);
631 num3 = face_voisins(f3,1);
632 if ( (num1 == -1) || (num3 == -1) )
638 uij_filt(element_number,i)=ttemp1(element_number,i);
651 uij_filt(element_number,i)=0.25*(ttemp1(num0,i)+
652 2.0*ttemp1(element_number,i)+
660 for (element_number=0 ; element_number<nb_elem ; element_number ++)
662 f0 = elem_faces(element_number,0);
663 num0 = face_voisins(f0,0);
664 f3 = elem_faces(element_number,3);
665 num3 = face_voisins(f3,1);
666 if ( (num0 == -1) || (num3 == -1) )
672 ttemp1(element_number,i)=uij_filt(element_number,i);
685 ttemp1(element_number,i)=0.25*(uij_filt(num0,i)+
686 2.0*uij_filt(element_number,i)+
693 for (element_number=0 ; element_number<nb_elem ; element_number ++)
695 f1 = elem_faces(element_number,1);
696 num1 = face_voisins(f1,0);
697 f4 = elem_faces(element_number,4);
698 num4 = face_voisins(f4,1);
699 if ( (num1 == -1) || (num4 == -1) )
705 ttemp2(element_number,i)=ttemp1(element_number,i);
720 for (element_number=0 ; element_number<nb_elem ; element_number ++)
722 f2 = elem_faces(element_number,2);
723 num2 = face_voisins(f2,0);
724 f5 = elem_faces(element_number,5);
725 num5 = face_voisins(f5,1);
726 if ( (num2 == -1) || (num5 == -1) )
732 uij_filt(element_number,i)=ttemp2(element_number,i);
745 uij_filt(element_number,i)=0.25*(ttemp2(num0,i)+
746 2.0*ttemp2(element_number,i)+
756 for (element_number=0 ; element_number<nb_elem ; element_number ++)
767 Qij(element_number,ii)=inc_dv(element_number,ii)*inc_dt(element_number);
768 Lij(element_number,ii)=uij_filt(element_number,ii)-
769 filt_vel(element_number,ii)*filt_temp(element_number);
779 DoubleVect f(nb_elem);
782 DoubleVect temp_1(nb_elem);
783 DoubleVect temp_2(nb_elem);
788 for (elem=0; elem<nb_elem; elem++)
799 temp_1(elem)=Lij(elem,0)+Lij(elem,1);
800 temp_2(elem)=4.*Qij(elem,0)+4.*Qij(elem,1);
801 if(std::fabs(temp_2(elem)) < 1.e-12)
804 f(elem)=temp_1(elem)/temp_2(elem);
807 for (elem=0; elem<nb_elem; elem++)
812 temp_1(elem)=Lij(elem,0)+Lij(elem,1)+Lij(elem,2);
813 temp_2(elem)=4.*Qij(elem,0)+4.*Qij(elem,1)+4.*Qij(elem,2);
814 if(std::fabs(temp_2(elem)) < 1.e-12)
817 f(elem)=temp_1(elem)/temp_2(elem);
839 for (element_number=0 ; element_number<nb_elem ; element_number ++)
841 f0 = elem_faces(element_number,0);
842 num0 = face_voisins(f0,0);
844 num0 = element_number;
845 f1 = elem_faces(element_number,1);
846 num1 = face_voisins(f1,0);
848 num1 = element_number;
849 f2 = elem_faces(element_number,2);
850 num2 = face_voisins(f2,1);
852 num2 = element_number;
853 f3 = elem_faces(element_number,3);
854 num3 = face_voisins(f3,1);
856 num3 = element_number;
857 dQij_j(element_number)=0.5*((f(num2)*Qij(num2,0)-f(num0)*Qij(num0,0))/
858 domaine_VDF.
dim_elem(element_number,0));
861 dQij_j(element_number)+=0.5*((f(num2)*Qij(num2,1)-f(num0)*Qij(num0,1))/
862 domaine_VDF.
dim_elem(element_number,0));
877 for (element_number=0 ; element_number<nb_elem ; element_number ++)
879 f0 = elem_faces(element_number,0);
880 num0 = face_voisins(f0,0);
881 if (num0 == -1 || num0 >= nb_elem)
884 num0 = element_number;
886 f1 = elem_faces(element_number,1);
887 num1 = face_voisins(f1,0);
888 if (num1 == -1 || num0 >= nb_elem)
891 num1 = element_number;
893 f2 = elem_faces(element_number,2);
894 num2 = face_voisins(f2,0);
895 if (num2 == -1 || num2 >= nb_elem)
898 num2 = element_number;
900 f3 = elem_faces(element_number,3);
901 num3 = face_voisins(f3,1);
902 if (num3 == -1 || num3 >= nb_elem)
905 num3 = element_number;
907 f4 = elem_faces(element_number,4);
908 num4 = face_voisins(f4,1);
909 if (num4 == -1 || num4 >= nb_elem)
912 num4 = element_number;
914 f5 = elem_faces(element_number,5);
915 num5 = face_voisins(f5,1);
916 if (num5 == -1 || num5 >= nb_elem)
919 num5 = element_number;
921 dQij_j(element_number)=0.5*((f(num3)*Qij(num3,0)-f(num0)*Qij(num0,0))/
922 domaine_VDF.
dim_elem(element_number,0));
937 dQij_j(element_number)+=0.5*((f(num4)*Qij(num4,1)-f(num1)*Qij(num1,1))/
938 domaine_VDF.
dim_elem(element_number,1));
952 dQij_j(element_number)+=0.5*((f(num5)*Qij(num5,2)-f(num2)*Qij(num2,2))/
953 domaine_VDF.
dim_elem(element_number,2));
963 double min_f=1.e6, max_f=-1.e6;
964 double min_q=1.e6, max_q=-1.e6;
965 double min_dq=1.e6, max_dq=-1.e6;
966 double min_dq1=1.e6, max_dq1=-1.e6, sum_t=0.;
967 for (element_number=0 ; element_number<nb_elem ; element_number ++)
969 if (inc_dv(element_number,0)<min_q)
970 min_q=inc_dv(element_number,0);
971 if (inc_dv(element_number,0)>max_q)
972 max_q=inc_dv(element_number,0);
973 if (inc_dt(element_number)<min_f)
974 min_f=inc_dt(element_number);
975 if (inc_dt(element_number)>max_f)
976 max_f=inc_dt(element_number);
977 if (inc_dv(element_number,1)<min_dq)
978 min_dq=inc_dv(element_number,1);
979 if (inc_dv(element_number,1)>max_dq)
980 max_dq=inc_dv(element_number,1);
981 if (inc_dv(element_number,2)<min_dq1)
982 min_dq1=inc_dv(element_number,2);
983 if (inc_dv(element_number,2)>max_dq1)
984 max_dq1=inc_dv(element_number,2);
985 sum_t+=inc_dt(element_number);
987 Cerr <<
me() <<
" min/max " << min_f <<
" " << max_f <<
" " << min_dq1 <<
" " << max_dq1 << finl;
988 Cerr <<
" min/max " << (sum_t/nb_elem) <<
" " << min_q <<
" " << max_q <<
" " << min_dq <<
" " << max_dq << finl;
995 for (
int n_bord=0; n_bord<domaine_VDF.
nb_front_Cl(); n_bord++)
1012 for (num_face=ndeb; num_face<nfin; num_face++)
1014 vol = volumes_entrelaces(num_face)*porosite_surf(num_face);
1015 ncomp = orientation(num_face);
1016 num0 = face_voisins(num_face,0);
1018 num0 = face_voisins(num_face,1);
1019 inc_s=dQij_j(num0)*vol;
1022 secmem(num_face)+= inc_s;
1026 else if (sub_type(
Symetrie,la_cl.valeur()))
1028 else if ( (sub_type(
Dirichlet,la_cl.valeur()))
1033 else if (sub_type(
Periodique,la_cl.valeur()))
1039 for (num_face=ndeb; num_face<nfin; num_face++)
1041 vol = volumes_entrelaces(num_face)*porosite_surf(num_face);
1042 ncomp = orientation(num_face);
1043 num0 = face_voisins(num_face,0);
1045 num0 = face_voisins(num_face,1);
1046 inc_s=dQij_j(num0)*vol;
1049 secmem(num_face)+= inc_s;
1056 Cerr <<
me() <<
" faces internes thermique" << ch_beta.
valeurs()(0,0) << finl;
1058 double min_inc=1.e6, max_inc=-1.e6;
1059 int num_e1=-1, n_comp1=-1;
1060 int num_e2=-1, n_comp2=-1;
1065 vol = volumes_entrelaces(num_face)*porosite_surf(num_face);
1066 ncomp = orientation(num_face);
1067 num0 = face_voisins(num_face,0);
1068 num1 = face_voisins(num_face,1);
1069 inc_s=0.5*(dQij_j(num0)+dQij_j(num1))*vol;
1085 secmem(num_face)+= inc_s;
1086 Cerr << min_inc <<
" " << num_e1 <<
" " << n_comp1 << finl;
1087 Cerr << max_inc <<
" " << num_e2 <<
" " << n_comp2 << finl;