270 const DoubleTab& valeurs_champ,
275 thermal_correction_discr_method)
287 const int sauv_list_P1 = (thermal_correction_discr_method==
288 Convection_Diffusion_Temperature_FT_Disc::
289 Thermal_correction_discretization_method::P1) ? 1 : 0;
297 const int sauv_list_P1_all = (thermal_correction_discr_method==
298 Convection_Diffusion_Temperature_FT_Disc::
299 Thermal_correction_discretization_method::P1_ALL) ? 1 : 0;
300 int nb_elem_P1_all=0;
302 if (sauv_list_P1_all)
307 for (
int fa7=0; fa7<nb_fa7; fa7++)
313 coord_elem_interp(dim)=coord(fa7,dim);
314 IntVect neighboring_elements(nb_voisins);
319 neighboring_elements);
329 gravity_center_fa7(fa7,0),
330 gravity_center_fa7(fa7,1),
331 gravity_center_fa7(fa7,2));
332 int particle_eulerian_id_number = particles_eulerian_id_number(elem_diph);
337 for (
int i=0; i<nb_voisins; i++)
339 if (neighboring_elements(i)<0)
341 if (sauv_list_P1_all)
343 int elem_voisin=neighboring_elements(i);
345 gravity_center_fa7(fa7,0),
346 gravity_center_fa7(fa7,1),
347 gravity_center_fa7(fa7,2));
348 int particle_eulerian_id_number = particles_eulerian_id_number(elem_diph);
349 if (elem_voisin>=0 && phase_indicator_function(elem_voisin)==1)
359 delta_i(0) = fabs(domain_vdf.
dist_elem(neighboring_elements(0),
360 neighboring_elements(1), 0));
361 delta_i(1) = fabs(domain_vdf.
dist_elem(neighboring_elements(0),
362 neighboring_elements(2), 1));
363 delta_i(2) = fabs(domain_vdf.
dist_elem(neighboring_elements(0),
364 neighboring_elements(4), 2));
366 for (
int dim=0; dim<
dimension; dim++) coord_elem_0(dim)=domain_vdf.
xp(
367 neighboring_elements(0),dim);
369 double xfact=fabs((coord_elem_interp(0)-coord_elem_0(0))/delta_i(0));
370 double yfact=fabs((coord_elem_interp(1)-coord_elem_0(1))/delta_i(1));
371 double zfact=fabs((coord_elem_interp(2)-coord_elem_0(2))/delta_i(2));
373 resu(fa7)=(1-zfact)*(
375 (1-xfact)*(valeurs_champ(neighboring_elements(0))) +
376 xfact*(valeurs_champ(neighboring_elements(1)))
379 (1-xfact)*(valeurs_champ(neighboring_elements(2))) +
380 xfact*(valeurs_champ(neighboring_elements(3)))
385 (1-xfact)*(valeurs_champ(neighboring_elements(4))) +
386 xfact*(valeurs_champ(neighboring_elements(5)))
389 (1-xfact)*(valeurs_champ(neighboring_elements(6))) +
390 xfact*(valeurs_champ(neighboring_elements(7)))
398 if (sauv_list_P1_all)
407 const DoubleTab& valeurs_champ,
417 for (
int fa7=0; fa7<coord.
dimension(0); fa7++)
425 coord_elem_interp(dim)=coord(fa7,dim);
426 IntTab faces_voisines(
dimension,nb_neighbors);
432 for (
int i=0; i<nb_neighbors; i++)
434 if (faces_voisines(dim,i)<0)
445 Delta_(0)=fabs(domain_vdf.
dist_face(faces_voisines(0,0),faces_voisines(0,1),0));
446 Delta_(1)=fabs(domain_vdf.
dist_face(faces_voisines(0,0),faces_voisines(0,2),1));
447 Delta_(2)=fabs(domain_vdf.
dist_face(faces_voisines(0,0),faces_voisines(0,4),2));
451 xfact(dim)=fabs((coord(fa7,0)-domain_vdf.
xv(faces_voisines(dim,0),0))/Delta_(0));
452 yfact(dim)=fabs((coord(fa7,1)-domain_vdf.
xv(faces_voisines(dim,0),1))/Delta_(1));
453 zfact(dim)=fabs((coord(fa7,2)-domain_vdf.
xv(faces_voisines(dim,0),2))/Delta_(2));
459 Cerr <<
"xfact > 1 pour le point " <<coord(fa7,0)<<
" " << coord(fa7,1)<<
" "
460 << coord(fa7,2) <<finl;
462 Cerr <<
"yfact > 1 pour le point " <<coord(fa7,0)<<
" " << coord(fa7,1)<<
" "
463 << coord(fa7,2) <<finl;
465 Cerr <<
"zfact > 1 pour le point " <<coord(fa7,0)<<
" " << coord(fa7,1)<<
" "
466 << coord(fa7,2) <<finl;
471 resu(fa7,dim)=(1.-zfact(dim))*(
473 (1.-xfact(dim))*(valeurs_champ(faces_voisines(dim,0))) +
474 xfact(dim)*(valeurs_champ(faces_voisines(dim,1)))
477 (1.-xfact(dim))*(valeurs_champ(faces_voisines(dim,2))) +
478 xfact(dim)*(valeurs_champ(faces_voisines(dim,3))))
482 (1.-xfact(dim))*(valeurs_champ(faces_voisines(dim,4))) +
483 xfact(dim)*(valeurs_champ(faces_voisines(dim,5)))
486 (1.-xfact(dim))*(valeurs_champ(faces_voisines(dim,6))) +
487 xfact(dim)*(valeurs_champ(faces_voisines(dim,7))))
502 const DoubleTab& valeurs_champ,
510 const Domaine& domain = domain_vdf.
domaine();
511 const DoubleTab& xv = domain_vdf.
xv();
515 for (
int fa7=0; fa7<coord.
dimension(0); fa7++)
519 const int elem=domain.
chercher_elements(coord(fa7,0), coord(fa7,1), coord(fa7,2));
524 if (faces_elem_interp(dim)<0 || faces_elem_interp(
dimension+dim)<0)
533 coord_face(i,dim)=domain_vdf.
xv(faces_elem_interp(i),dim);
538 for (
int dim=0; dim<
dimension; dim++) coord_elem_interp(dim)=coord(fa7,dim);
539 IntVect faces_voisines(nb_neighbors);
542 for (
int i=0; i<nb_neighbors; i++)
544 if (faces_voisines(i)<0)
549 for (
int face=0; face<8; face++)
589 IntVect voisinsx(nb_voisinsx);
590 int num_facex=faces_voisines(face);
633 for (
int i=0; i<nb_voisinsx; i++)
639 gradUx(face,0,0) = (valeurs_champ(voisinsx(1)) - valeurs_champ(voisinsx(0))) /
640 (xv(voisinsx(1),0) - xv(voisinsx(0),0));
642 gradUx(face,0,1) = (valeurs_champ(voisinsx(2)) - valeurs_champ(voisinsx(3))) /
643 (xv(voisinsx(2),1) - xv(voisinsx(3),1));
645 gradUx(face,0,2) = (valeurs_champ(voisinsx(8)) - valeurs_champ(voisinsx(9))) /
646 (xv(voisinsx(8),2) - xv(voisinsx(9),2));
648 gradUx(face,1,0) = 1./2.*((valeurs_champ(voisinsx(6)) - valeurs_champ(voisinsx(7))) /
649 (xv(voisinsx(6),0) - xv(voisinsx(7),0)) + (valeurs_champ(voisinsx(4)) -
650 valeurs_champ(voisinsx(5))) / (xv(voisinsx(4),0) - xv(voisinsx(5),0)));
652 gradUx(face,1,1) = 1./2.*((valeurs_champ(voisinsx(4)) - valeurs_champ(voisinsx(6))) /
653 (xv(voisinsx(4),1) - xv(voisinsx(6),1)) + (valeurs_champ(voisinsx(5)) -
654 valeurs_champ(voisinsx(7))) / (xv(voisinsx(5),1) - xv(voisinsx(7),1)));
656 gradUx(face,1,2) = 1./4.*((valeurs_champ(voisinsx(14)) - valeurs_champ(voisinsx(15))) /
657 (xv(voisinsx(14),2) - xv(voisinsx(15),2)) + (valeurs_champ(voisinsx(16)) -
658 valeurs_champ(voisinsx(17))) / (xv(voisinsx(16),2) - xv(voisinsx(17),2)) +
659 (valeurs_champ(voisinsx(10)) - valeurs_champ(voisinsx(11))) / (xv(voisinsx(10),2)
660 - xv(voisinsx(11),2)) + (valeurs_champ(voisinsx(12)) -
661 valeurs_champ(voisinsx(13))) / (xv(voisinsx(12),2) - xv(voisinsx(13),2)));
663 gradUx(face,2,0) = 1./2.*((valeurs_champ(voisinsx(18)) - valeurs_champ(voisinsx(20))) /
664 (xv(voisinsx(18),0) - xv(voisinsx(20),0)) + (valeurs_champ(voisinsx(19)) -
665 valeurs_champ(voisinsx(21))) / (xv(voisinsx(19),0) - xv(voisinsx(21),0)));
667 gradUx(face,2,1) = 1./4.*((valeurs_champ(voisinsx(26)) - valeurs_champ(voisinsx(28))) /
668 (xv(voisinsx(26),1) - xv(voisinsx(28),1)) + (valeurs_champ(voisinsx(27)) -
669 valeurs_champ(voisinsx(29))) / (xv(voisinsx(27),1) - xv(voisinsx(29),1)) +
670 (valeurs_champ(voisinsx(22)) - valeurs_champ(voisinsx(24))) / (xv(voisinsx(22),1) -
671 xv(voisinsx(24),1)) + (valeurs_champ(voisinsx(23)) - valeurs_champ(voisinsx(25))) /
672 (xv(voisinsx(23),1) - xv(voisinsx(25),1)));
674 gradUx(face,2,2) = 1./2.*((valeurs_champ(voisinsx(18)) - valeurs_champ(voisinsx(19))) /
675 (xv(voisinsx(18),2) - xv(voisinsx(19),2)) + (valeurs_champ(voisinsx(20)) -
676 valeurs_champ(voisinsx(21))) / (xv(voisinsx(20),2) - xv(voisinsx(21),2)));
685 Delta_x(0)=fabs(domain_vdf.
dist_face(faces_voisines(0),faces_voisines(1),0));
686 Delta_x(1)=fabs(domain_vdf.
dist_face(faces_voisines(0),faces_voisines(2),1));
687 Delta_x(2)=fabs(domain_vdf.
dist_face(faces_voisines(0),faces_voisines(4),2));
689 xfact=fabs((coord(fa7,0)-coord_face(0,0))/Delta_x(0));
690 yfact=fabs((coord(fa7,1)-coord_face(0,1))/Delta_x(1));
691 zfact=fabs((coord(fa7,2)-coord_face(0,2))/Delta_x(2));
697 resu(fa7,i,j)=(1-zfact)*(
698 (1-yfact)*( (1-xfact)*(gradUx(0,i,j)) + xfact*(gradUx(1,i,j)) ) +
699 yfact*( (1-xfact)*(gradUx(2,i,j)) + xfact*(gradUx(3,i,j)) )
702 (1-yfact)*( (1-xfact)*(gradUx(4,i,j)) + xfact*(gradUx(5,i,j)) ) +
703 yfact*( (1-xfact)*(gradUx(6,i,j)) + xfact*(gradUx(7,i,j))) );
712 const DoubleTab& valeurs_champ,
723 const DoubleTab& xv = domain_vdf.
xv();
726 const double mu_f =two_phase_fluid.
fluide_phase(id_fluid_phase).
727 viscosite_dynamique().valeurs()(0, 0);
728 const double mu_p = two_phase_fluid.
fluide_phase(1-id_fluid_phase).
729 viscosite_dynamique().valeurs()(0, 0);
731 for (
int fa7=0; fa7<coord.
dimension(0); fa7++)
737 for (
int dim=0; dim<
dimension; dim++) coord_elem_interp(dim)=coord(fa7,dim);
738 IntVect elem_voisins(nb_voisins);
741 for (
int i=0; i<nb_voisins; i++)
743 if (elem_voisins(i)<0)
751 delta_i(0) = fabs(domain_vdf.
dist_elem(elem_voisins(0), elem_voisins(1), 0));
752 delta_i(1) = fabs(domain_vdf.
dist_elem(elem_voisins(0), elem_voisins(3), 1));
753 delta_i(2) = fabs(domain_vdf.
dist_elem(elem_voisins(0), elem_voisins(5), 2));
756 coord_elem_0(dim)=domain_vdf.
xp(elem_voisins(0),dim);
758 double xfact=fabs((coord_elem_interp(0)-coord_elem_0(0))/delta_i(0));
759 double yfact=fabs((coord_elem_interp(1)-coord_elem_0(1))/delta_i(1));
760 double zfact=fabs((coord_elem_interp(2)-coord_elem_0(2))/delta_i(2));
764 for (
int elem=0; elem<nb_voisins; elem++)
809 int nb_faces_voisines=30;
810 IntVect les_faces_voisines(nb_faces_voisines);
811 int elem_=elem_voisins(elem);
850 for (
int i=0; i<nb_faces_voisines; i++)
852 if (les_faces_voisines(i)<0)
856 int particle_id= particles_eulerian_id_number(elem);
858 gradU(elem,0,0) = ( (mu_p*mu_f/(mu_f-phase_indicator_function(elem_voisins(elem))*
859 (mu_f-mu_p)))*(valeurs_champ(les_faces_voisines(1)) -
860 valeurs_champ(les_faces_voisines(0))) /
861 (xv(les_faces_voisines(1),0) - xv(les_faces_voisines(0),0)));
864 les_faces_voisines(0),particle_id)*(valeurs_champ(les_faces_voisines(8)) -
865 valeurs_champ(les_faces_voisines(0))) / (xv(les_faces_voisines(8),1) -
867 les_faces_voisines(0),les_faces_voisines(10),particle_id)*(valeurs_champ(
868 les_faces_voisines(0)) - valeurs_champ(les_faces_voisines(10))) /
869 (xv(les_faces_voisines(0),1) - xv(les_faces_voisines(10),1)))
871 les_faces_voisines(1),particle_id)*(valeurs_champ(les_faces_voisines(9)) -
872 valeurs_champ(les_faces_voisines(1))) / (xv(les_faces_voisines(9),1) -
874 les_faces_voisines(1),les_faces_voisines(11),particle_id)*(valeurs_champ(
875 les_faces_voisines(1)) - valeurs_champ(les_faces_voisines(11))) /
876 (xv(les_faces_voisines(1),1) - xv(les_faces_voisines(11),1))) );
879 les_faces_voisines(0),particle_id)*(valeurs_champ(les_faces_voisines(12)) -
880 valeurs_champ(les_faces_voisines(0))) / (xv(les_faces_voisines(12),2) -
882 les_faces_voisines(0),les_faces_voisines(13),particle_id)*(valeurs_champ(
883 les_faces_voisines(0)) - valeurs_champ(les_faces_voisines(13))) /
884 (xv(les_faces_voisines(0),2) - xv(les_faces_voisines(13),2)))
886 les_faces_voisines(1),particle_id)*(valeurs_champ(les_faces_voisines(14)) -
887 valeurs_champ(les_faces_voisines(1))) / (xv(les_faces_voisines(14),2) -
889 les_faces_voisines(1),les_faces_voisines(15),particle_id)*(valeurs_champ(
890 les_faces_voisines(1)) - valeurs_champ(les_faces_voisines(15))) /
891 (xv(les_faces_voisines(1),2) - xv(les_faces_voisines(15),2))) );
894 les_faces_voisines(2),particle_id)*(valeurs_champ(les_faces_voisines(4)) -
895 valeurs_champ(les_faces_voisines(2))) / (xv(les_faces_voisines(4),0) -
897 les_faces_voisines(3),les_faces_voisines(5),particle_id)*(valeurs_champ(
898 les_faces_voisines(2)) - valeurs_champ(les_faces_voisines(5))) /
899 (xv(les_faces_voisines(2),0) - xv(les_faces_voisines(5),0)))
901 les_faces_voisines(3),particle_id)*(valeurs_champ(les_faces_voisines(6)) -
902 valeurs_champ(les_faces_voisines(3))) / (xv(les_faces_voisines(6),0) -
904 les_faces_voisines(3),les_faces_voisines(7),particle_id)*(valeurs_champ(
905 les_faces_voisines(3)) - valeurs_champ(les_faces_voisines(7))) /
906 (xv(les_faces_voisines(3),0) - xv(les_faces_voisines(7),0))) );
908 gradU(elem,1,1) = ( (mu_p*mu_f/(mu_f-phase_indicator_function(elem_voisins(elem))*
909 (mu_f-mu_p)))*(valeurs_champ(les_faces_voisines(2)) - valeurs_champ(
910 les_faces_voisines(3))) / (xv(les_faces_voisines(2),1) - xv(les_faces_voisines(3),1)));
913 les_faces_voisines(16),les_faces_voisines(2),particle_id)*(valeurs_champ(
914 les_faces_voisines(16)) - valeurs_champ(les_faces_voisines(2))) / (
915 xv(les_faces_voisines(16),2) - xv(les_faces_voisines(2),2)) +
917 particle_id)*(valeurs_champ(les_faces_voisines(2)) - valeurs_champ(
918 les_faces_voisines(17))) / (xv(les_faces_voisines(2),2) -
919 xv(les_faces_voisines(17),2)))
921 les_faces_voisines(3),particle_id)*(valeurs_champ(les_faces_voisines(18))
922 - valeurs_champ(les_faces_voisines(3))) / (xv(les_faces_voisines(18),2) -
924 les_faces_voisines(3),les_faces_voisines(19),particle_id)*(valeurs_champ(
925 les_faces_voisines(3)) - valeurs_champ(les_faces_voisines(19))) /
926 (xv(les_faces_voisines(3),2) - xv(les_faces_voisines(19),2))));
929 les_faces_voisines(20),particle_id)*(valeurs_champ(les_faces_voisines(22)) -
930 valeurs_champ(les_faces_voisines(20))) / (xv(les_faces_voisines(22),0) -
932 les_faces_voisines(20),les_faces_voisines(24),particle_id)*(valeurs_champ(
933 les_faces_voisines(20)) - valeurs_champ(les_faces_voisines(24))) /
934 (xv(les_faces_voisines(20),0) - xv(les_faces_voisines(24),0)))
936 les_faces_voisines(21),particle_id)*(valeurs_champ(les_faces_voisines(23)) -
937 valeurs_champ(les_faces_voisines(21))) / (xv(les_faces_voisines(23),0) -
939 les_faces_voisines(21),les_faces_voisines(25),particle_id)*(valeurs_champ(
940 les_faces_voisines(21)) - valeurs_champ(les_faces_voisines(25))) /
941 (xv(les_faces_voisines(21),0) - xv(les_faces_voisines(25),0))) );
944 les_faces_voisines(20),particle_id)*(valeurs_champ(les_faces_voisines(26)) -
945 valeurs_champ(les_faces_voisines(20))) / (xv(les_faces_voisines(26),1) -
947 les_faces_voisines(20),les_faces_voisines(28),particle_id)*(valeurs_champ(
948 les_faces_voisines(20)) - valeurs_champ(les_faces_voisines(28))) /
949 (xv(les_faces_voisines(20),1) - xv(les_faces_voisines(28),1)))
951 les_faces_voisines(21),particle_id)*(valeurs_champ(les_faces_voisines(27)) -
952 valeurs_champ(les_faces_voisines(21))) / (xv(les_faces_voisines(27),1) -
954 les_faces_voisines(21),les_faces_voisines(29),particle_id)*(valeurs_champ(
955 les_faces_voisines(21)) - valeurs_champ(les_faces_voisines(29))) /
956 (xv(les_faces_voisines(21),1) - xv(les_faces_voisines(29),1))));
958 gradU(elem,2,2) = ( (mu_p*mu_f/(mu_f-phase_indicator_function(elem_voisins(elem))*
959 (mu_f-mu_p)))*(valeurs_champ(les_faces_voisines(20)) - valeurs_champ(
960 les_faces_voisines(21))) / (xv(les_faces_voisines(20),2) -
961 xv(les_faces_voisines(21),2)));
969 resu(fa7,i,j)=((1-zfact)*(
971 (1-xfact)*(gradU(0,i,j)) + xfact*(gradU(1,i,j))) +
972 yfact*((1-xfact)*(gradU(2,i,j)) + xfact*(gradU(3,i,j)))
975 (1-yfact)*((1-xfact)*(gradU(4,i,j)) + xfact*(gradU(5,i,j))) +
976 yfact*((1-xfact)*(gradU(6,i,j)) + xfact*(gradU(7,i,j))))
986 const DoubleTab& valeurs_champ,
995 const DoubleTab& xv = domain_vdf.
xv();
998 const double mu_f =two_phase_fluid.
fluide_phase(id_fluid_phase).
999 viscosite_dynamique().valeurs()(0, 0);
1001 for (
int fa7=0; fa7<coord.
dimension(0); fa7++)
1006 DoubleVect coord_elem_interp(
dimension);
1007 for (
int dim=0; dim<
dimension; dim++) coord_elem_interp(dim)=coord(fa7,dim);
1008 IntVect elem_voisins(nb_voisins);
1011 for (
int i=0; i<nb_voisins; i++)
1013 if (elem_voisins(i)<0)
1021 delta_i(0) = fabs(domain_vdf.
dist_elem(elem_voisins(0), elem_voisins(1), 0));
1022 delta_i(1) = fabs(domain_vdf.
dist_elem(elem_voisins(0), elem_voisins(3), 1));
1023 delta_i(2) = fabs(domain_vdf.
dist_elem(elem_voisins(0), elem_voisins(5), 2));
1025 for (
int dim=0; dim<
dimension; dim++) coord_elem_0(dim)=domain_vdf.
xp(elem_voisins(0),dim);
1027 double xfact=fabs((coord_elem_interp(0)-coord_elem_0(0))/delta_i(0));
1028 double yfact=fabs((coord_elem_interp(1)-coord_elem_0(1))/delta_i(1));
1029 double zfact=fabs((coord_elem_interp(2)-coord_elem_0(2))/delta_i(2));
1033 for (
int elem=0; elem<nb_voisins; elem++)
1073 int nb_faces_voisines=30;
1074 IntVect les_faces_voisines(nb_faces_voisines);
1075 int elem_=elem_voisins(elem);
1114 for (
int i=0; i<nb_faces_voisines; i++)
1116 if (les_faces_voisines(i)<0)
1120 gradU(elem,0,0) = ( (valeurs_champ(les_faces_voisines(1)) - valeurs_champ(
1121 les_faces_voisines(0))) / (xv(les_faces_voisines(1),0) - xv(les_faces_voisines(0),0)));
1123 gradU(elem,0,1) = 1./2.*( (valeurs_champ(les_faces_voisines(8)) - valeurs_champ(
1124 les_faces_voisines(10))) / (xv(les_faces_voisines(8),1) -
1125 xv(les_faces_voisines(10),1)) + (valeurs_champ(les_faces_voisines(9)) -
1126 valeurs_champ(les_faces_voisines(11))) / (xv(les_faces_voisines(9),1) -
1127 xv(les_faces_voisines(11),1)));
1129 gradU(elem,0,2) = 1./2.*( (valeurs_champ(les_faces_voisines(12)) - valeurs_champ(
1130 les_faces_voisines(13))) / (xv(les_faces_voisines(12),2) -
1131 xv(les_faces_voisines(13),2)) + (valeurs_champ(les_faces_voisines(14)) -
1132 valeurs_champ(les_faces_voisines(15))) / (xv(les_faces_voisines(14),2) -
1133 xv(les_faces_voisines(15),2)));
1135 gradU(elem,1,0) = 1./2.*( (valeurs_champ(les_faces_voisines(4)) - valeurs_champ(
1136 les_faces_voisines(5))) / (xv(les_faces_voisines(4),0) -
1137 xv(les_faces_voisines(5),0)) + (valeurs_champ(les_faces_voisines(6)) -
1138 valeurs_champ(les_faces_voisines(7))) / (xv(les_faces_voisines(6),0) -
1139 xv(les_faces_voisines(7),0)));
1141 gradU(elem,1,1) = ( (valeurs_champ(les_faces_voisines(2)) - valeurs_champ(
1142 les_faces_voisines(3))) / (xv(les_faces_voisines(2),1) -
1143 xv(les_faces_voisines(3),1)));
1145 gradU(elem,1,2) = 1./2.*( (valeurs_champ(les_faces_voisines(16)) - valeurs_champ(
1146 les_faces_voisines(17))) / (xv(les_faces_voisines(16),2) -
1147 xv(les_faces_voisines(17),2)) + (valeurs_champ(les_faces_voisines(18)) -
1148 valeurs_champ(les_faces_voisines(19))) / (xv(les_faces_voisines(18),2) -
1149 xv(les_faces_voisines(19),2)));
1151 gradU(elem,2,0) = 1./2.*( (valeurs_champ(les_faces_voisines(22)) - valeurs_champ(
1152 les_faces_voisines(24))) / (xv(les_faces_voisines(22),0) -
1153 xv(les_faces_voisines(24),0)) + (valeurs_champ(les_faces_voisines(23)) -
1154 valeurs_champ(les_faces_voisines(25))) / (xv(les_faces_voisines(23),0) -
1155 xv(les_faces_voisines(25),0)));
1157 gradU(elem,2,1) = 1./2.*( (valeurs_champ(les_faces_voisines(26)) - valeurs_champ(
1158 les_faces_voisines(28))) / (xv(les_faces_voisines(26),1) -
1159 xv(les_faces_voisines(28),1)) + (valeurs_champ(les_faces_voisines(27)) -
1160 valeurs_champ(les_faces_voisines(29))) / (xv(les_faces_voisines(27),1) -
1161 xv(les_faces_voisines(29),1)));
1163 gradU(elem,2,2) = ( (valeurs_champ(les_faces_voisines(20)) - valeurs_champ(
1164 les_faces_voisines(21))) / (xv(les_faces_voisines(20),2) -
1165 xv(les_faces_voisines(21),2)));
1173 resu(fa7,i,j)=mu_f*((1-zfact)*(
1175 (1-xfact)*(gradU(0,i,j)) + xfact*(gradU(1,i,j))) +
1176 yfact*((1-xfact)*(gradU(2,i,j)) + xfact*(gradU(3,i,j)))
1179 (1-yfact)*((1-xfact)*(gradU(4,i,j)) + xfact*(gradU(5,i,j))) +
1180 yfact*((1-xfact)*(gradU(6,i,j)) + xfact*(gradU(7,i,j))))
1190 const DoubleTab& valeurs_champ,
1199 const DoubleTab& pos = mesh.
sommets();
1200 const int nb_pos_tot = pos.
dimension(0);
1202 for (
int som=0; som<nb_pos_tot; som++)
1204 const int element = elem[som];
1208 DoubleVect coord_elem_interp(
dimension);
1210 coord_elem_interp(dim)=coord(som,dim);
1211 IntTab faces_voisines(
dimension,nb_voisins);
1215 for (
int i=0; i<nb_voisins; i++)
1217 if (faces_voisines(dim,i)<0)
1227 Delta_(0)=fabs(domain_vdf.
dist_face(faces_voisines(0,0),faces_voisines(0,1),0));
1228 Delta_(1)=fabs(domain_vdf.
dist_face(faces_voisines(0,0),faces_voisines(0,2),1));
1229 Delta_(2)=fabs(domain_vdf.
dist_face(faces_voisines(0,0),faces_voisines(0,4),2));
1233 xfact(dim)=fabs((coord(som,0)-domain_vdf.
xv(faces_voisines(dim,0),0))/Delta_(0));
1234 yfact(dim)=fabs((coord(som,1)-domain_vdf.
xv(faces_voisines(dim,0),1))/Delta_(1));
1235 zfact(dim)=fabs((coord(som,2)-domain_vdf.
xv(faces_voisines(dim,0),2))/Delta_(2));
1240 if (xfact(dim)>1) Cerr <<
"xfact > 1 pour le point " <<coord(som,0)<<
" " << coord(som,1)<<
" " << coord(som,2) <<finl;
1241 if (yfact(dim)>1) Cerr <<
"yfact > 1 pour le point " <<coord(som,0)<<
" " << coord(som,1)<<
" " << coord(som,2) <<finl;
1242 if (zfact(dim)>1) Cerr <<
"zfact > 1 pour le point " <<coord(som,0)<<
" " << coord(som,1)<<
" " << coord(som,2) <<finl;
1246 resu(som,dim)=(1.-zfact(dim))*(
1248 (1.-xfact(dim))*(valeurs_champ(faces_voisines(dim,0))) +
1249 xfact(dim)*(valeurs_champ(faces_voisines(dim,1)))
1252 (1.-xfact(dim))*(valeurs_champ(faces_voisines(dim,2))) +
1253 xfact(dim)*(valeurs_champ(faces_voisines(dim,3))))
1257 (1.-xfact(dim))*(valeurs_champ(faces_voisines(dim,4))) +
1258 xfact(dim)*(valeurs_champ(faces_voisines(dim,5)))
1261 (1.-xfact(dim))*(valeurs_champ(faces_voisines(dim,6))) +
1262 xfact(dim)*(valeurs_champ(faces_voisines(dim,7))))
1272 DoubleVect& coord_elem_interp,
1273 IntVect& neighboring_elements,
1274 const int sauv_list_P1,
1281 const Domaine& domain = domain_vdf.
domaine();
1283 DoubleVect coord_elem_eulerian(
dimension);
1285 coord_elem_interp(1),
1286 coord_elem_interp(2));
1289 if (elem_eulerien<0)
1291 neighboring_elements=-1;
1296 coord_elem_eulerian(dim)=domain_vdf.
xp(elem_eulerien,dim);
1304 if (coord_elem_interp(dim)<=coord_elem_eulerian(dim))
1305 direction_interp(dim)=0;
1307 direction_interp(dim)=1;
1315 if (direction_interp(0)==1)
1317 if (direction_interp(1)==1)
1319 neighboring_elements(0)=elem_eulerien;
1323 neighboring_elements(1),1+
dimension),1);
1329 neighboring_elements(0),0+
dimension),1);
1330 neighboring_elements(2)=elem_eulerien;
1336 if (direction_interp(1)==1)
1339 neighboring_elements(1)=elem_eulerien;
1341 neighboring_elements(0),1+
dimension),1);
1348 neighboring_elements(3)=elem_eulerien;
1350 neighboring_elements(1),0),0);
1354 if (direction_interp(2)==1)
1357 neighboring_elements(0),2+
dimension),1);
1359 neighboring_elements(1),2+
dimension),1);
1361 neighboring_elements(2),2+
dimension),1);
1363 neighboring_elements(3),2+
dimension),1);
1368 neighboring_elements(0),2),0);
1370 neighboring_elements(1),2),0);
1372 neighboring_elements(2),2),0);
1374 neighboring_elements(3),2),0);
1376 for (
int i=0; i<4; i++)
1378 int tmp=neighboring_elements(i);
1379 neighboring_elements(i)=neighboring_elements(i+4);
1380 neighboring_elements(i+4)=tmp;
1383 return (phase_indicator_function(elem_eulerien));
1387 DoubleVect& coord_elem_interp,
1388 IntVect& neighboring_faces,
1389 int orientation)
const
1394 DoubleVect coord_elem_eulerien(
dimension);
1397 coord_elem_interp(1),
1398 coord_elem_interp(2));
1399 if (elem_eulerien<0)
1401 neighboring_faces=-1;
1405 coord_elem_eulerien(dim)=domain_vdf.
xp(elem_eulerien,dim);
1416 if (coord_elem_interp(dim)<=coord_elem_eulerien(dim))
1417 direction_interp(dim)=0;
1419 direction_interp(dim)=1;
1424 if (direction_interp(1)==1)
1426 neighboring_faces(0)=faces_elem_interp(orientation);
1427 neighboring_faces(1)=faces_elem_interp(orientation+
dimension);
1429 faces_elem_interp(1+
dimension),1),orientation);
1436 faces_elem_interp(1),0),orientation);
1438 faces_elem_interp(1),0),orientation+
dimension);
1439 neighboring_faces(2)=faces_elem_interp(orientation);
1440 neighboring_faces(3)=faces_elem_interp(orientation+
dimension);
1445 if (direction_interp(0)==1)
1447 neighboring_faces(0)=faces_elem_interp(orientation);
1449 faces_elem_interp(0+
dimension),1),orientation);
1450 neighboring_faces(2)=faces_elem_interp(orientation+
dimension);
1457 faces_elem_interp(0),0),orientation);
1458 neighboring_faces(1)=faces_elem_interp(orientation);
1460 faces_elem_interp(0),0),orientation+
dimension);
1461 neighboring_faces(3)=faces_elem_interp(orientation+
dimension);
1464 if (direction_interp(2)==1 && orientation!=2)
1479 else if (direction_interp(2)==0 && orientation!=2)
1492 ,2),0),orientation);
1494 for (
int i=0; i<4; i++)
1496 int tmp=neighboring_faces(i);
1497 neighboring_faces(i)=neighboring_faces(i+4);
1498 neighboring_faces(i+4)=tmp;
1504 if (direction_interp(0)==1)
1506 neighboring_faces(0)=faces_elem_interp(orientation);
1508 faces_elem_interp(0+
dimension),1),orientation);
1509 neighboring_faces(4)=faces_elem_interp(orientation+
dimension);
1516 faces_elem_interp(0),0),orientation);
1517 neighboring_faces(1)=faces_elem_interp(orientation);
1519 faces_elem_interp(0),0),orientation+
dimension);
1520 neighboring_faces(5)=faces_elem_interp(orientation+
dimension);
1524 if (direction_interp(1)==1)
1554 int tmp0=neighboring_faces(0);
1555 int tmp1=neighboring_faces(1);
1556 int tmp4=neighboring_faces(4);
1557 int tmp5=neighboring_faces(5);
1559 neighboring_faces(0)=neighboring_faces(2);
1560 neighboring_faces(1)=neighboring_faces(3);
1561 neighboring_faces(4)=neighboring_faces(6);
1562 neighboring_faces(5)=neighboring_faces(7);
1564 neighboring_faces(2)=tmp0;
1565 neighboring_faces(3)=tmp1;
1566 neighboring_faces(6)=tmp4;
1567 neighboring_faces(7)=tmp5;
1601 const DoubleTab& xp = domain_vdf.
xp();
1607 const double mu_f =two_phase_fluid.
fluide_phase(id_fluid_phase).
1608 viscosite_dynamique().valeurs()(0, 0);
1609 const double mu_p = two_phase_fluid.
fluide_phase(1-id_fluid_phase).
1610 viscosite_dynamique().valeurs()(0, 0);
1617 double indicatrice_arete=0;
1621 double x_min,y_min,z_min,x_max;
1622 double x_cg=particles_position(particle_id,0);
1623 double y_cg=particles_position(particle_id,1);
1624 double z_cg=particles_position(particle_id,2);
1626 x_min=std::min(xp(elem1,0),xp(elem2,0));
1627 x_min=std::min(x_min,xp(elem3,0));
1628 x_min=std::min(x_min,xp(elem4,0));
1629 x_max=std::max(xp(elem1,0),xp(elem2,0));
1630 x_max=std::max(x_min,xp(elem3,0));
1631 x_max=std::max(x_min,xp(elem4,0));
1632 y_min=std::min(xp(elem1,1),xp(elem2,1));
1633 y_min=std::min(y_min,xp(elem3,1));
1634 y_min=std::min(y_min,xp(elem4,1));
1635 z_min=std::min(xp(elem1,2),xp(elem2,2));
1636 z_min=std::min(z_min,xp(elem3,2));
1637 z_min=std::min(z_min,xp(elem4,2));
1639 double delta_x=x_max-x_min;
1641 for (
int i=0; i<pvx; i++)
1643 for (
int j=0; j<pvy; j++)
1645 for (
int k=0; k<pvz; k++)
1647 double x=x_min+i*delta_x/pvx;
1648 double y=y_min+i*delta_x/pvy;
1649 double z=z_min+i*delta_x/pvz;
1650 if (sqrt(pow(x-x_cg,2)+pow(y-y_cg,2)+pow(z-z_cg,2))>effective_radius)
1651 indicatrice_arete+=1;
1655 indicatrice_arete/=(pvx*pvy*pvz);
1657 return(mu_p*mu_f/(mu_f-indicatrice_arete*(mu_f-mu_p)));
1886 const IntVect& compo_connexes_fa7,
1887 const ArrOfDouble& fa7_surface,
1888 const DoubleTab& tab_fa7_normal)
1894 const Domaine& domain = domain_vdf.
domaine();
1896 const double mu_f =two_phase_fluid.
fluide_phase(id_fluid_phase).
1897 viscosite_dynamique().valeurs()(0, 0);
1900 int interp_U_P1_ok=0;
1901 int interp_U_P2_ok=0;
1905 DoubleTab U_P1_spherique(nb_fa7,
dimension);
1906 DoubleTab U_P2_spherique(nb_fa7,
dimension);
1907 DoubleTab U_cg_spherique(nb_fa7,
dimension);
1908 DoubleTab Urr(nb_fa7);
1909 DoubleTab Uthetar(nb_fa7);
1910 DoubleTab Uphir(nb_fa7);
1914 U_P1_spherique=-1e15;
1915 U_P2_spherique=-1e30;
1916 U_cg_spherique=-1e20;
1923 double distance_au_cg=0;
1937 if ( interp_U_P1_ok && interp_U_P2_ok )
1940 for (
int fa7=0; fa7<nb_fa7; fa7++)
1942 int compo=compo_connexes_fa7(fa7);
1951 if (
U_P2_(fa7,dim)>-1e10)
1963 for (
int i=0; i<
dimension; i++) distance_cg_vect(i)=
1966 distance_au_cg=sqrt(local_carre_norme_vect(distance_cg_vect));
1972 positions_compo(compo,2))/distance_au_cg);
2015 U_P1_spherique(fa7,0)=sin(theta)*cos(phi)*
U_P1_(fa7,0)+sin(theta)*sin(phi)*
2017 U_P1_spherique(fa7,1)=cos(theta)*cos(phi)*
U_P1_(fa7,0)+cos(theta)*sin(phi)*
2019 U_P1_spherique(fa7,2)=sin(phi)*
U_P1_(fa7,0)+cos(phi)*
U_P1_(fa7,1);
2021 U_P2_spherique(fa7,0)=sin(theta)*cos(phi)*
U_P2_(fa7,0)+sin(theta)*sin(phi)*
2023 U_P2_spherique(fa7,1)=cos(theta)*cos(phi)*
U_P2_(fa7,0)+cos(theta)*sin(phi)*
2025 U_P2_spherique(fa7,2)=sin(phi)*
U_P2_(fa7,0)+cos(phi)*
U_P2_(fa7,1);
2027 U_cg_spherique(fa7,0)=sin(theta)*cos(phi)*vitesses_compo(compo,0)+sin(theta)*
2028 sin(phi)*vitesses_compo(compo,1)+cos(theta)*vitesses_compo(compo,2);
2029 U_cg_spherique(fa7,1)=cos(theta)*cos(phi)*vitesses_compo(compo,0)+cos(theta)*
2030 sin(phi)*vitesses_compo(compo,1)-sin(theta)*vitesses_compo(compo,2);
2031 U_cg_spherique(fa7,2)=sin(phi)*vitesses_compo(compo,0)+cos(phi)*
2032 vitesses_compo(compo,1);
2036 gravity_center_fa7(fa7,1),
2037 gravity_center_fa7(fa7,2));
2045 delta_i(0) = elem00>=0 ? fabs(domain_vdf.
dist_elem(elem_diph, elem00, 0)) : -1e15;
2046 delta_i(1) = elem11>=0 ? fabs(domain_vdf.
dist_elem(elem_diph, elem11, 1)) : -1e15;
2048 if (tab_fa7_normal(fa7,2)>0)
2049 delta_i(2) = elem22>=0 ? fabs(domain_vdf.
dist_elem(elem_diph, elem22, 2)) : -1e15;
2051 delta_i(2) = elem33>=0 ? fabs(domain_vdf.
dist_elem(elem_diph, elem33 , 2)) : -1e15;
2056 epsilon+= fabs(delta_i(dim)*fabs(tab_fa7_normal(fa7,dim)));
2060 Urr(fa7)=(-U_P2_spherique(fa7,0)+4.*U_P1_spherique(fa7,0)-3.*
2061 U_cg_spherique(fa7,0))/(2.*epsilon);
2062 Uthetar(fa7)=(-U_P2_spherique(fa7,1)+4.*U_P1_spherique(fa7,1)-3.*
2063 U_cg_spherique(fa7,1))/(2.*epsilon);
2064 Uphir(fa7)=(-U_P2_spherique(fa7,2)+4.*U_P1_spherique(fa7,2)-3.*
2065 U_cg_spherique(fa7,2))/(2.*epsilon);
2068 ff(0)=mu_f*fa7_surface(fa7)*(2.*sin(theta)*cos(phi)*Urr(fa7)+cos(theta)*
2069 cos(phi)*Uthetar(fa7)-sin(phi)*Uphir(fa7));
2070 ff(1)=mu_f*fa7_surface(fa7)*(2.*sin(theta)*sin(phi)*Urr(fa7)+cos(theta)*
2071 sin(phi)*Uthetar(fa7)+cos(phi)*Uphir(fa7));
2072 ff(2)=mu_f*fa7_surface(fa7)*(2.*cos(theta)*Urr(fa7)-sin(theta)*Uthetar(fa7));
2285 Cerr <<
"Post_Processing_Hydrodynamic_Forces::compute_heat_transfer" << finl;
2292 const Domaine& domain = domain_vdf.
domaine();
2297 IntVect compo_connexes_fa7(nb_fa7);
2298 int n = search_connex_components_local_FT(mesh, compo_connexes_fa7);
2299 int nb_compo_tot=compute_global_connex_components_FT(mesh, compo_connexes_fa7, n);
2318 for (
int fa7 =0 ; fa7<nb_fa7 ; fa7++)
2324 les_cg_fa7(fa7,1),les_cg_fa7(fa7,2));
2331 if (les_normales_fa7(fa7,dim)>0)
2332 delta_i(dim) = (elem_haut>=0) ? fabs(domain_vdf.
dist_elem(elem_diph,
2333 elem_haut, dim)) : fabs(domain_vdf.
dist_elem(elem_diph,elem_bas, dim));
2334 else delta_i(dim) = (elem_bas>=0) ? fabs(domain_vdf.
dist_elem(elem_diph,
2335 elem_bas, dim)) : fabs(domain_vdf.
dist_elem(elem_diph,elem_haut, dim));
2339 epsilon+= fabs(delta_i(dim)*fabs(les_normales_fa7(fa7,dim)));
2342 normale_fa7(dim)=les_normales_fa7(fa7,dim);
2351 DoubleTab temp_P1(nb_fa7);
2352 DoubleTab temp_P2(nb_fa7);
2358 if (interp_T_P1_ok && interp_T_P2_ok)
2360 for (
int fa7=0; fa7<nb_fa7; fa7++)
2362 int compo=compo_connexes_fa7(fa7);
2366 les_cg_fa7(fa7,1),les_cg_fa7(fa7,2));
2373 delta_i(0) = elem00>=0 ? fabs(domain_vdf.
dist_elem(elem_diph, elem00, 0)) : -1e15;
2374 delta_i(1) = elem11>=0 ? fabs(domain_vdf.
dist_elem(elem_diph, elem11, 1)) : -1e15;
2376 if (les_normales_fa7(fa7,2)>0)
2377 delta_i(2) = elem22>=0 ? fabs(domain_vdf.
dist_elem(elem_diph, elem22, 2)) : -1e15;
2379 delta_i(2) = elem33>=0 ? fabs(domain_vdf.
dist_elem(elem_diph, elem33 , 2)) : -1e15;
2383 epsilon+= fabs(delta_i(dim)*fabs(les_normales_fa7(fa7,dim)));