40 int traitPth = le_fluide_->getTraitementPth();
41 const DoubleTab& tempnp1 = le_fluide_->inco_chaleur().valeurs();
44 Cerr <<
"on choisit le traitement " << finl;
47 for (n_bord = 0; n_bord < le_dom->nb_front_Cl(); n_bord++)
49 const Cond_lim& la_cl = le_dom_Cl->les_conditions_limites(n_bord);
58 double dt = le_fluide_->vitesse().equation().schema_temps().pas_de_temps();
63 else if (traitPth == 1)
65 const DoubleTab& tempn = le_fluide_->inco_chaleur().passe();
66 double cn1 = 0, cn = 0, v;
67 int elem, nb_elem = le_dom->nb_elem();
68 for (elem = 0; elem < nb_elem; elem++)
70 v = le_dom->volumes(elem);
71 cn1 += v / tempnp1(elem);
72 cn += v / tempn(elem);
77 const IntTab& face_voisins = le_dom->face_voisins();
78 const DoubleVect& Surface = le_dom->face_surfaces();
80 const IntVect& orientation = le_dom->orientation();
81 for (n_bord = 0; n_bord < le_dom->nb_front_Cl(); n_bord++)
83 const Cond_lim_base& la_cl = le_dom_Cl->les_conditions_limites(n_bord).valeur();
89 int nfin = ndeb + la_front_dis.
nb_faces();
90 for (
int num_face = ndeb; num_face < nfin; num_face++)
92 int n0 = face_voisins(num_face, 0);
93 double S = Surface(num_face);
96 n0 = face_voisins(num_face, 1);
99 cm += S / tempnp1(n0) * diri.
val_imp(num_face - ndeb, orientation(num_face));
105 Cerr << la_cl.
que_suis_je() <<
" est incompatible avec le traitement conservation_masse pour l'instant" << finl;
111 double cnt = cn, cn1t = cn1, cmt = cm;
113 double Pt = Pth_n * cnt / cn1t / (1 + dt / cn1t * cmt);
116 Cerr <<
" Utilisez traitement conservation_masse ou constant " << finl;
120 for (n_bord = 0; n_bord < le_dom->nb_front_Cl(); n_bord++)
122 const Cond_lim& la_cl = le_dom_Cl->les_conditions_limites(n_bord);
127 Cerr <<
" Le codage ici est faux !!!!" << finl;
128 Cerr <<
" Pour l'instant on bloque" << finl;
132 const DoubleTab& tempn = le_fluide_->inco_chaleur().passe();
133 const DoubleTab& tab_rho = le_fluide_->masse_volumique().valeurs();
135 Cerr <<
"---EDO : Tnp1=" << tempnp1(0) <<
" Tn=" << tempn(0) << finl;
137 int elem, nb_elem = le_dom->nb_elem();
146 const IntTab& elem_faces = le_dom->elem_faces();
151 for (elem = 0; elem < nb_elem; elem++)
153 Tstar(elem) = .5 * (tempn(elem) + tempnp1(elem));
156 DoubleTab u_gradT(nb_elem);
158 for (elem = 0; elem < nb_elem; elem++)
163 f1 = elem_faces(elem, i);
166 u_gradT(elem) += .5 * (gradT(f1) * tab_vit(f1) + gradT(f2) * tab_vit(f2));
170 for (elem = 0; elem < nb_elem; elem++)
172 v = le_dom->volumes(elem);
175 S += v * tab_rho(elem) * ((tempnp1(elem) - tempn(elem)) / dt + u_gradT(elem));
179 int ndeb, nfin, face;
182 for (n_bord = 0; n_bord < le_dom->nb_front_Cl(); n_bord++)
184 const Cond_lim& la_cl = le_dom_Cl->les_conditions_limites(n_bord);
187 nfin = ndeb + frontiere_dis.
nb_faces();
189 for (face = ndeb; face < nfin; face++)
191 elem = le_dom->face_voisins(face, 0);
192 norm = le_dom->face_surfaces(face);
195 elem = le_dom->face_voisins(face, 1);
199 F += tab_vit(face) * norm;
206 double Pth = (1. / (V / dt + F / 2.)) * ((V / dt - F / 2.) * Pth_n + S);
208 Cerr <<
"Pression thermo recalculee = " << Pth << finl;
216 const int traitPth = le_fluide_->getTraitementPth();
219 else if (traitPth == 0)
221 for (
int n_bord = 0; n_bord < le_dom->nb_front_Cl(); n_bord++)
223 const Cond_lim& la_cl = le_dom_Cl->les_conditions_limites(n_bord);
228 Cerr <<
"EDO_Pression_th_VDF_Gaz_Parfait::" << __func__ <<
" not yet coded ! Call the 911 !!" << finl;
233 const DoubleTab& tempnp1 = le_fluide_->inco_chaleur().valeurs();
234 const DoubleTab& tempn = le_fluide_->inco_chaleur().passe();
235 const double dt = le_fluide_->vitesse().equation().schema_temps().pas_de_temps();
237 double cn1 = 0., cn = 0., v = -123.;
239 for (
int elem = 0; elem < le_dom->nb_elem(); elem++)
241 v = le_dom->volumes(elem);
242 cn1 += v / tempnp1(elem);
243 cn += v / tempn(elem);
247 const IntTab& face_voisins = le_dom->face_voisins();
248 const DoubleVect& Surface = le_dom->face_surfaces();
250 const IntVect& orientation = le_dom->orientation();
251 for (
int n_bord = 0; n_bord < le_dom->nb_front_Cl(); n_bord++)
253 const Cond_lim_base& la_cl = le_dom_Cl->les_conditions_limites(n_bord).valeur();
259 int nfin = ndeb + la_front_dis.
nb_faces();
260 for (
int num_face = ndeb; num_face < nfin; num_face++)
262 int n0 = face_voisins(num_face, 0);
263 double S = Surface(num_face);
266 n0 = face_voisins(num_face, 1);
269 cm += S / tempnp1(n0) * diri.
val_imp(num_face - ndeb, orientation(num_face));
275 Cerr << la_cl.
que_suis_je() <<
" est incompatible avec le traitement conservation_masse pour l'instant" << finl;
281 double cnt = cn, cn1t = cn1, cmt = cm;
284 for (
int elem = 0; elem < le_dom->nb_elem(); elem++)
285 Pth_n(elem) = Pth_n(elem) * cnt / cn1t / (1. + dt / cn1t * cmt);