81 const Domaine_VDF& domaine_VDF = le_dom_VDF.valeur();
84 const IntVect& orientation = domaine_VDF.
orientation();
88 const Domaine& domaine = le_dom_VDF->domaine();
89 int nb_elem = domaine.nb_elem();
91 int ndeb,nfin,ncomp,num_face;
115 le_dom_VDF->domaine().creer_tableau_elements(cell_cent_vel);
117 DoubleTab temp1(cell_cent_vel);
118 DoubleTab temp2(cell_cent_vel);
119 DoubleTab filt_vel(cell_cent_vel);
120 DoubleTab inc_dv(cell_cent_vel);
121 DoubleTab dQij_j(cell_cent_vel);
127 const DoubleTab& vitesse = mon_equation->inconnue().valeurs();
131 const IntTab& elem_faces = domaine_VDF.
elem_faces();
133 int num0=-1,num1,num2=-1,num3,num4=-1,num5=-1;
137 DoubleTab uij_filt_1(cell_cent_vel);
138 DoubleTab uij_filt_2(cell_cent_vel);
139 DoubleTab uij_filt_3(cell_cent_vel);
141 for (element_number=0 ; element_number<nb_elem ; element_number ++)
144 num0 = elem_faces(element_number,0);
145 num1 = elem_faces(element_number,1);
146 num2 = elem_faces(element_number,2);
147 num3 = elem_faces(element_number,3);
159 num4 = elem_faces(element_number,4);
160 num5 = elem_faces(element_number,5);
165 cell_cent_vel(element_number,0)=0.5*(vitesse[num0]+vitesse[num2]);
166 cell_cent_vel(element_number,1)=0.5*(vitesse[num1]+vitesse[num3]);
170 cell_cent_vel(element_number,0)=0.5*(vitesse[num0]+vitesse[num3]);
171 cell_cent_vel(element_number,1)=0.5*(vitesse[num1]+vitesse[num4]);
172 cell_cent_vel(element_number,2)=0.5*(vitesse[num2]+vitesse[num5]);
188 DoubleTab Qij_1(cell_cent_vel);
189 DoubleTab Qij_2(cell_cent_vel);
190 DoubleTab Qij_3(cell_cent_vel);
191 DoubleTab Lij_1(cell_cent_vel);
192 DoubleTab Lij_2(cell_cent_vel);
193 DoubleTab Lij_3(cell_cent_vel);
194 DoubleTab ttemp1_1(cell_cent_vel);
195 DoubleTab ttemp1_2(cell_cent_vel);
196 DoubleTab ttemp1_3(cell_cent_vel);
197 DoubleTab ttemp2_1(cell_cent_vel);
198 DoubleTab ttemp2_2(cell_cent_vel);
199 DoubleTab ttemp2_3(cell_cent_vel);
216 int f0,f1,f2,f3,f4,f5;
218 int num0_1,num1_1,num2_1,num3_1,num4_1,num5_1;
219 int f0_1,f1_1,f2_1,f3_1,f4_1,f5_1;
228 for (element_number=0 ; element_number<nb_elem ; element_number ++)
236 uij_filt_1(element_number,i)=cell_cent_vel(element_number,i)*
237 cell_cent_vel(element_number,0);
238 uij_filt_2(element_number,i)=cell_cent_vel(element_number,i)*
239 cell_cent_vel(element_number,1);
241 f0 = elem_faces(element_number,0);
242 num0 = face_voisins(f0,0);
243 f2 = elem_faces(element_number,2);
244 num2 = face_voisins(f2,1);
245 if ( (num0 == -1) || (num2 == -1) )
248 temp1(element_number,i)=cell_cent_vel(element_number,i);
249 inc_dv(element_number,i)=0.;
255 temp1(element_number,i)=0.25*(cell_cent_vel(num0,i)+
256 2.0*cell_cent_vel(element_number,i)+
257 cell_cent_vel(num2,i));
259 f0_1 = elem_faces(num0,0);
260 num0_1 = face_voisins(f0_1,0);
261 f2_1 = elem_faces(num2,2);
262 num2_1 = face_voisins(f2_1,1);
263 if ( (num0_1 == -1) || (num2_1 == -1) )
265 inc_dv(element_number,i)+=(cell_cent_vel(num0,i))-(cell_cent_vel(num2,i));
270 inc_dv(element_number,i)+=(cell_cent_vel(num0_1,i))-(cell_cent_vel(num2_1,i));
277 for (element_number=0 ; element_number<nb_elem ; element_number ++)
279 f1 = elem_faces(element_number,1);
280 num1 = face_voisins(f1,0);
281 f3 = elem_faces(element_number,3);
282 num3 = face_voisins(f3,1);
283 if ( (num1 == -1) || (num3 == -1) )
286 filt_vel(element_number,i)=temp1(element_number,i);
287 inc_dv(element_number,i)=0.;
293 filt_vel(element_number,i)=0.25*(temp1(num1,i)+
294 2.0*temp1(element_number,i)+
297 f1_1 = elem_faces(num0,1);
298 num1_1 = face_voisins(f1_1,0);
299 f3_1 = elem_faces(num3,3);
300 num3_1 = face_voisins(f3_1,1);
301 if ( (num1_1 == -1) || (num3_1 == -1) )
303 inc_dv(element_number,i)+=(cell_cent_vel(num1,i))-(cell_cent_vel(num3,i));
308 inc_dv(element_number,i)+=(cell_cent_vel(num1_1,i))-(cell_cent_vel(num3_1,i));
316 for (element_number=0 ; element_number<nb_elem ; element_number ++)
324 uij_filt_1(element_number,i)=cell_cent_vel(element_number,i)*
325 cell_cent_vel(element_number,0);
326 uij_filt_2(element_number,i)=cell_cent_vel(element_number,i)*
327 cell_cent_vel(element_number,1);
328 uij_filt_3(element_number,i)=cell_cent_vel(element_number,i)*
329 cell_cent_vel(element_number,2);
331 f0 = elem_faces(element_number,0);
332 num0 = face_voisins(f0,0);
333 f3 = elem_faces(element_number,3);
334 num3 = face_voisins(f3,1);
335 if ( (num0 == -1) || (num3 == -1) )
338 temp1(element_number,i)=cell_cent_vel(element_number,i);
339 inc_dv(element_number,i)+=0.;
345 temp1(element_number,i)=0.25*(cell_cent_vel(num0,i)+
346 2.0*cell_cent_vel(element_number,i)+
347 cell_cent_vel(num3,i));
350 f0_1 = elem_faces(num0,0);
351 num0_1 = face_voisins(f0_1,0);
352 f3_1 = elem_faces(num3,3);
353 num3_1 = face_voisins(f3_1,1);
354 if ( (num0_1 == -1) || (num3_1 == -1) )
356 inc_dv(element_number,i)+=(cell_cent_vel(num0,i))-(cell_cent_vel(num3,i));
362 inc_dv(element_number,i)+=(cell_cent_vel(num0_1,i))-(cell_cent_vel(num3_1,i));
369 for (element_number=0 ; element_number<nb_elem ; element_number ++)
371 f1 = elem_faces(element_number,1);
372 num1 = face_voisins(f1,0);
373 f4 = elem_faces(element_number,4);
374 num4 = face_voisins(f4,1);
375 if ( (num1 == -1) || (num4 == -1) )
378 temp2(element_number,i)=temp1(element_number,i);
379 inc_dv(element_number,i)+=0.;
385 temp2(element_number,i)=0.25*(temp1(num1,i)+
386 2.0*temp1(element_number,i)+
390 f1_1 = elem_faces(num1,1);
391 num1_1 = face_voisins(f1_1,0);
392 f4_1 = elem_faces(num4,4);
393 num4_1 = face_voisins(f4_1,1);
394 if ( (num1_1 == -1) || (num4_1 == -1) )
396 inc_dv(element_number,i)+=(cell_cent_vel(num1,i))-(cell_cent_vel(num4,i));
402 inc_dv(element_number,i)+=(cell_cent_vel(num1_1,i))-(cell_cent_vel(num4_1,i));
409 for (element_number=0 ; element_number<nb_elem ; element_number ++)
411 f2 = elem_faces(element_number,2);
412 num2 = face_voisins(f2,0);
413 f5 = elem_faces(element_number,5);
414 num5 = face_voisins(f5,1);
415 if ( (num2 == -1) || (num5 == -1) )
418 filt_vel(element_number,i)=temp2(element_number,i);
419 inc_dv(element_number,i)+=0.;
425 filt_vel(element_number,i)=0.25*(temp2(num2,i)+
426 2.0*temp2(element_number,i)+
430 f2_1 = elem_faces(num2,2);
431 num2_1 = face_voisins(f2_1,0);
432 f5_1 = elem_faces(num5,5);
433 num5_1 = face_voisins(f5_1,1);
434 if ( (num2_1 == -1) || (num5_1 == -1) )
436 inc_dv(element_number,i)+=(cell_cent_vel(num2,i))-(cell_cent_vel(num5,i));
442 inc_dv(element_number,i)+=(cell_cent_vel(num2_1,i))-(cell_cent_vel(num5_1,i));
513 for (element_number=0 ; element_number<nb_elem ; element_number ++)
515 f0 = elem_faces(element_number,0);
516 num0 = face_voisins(f0,0);
517 f2 = elem_faces(element_number,2);
518 num2 = face_voisins(f2,1);
519 if ( (num0 == -1) || (num2 == -1) )
525 ttemp1_1(element_number,i)=uij_filt_1(element_number,i);
526 ttemp1_2(element_number,i)=uij_filt_2(element_number,i);
539 ttemp1_1(element_number,i)=0.25*(uij_filt_1(num0,i)+
540 2.0*uij_filt_1(element_number,i)+
542 ttemp1_2(element_number,i)=0.25*(uij_filt_2(num0,i)+
543 2.0*uij_filt_2(element_number,i)+
551 for (element_number=0 ; element_number<nb_elem ; element_number ++)
553 f1 = elem_faces(element_number,1);
554 num1 = face_voisins(f1,0);
555 f3 = elem_faces(element_number,3);
556 num3 = face_voisins(f3,1);
557 if ( (num1 == -1) || (num3 == -1) )
563 uij_filt_1(element_number,i)=ttemp1_1(element_number,i);
564 uij_filt_2(element_number,i)=ttemp1_2(element_number,i);
577 uij_filt_1(element_number,i)=0.25*(ttemp1_1(num0,i)+
578 2.0*ttemp1_1(element_number,i)+
580 uij_filt_2(element_number,i)=0.25*(ttemp1_2(num0,i)+
581 2.0*ttemp1_2(element_number,i)+
589 for (element_number=0 ; element_number<nb_elem ; element_number ++)
591 f0 = elem_faces(element_number,0);
592 num0 = face_voisins(f0,0);
593 f3 = elem_faces(element_number,3);
594 num3 = face_voisins(f3,1);
595 if ( (num0 == -1) || (num3 == -1) )
601 ttemp1_1(element_number,i)=uij_filt_1(element_number,i);
602 ttemp1_2(element_number,i)=uij_filt_2(element_number,i);
603 ttemp1_3(element_number,i)=uij_filt_3(element_number,i);
616 ttemp1_1(element_number,i)=0.25*(uij_filt_1(num0,i)+
617 2.0*uij_filt_1(element_number,i)+
619 ttemp1_2(element_number,i)=0.25*(uij_filt_2(num0,i)+
620 2.0*uij_filt_2(element_number,i)+
622 ttemp1_3(element_number,i)=0.25*(uij_filt_3(num0,i)+
623 2.0*uij_filt_3(element_number,i)+
632 for (element_number=0 ; element_number<nb_elem ; element_number ++)
634 f1 = elem_faces(element_number,1);
635 num1 = face_voisins(f1,0);
636 f4 = elem_faces(element_number,4);
637 num4 = face_voisins(f4,1);
638 if ( (num1 == -1) || (num4 == -1) )
644 ttemp2_1(element_number,i)=ttemp1_1(element_number,i);
645 ttemp2_2(element_number,i)=ttemp1_2(element_number,i);
646 ttemp2_3(element_number,i)=ttemp1_3(element_number,i);
663 for (element_number=0 ; element_number<nb_elem ; element_number ++)
665 f2 = elem_faces(element_number,2);
666 num2 = face_voisins(f2,0);
667 f5 = elem_faces(element_number,5);
668 num5 = face_voisins(f5,1);
669 if ( (num2 == -1) || (num5 == -1) )
675 uij_filt_1(element_number,i)=ttemp2_1(element_number,i);
676 uij_filt_2(element_number,i)=ttemp2_2(element_number,i);
677 uij_filt_3(element_number,i)=ttemp2_3(element_number,i);
690 uij_filt_1(element_number,i)=0.25*(ttemp2_1(num0,i)+
691 2.0*ttemp2_1(element_number,i)+
693 uij_filt_2(element_number,i)=0.25*(ttemp2_2(num0,i)+
694 2.0*ttemp2_2(element_number,i)+
696 uij_filt_3(element_number,i)=0.25*(ttemp2_3(num0,i)+
697 2.0*ttemp2_3(element_number,i)+
709 for (element_number=0 ; element_number<nb_elem ; element_number ++)
720 Qij_1(element_number,ii)=inc_dv(element_number,ii)*inc_dv(element_number,0);
721 Qij_2(element_number,ii)=inc_dv(element_number,ii)*inc_dv(element_number,1);
722 Lij_1(element_number,ii)=uij_filt_1(element_number,ii)-
723 filt_vel(element_number,ii)*filt_vel(element_number,0);
724 Lij_2(element_number,ii)=uij_filt_2(element_number,ii)-
725 filt_vel(element_number,ii)*filt_vel(element_number,1);
728 Qij_3(element_number,ii)=inc_dv(element_number,ii)*inc_dv(element_number,2);
729 Lij_3(element_number,ii)=uij_filt_3(element_number,ii)-
730 filt_vel(element_number,ii)*filt_vel(element_number,2);
745 DoubleVect f(nb_elem);
748 DoubleVect temp_1(nb_elem);
749 DoubleVect temp_2(nb_elem);
754 for (elem=0; elem<nb_elem; elem++)
765 temp_1(elem)=Lij_1(elem,0)+Lij_2(elem,1);
766 temp_2(elem)=4.*Qij_1(elem,0)+4.*Qij_2(elem,1);
767 if(std::fabs(temp_2(elem)) < 1.e-12)
770 f(elem)=temp_1(elem)/temp_2(elem);
773 for (elem=0; elem<nb_elem; elem++)
778 temp_1(elem)=Lij_1(elem,0)+Lij_2(elem,1)+Lij_3(elem,2);
779 temp_2(elem)=4.*Qij_1(elem,0)+4.*Qij_2(elem,1)+4.*Qij_3(elem,2);
780 if(std::fabs(temp_2(elem)) < 1.e-12)
783 f(elem)=temp_1(elem)/temp_2(elem);
805 for (element_number=0 ; element_number<nb_elem ; element_number ++)
807 f0 = elem_faces(element_number,0);
808 num0 = face_voisins(f0,0);
810 num0 = element_number;
811 f1 = elem_faces(element_number,1);
812 num1 = face_voisins(f1,0);
814 num1 = element_number;
815 f2 = elem_faces(element_number,2);
816 num2 = face_voisins(f2,1);
818 num2 = element_number;
819 f3 = elem_faces(element_number,3);
820 num3 = face_voisins(f3,1);
822 num3 = element_number;
831 dQij_j(element_number,0)=0.5*((f(num2)*Qij_1(num2,0)-f(num0)*Qij_1(num0,0))/
832 domaine_VDF.
dim_elem(element_number,0));
833 dQij_j(element_number,0)+=0.5*((f(num3)*Qij_2(num3,0)-f(num1)*Qij_2(num1,0))/
834 domaine_VDF.
dim_elem(element_number,1));
835 dQij_j(element_number,1)=0.5*((f(num2)*Qij_1(num2,1)-f(num0)*Qij_1(num0,1))/
836 domaine_VDF.
dim_elem(element_number,0));
837 dQij_j(element_number,1)+=0.5*((f(num3)*Qij_2(num3,1)-f(num1)*Qij_2(num1,1))/
838 domaine_VDF.
dim_elem(element_number,1));
843 for (element_number=0 ; element_number<nb_elem ; element_number ++)
845 f0 = elem_faces(element_number,0);
846 num0 = face_voisins(f0,0);
847 if (num0 == -1 || num0 >= nb_elem)
850 num0 = element_number;
852 f1 = elem_faces(element_number,1);
853 num1 = face_voisins(f1,0);
854 if (num1 == -1 || num0 >= nb_elem)
857 num1 = element_number;
859 f2 = elem_faces(element_number,2);
860 num2 = face_voisins(f2,0);
861 if (num2 == -1 || num2 >= nb_elem)
864 num2 = element_number;
866 f3 = elem_faces(element_number,3);
867 num3 = face_voisins(f3,1);
868 if (num3 == -1 || num3 >= nb_elem)
871 num3 = element_number;
873 f4 = elem_faces(element_number,4);
874 num4 = face_voisins(f4,1);
875 if (num4 == -1 || num4 >= nb_elem)
878 num4 = element_number;
880 f5 = elem_faces(element_number,5);
881 num5 = face_voisins(f5,1);
882 if (num5 == -1 || num5 >= nb_elem)
885 num5 = element_number;
893 dQij_j(element_number,0)=0.5*((f(num3)*Qij_1(num3,0)-f(num0)*Qij_1(num0,0))/
894 domaine_VDF.
dim_elem(element_number,0));
895 dQij_j(element_number,0)+=0.5*((f(num4)*Qij_2(num4,0)-f(num1)*Qij_2(num1,0))/
896 domaine_VDF.
dim_elem(element_number,1));
897 dQij_j(element_number,0)+=0.5*((f(num5)*Qij_3(num5,0)-f(num2)*Qij_3(num2,0))/
898 domaine_VDF.
dim_elem(element_number,2));
907 dQij_j(element_number,1)=0.5*((f(num3)*Qij_1(num3,1)-f(num0)*Qij_1(num0,1))/
908 domaine_VDF.
dim_elem(element_number,0));
909 dQij_j(element_number,1)+=0.5*((f(num4)*Qij_2(num4,1)-f(num1)*Qij_2(num1,1))/
910 domaine_VDF.
dim_elem(element_number,1));
911 dQij_j(element_number,1)+=0.5*((f(num5)*Qij_3(num5,1)-f(num2)*Qij_3(num2,1))/
912 domaine_VDF.
dim_elem(element_number,2));
920 dQij_j(element_number,2)=0.5*((f(num3)*Qij_1(num3,2)-f(num0)*Qij_1(num0,2))/
921 domaine_VDF.
dim_elem(element_number,0));
922 dQij_j(element_number,2)+=0.5*((f(num4)*Qij_2(num4,2)-f(num1)*Qij_2(num1,2))/
923 domaine_VDF.
dim_elem(element_number,1));
924 dQij_j(element_number,2)+=0.5*((f(num5)*Qij_3(num5,2)-f(num2)*Qij_3(num2,2))/
925 domaine_VDF.
dim_elem(element_number,2));
955 for (
int n_bord=0; n_bord<domaine_VDF.
nb_front_Cl(); n_bord++)
972 for (num_face=ndeb; num_face<nfin; num_face++)
974 vol = volumes_entrelaces(num_face)*porosite_surf(num_face);
975 ncomp = orientation(num_face);
976 num0 = face_voisins(num_face,0);
978 num0 = face_voisins(num_face,1);
979 inc_s=dQij_j(num0,ncomp)*vol;
981 secmem(num_face)+= inc_s;
985 else if (sub_type(
Symetrie,la_cl.valeur()))
987 else if ( (sub_type(
Dirichlet,la_cl.valeur()))
998 for (num_face=ndeb; num_face<nfin; num_face++)
1000 vol = volumes_entrelaces(num_face)*porosite_surf(num_face);
1001 ncomp = orientation(num_face);
1002 num0 = face_voisins(num_face,0);
1004 num0 = face_voisins(num_face,1);
1005 inc_s=dQij_j(num0,ncomp)*vol;
1007 secmem(num_face)+= inc_s;
1014 Cerr <<
me() <<
" faces internes " << finl;
1016 double min_inc=1.e6, max_inc=-1.e6;
1017 int num_e1=-1, n_comp1=-1;
1018 int num_e2=-1, n_comp2=-1;
1023 vol = volumes_entrelaces(num_face)*porosite_surf(num_face);
1024 ncomp = orientation(num_face);
1025 num0 = face_voisins(num_face,0);
1026 num1 = face_voisins(num_face,1);
1027 inc_s=0.5*(dQij_j(num0,ncomp)+dQij_j(num1,ncomp))*vol;
1029 secmem(num_face)+= inc_s;
1043 Cerr << min_inc <<
" " << num_e1 <<
" " << n_comp1 << finl;
1044 Cerr << max_inc <<
" " << num_e2 <<
" " << n_comp2 << finl;