39 for (n_bord = 0; n_bord < le_dom->nb_front_Cl(); n_bord++)
41 const Cond_lim& la_cl = le_dom_Cl->les_conditions_limites(n_bord);
47 const DoubleTab& tab_hnp1 = le_fluide_->inco_chaleur().valeurs();
48 const DoubleTab& tab_hn = le_fluide_->inco_chaleur().passe();
49 const DoubleTab& tab_rho = le_fluide_->masse_volumique().valeurs();
53 int elem, nb_elem = le_dom->nb_elem();
59 double dt = le_fluide_->vitesse().equation().schema_temps().pas_de_temps();
60 double v, al, bn, bnp1, hn, hnp1, divu;
62 int i, face, nb_faces = le_dom->nb_faces();
64 DoubleTab HstarP0(nb_elem);
66 DoubleTab u_gradh(nb_faces);
67 int nfe = le_dom->domaine().nb_faces_elem();
68 const IntTab& elem_faces = le_dom->elem_faces();
69 for (elem = 0; elem < nb_elem; elem++)
72 for (face = 0; face < nfe; face++)
74 hn = tab_hn(elem_faces(elem, face));
75 hnp1 = tab_hnp1(elem_faces(elem, face));
76 HstarP0(elem) += .5 * (hn + hnp1);
83 for (face = 0; face < nb_faces; face++)
88 u_gradh(face) += gradh(face, i) * tab_vit(face, i);
92 DoubleTrav divUP0(nb_elem);
94 DoubleTrav divU(nb_faces);
96 for (face = 0; face < nb_faces; face++)
98 e0 = le_dom->face_voisins(face, 0);
99 e1 = le_dom->face_voisins(face, 1);
100 if (e0 != -1 && e1 != -1)
102 divU(face) = .5 * (divUP0(e0) + divUP0(e1));
106 divU(face) = divUP0(e0);
110 divU(face) = divUP0(e1);
114 for (face = 0; face < nb_faces; face++)
116 v = le_dom->volumes_entrelaces(face);
119 hnp1 = tab_hnp1(face);
120 al = loi_->Drho_DT(Pth_n, hn) / loi_->Drho_DP(Pth_n, hn);
121 bn = tab_rho(face) / loi_->Drho_DP(Pth_n, hn);
122 bnp1 = loi_->calculer_masse_volumique(Pth_n, hnp1) / loi_->Drho_DP(Pth_n, hnp1);
125 S -= v * al * ((hnp1 - hn) / dt + u_gradh(face));
127 Fnp1 += v * bnp1 * divu;
130 Pth = Pth_n + dt / V * (S - Fn);
131 Pth = Pth_n + dt / V * (S - .5 * (Fn + Fnp1));
134 while (std::fabs(tmp - Pth) / Pth > 1e-9 && k++ < 20)
138 for (face = 0; face < nb_faces; face++)
140 v = le_dom->volumes_entrelaces(face);
141 hnp1 = tab_hnp1(face);
142 r = loi_->calculer_masse_volumique(Pth, hnp1);
143 bnp1 = r / loi_->Drho_DP(Pth, hnp1);
144 Fnp1 += v * bnp1 * divU(face);
146 Pth = Pth_n + dt / V * (S - .5 * (Fn + Fnp1));
147 Cerr <<
"Pression thermo recalculee (impl" << k <<
") = " << Pth << finl;