650 const IJK_Field_double& pression,
651 const IJK_Field_double& temperature,
652 const IJK_Field_double& masse_vol,
653 const IJK_Field_double& champ_mu,
654 const IJK_Field_double& champ_lambda,
655 const ArrOfDouble_with_ghost& delta_z_local_pour_delta,
656 const bool flag_nu_anisotropic,
657 const int flag_turbulent_viscosity,
658 const IJK_Field_double& champ_turbulent_mu_xx,
659 const IJK_Field_double& champ_turbulent_mu_xy,
660 const IJK_Field_double& champ_turbulent_mu_xz,
661 const IJK_Field_double& champ_turbulent_mu_yy,
662 const IJK_Field_double& champ_turbulent_mu_yz,
663 const IJK_Field_double& champ_turbulent_mu_zz,
664 const bool flag_kappa_anisotropic,
665 const int flag_turbulent_diffusivity,
666 const IJK_Field_double& champ_turbulent_kappa_x,
667 const IJK_Field_double& champ_turbulent_kappa_y,
668 const IJK_Field_double& champ_turbulent_kappa_z,
669 const int flag_structural_uu,
671 const int flag_structural_uscalar,
672 const IJK_Field_vector3_double& structural_uscalar_vector,
673 const int flag_formulation_favre,
674 const int flag_formulation_velocity,
676 const double pression_thermodynamique,
681 Cerr <<
"Erreur dans Statistiques_dns_ijk::update_stat: non initialise" << finl;
685 const IJK_Field_double& vitesse_i = vitesse[0];
686 const IJK_Field_double& vitesse_j = vitesse[1];
687 const IJK_Field_double& vitesse_k = vitesse[2];
689 const IJK_Field_double& structural_uu_xx = structural_uu_tensor[0];
690 const IJK_Field_double& structural_uu_xy = structural_uu_tensor[1];
691 const IJK_Field_double& structural_uu_xz = structural_uu_tensor[2];
692 const IJK_Field_double& structural_uu_yy = structural_uu_tensor[3];
693 const IJK_Field_double& structural_uu_yz = structural_uu_tensor[4];
694 const IJK_Field_double& structural_uu_zz = structural_uu_tensor[5];
696 const IJK_Field_double& structural_uscalar_x = structural_uscalar_vector[0];
697 const IJK_Field_double& structural_uscalar_y = structural_uscalar_vector[1];
698 const IJK_Field_double& structural_uscalar_z = structural_uscalar_vector[2];
701 const int nktot = pression.get_domaine().get_nb_items_global(
Domaine_IJK::ELEM, DIRECTION_K);
704 const int kmax = pression.nk();
705 const int offset = pression.get_domaine().get_offset_local(DIRECTION_K);
707 DoubleTab tmp(nktot,
nval_);
708 const int imax = pression.ni();
709 const int jmax = pression.nj();
714 const double unsurdx = 1./
dx_;
715 const double unsurdy = 1./
dy_;
716 const double nu_dx_delta = flag_nu_anisotropic ?
dx_ : 1.;
717 const double nu_dy_delta = flag_nu_anisotropic ?
dy_ : 1.;
718 const double kappa_dx_delta = flag_kappa_anisotropic ?
dx_ : 1.;
719 const double kappa_dy_delta = flag_kappa_anisotropic ?
dy_ : 1.;
721 for (
int k = 0; k < kmax; k++)
723 const int kg=k+offset;
724 double unsurdz = 1./
tab_dz_[kg];
727 double alpha = delta_p/delta_m;
728 double unsalpha = delta_m/delta_p;
729 double unsdpdm = 1./(delta_p + delta_m);
730 double unsurdm = 1./delta_m;
731 double unsurdp = 1./delta_p;
732 double nu_dz_delta = flag_nu_anisotropic ? delta_z_local_pour_delta[k] : 1.;
733 double nu_delta_m_delta = flag_nu_anisotropic ? (kg==0 ? 0. : (delta_z_local_pour_delta[k] + delta_z_local_pour_delta[k-1])*0.5) : 1.;
734 double nu_delta_p_delta = flag_nu_anisotropic ? (kg==(nktot-1) ? 0. : (delta_z_local_pour_delta[k] + delta_z_local_pour_delta[k+1])*0.5) : 1.;
735 double kappa_delta_m_delta = flag_kappa_anisotropic ? (kg==0 ? 0. : (delta_z_local_pour_delta[k] + delta_z_local_pour_delta[k-1])*0.5) : 1.;
736 double kappa_delta_p_delta = flag_kappa_anisotropic ? (kg==(nktot-1) ? 0. : (delta_z_local_pour_delta[k] + delta_z_local_pour_delta[k+1])*0.5) : 1.;
740 ArrOfDouble moy(
nval_);
741 for (
int i = 0; i <
nval_; i++)
745 for (
int j = 0; j < jmax; j++)
747 for (
int i = 0; i < imax; i++)
751 double uf = vitesse_i(i,j,k);
752 double vf = vitesse_j(i,j,k);
753 double wf_k = vitesse_k(i,j,k);
754 double wf_kp1 = vitesse_k(i,j,k+1);
755 double ue = (vitesse_i(i,j,k) + vitesse_i(i+1, j, k)) * 0.5;
756 double ve = (vitesse_j(i,j,k) + vitesse_j(i, j+1, k)) * 0.5;
757 double we = (vitesse_k(i,j,k) + vitesse_k(i, j, k+1)) * 0.5;
758 double p = pression(i,j,k);
760 double t = temperature(i,j,k);
761 double t_plus_k = kg==(nktot-1) ?
TCL_kmax_ : temperature(i,j,k+1);
762 double t_moins_k = kg==0 ?
TCL_kmin_ : temperature(i,j,k-1);
763 double dtdz = derivee_aniso(alpha, unsalpha, unsdpdm, t_moins_k, t, t_plus_k);
764 double tf_k = (t + t_moins_k) * 0.5;
767 double rho = masse_vol(i,j,k);
768 double rho_moins_k = kg==0 ? rho_kmin : masse_vol(i,j,k-1);
769 double rhof_k = (rho + rho_moins_k) * 0.5;
770 double rho_plus_k = kg==(nktot-1) ? rho_kmax : masse_vol(i,j,k+1);
774 double mu = champ_mu(i,j,k);
775 double lambda = champ_lambda(i,j,k);
777 double unsrho = 1/rho;
780 const double nu_deltaunsurdx = nu_dx_delta * unsurdx;
781 const double nu_deltaunsurdy = nu_dy_delta * unsurdy;
783 const double nu_deltaunsurdz = nu_dz_delta * unsurdz;
784 const double nu_deltaunsurdelta_m = nu_delta_m_delta * unsurdm;
785 const double nu_deltaunsurdelta_p = nu_delta_p_delta * unsurdp;
787 const double uf_i = vitesse_i(i,j,k);
788 const double uf_ip1 = vitesse_i(i+1,j,k);
789 const double uf_i_jm1 = vitesse_i(i,j-1,k);
790 const double uf_i_km1 = kg==0 ? 0. : vitesse_i(i,j,k-1);
791 const double uf_i_kp1 = kg==(nktot-1) ? 0. : vitesse_i(i,j,k+1);
793 const double vf_j = vitesse_j(i,j,k);
794 const double vf_jp1 = vitesse_j(i,j+1,k);
795 const double vf_j_im1 = vitesse_j(i-1,j,k);
796 const double vf_j_km1 = kg==0 ? 0. : vitesse_j(i,j,k-1);
797 const double vf_j_kp1 = kg==(nktot-1) ? 0. : vitesse_j(i,j,k+1);
799 const double wf_k_im1 = vitesse_k(i-1,j,k);
800 const double wf_k_jm1 = vitesse_k(i,j-1,k);
801 const double wf_kp1_im1 = kg==(nktot-1) ? 0. : vitesse_k(i-1,j,k+1);
802 const double wf_kp1_jm1 = kg==(nktot-1) ? 0. : vitesse_k(i,j-1,k+1);
804 const double duidx = nu_deltaunsurdx * (uf_ip1 - uf_i);
805 const double duidy_ij = nu_deltaunsurdy * (uf_i - uf_i_jm1);
806 const double duidz_ik = nu_deltaunsurdelta_m * (uf_i - uf_i_km1);
807 const double duidz_ikp1 = nu_deltaunsurdelta_p * (uf_i_kp1 - uf_i);
808 const double dujdx_ij = nu_deltaunsurdx * (vf_j - vf_j_im1);
809 const double dujdy = nu_deltaunsurdy * (vf_jp1 - vf_j);
810 const double dujdz_jk = nu_deltaunsurdelta_m * (vf_j - vf_j_km1);
811 const double dujdz_jkp1 = nu_deltaunsurdelta_p * (vf_j_kp1 - vf_j);
812 const double dukdx_ik = nu_deltaunsurdx * (wf_k - wf_k_im1);
813 const double dukdx_ikp1 = nu_deltaunsurdx * (wf_kp1 - wf_kp1_im1);
814 const double dukdy_jk = nu_deltaunsurdy * (wf_k - wf_k_jm1);
815 const double dukdy_jkp1 = nu_deltaunsurdy * (wf_kp1 - wf_kp1_jm1);
816 const double dukdz = nu_deltaunsurdz * (wf_kp1 - wf_k);
819 const double kappa_deltaunsurdx = kappa_dx_delta * unsurdx;
820 const double kappa_deltaunsurdy = kappa_dy_delta * unsurdy;
822 const double kappa_deltaunsurdelta_m = kappa_delta_m_delta * unsurdm;
823 const double kappa_deltaunsurdelta_p = kappa_delta_p_delta * unsurdp;
826 double scalar_im1 = 0.;
827 double scalar_jm1 = 0.;
828 double scalar_km1 = 0.;
829 double scalar_kp1 = 0.;
831 if (flag_formulation_favre)
833 scalar = 1/masse_vol(i,j,k);
834 scalar_im1 = 1/masse_vol(i-1,j,k);
835 scalar_jm1 = 1/masse_vol(i,j-1,k);
836 scalar_km1 = kg==0 ? 1/rho_kmin : 1/masse_vol(i,j,k-1);
837 scalar_kp1 = kg==(nktot-1) ? 1/rho_kmax : 1/masse_vol(i,j,k+1);
839 if (flag_formulation_velocity)
841 scalar = masse_vol(i,j,k);
842 scalar_im1 = masse_vol(i-1,j,k);
843 scalar_jm1 = masse_vol(i,j-1,k);
844 scalar_km1 = kg==0 ? rho_kmin : masse_vol(i,j,k-1);
845 scalar_kp1 = kg==(nktot-1) ? rho_kmax : masse_vol(i,j,k+1);
847 const double dscalardxf_i = kappa_deltaunsurdx * (scalar - scalar_im1);
848 const double dscalardyf_j = kappa_deltaunsurdy * (scalar - scalar_jm1);
849 const double dscalardzf_k = kappa_deltaunsurdelta_m * (scalar - scalar_km1);
850 const double dscalardzf_kp1 = kappa_deltaunsurdelta_p * (scalar_kp1 - scalar);
853 double nuturb_xx = 0.;
854 double nuturb_xy = 0.;
855 double nuturb_xz = 0.;
856 double nuturb_yy = 0.;
857 double nuturb_yz = 0.;
858 double nuturb_zz = 0.;
860 double nuturb_xx_dudx = 0.;
861 double nuturb_xy_dudy = 0.;
862 double nuturb_xz_dudz = 0.;
863 double nuturb_xy_dvdx = 0.;
864 double nuturb_yy_dvdy = 0.;
865 double nuturb_yz_dvdz = 0.;
866 double nuturb_xz_dwdx = 0.;
867 double nuturb_yz_dwdy = 0.;
868 double nuturb_zz_dwdz = 0.;
870 double nuturb_xx_dudx_dudx = 0.;
871 double nuturb_xy_dudy_dudy = 0.;
872 double nuturb_xz_dudz_dudz = 0.;
873 double nuturb_xy_dvdx_dvdx = 0.;
874 double nuturb_yy_dvdy_dvdy = 0.;
875 double nuturb_yz_dvdz_dvdz = 0.;
876 double nuturb_xz_dwdx_dwdx = 0.;
877 double nuturb_yz_dwdy_dwdy = 0.;
878 double nuturb_zz_dwdz_dwdz = 0.;
879 double nuturb_xy_dvdx_dudy = 0.;
880 double nuturb_xz_dwdx_dudz = 0.;
881 double nuturb_yz_dwdy_dvdz = 0.;
883 if (flag_turbulent_viscosity)
885 double nuturb_xy_im1 = 0.;
886 double nuturb_xy_jm1 = 0.;
887 double nuturb_xy_im1_jm1 = 0.;
889 double nuturb_xz_im1 = 0.;
890 double nuturb_xz_km1 = 0.;
891 double nuturb_xz_im1_km1 = 0.;
892 double nuturb_xz_kp1 = 0.;
893 double nuturb_xz_im1_kp1 = 0.;
895 double nuturb_yz_jm1 = 0.;
896 double nuturb_yz_km1 = 0.;
897 double nuturb_yz_jm1_km1 = 0.;
898 double nuturb_yz_kp1 = 0.;
899 double nuturb_yz_jm1_kp1 = 0.;
901 if (flag_formulation_favre)
903 const double rho_im1 = masse_vol(i-1,j,k);
904 const double rho_jm1 = masse_vol(i,j-1,k);
905 const double rho_im1_jm1 = masse_vol(i-1,j-1,k);
906 const double rho_im1_km1 = kg==0 ? rho_kmin : masse_vol(i-1,j,k-1);
907 const double rho_im1_kp1 = kg==(nktot-1) ? rho_kmax : masse_vol(i-1,j,k+1);
908 const double rho_jm1_km1 = kg==0 ? rho_kmin : masse_vol(i,j-1,k-1);
909 const double rho_jm1_kp1 = kg==(nktot-1) ? rho_kmax : masse_vol(i,j-1,k+1);
911 nuturb_xx = champ_turbulent_mu_xx(i,j,k)/rho;
913 nuturb_xy = champ_turbulent_mu_xy(i,j,k)/rho;
914 nuturb_xy_im1 = champ_turbulent_mu_xy(i-1,j,k)/rho_im1;
915 nuturb_xy_jm1 = champ_turbulent_mu_xy(i,j-1,k)/rho_jm1;
916 nuturb_xy_im1_jm1 = champ_turbulent_mu_xy(i-1,j-1,k)/rho_im1_jm1;
918 nuturb_xz = champ_turbulent_mu_xz(i,j,k)/rho;
919 nuturb_xz_im1 = champ_turbulent_mu_xz(i-1,j,k)/rho_im1;
920 nuturb_xz_km1 = kg==0 ? 0. : champ_turbulent_mu_xz(i,j,k-1)/rho_moins_k;
921 nuturb_xz_im1_km1 = kg==0 ? 0. : champ_turbulent_mu_xz(i-1,j,k-1)/rho_im1_km1;
922 nuturb_xz_kp1 = kg==(nktot-1) ? 0. : champ_turbulent_mu_xz(i,j,k+1)/rho_plus_k;
923 nuturb_xz_im1_kp1 = kg==(nktot-1) ? 0. : champ_turbulent_mu_xz(i-1,j,k+1)/rho_im1_kp1;
925 nuturb_yy = champ_turbulent_mu_yy(i,j,k)/rho;
927 nuturb_yz = champ_turbulent_mu_yz(i,j,k)/rho;
928 nuturb_yz_jm1 = champ_turbulent_mu_yz(i,j-1,k)/rho_jm1;
929 nuturb_yz_km1 = kg==0 ? 0. : champ_turbulent_mu_yz(i,j,k-1)/rho_moins_k;
930 nuturb_yz_jm1_km1 = kg==0 ? 0. : champ_turbulent_mu_yz(i,j-1,k-1)/rho_jm1_km1;
931 nuturb_yz_kp1 = kg==(nktot-1) ? 0. : champ_turbulent_mu_yz(i,j,k+1)/rho_plus_k;
932 nuturb_yz_jm1_kp1 = kg==(nktot-1) ? 0. : champ_turbulent_mu_yz(i,j-1,k+1)/rho_jm1_kp1;
934 nuturb_zz = champ_turbulent_mu_zz(i,j,k)/rho;
936 if (flag_formulation_velocity)
938 nuturb_xx = champ_turbulent_mu_xx(i,j,k);
940 nuturb_xy = champ_turbulent_mu_xy(i,j,k);
941 nuturb_xy_im1 = champ_turbulent_mu_xy(i-1,j,k);
942 nuturb_xy_jm1 = champ_turbulent_mu_xy(i,j-1,k);
943 nuturb_xy_im1_jm1 = champ_turbulent_mu_xy(i-1,j-1,k);
945 nuturb_xz = champ_turbulent_mu_xz(i,j,k);
946 nuturb_xz_im1 = champ_turbulent_mu_xz(i-1,j,k);
947 nuturb_xz_km1 = kg==0 ? 0. : champ_turbulent_mu_xz(i,j,k-1);
948 nuturb_xz_im1_km1 = kg==0 ? 0. : champ_turbulent_mu_xz(i-1,j,k-1);
949 nuturb_xz_kp1 = kg==(nktot-1) ? 0. : champ_turbulent_mu_xz(i,j,k+1);
950 nuturb_xz_im1_kp1 = kg==(nktot-1) ? 0. : champ_turbulent_mu_xz(i-1,j,k+1);
952 nuturb_yy = champ_turbulent_mu_yy(i,j,k);
954 nuturb_yz = champ_turbulent_mu_yz(i,j,k);
955 nuturb_yz_jm1 = champ_turbulent_mu_yz(i,j-1,k);
956 nuturb_yz_km1 = kg==0 ? 0. : champ_turbulent_mu_yz(i,j,k-1);
957 nuturb_yz_jm1_km1 = kg==0 ? 0. : champ_turbulent_mu_yz(i,j-1,k-1);
958 nuturb_yz_kp1 = kg==(nktot-1) ? 0. : champ_turbulent_mu_yz(i,j,k+1);
959 nuturb_yz_jm1_kp1 = kg==(nktot-1) ? 0. : champ_turbulent_mu_yz(i,j-1,k+1);
961 nuturb_zz = champ_turbulent_mu_zz(i,j,k);
964 const double nuturb_xy_ij = 0.25 * (nuturb_xy + nuturb_xy_im1 + nuturb_xy_jm1 + nuturb_xy_im1_jm1);
965 const double nuturb_xz_ik = 0.25 * (nuturb_xz + nuturb_xz_im1 + nuturb_xz_km1 + nuturb_xz_im1_km1);
966 const double nuturb_xz_ikp1 = 0.25 * (nuturb_xz_kp1 + nuturb_xz_im1_kp1 + nuturb_xz + nuturb_xz_im1);
967 const double nuturb_yz_jk = 0.25 * (nuturb_yz + nuturb_yz_jm1 + nuturb_yz_km1 + nuturb_yz_jm1_km1);
968 const double nuturb_yz_jkp1 = 0.25 * (nuturb_yz_kp1 + nuturb_yz_jm1_kp1 + nuturb_yz + nuturb_yz_jm1);
970 nuturb_xx_dudx = nuturb_xx*duidx;
971 nuturb_xy_dudy = nuturb_xy_ij*duidy_ij;
972 nuturb_xz_dudz = 0.5 * (nuturb_xz_ikp1*duidz_ikp1 + nuturb_xz_ik*duidz_ik);
973 nuturb_xy_dvdx = nuturb_xy_ij*dujdx_ij;
974 nuturb_yy_dvdy = nuturb_yy*dujdy;
975 nuturb_yz_dvdz = 0.5 * (nuturb_yz_jkp1*dujdz_jkp1 + nuturb_yz_jk*dujdz_jk);
976 nuturb_xz_dwdx = 0.5 * (nuturb_xz_ikp1*dukdx_ikp1 + nuturb_xz_ik*dukdx_ik);
977 nuturb_yz_dwdy = 0.5 * (nuturb_yz_jkp1*dukdy_jkp1 + nuturb_yz_jk*dukdy_jk);
978 nuturb_zz_dwdz = nuturb_zz*dukdz;
980 nuturb_xx_dudx_dudx = nuturb_xx*duidx*duidx;
981 nuturb_xy_dudy_dudy = nuturb_xy_ij*duidy_ij*duidy_ij;
982 nuturb_xz_dudz_dudz = 0.5 * (nuturb_xz_ikp1*duidz_ikp1*duidz_ikp1 + nuturb_xz_ik*duidz_ik*duidz_ik);
983 nuturb_xy_dvdx_dvdx = nuturb_xy_ij*dujdx_ij*dujdx_ij;
984 nuturb_yy_dvdy_dvdy = nuturb_yy*dujdy*dujdy;
985 nuturb_yz_dvdz_dvdz = 0.5 * (nuturb_yz_jkp1*dujdz_jkp1*dujdz_jkp1 + nuturb_yz_jk*dujdz_jk*dujdz_jk);
986 nuturb_xz_dwdx_dwdx = 0.5 * (nuturb_xz_ikp1*dukdx_ikp1*dukdx_ikp1 + nuturb_xz_ik*dukdx_ik*dukdx_ik);
987 nuturb_yz_dwdy_dwdy = 0.5 * (nuturb_yz_jkp1*dukdy_jkp1*dukdy_jkp1 + nuturb_yz_jk*dukdy_jk*dukdy_jk);
988 nuturb_zz_dwdz_dwdz = nuturb_zz*dukdz*dukdz;
989 nuturb_xy_dvdx_dudy = nuturb_xy_ij*dujdx_ij*duidy_ij;
990 nuturb_xz_dwdx_dudz = 0.5 * (nuturb_xz_ikp1*dukdx_ikp1*duidz_ikp1 + nuturb_xz_ik*dukdx_ik*duidz_ik);
991 nuturb_yz_dwdy_dvdz = 0.5 * (nuturb_yz_jkp1*dukdy_jkp1*dujdz_jkp1 + nuturb_yz_jk*dukdy_jk*dujdz_jk);
994 double kappaturb_x = 0.;
995 double kappaturb_y = 0.;
996 double kappaturb_z = 0.;
998 double kappaturb_x_dscalardx = 0.;
999 double kappaturb_y_dscalardy = 0.;
1000 double kappaturb_z_dscalardz = 0.;
1002 double kappaturb_x_dscalardx_dscalardx = 0.;
1003 double kappaturb_y_dscalardy_dscalardy = 0.;
1004 double kappaturb_z_dscalardz_dscalardz = 0.;
1006 if (flag_turbulent_diffusivity)
1008 double kappaturb_x_im1 = 0.;
1009 double kappaturb_y_jm1 = 0.;
1010 double kappaturb_z_km1 = 0.;
1011 double kappaturb_z_kp1 = 0.;
1013 if (flag_formulation_favre)
1015 const double rho_im1 = masse_vol(i-1,j,k);
1016 const double rho_jm1 = masse_vol(i,j-1,k);
1018 kappaturb_x = champ_turbulent_kappa_x(i,j,k)/(rho*cp_gaz);
1019 kappaturb_x_im1 = champ_turbulent_kappa_x(i-1,j,k)/(rho_im1*cp_gaz);
1021 kappaturb_y = champ_turbulent_kappa_y(i,j,k)/(rho*cp_gaz);
1022 kappaturb_y_jm1 = champ_turbulent_kappa_y(i,j-1,k)/(rho_jm1*cp_gaz);
1024 kappaturb_z = champ_turbulent_kappa_z(i,j,k)/(rho*cp_gaz);
1025 kappaturb_z_km1 = kg==0 ? 0. : champ_turbulent_kappa_z(i,j,k-1)/(rho_moins_k*cp_gaz);
1026 kappaturb_z_kp1 = kg==(nktot-1) ? 0. : champ_turbulent_kappa_z(i,j,k+1)/(rho_plus_k*cp_gaz);
1028 if (flag_formulation_velocity)
1030 kappaturb_x = champ_turbulent_kappa_x(i,j,k);
1031 kappaturb_x_im1 = champ_turbulent_kappa_x(i-1,j,k);
1033 kappaturb_y = champ_turbulent_kappa_y(i,j,k);
1034 kappaturb_y_jm1 = champ_turbulent_kappa_y(i,j-1,k);
1036 kappaturb_z = champ_turbulent_kappa_z(i,j,k);
1037 kappaturb_z_km1 = kg==0 ? 0. : champ_turbulent_kappa_z(i,j,k-1);
1038 kappaturb_z_kp1 = kg==(nktot-1) ? 0. : champ_turbulent_kappa_z(i,j,k+1);
1041 const double kappaturb_xf_i = 0.5 * (kappaturb_x + kappaturb_x_im1);
1042 const double kappaturb_yf_j = 0.5 * (kappaturb_y + kappaturb_y_jm1);
1043 const double kappaturb_zf_k = 0.5 * (kappaturb_z + kappaturb_z_km1);
1044 const double kappaturb_zf_kp1 = 0.5 * (kappaturb_z + kappaturb_z_kp1);
1046 kappaturb_x_dscalardx = kappaturb_xf_i*dscalardxf_i;
1047 kappaturb_y_dscalardy = kappaturb_yf_j*dscalardyf_j;
1048 kappaturb_z_dscalardz = 0.5 * (kappaturb_zf_k*dscalardzf_k + kappaturb_zf_kp1*dscalardzf_kp1);
1050 kappaturb_x_dscalardx_dscalardx = kappaturb_xf_i*dscalardxf_i*dscalardxf_i;
1051 kappaturb_y_dscalardy_dscalardy = kappaturb_yf_j*dscalardyf_j*dscalardyf_j;
1052 kappaturb_z_dscalardz_dscalardz = 0.5 * (kappaturb_zf_k*dscalardzf_k*dscalardzf_k + kappaturb_zf_kp1*dscalardzf_kp1*dscalardzf_kp1);
1056 double structural_uu = 0.;
1057 double structural_uv = 0.;
1058 double structural_uw = 0.;
1059 double structural_vv = 0.;
1060 double structural_vw = 0.;
1061 double structural_ww = 0.;
1063 double structural_uu_dudx = 0.;
1064 double structural_uv_dudy = 0.;
1065 double structural_uw_dudz = 0.;
1066 double structural_uv_dvdx = 0.;
1067 double structural_vv_dvdy = 0.;
1068 double structural_vw_dvdz = 0.;
1069 double structural_uw_dwdx = 0.;
1070 double structural_vw_dwdy = 0.;
1071 double structural_ww_dwdz = 0.;
1073 if (flag_structural_uu)
1075 const double structural_uu_e = structural_uu_xx(i,j,k);
1077 const double structural_uv_ij = structural_uu_xy(i,j,k);
1079 const double structural_uw_ik = structural_uu_xz(i,j,k);
1080 const double structural_uw_ikp1 = kg==(nktot-1) ? 0. : structural_uu_xz(i,j,k+1);
1082 const double structural_vv_e = structural_uu_yy(i,j,k);
1084 const double structural_vw_jk = structural_uu_yz(i,j,k);
1085 const double structural_vw_jkp1 = kg==(nktot-1) ? 0. : structural_uu_yz(i,j,k+1);
1087 const double structural_ww_e = structural_uu_zz(i,j,k);
1089 structural_uu = structural_uu_e;
1090 structural_uv = structural_uv_ij;
1091 structural_uw = 0.5 * (structural_uw_ikp1 + structural_uw_ik);
1092 structural_vv = structural_vv_e;
1093 structural_vw = 0.5 * (structural_vw_jkp1 + structural_vw_jk);
1094 structural_ww = structural_ww_e;
1096 structural_uu_dudx = structural_uu_e*duidx;
1097 structural_uv_dudy = structural_uv_ij*duidy_ij;
1098 structural_uw_dudz = 0.5 * (structural_uw_ikp1*duidz_ikp1 + structural_uw_ik*duidz_ik);
1099 structural_uv_dvdx = structural_uv_ij*dujdx_ij;
1100 structural_vv_dvdy = structural_vv_e*dujdy;
1101 structural_vw_dvdz = 0.5 * (structural_vw_jkp1*dujdz_jkp1 + structural_vw_jk*dujdz_jk);
1102 structural_uw_dwdx = 0.5 * (structural_uw_ikp1*dukdx_ikp1 + structural_uw_ik*dukdx_ik);
1103 structural_vw_dwdy = 0.5 * (structural_vw_jkp1*dukdy_jkp1 + structural_vw_jk*dukdy_jk);
1104 structural_ww_dwdz = structural_ww_e*dukdz;
1107 double structural_uscalar = 0.;
1108 double structural_vscalar = 0.;
1109 double structural_wscalar = 0.;
1111 double structural_uscalar_dscalardx = 0.;
1112 double structural_vscalar_dscalardy = 0.;
1113 double structural_wscalar_dscalardz = 0.;
1115 if (flag_structural_uscalar)
1117 const double structural_uscalarf_i = structural_uscalar_x(i,j,k);
1119 const double structural_vscalarf_j = structural_uscalar_y(i,j,k);
1121 const double structural_wscalarf_k = structural_uscalar_z(i,j,k);
1122 const double structural_wscalarf_kp1 = kg==(nktot-1) ? 0. : structural_uscalar_z(i,j,k+1);
1124 structural_uscalar = structural_uscalarf_i;
1125 structural_vscalar = structural_vscalarf_j;
1126 structural_wscalar = 0.5 * (structural_wscalarf_kp1 + structural_wscalarf_k);
1128 structural_uscalar_dscalardx = structural_uscalarf_i*dscalardxf_i;
1129 structural_vscalar_dscalardy = structural_vscalarf_j*dscalardyf_j;
1130 structural_wscalar_dscalardz = 0.5 * (structural_wscalarf_kp1*dscalardzf_kp1 + structural_wscalarf_k*dscalardzf_k);
1133#define AJOUT(somme,val) moy[somme] += val
1139 AJOUT(UU_MOY,uf*uf);
1140 AJOUT(VV_MOY,vf*vf);
1141 AJOUT(WW_MOY,0.5*(wf_k*wf_k+wf_kp1*wf_kp1));
1143 AJOUT(UV_MOY,ue*ve);
1144 AJOUT(VW_MOY,ve*we);
1145 AJOUT(UW_MOY,ue*we);
1150 AJOUT(UUU_MOY,uf*uf*uf);
1151 AJOUT(VVV_MOY,vf*vf*vf);
1152 AJOUT(WWW_MOY,0.5*(wf_k*wf_k*wf_k+wf_kp1*wf_kp1*wf_kp1));
1159 AJOUT(URHO_MOY,ue*rho);
1160 AJOUT(VRHO_MOY,ve*rho);
1161 AJOUT(WRHO_MOY,we*rho);
1162 AJOUT(RHOP_MOY,rho*p);
1166 AJOUT(T3_MOY,t*t*t);
1167 AJOUT(T4_MOY,t*t*t*t);
1168 AJOUT(RHO2_MOY,rho*rho);
1169 AJOUT(RHO3_MOY,rho*rho*rho);
1170 AJOUT(RHO4_MOY,rho*rho*rho*rho);
1171 AJOUT(UUW_MOY,ue*ue*ve);
1172 AJOUT(VVW_MOY,we*we*ve);
1173 AJOUT(U4_MOY,uf*uf*uf*uf);
1174 AJOUT(V4_MOY,vf*vf*vf*vf);
1175 AJOUT(W4_MOY,0.5*(wf_k*wf_k*wf_k*wf_k+wf_kp1*wf_kp1*wf_kp1*wf_kp1));
1177 AJOUT(LAMBDA_MOY,lambda);
1179 AJOUT(WFACE_MOY,wf_k);
1181 AJOUT(UN_SUR_RHO_MOY,unsrho);
1182 AJOUT(NU2_MOY,nu*nu);
1183 AJOUT(MU2_MOY,mu*mu);
1184 AJOUT(NUTURB_MOY,nuturb_xx);
1185 AJOUT(LAMBDADTDZ_MOY,lambda*dtdz);
1186 AJOUT(KAPPATURB_MOY,kappaturb_x);
1187 AJOUT(RHOWFACE_MOY,rhof_k*wf_k);
1188 AJOUT(RHOTWFACE_MOY,rhof_k*tf_k*wf_k);
1189 AJOUT(RHOUU_MOY,rho*uf*uf);
1190 AJOUT(RHOVV_MOY,rho*vf*vf);
1191 AJOUT(RHOWW_MOY,rho*0.5*(wf_k*wf_k+wf_kp1*wf_kp1));
1192 AJOUT(RHOUV_MOY,rho*ue*ve);
1193 AJOUT(RHOVW_MOY,rho*ve*we);
1194 AJOUT(RHOUW_MOY,rho*ue*we);
1195 AJOUT(RHOUT_MOY,rho*ue*t);
1196 AJOUT(RHOVT_MOY,rho*ve*t);
1197 AJOUT(RHOWT_MOY,rho*we*t);
1198 AJOUT(NUTURB_XX_MOY,nuturb_xx);
1199 AJOUT(NUTURB_XY_MOY,nuturb_xy);
1200 AJOUT(NUTURB_XZ_MOY,nuturb_xz);
1201 AJOUT(NUTURB_YY_MOY,nuturb_yy);
1202 AJOUT(NUTURB_YZ_MOY,nuturb_yz);
1203 AJOUT(NUTURB_ZZ_MOY,nuturb_zz);
1204 AJOUT(KAPPATURB_X_MOY,kappaturb_x);
1205 AJOUT(KAPPATURB_Y_MOY,kappaturb_y);
1206 AJOUT(KAPPATURB_Z_MOY,kappaturb_z);
1207 AJOUT(NUTURB_XX_DUDX_MOY,nuturb_xx_dudx);
1208 AJOUT(NUTURB_XY_DUDY_MOY,nuturb_xy_dudy);
1209 AJOUT(NUTURB_XZ_DUDZ_MOY,nuturb_xz_dudz);
1210 AJOUT(NUTURB_XY_DVDX_MOY,nuturb_xy_dvdx);
1211 AJOUT(NUTURB_YY_DVDY_MOY,nuturb_yy_dvdy);
1212 AJOUT(NUTURB_YZ_DVDZ_MOY,nuturb_yz_dvdz);
1213 AJOUT(NUTURB_XZ_DWDX_MOY,nuturb_xz_dwdx);
1214 AJOUT(NUTURB_YZ_DWDY_MOY,nuturb_yz_dwdy);
1215 AJOUT(NUTURB_ZZ_DWDZ_MOY,nuturb_zz_dwdz);
1216 AJOUT(KAPPATURB_X_DSCALARDX_MOY,kappaturb_x_dscalardx);
1217 AJOUT(KAPPATURB_Y_DSCALARDY_MOY,kappaturb_y_dscalardy);
1218 AJOUT(KAPPATURB_Z_DSCALARDZ_MOY,kappaturb_z_dscalardz);
1219 AJOUT(STRUCTURAL_UU_MOY,structural_uu);
1220 AJOUT(STRUCTURAL_UV_MOY,structural_uv);
1221 AJOUT(STRUCTURAL_UW_MOY,structural_uw);
1222 AJOUT(STRUCTURAL_VV_MOY,structural_vv);
1223 AJOUT(STRUCTURAL_VW_MOY,structural_vw);
1224 AJOUT(STRUCTURAL_WW_MOY,structural_ww);
1225 AJOUT(STRUCTURAL_USCALAR_MOY,structural_uscalar);
1226 AJOUT(STRUCTURAL_VSCALAR_MOY,structural_vscalar);
1227 AJOUT(STRUCTURAL_WSCALAR_MOY,structural_wscalar);
1228 AJOUT(NUTURB_XX_DUDX_DUDX_MOY,nuturb_xx_dudx_dudx);
1229 AJOUT(NUTURB_XY_DUDY_DUDY_MOY,nuturb_xy_dudy_dudy);
1230 AJOUT(NUTURB_XZ_DUDZ_DUDZ_MOY,nuturb_xz_dudz_dudz);
1231 AJOUT(NUTURB_XY_DVDX_DVDX_MOY,nuturb_xy_dvdx_dvdx);
1232 AJOUT(NUTURB_YY_DVDY_DVDY_MOY,nuturb_yy_dvdy_dvdy);
1233 AJOUT(NUTURB_YZ_DVDZ_DVDZ_MOY,nuturb_yz_dvdz_dvdz);
1234 AJOUT(NUTURB_XZ_DWDX_DWDX_MOY,nuturb_xz_dwdx_dwdx);
1235 AJOUT(NUTURB_YZ_DWDY_DWDY_MOY,nuturb_yz_dwdy_dwdy);
1236 AJOUT(NUTURB_ZZ_DWDZ_DWDZ_MOY,nuturb_zz_dwdz_dwdz);
1237 AJOUT(NUTURB_XY_DVDX_DUDY_MOY,nuturb_xy_dvdx_dudy);
1238 AJOUT(NUTURB_XZ_DWDX_DUDZ_MOY,nuturb_xz_dwdx_dudz);
1239 AJOUT(NUTURB_YZ_DWDY_DVDZ_MOY,nuturb_yz_dwdy_dvdz);
1240 AJOUT(KAPPATURB_X_DSCALARDX_DSCALARDX_MOY,kappaturb_x_dscalardx_dscalardx);
1241 AJOUT(KAPPATURB_Y_DSCALARDY_DSCALARDY_MOY,kappaturb_y_dscalardy_dscalardy);
1242 AJOUT(KAPPATURB_Z_DSCALARDZ_DSCALARDZ_MOY,kappaturb_z_dscalardz_dscalardz);
1243 AJOUT(STRUCTURAL_UU_DUDX_MOY,structural_uu_dudx);
1244 AJOUT(STRUCTURAL_UV_DUDY_MOY,structural_uv_dudy);
1245 AJOUT(STRUCTURAL_UW_DUDZ_MOY,structural_uw_dudz);
1246 AJOUT(STRUCTURAL_UV_DVDX_MOY,structural_uv_dvdx);
1247 AJOUT(STRUCTURAL_VV_DVDY_MOY,structural_vv_dvdy);
1248 AJOUT(STRUCTURAL_VW_DVDZ_MOY,structural_vw_dvdz);
1249 AJOUT(STRUCTURAL_UW_DWDX_MOY,structural_uw_dwdx);
1250 AJOUT(STRUCTURAL_VW_DWDY_MOY,structural_vw_dwdy);
1251 AJOUT(STRUCTURAL_WW_DWDZ_MOY,structural_ww_dwdz);
1252 AJOUT(STRUCTURAL_USCALAR_DSCALARDX_MOY,structural_uscalar_dscalardx);
1253 AJOUT(STRUCTURAL_VSCALAR_DSCALARDY_MOY,structural_vscalar_dscalardy);
1254 AJOUT(STRUCTURAL_WSCALAR_DSCALARDZ_MOY,structural_wscalar_dscalardz);
1255 AJOUT(LAMBDADTDZ2_MOY,lambda*dtdz*lambda*dtdz);
1261 const int ni_tot = pression.get_domaine().get_nb_elem_tot(DIRECTION_I);
1262 const int nj_tot = pression.get_domaine().get_nb_elem_tot(DIRECTION_J);
1264 double facteur = 1./(double)(ni_tot * nj_tot);
1266 for (
int i = 0; i <
nval_; i++)
1267 tmp(k + offset, i) = moy[i] * facteur;
1275 for (
int i = 0; i <
nval_; i++)
1277 for (
int k = 0; k < nktot; k++)
1279 integrale_temporelle_[i][k] += tmp(k, i) * dt;
1280 moyenne_spatiale_instantanee_[i][k] = tmp(k, i);
1291 const IJK_Field_double& pression,
1292 const IJK_Field_double& masse_vol,
1293 const IJK_Field_double& champ_mu,
1294 const double pression_thermodynamique,
1295 const double terme_source_acceleration,
1300 Cerr <<
"Erreur dans Statistiques_dns_ijk::update_stat: non initialise" << finl;
1303 Cerr.setf(ios::scientific);
1306 const IJK_Field_double& vitesse_i = vitesse[0];
1307 const IJK_Field_double& vitesse_j = vitesse[1];
1308 const IJK_Field_double& vitesse_k = vitesse[2];
1311 const ArrOfDouble& vit_moy_i = vit_moy_[0];
1312 const ArrOfDouble& vit_moy_j = vit_moy_[1];
1313 const ArrOfDouble& vit_moy_k = vit_moy_[2];
1314 const ArrOfDouble& rho_moy =
rho_moy_;
1315 const ArrOfDouble& nu_moy =
nu_moy_;
1318 const int nktot = pression.get_domaine().get_nb_items_global(
Domaine_IJK::ELEM, DIRECTION_K);
1321 const int kmax = pression.nk();
1322 const int offsetk = pression.get_domaine().get_offset_local(DIRECTION_K);
1324 DoubleTab tmp(nktot,
kval_);
1325 const int imax = pression.ni();
1326 const int jmax = pression.nj();
1328 const double unsurdx=1./
dx_;
1329 const double unsurdy=1./
dy_;
1339 const Domaine_IJK& split = pression.get_domaine();
1340 IJK_Field_double Ener_cin;
1346 IJK_Field_double Div_fluc_U;
1348 Div_fluc_U.
data()=0;
1350 IJK_Field_double Div_tot_U;
1356 if ((kmax+offsetk)!=nktot)
1362 for (
int k = KMIN; k < KMAX; k++)
1364 const int kg=k+offsetk;
1365 const double unsurdz=1./
tab_dz_[kg];
1366 for (
int j = -1; j < (jmax+1); j++)
1367 for (
int i = -1; i < (imax+1); i++)
1369 double uf_i = vitesse_i(i,j,k);
1370 double vf_j = vitesse_j(i,j,k);
1371 double wf_k = vitesse_k(i,j,k);
1373 double uf_ip1 = vitesse_i(i+1,j,k);
1374 double vf_jp1 = vitesse_j(i,j+1,k);
1375 double wf_kp1 = vitesse_k(i,j,k+1);
1378 double duidx=(uf_ip1-uf_i)*unsurdx;
1379 double dujdy=(vf_jp1-vf_j)*unsurdy;
1380 double dukdz=(wf_kp1-wf_k)*unsurdz;
1381 double divu= duidx+dujdy+dukdz;
1382 Div_tot_U(i,j,k)= divu;
1385 uf_i -= vit_moy_i[kg];
1386 vf_j -= vit_moy_j[kg];
1387 wf_k -= vit_moy_k[kg];
1389 uf_ip1 -= vit_moy_i[kg];
1390 vf_jp1 -= vit_moy_j[kg];
1391 wf_kp1 -= vit_moy_k[kg+1];
1393 double Ec=0.25*(uf_i*uf_i+uf_ip1*uf_ip1+vf_j*vf_j+vf_jp1*vf_jp1+wf_k*wf_k+wf_kp1*wf_kp1);
1397 duidx=(uf_ip1-uf_i)*unsurdx;
1398 dujdy=(vf_jp1-vf_j)*unsurdy;
1399 dukdz=(wf_kp1-wf_k)*unsurdz;
1400 divu= duidx+dujdy+dukdz;
1401 Div_fluc_U(i,j,k)=divu;
1404 for (
int k = 0; k < kmax; k++)
1407 const int kg=k+offsetk;
1408 const double unsurdz=1./
tab_dz_[k+offsetk];
1412 double alpha = delta_p/delta_m;
1413 double unsalpha = delta_m/delta_p;
1414 double unsdpdm = 1. / ( delta_p + delta_m );
1416 ArrOfDouble moy(
kval_);
1417 for (
int i = 0; i <
kval_; i++)
1421 for (
int j = 0; j < jmax; j++)
1423 for (
int i = 0; i < imax; i++)
1426 const double uf_i = vitesse_i(i,j,k) -vit_moy_i[kg];
1427 const double uf_ip1 = vitesse_i(i+1,j,k)-vit_moy_i[kg];
1428 const double vf_j = vitesse_j(i,j,k) -vit_moy_j[kg];
1429 const double vf_jp1 = vitesse_j(i,j+1,k)-vit_moy_j[kg];
1430 const double wf_k = vitesse_k(i,j,k) -vit_moy_k[kg];
1431 const double wf_kp1 = vitesse_k(i,j,k+1)-vit_moy_k[kg+1];
1434 const double ue = (uf_ip1+uf_i)*0.5;
1435 const double ve = (vf_jp1+vf_j)*0.5;
1436 const double we = (wf_kp1+wf_k)*0.5;
1439 const double uetot = 0.5*(vitesse_i(i+1,j,k) + vitesse_i(i,j,k));
1440 const double vetot = 0.5*(vitesse_j(i,j+1,k) + vitesse_j(i,j,k));
1441 const double wetot = 0.5*(vitesse_k(i,j,k+1) + vitesse_k(i,j,k));
1445 const double duidx=(uf_ip1-uf_i)*unsurdx;
1446 const double dujdy=(vf_jp1-vf_j)*unsurdy;
1447 const double dukdz=(wf_kp1-wf_k)*unsurdz;
1448 const double divu= Div_fluc_U(i,j,k);
1451 const double unsurrho = 1./masse_vol(i,j,k);
1452 const double rho = masse_vol(i,j,k);
1453 const double mu = champ_mu(i,j,k);
1454 const double nu = mu * unsurrho;
1455 const double p = pression(i,j,k);
1456 const double unsurrho_moy = 1./rho_moy[kg];
1457 const double rho_fluc = (rho - rho_moy[kg]);
1458 const double nu_fluc = (nu - nu_moy[kg]);
1461 const double Ec = Ener_cin(i,j,k);
1462 const double Ec_plus_i = Ener_cin(i+1,j,k);
1463 const double Ec_plus_j = Ener_cin(i,j+1,k);
1464 const double Ec_plus_k = kg==(nktot-1)? 0. :Ener_cin(i,j,k+1);
1466 const double Ec_moins_i = Ener_cin(i-1,j,k);
1467 const double Ec_moins_j = Ener_cin(i,j-1,k);
1468 const double Ec_moins_k = kg==0 ? 0. : Ener_cin(i,j,k-1);
1470 double dEcdx = (Ec_plus_i - Ec_moins_i) * 0.5 * unsurdx;
1471 double dEcdy = (Ec_plus_j - Ec_moins_j) * 0.5 * unsurdy;
1472 double dEcdz = derivee_aniso(alpha, unsalpha, unsdpdm, Ec_moins_k, Ec, Ec_plus_k);
1475 const double rho_plus_i = masse_vol(i+1,j,k);
1476 const double rho_plus_j = masse_vol(i,j+1,k);
1477 const double rho_plus_k = kg==(nktot-1) ? rho_kmax : masse_vol(i,j,k+1);
1479 const double rho_moins_i = masse_vol(i-1,j,k);
1480 const double rho_moins_j = masse_vol(i,j-1,k);
1481 const double rho_moins_k = kg==0 ? rho_kmin : masse_vol(i,j,k-1);
1483 const double drhodx = (rho_plus_i - rho_moins_i ) * 0.5 * unsurdx;
1484 const double drhody = (rho_plus_j - rho_moins_j ) * 0.5 * unsurdy;
1485 const double drhodz = derivee_aniso(alpha , unsalpha ,unsdpdm ,rho_moins_k, rho , rho_plus_k);
1488 double Vf_im = vitesse_j(i-1,j,k)-vit_moy_j[kg];
1489 double dujdx_0 = (vf_j - Vf_im ) * unsurdx;
1491 double nu_arrette_ij = 0.25*( ( champ_mu(i,j,k) /masse_vol(i,j,k))
1492 + ( champ_mu(i-1,j,k) /masse_vol(i-1,j,k))
1493 + ( champ_mu(i,j-1,k) /masse_vol(i,j-1,k))
1494 + ( champ_mu(i-1,j-1,k)/masse_vol(i-1,j-1,k)) );
1495 double contrib_dujdx = dujdx_0*dujdx_0;
1498 double Wf_mi = vitesse_k(i-1,j,k)-vit_moy_k[kg];
1499 double dukdx_0 = (wf_k - Wf_mi ) * unsurdx;
1501 double Wf_mipk = vitesse_k(i-1,j,k+1)-vit_moy_k[kg+1];
1502 double dukdx_1 = (wf_kp1 - Wf_mipk ) * unsurdx;
1504 double nu_face_i = 0.5 *( ( champ_mu(i,j,k) /masse_vol(i,j,k))
1505 + ( champ_mu(i-1,j,k)/masse_vol(i-1,j,k)) );
1506 double contrib_dukdx = (dukdx_0* dukdx_0 + dukdx_1 * dukdx_1) *0.5;
1509 double Uf_mj = vitesse_i(i,j-1,k)-vit_moy_i[kg];
1510 double duidy_0 = (uf_i - Uf_mj ) * unsurdy;
1511 double contrib_duidy = duidy_0*duidy_0;
1514 double Wf_mj = vitesse_k(i,j-1,k)-vit_moy_k[kg];
1515 double dukdy_0 = (wf_k - Wf_mj ) * unsurdy;
1517 double Wf_mj_pk = vitesse_k(i,j-1,k+1)-vit_moy_k[kg+1];
1518 double dukdy_1 = (wf_kp1 - Wf_mj_pk ) * unsurdy;
1520 double nu_face_j = 0.5 *( ( champ_mu(i,j,k) /masse_vol(i,j,k))
1521 + ( champ_mu(i,j-1,k)/masse_vol(i,j-1,k)) );
1522 double contrib_dukdy = (dukdy_0* dukdy_0 + dukdy_1 * dukdy_1) *0.5;
1525 double Uf_mk_0 = kg == 0 ? 0. : vitesse_i(i,j,k-1)-vit_moy_i[kg-1];
1526 double Uf_pk_0 = kg == (nktot-1) ? 0. : vitesse_i(i,j,k+1)-vit_moy_i[kg+1];
1527 double duidz_0 = derivee_aniso(alpha, unsalpha, unsdpdm, Uf_mk_0, uf_i, Uf_pk_0);
1529 double Uf_mk_1 = kg == 0 ? 0. : vitesse_i(i+1,j,k-1)-vit_moy_i[kg-1];
1530 double Uf_pk_1 = kg == (nktot-1) ? 0. : vitesse_i(i+1,j,k+1)-vit_moy_i[kg+1];
1531 double duidz_1 = derivee_aniso(alpha, unsalpha, unsdpdm, Uf_mk_1, uf_i, Uf_pk_1);
1533 double Uf_mk_0_tot = kg == 0 ? 0. : vitesse_i(i,j,k-1);
1534 double Uf_pk_0_tot = kg == (nktot-1) ? 0. : vitesse_i(i,j,k+1);
1535 double duidz_0_tot = derivee_aniso(alpha , unsalpha ,unsdpdm ,Uf_mk_0_tot, vitesse_i(i,j,k) , Uf_pk_0_tot);
1537 double Uf_mk_1_tot = kg == 0 ? 0. : vitesse_i(i+1,j,k-1);
1538 double Uf_pk_1_tot = kg == (nktot-1) ? 0. : vitesse_i(i+1,j,k+1);
1539 double duidz_1_tot = derivee_aniso(alpha , unsalpha ,unsdpdm ,Uf_mk_1_tot, vitesse_i(i+1,j,k) , Uf_pk_1_tot);
1541 double contrib_duidz = duidz_0 * duidz_0;
1542 double contrib_duidz_tot = duidz_0 * duidz_0_tot;
1545 double Vf_mk= kg == 0 ? 0. : vitesse_j(i,j,k-1)-vit_moy_j[kg-1];
1546 double Vf_pk= kg == (nktot-1) ? 0. : vitesse_j(i,j,k+1)-vit_moy_j[kg+1];
1547 double dujdz_0 = derivee_aniso(alpha , unsalpha ,unsdpdm ,Vf_mk, vf_j , Vf_pk);
1549 double Vf_mk_1= kg == 0 ? 0. : vitesse_j(i,j+1,k-1)-vit_moy_j[kg-1];
1550 double Vf_pk_1= kg == (nktot-1) ? 0. : vitesse_j(i,j+1,k+1)-vit_moy_j[kg+1];
1551 double dujdz_1 = derivee_aniso(alpha , unsalpha ,unsdpdm ,Vf_mk_1, vf_jp1 , Vf_pk_1);
1553 double contrib_dujdz = dujdz_0 * dujdz_0;
1555 double contrib_div = (duidx*duidx + dujdy*dujdy + dukdz*dukdz);
1558 double dukdz_tot = ( vitesse_k(i,j,k+1) - vitesse_k(i,j,k) ) * unsurdz;
1562 double Umoyf_0 = vit_moy_i[kg];
1563 double Umoyf_1 = kg == (nktot-1) ? 0. : vit_moy_i[kg+1];
1564 double Umoyf_00 = kg == 0 ? 0. : vit_moy_i[kg-1];
1565 double dUmoydz = derivee_aniso(alpha, unsalpha, unsdpdm, Umoyf_00, Umoyf_0, Umoyf_1);
1568 double Wmoyf_0 = vit_moy_k[kg];
1569 double Wmoyf_1 = vit_moy_k[kg+1];
1570 double dWmoydz = (Wmoyf_1-Wmoyf_0)*unsurdz;
1574 double Ve_mi = 0.5*( (vitesse_j(i-1,j,k) - vit_moy_j[kg]) + (vitesse_j(i-1,j+1,k) - vit_moy_j[kg]) );
1575 double Ve_pi = 0.5*( (vitesse_j(i+1,j,k) - vit_moy_j[kg]) + (vitesse_j(i+1,j+1,k) - vit_moy_j[kg]) );
1576 double dujdx = (Ve_pi - Ve_mi) * 0.5 * unsurdx;
1579 double We_mi = 0.5*( (vitesse_k(i-1,j,k) - vit_moy_k[kg] ) + (vitesse_k(i-1,j,k+1) - vit_moy_k[kg+1]) );
1580 double We_pi = 0.5*( (vitesse_k(i+1,j,k) - vit_moy_k[kg] ) + (vitesse_k(i+1,j,k+1) - vit_moy_k[kg+1]) );
1581 double dukdx = (We_pi - We_mi) * 0.5 * unsurdx;
1586 double Ue_mj = 0.5*( (vitesse_i(i,j-1,k) - vit_moy_i[kg]) + (vitesse_i(i+1,j-1,k) - vit_moy_i[kg]) );
1587 double Ue_pj = 0.5*( (vitesse_i(i,j+1,k) - vit_moy_i[kg]) + (vitesse_i(i+1,j+1,k) - vit_moy_i[kg]) );
1588 double duidy = (Ue_pj - Ue_mj) * 0.5 * unsurdy;
1591 double We_mj = 0.5*( (vitesse_k(i,j-1,k) - vit_moy_k[kg]) + (vitesse_k(i,j-1,k+1) - vit_moy_k[kg+1]) );
1592 double We_pj = 0.5*( (vitesse_k(i,j+1,k) - vit_moy_k[kg]) + (vitesse_k(i,j+1,k+1) - vit_moy_k[kg+1]) );
1593 double dukdy = (We_pj - We_mj ) * 0.5 * unsurdy;
1600 double divtotu = Div_tot_U(i,j,k);
1601 double divergence_moy = (vit_moy_k[kg+1] - vit_moy_k[kg]) * unsurdz;
1606 const double contrib_divtot = (duidx*duidx + dujdy*dujdy + dukdz*dukdz_tot);
1607 const double duidz = 0.5*(duidz_0 + duidz_1);
1608 const double dujdz = 0.5*(dujdz_0 + dujdz_1);
1609 const double duidz_tot = 0.5*(duidz_0_tot + duidz_1_tot);
1629 const double Ec_we = Ec * we;
1635 const double Ec_divu = Ec * divu;
1641 const double p_unsrho_divu = p * unsurrho * divu;
1648 const double p_we = p * we;
1656 const double rhofluc_unsrho_unsrhomoy_P_we = unsurrho_moy * unsurrho * we * p * rho_fluc;
1660 const double somme_unsrho_unsrho_P_ui_drhodxi = unsurrho * unsurrho * p * (ue*drhodx + ve*drhody + we*drhodz);
1667 const double somme_duidxj_duidxj = contrib_div
1668 + contrib_dujdz + contrib_duidz
1669 + contrib_dukdy + contrib_duidy
1670 + contrib_dujdx + contrib_dukdx;
1674 const double somme_duidxj_dujdxi = contrib_div
1675 + 2*duidy*dujdx + 2*duidz*dukdx + 2*dujdz*dukdy;
1679 const double somme_nufluc_dujdxi_dUidxj = contrib_divtot*nu_fluc
1680 + contrib_dujdz*(nu_face_j - nu_moy[kg]) + contrib_duidz_tot*(nu_face_i - nu_moy[kg])
1681 + contrib_dukdy*(nu_face_j - nu_moy[kg]) + contrib_duidy*(nu_arrette_ij - nu_moy[kg])
1682 + contrib_dujdx*(nu_arrette_ij - nu_moy[kg]) + contrib_dukdx*(nu_face_i - nu_moy[kg]);
1686 const double somme_nufluc_duidxj_dUjdxi = nu_fluc * ( contrib_divtot
1687 + 2*duidy*dujdx + duidz*dukdx + duidz_tot*dukdx + 2*dujdz*dukdy );
1691 const double deuxtiers_nu_divu_divU = (2./3.) * nu * divu * divtotu;
1701 const double somme_ui_dukdxi = ue*dukdx + ve*dukdy + we*dukdz;
1712 const double somme_nufluc_dEcdxk = nu_fluc * dEcdz;
1713 const double somme_nufluc_ui_dUimoydxk = nu_fluc * (ue*dUmoydz + we*dWmoydz);
1714 const double somme_nufluc_ui_dUidxk = somme_nufluc_dEcdxk + somme_nufluc_ui_dUimoydxk;
1718 const double somme_nufluc_ui_dUkdxi = nu_fluc * (ue*dukdx + ve*dukdy + we*dukdz_tot);
1722 const double somme_deuxtiers_nu_uk_divU = (2./3.) * nu * we * divtotu;
1726 const double somme_nusrho_dEcdxj_drhodxj = nu * unsurrho * (dEcdx*drhodx + dEcdy*drhody + dEcdz*drhodz);
1727 const double somme_nusrho_ui_dUimoydxk_drhodxk = nu * unsurrho * (ue*dUmoydz + we*dWmoydz) * drhodz;
1728 const double somme_nusrho_ui_dUidxj_drhodxj = somme_nusrho_dEcdxj_drhodxj + somme_nusrho_ui_dUimoydxk_drhodxk;
1732 const double ui_dUjdxi_drhodxj = ue * (drhodx*duidx + drhody*dujdx + drhodz*dukdx);
1733 const double uj_dUjdxj_drhodxj = ve * (drhodx*duidy + drhody*dujdy + drhodz*dukdy);
1734 const double uk_dUjdxk_drhodxj = we * (drhodx*duidz_tot + drhody*dujdz + drhodz*dukdz_tot);
1735 const double somme_nusrho_ui_dUjdxi_drhodxj = nu * unsurrho * (ui_dUjdxi_drhodxj + uj_dUjdxj_drhodxj + uk_dUjdxk_drhodxj);
1739 const double somme_ui_divU_drhodxi = (ue * drhodx + ve * drhody + we * drhodz) * divtotu;
1740 const double somme_deuxtiers_nusrho_ui_divU_drhodxi = (2./3.) * nu * unsurrho * somme_ui_divU_drhodxi;
1746 const double somme_unsrho_Ec_Uj_drhodxj = unsurrho * Ec * (uetot*drhodx + vetot*drhody + wetot*drhodz);
1752 const double ux_terme_source_acceleration = ue * terme_source_acceleration;
1757#define AJOUT(somme,val) moy[somme] += val
1759 AJOUT(KW_MOY, Ec_we);
1760 AJOUT(CORRELATION_EC_DIVERGENCE_MOY, Ec_divu);
1761 AJOUT(CORRELATION_PRESSION_DIVERGENCE_MOY, p_unsrho_divu);
1762 AJOUT(P_WFLUC_MOY, p_we);
1763 AJOUT(DIFFUSION_PRESSION_RHOFLUC_ADERIVE_MOY, rhofluc_unsrho_unsrhomoy_P_we);
1764 AJOUT(DIFFUSION_PRESSION_DERIVRHO_MOY, - somme_unsrho_unsrho_P_ui_drhodxi);
1765 AJOUT(DISSIPATION_INCOMPRESSIBLE_UN_AFOISNUMOY_MOY, - somme_duidxj_duidxj);
1766 AJOUT(DISSIPATION_INCOMPRESSIBLE_DEUX_AFOISNUMOY_MOY, - somme_duidxj_dujdxi);
1767 AJOUT(DISSIPATION_COMPESSIBLE_UN_MOY, - somme_nufluc_dujdxi_dUidxj);
1768 AJOUT(DISSIPATION_COMPESSIBLE_DEUX_MOY, - somme_nufluc_duidxj_dUjdxi);
1769 AJOUT(DISSIPATION_COMPESSIBLE_TROIS_MOY, deuxtiers_nu_divu_divU);
1770 AJOUT(DIFFUSION_VISQUEUSE_INCOMPRESSIBLE_DEUX_MOY, somme_ui_dukdxi);
1771 AJOUT(DIFFUSION_VISQUEUSE_NUFLUC_ADERIVE_UN_MOY, somme_nufluc_ui_dUidxk);
1772 AJOUT(DIFFUSION_VISQUEUSE_NUFLUC_ADERIVE_DEUX_MOY, somme_nufluc_ui_dUkdxi);
1773 AJOUT(DIFFUSION_VISQUEUSE_NUFLUC_ADERIVE_TROIS_MOY, - somme_deuxtiers_nu_uk_divU);
1774 AJOUT(DIFFUSION_VISQUEUSE_DERIVRHO_UN_MOY, somme_nusrho_ui_dUidxj_drhodxj);
1775 AJOUT(DIFFUSION_VISQUEUSE_DERIVRHO_DEUX_MOY, somme_nusrho_ui_dUjdxi_drhodxj);
1776 AJOUT(DIFFUSION_VISQUEUSE_DERIVRHO_TROIS_MOY, - somme_deuxtiers_nusrho_ui_divU_drhodxi);
1777 AJOUT(TERME_NON_CLASSE_MOY, somme_unsrho_Ec_Uj_drhodxj);
1779 AJOUT(TERME_SOURCE_MOY, ux_terme_source_acceleration);
1782 AJOUT(FLUC_U_MOY, ue);
1783 AJOUT(FLUC_V_MOY, ve);
1784 AJOUT(FLUC_W_MOY, we);
1785 AJOUT(FLUC_RHO_MOY, rho_fluc);
1786 AJOUT(FLUC_NU_MOY, nu_fluc);
1787 AJOUT(FLUC_DIV_U_MOY, divu);
1788 AJOUT(TOTAL_DIV_U_MOY, divtotu);
1789 AJOUT(MEAN_DIV_U_MOY, divergence_moy);
1796 const int ni_tot = pression.get_domaine().get_nb_elem_tot(DIRECTION_I);
1797 const int nj_tot = pression.get_domaine().get_nb_elem_tot(DIRECTION_J);
1799 double facteur = 1./(double)(ni_tot * nj_tot);
1801 for (
int i = 0; i <
kval_; i++)
1802 tmp(k + offsetk, i) = moy[i] * facteur;
1810 for (
int i = 0; i <
kval_; i++)
1812 for (
int k = 0; k < nktot; k++)
1814 integrale_k_[i][k] += tmp(k, i) * dt;
1815 moyenne_spatiale_ec_[i][k] = tmp(k, i);
2344 const IJK_Field_double& vitesse_j,
2345 const IJK_Field_double& vitesse_k,
2346 const int i,
const int j,
const int k,
2348 double& duidx,
double& dujdx,
double& dukdx,
2349 double& duidy,
double& dujdy,
double& dukdy,
2350 double& duidz,
double& dujdz,
double& dukdz,
2351 double& dduidxx,
double& ddujdxx,
double& ddukdxx,
2352 double& dduidyy,
double& ddujdyy,
double& ddukdyy,
2353 double& dduidzz,
double& ddujdzz,
double& ddukdzz,
2354 const bool on_the_first_cell,
2355 const bool on_the_last_cell)
const
2357 const double dx2 =
dx_*
dx_;
2358 const double dy2 =
dy_*
dy_;
2359 const double dz2 = dz*dz;
2365 duidx = (vitesse_i(i+1, j, k) - vitesse_i(i,j,k))/
dx_;
2366 dduidxx = (vitesse_i(i+2, j, k) - vitesse_i(i+1,j,k) - vitesse_i(i, j, k) + vitesse_i(i-1,j,k))/(2*dx2);
2369 double Ve_mi = ( vitesse_j(i-1,j,k) + vitesse_j(i-1,j+1,k) )*0.5;
2370 double Ve_ci = ( vitesse_j(i ,j,k) + vitesse_j(i ,j+1,k) )*0.5;
2371 double Ve_pi = ( vitesse_j(i+1,j,k) + vitesse_j(i+1,j+1,k) )*0.5;
2372 dujdx = (Ve_pi - Ve_mi ) / (2*
dx_);
2373 ddujdxx = (Ve_pi - 2*Ve_ci + Ve_mi ) / dx2;
2376 double We_mi = ( vitesse_k(i-1,j,k) + vitesse_k(i-1,j,k+1) )*0.5;
2377 double We_ci = ( vitesse_k(i ,j,k) + vitesse_k(i ,j,k+1) )*0.5;
2378 double We_pi = ( vitesse_k(i+1,j,k) + vitesse_k(i+1,j,k+1) )*0.5;
2379 dukdx = (We_pi - We_mi ) / (2*
dx_);
2380 ddukdxx = (We_pi - 2*We_ci + We_mi ) / dx2;
2385 double Ue_mj = ( vitesse_i(i,j-1,k) + vitesse_i(i+1,j-1,k) )*0.5;
2386 double Ue_cj = ( vitesse_i(i,j ,k) + vitesse_i(i+1,j ,k) )*0.5;
2387 double Ue_pj = ( vitesse_i(i,j+1,k) + vitesse_i(i+1,j+1,k) )*0.5;
2388 duidy = (Ue_pj - Ue_mj ) / (2*
dy_);
2389 dduidyy = (Ue_pj - 2*Ue_cj + Ue_mj ) / dy2;
2392 dujdy = (vitesse_j(i, j+1, k) - vitesse_j(i,j,k))/
dy_;
2393 ddujdyy = (vitesse_j(i, j+2, k) - vitesse_j(i,j+1,k) - vitesse_j(i, j, k) + vitesse_j(i,j-1,k))/(2*dy2);
2396 double We_mj = ( vitesse_k(i,j-1,k) + vitesse_k(i,j-1,k+1) )*0.5;
2397 double We_cj = ( vitesse_k(i,j ,k) + vitesse_k(i,j ,k+1) )*0.5;
2398 double We_pj = ( vitesse_k(i,j+1,k) + vitesse_k(i,j+1,k+1) )*0.5;
2399 dukdy = (We_pj - We_mj ) / (2*
dy_);
2400 ddukdyy = (We_pj - 2*We_cj + We_mj ) / dy2;
2409 if (on_the_first_cell)
2413 double Ue_ck = ( vitesse_i(i,j,k ) + vitesse_i(i+1,j,k ) )*0.5;
2414 double Ue_pk = ( vitesse_i(i,j,k+1) + vitesse_i(i+1,j,k+1) )*0.5;
2416 duidz = (- 4*Ue_mk + 3*Ue_ck +Ue_pk ) / (3*dz);
2417 dduidzz = (4*Ue_pk - 12*Ue_ck + 8*Ue_mk ) / (3*dz2);
2421 double Ve_ck = ( vitesse_j(i,j,k ) + vitesse_j(i,j+1,k ) )*0.5;
2422 double Ve_pk = ( vitesse_j(i,j,k+1) + vitesse_j(i,j+1,k+1) )*0.5;
2423 dujdz = (- 4*Ve_mk + 3*Ve_ck +Ve_pk ) / (3*dz) ;
2424 ddujdzz = (4*Ve_pk -12*Ve_ck + 8*Ve_mk ) / (3*dz2);
2426 else if (on_the_last_cell)
2429 double Ue_mk = ( vitesse_i(i,j,k-1) + vitesse_i(i+1,j,k-1) )*0.5;
2430 double Ue_ck = ( vitesse_i(i,j,k ) + vitesse_i(i+1,j,k ) )*0.5;
2433 duidz = (- Ue_mk - 3*Ue_ck +4*Ue_pk ) / (3*dz);
2434 dduidzz = (8*Ue_pk - 12*Ue_ck + 4*Ue_mk ) / (3*dz2);
2437 double Ve_mk = ( vitesse_j(i,j,k-1) + vitesse_j(i,j+1,k-1) )*0.5;
2438 double Ve_ck = ( vitesse_j(i,j,k ) + vitesse_j(i,j+1,k ) )*0.5;
2440 dujdz = (- Ve_mk - 3*Ve_ck +4*Ve_pk ) / (3*dz) ;
2441 ddujdzz = (8*Ve_pk - 12*Ve_ck + 4*Ve_mk ) / (3*dz2);
2448 double Ue_mk = ( vitesse_i(i,j,k-1) + vitesse_i(i+1,j,k-1) )*0.5;
2449 double Ue_ck = ( vitesse_i(i,j,k ) + vitesse_i(i+1,j,k ) )*0.5;
2450 double Ue_pk = ( vitesse_i(i,j,k+1) + vitesse_i(i+1,j,k+1) )*0.5;
2451 duidz = (Ue_pk - Ue_mk ) / (2*dz);
2452 dduidzz = (Ue_pk - 2*Ue_ck + Ue_mk ) / dz2;
2455 double Ve_mk = ( vitesse_j(i,j,k-1) + vitesse_j(i,j+1,k-1) )*0.5;
2456 double Ve_ck = ( vitesse_j(i,j,k ) + vitesse_j(i,j+1,k ) )*0.5;
2457 double Ve_pk = ( vitesse_j(i,j,k+1) + vitesse_j(i,j+1,k+1) )*0.5;
2458 dujdz = (Ve_pk - Ve_mk ) / (2*dz) ;
2459 ddujdzz = (Ve_pk - 2*Ve_ck + Ve_mk ) / dz2;
2463 dukdz = (vitesse_k(i, j, k+1) - vitesse_k(i,j,k))/dz;
2465 if (on_the_first_cell)
2468 ddukdzz = (vitesse_k(i, j, k+2) - 2*vitesse_k(i,j,k+1) + vitesse_k(i, j, k) )/(dz2);
2470 else if (on_the_last_cell)
2473 ddukdzz = (vitesse_k(i,j,k+1) -2* vitesse_k(i, j, k) + vitesse_k(i,j,k-1) )/(dz2);
2477 ddukdzz = (vitesse_k(i, j, k+2) - vitesse_k(i,j,k+1) - vitesse_k(i, j, k) + vitesse_k(i,j,k-1))/(2*dz2);
2485 double pseudo_dissip = duidx*duidx + dujdx*dujdx + dukdx*dukdx
2486 + duidy*duidy + dujdy*dujdy + dukdy*dukdy
2487 + duidz*duidz + dujdz*dujdz + dukdz*dukdz;
2488 return (pseudo_dissip);