16#include <Flux_parietal_diphasique_simple_lineaire.h>
17#include <Milieu_composite.h>
18#include <Pb_Multiphase.h>
27 param.ajouter(
"coeff_echange_monophasique|single_phase_exchange_coeff", &h_mono_,
Param::REQUIRED);
29 param.lire_avec_accolades_depuis(is);
32 const Pb_Multiphase *pbm = sub_type(Pb_Multiphase, pb_.valeur()) ? &ref_cast(Pb_Multiphase, pb_.valeur()) : nullptr;
35 Process::exit(
"Flux_parietal_diphasique_simple_lineaire can only be used for a multiphase problem with 2 phases!");
38 for (
int n = 0; n < pbm->
nb_phases(); n++)
39 if (pbm->
nom_phase(n).
debute_par(
"liquide") && (n_l < 0 || pbm->nom_phase(n).finit_par(
"continu")))
41 else if (pbm->
nom_phase(n).
debute_par(
"gaz") && (n_g < 0 || pbm->nom_phase(n).finit_par(
"continu")))
48 assert (n_l >= 0 && n_g >= 0);
50 const Milieu_composite *mc = sub_type(Milieu_composite, pb_->milieu()) ? &ref_cast(Milieu_composite, pb_->milieu()) : nullptr;
56 Process::exit(
"Flux_parietal_diphasique_simple_lineaire needs saturation!");
63 const double Ts = sat->Tsat(in.
p),
64 Tld = Ts - phi * coeff_,
65 dp_Tld = sat->dP_Tsat(in.
p) - dp_phi * coeff_,
66 dTp_Tld = -dTp_phi * coeff_,
67 dTf_Tld = -dTf_phi * coeff_;
69 const double eps = std::min(1.0, std::max(0.0, (in.
T[n_l] - Tld) / (Ts - Tld)));
71 if (in.
T[n_l] > Tld && in.
T[n_l] < Ts)
73 dTf_eps = ((Ts - Tld) * (-dTf_Tld) + (in.
T[n_l] - Tld) * dTf_Tld) / (Ts - Tld) / (Ts - Tld);
74 dp_eps = ((Ts - Tld) * (-dp_Tld) - (in.
T[n_l] - Tld) * (sat->dP_Tsat(in.
p) - dp_Tld)) / (Ts - Tld) / (Ts - Tld);
75 dTp_eps = ((Ts - Tld) * (-dTp_Tld) + (in.
T[n_l] - Tld) * dTp_Tld) / (Ts - Tld) / (Ts - Tld);
83 double Ts = sat->Tsat(in.
p) ;
90 for (
int k = 0; k < in.
N; k++)
94 const double P_mono = h_mono_ * (in.
Tp - in.
T[n_l]);
99 (*out.
qpk)(n_l) = P_mono;
103 (*out.
dTf_qpk)(n_l, n_l) = -h_mono_;
110 (*out.
qpi)(n_l, k) = P_mono;
112 (*out.
dTp_qpi)(n_l, k) = h_mono_;
114 (*out.
dTf_qpi)(n_l, k, n_l) = -h_mono_;
118 double dTf_eps = 0.0, dp_eps = 0.0, dTp_eps = 0.0;
119 double eps =
fraction_flux_vap(in, P_mono, -h_mono_, 0.0, h_mono_, dTf_eps, dp_eps, dTp_eps);
123 (*out.
qpk)(n_l) = (1.0 - eps) * P_mono;
125 (*out.
dTp_qpk)(n_l) = (1.0 - eps) * h_mono_ - P_mono * dTp_eps;
127 (*out.
dTf_qpk)(n_l, n_l) = -(1.0 - eps) * h_mono_ + P_mono * dTf_eps;
131 (*out.
qpi)(n_l, k) = eps * P_mono;
133 (*out.
dTp_qpi)(n_l, k) = dTp_eps * P_mono + eps * h_mono_;
135 (*out.
dTf_qpi)(n_l, k, n_l) = dTf_eps * P_mono - eps * h_mono_;
Class defining operators and methods for all reading operation in an input flow (file,...
classe Flux_parietal_base correlations de flux parietal de la forme
void qp(const input_t &input, output_t &output) const override
double fraction_flux_vap(const input_t &in, double phi, double dTf_phi, double dp_phi, double dTp_phi, double &dTf_eps, double &dp_eps, double &dTp_eps) const
Classe Milieu_composite Cette classe represente un fluide reel ainsi que.
bool has_saturation(int k, int l) const
Saturation_base & get_saturation(int k, int l) const
virtual int debute_par(const char *const n) const
const Nom & que_suis_je() const
renvoie la chaine identifiant la classe.
virtual Entree & readOn(Entree &)
Lecture d'un Objet_U sur un flot d'entree Methode a surcharger.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
const Nom & nom_phase(int i) const
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.