40 for (n_bord = 0; n_bord < dom.
nb_front_Cl(); n_bord++)
42 const Cond_lim& la_cl = le_dom_Cl->les_conditions_limites(n_bord);
49 const DoubleTab& tab_hnp1 = le_fluide_->inco_chaleur().valeurs();
50 const DoubleTab& tab_hn = le_fluide_->inco_chaleur().passe();
51 const DoubleTab& tab_rho = le_fluide_->masse_volumique().valeurs();
55 int elem, nb_elem = dom.
nb_elem(), i;
61 double dt = le_fluide_->vitesse().equation().schema_temps().pas_de_temps();
62 double v, al, b, bnp1, hn, hnp1, divu;
69 for (elem = 0; elem < nb_elem; elem++)
71 Hstar(elem) = .5 * (tab_hn(elem) + tab_hnp1(elem));
74 DoubleTab u_gradh(nb_elem);
76 for (elem = 0; elem < nb_elem; elem++)
81 f1 = elem_faces(elem, i);
83 u_gradh(elem) += .25 * (gradh(f1) + gradh(f2)) * (tab_vit(f1) + tab_vit(f2));
87 for (elem = 0; elem < nb_elem; elem++)
92 hnp1 = tab_hnp1(elem);
93 al = loi_->Drho_DT(Pth_n, hn) / loi_->Drho_DP(Pth_n, hn);
94 b = tab_rho(elem) / loi_->Drho_DP(Pth_n, hn);
95 bnp1 = tab_rho(elem) / loi_->Drho_DP(Pth_n, hnp1);
97 S -= v * al * ((hnp1 - hn) / dt);
100 S -= v * al * u_gradh(elem);
103 Fnp1 += v * bnp1 * divu;
106 Pth = Pth_n + dt / V * (S - Fn);
107 Pth = Pth_n + dt / V * (S - .5 * (Fn + Fnp1));
110 while (std::fabs(tmp - Pth) / Pth > 1e-9 && k++ < 20)
114 for (elem = 0; elem < nb_elem; elem++)
117 hnp1 = tab_hnp1(elem);
118 r = loi_->calculer_masse_volumique(Pth, hnp1);
119 bnp1 = r / loi_->Drho_DP(Pth, hnp1);
122 Fnp1 += v * bnp1 * (tab_vit(elem_faces(elem, i +
dimension)) - tab_vit(elem_faces(elem, i))) / dom.
dim_elem(elem, i);
125 Pth = Pth_n + dt / V * (S - .5 * (Fn + Fnp1));
126 Cerr <<
"Pression thermo recalculee (impl" << k <<
") = " << Pth << finl;
double dim_elem(int, int) const
double volumes(int i) const
int elem_faces(int i, int j) const
renvoie le numero de le ieme face de la maille num_elem la facon dont ces faces sont numerotees est