17#include <Flux_parietal_bilineaire.h>
18#include <Milieu_composite.h>
19#include <Pb_Multiphase.h>
20#include <Sources_helpers_Multiphase.h>
34 param.ajouter(
"coeff_echange_monophasique|single_phase_exchange_coeff", &h_mono_,
Param::REQUIRED);
35 param.ajouter(
"coeff_echange_diphasique|multi_phase_exchange_coeff", &h_diph_,
Param::REQUIRED);
37 param.ajouter(
"offset", &b_);
38 param.lire_avec_accolades_depuis(is);
41 const Pb_Multiphase *pbm = sub_type(Pb_Multiphase, pb_.valeur()) ? &ref_cast(Pb_Multiphase, pb_.valeur()) : nullptr;
44 Process::exit(
"Flux_parietal_bilineaire can only be used for a multiphase problem with 2 phases!");
49 for (
int n = 0; n < pbm->
nb_phases(); n++)
51 && (n_g < 0 || pbm->nom_phase(n).finit_par(
"continu")))
54 assert (n_l >= 0 && n_g >= 0);
56 const Milieu_composite *mc = sub_type(Milieu_composite, pb_->milieu()) ? &ref_cast(Milieu_composite, pb_->milieu()) : nullptr;
68 double dTf_phi,
double dp_phi,
69 double dTp_phi,
double& dTf_eps,
70 double& dp_eps,
double& dTp_eps)
const
72 const double Ts = sat->Tsat(in.
p);
73 const double Tld = Ts - phi * coeff_;
74 const double dp_Tld = sat->dP_Tsat(in.
p) - dp_phi * coeff_;
75 const double dTp_Tld = -dTp_phi * coeff_;
76 const double dTf_Tld = -dTf_phi * coeff_;
78 const double eps = std::clamp((in.
T[n_l] - Tld) / (Ts - Tld), 0.0, 1.0);
80 if (Tld < in.
T[n_l] && in.
T[n_l] < Ts)
82 const double delT = in.
T[n_l] - Tld;
83 const double delTs = Ts - Tld;
84 const double fac = 1./(delTs*delTs);
85 dTf_eps = (delTs * (1 - dTf_Tld) + delT * dTf_Tld) * fac;
86 dp_eps = (delTs * (-dp_Tld) - delT * (sat->dP_Tsat(in.
p) - dp_Tld)) * fac;
87 dTp_eps = (delTs * (-dTp_Tld) + delT * dTp_Tld) * fac;
95 const double Ts = sat->Tsat(in.
p) ;
101 for (
int k = 0; k < in.
N; k++)
105 const double P_mono = h_mono_ * (in.
Tp - in.
T[n_l]);
106 const double P_diph= h_diph_ * (in.
Tp - Ts) + b_;
111 (*out.
qpk)(n_l) = P_mono;
122 (*out.
qpi)(n_l, k) = P_diph;
124 (*out.
dTp_qpi)(n_l, k) = h_diph_;
126 (*out.
dTf_qpi)(n_l, k, n_l) = 0;
128 (*out.
dp_qpi)(n_l, k, n_l) = -h_diph_*sat->dP_Tsat(in.
p);
132 double dTf_eps = 0.0, dp_eps = 0.0, dTp_eps = 0.0;
134 -h_diph_*sat->dP_Tsat(in.
p),
135 h_diph_, dTf_eps, dp_eps, dTp_eps);
139 (*out.
qpk)(n_l) = (1.0 - eps) * P_diph;
141 (*out.
dTp_qpk)(n_l) = (1.0 - eps) * h_diph_ - P_diph * dTp_eps;
143 (*out.
dTf_qpk)(n_l, n_l) = -P_diph*dTf_eps;
145 (*out.
dp_qpk)(n_l, k, n_l) = -h_diph_*sat->dP_Tsat(in.
p)*(1.0 - eps)
150 (*out.
qpi)(n_l, k) = eps * P_diph;
152 (*out.
dTp_qpi)(n_l, k) = dTp_eps * P_diph+ eps * h_diph_;
154 (*out.
dTf_qpi)(n_l, k, n_l) = P_diph*dTf_eps;
156 (*out.
dp_qpi)(n_l, k, n_l) = -h_diph_*sat->dP_Tsat(in.
p)*eps
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
: class Flux_parietal_bilineaire
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
void qp(const input_t &input, output_t &output) const override
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.