16#include <Frottement_interfacial_Ishii_Zuber.h>
17#include <Pb_Multiphase.h>
18#include <Milieu_composite.h>
31 param.ajouter(
"beta", &
beta_);
32 param.ajouter(
"constante_gravitation", &
g_);
33 param.lire_avec_accolades_depuis(is);
35 const Pb_Multiphase *pbm = sub_type(Pb_Multiphase, pb_.valeur()) ? &ref_cast(Pb_Multiphase, pb_.valeur()) : nullptr;
38 for (
int n = 0; n < pbm->
nb_phases(); n++)
42 for (
int k = 0; k < pbm->
nb_phases(); k++)
44 if (!(ref_cast(Milieu_composite, pbm->
milieu()).has_interface(
n_l, k)))
Process::exit(
"Frottement_interfacial_Tomiyama : one must define an interface and have a surface tension !");
51 if (!pb_->has_champ(
"diametre_bulles"))
Process::exit(
"Frottement_interfacial_Tomiyama : there must be a bubble diameter field !");
56 const DoubleTab& rho,
const DoubleTab& mu,
const DoubleTab& sigma,
double Dh,
57 const DoubleTab& ndv,
const DoubleTab& d_bulles, DoubleTab& coeff)
const
63 for (
int k = 0; k < N; k++)
66 int ind_trav = (k>
n_l) ? (
n_l*(N-1)-(
n_l-1)*(
n_l)/2) + (k-
n_l-1) : (k*(N-1)-(k-1)*(k)/2) + (
n_l-k-1);
68 double Re = rho(
n_l) * std::max(ndv(
n_l,k), 1.e-6) * d_bulles(k)/mu(
n_l);
69 double Eo =
g_ * std::abs(rho(
n_l)-rho(k)) * d_bulles(k)*d_bulles(k)/sigma(ind_trav);
70 double Cd =
beta_ * std::max( 24./Re*(1.+.1*std::pow(Re, .75)) , 2./3*std::sqrt(Eo));
72 coeff(k,
n_l, 1) = (alpha(
n_l) < 1.e-6) ? 3./4.*Cd/d_bulles(k) * alpha(k) * rho(
n_l) * alpha(
n_l) * 1.e6
73 : 3./4.*Cd/d_bulles(k) * alpha(k) * rho(
n_l);
74 coeff(k,
n_l, 0) = coeff(k,
n_l, 1) * ndv(
n_l,k);
75 coeff(
n_l, k, 0) = coeff(k,
n_l, 0);
76 coeff(
n_l, k, 1) = coeff(k,
n_l, 1);
83 const DoubleTab& rho,
const DoubleTab& mu,
const DoubleTab& sigma,
double Dh,
84 const DoubleTab& ndv,
const DoubleTab& d_bulles, DoubleTab& coeff)
const
90 for (
int k = 0; k < N; k++)
93 int ind_trav = (k>
n_l) ? (
n_l*(N-1)-(
n_l-1)*(
n_l)/2) + (k-
n_l-1) : (k*(N-1)-(k-1)*(k)/2) + (
n_l-k-1);
95 double Re = rho(
n_l) * std::max(ndv(
n_l,k), 1.e-6) * d_bulles(k)/mu(
n_l);
96 double Eo =
g_ * std::abs(rho(
n_l)-rho(k)) * d_bulles(k)*d_bulles(k)/sigma(ind_trav);
97 double Cd =
beta_ * std::max( 24./Re*(1.+.1*std::pow(Re, .75)) , 2.3*std::sqrt(Eo));
99 coeff(k,
n_l) = (coeff(
n_l, k) = Cd);
Class defining operators and methods for all reading operation in an input flow (file,...
classe Frottement_interfacial_Ishii_Zuber coefficients de frottement interfacial d'un ecoulement a bu...
void completer() override
void coefficient(const DoubleTab &alpha, const DoubleTab &p, const DoubleTab &T, const DoubleTab &rho, const DoubleTab &mu, const DoubleTab &sigma, double Dh, const DoubleTab &ndv, const DoubleTab &d_bulles, DoubleTab &coeff) const override
void coefficient_CD(const DoubleTab &alpha, const DoubleTab &p, const DoubleTab &T, const DoubleTab &rho, const DoubleTab &mu, const DoubleTab &sigma, double Dh, const DoubleTab &ndv, const DoubleTab &d_bulles, DoubleTab &coeff) const override
classe Frottement_interfacial_base utilitaire pour les operateurs de frottement interfacial prenant l...
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
virtual const Milieu_base & milieu() const
Renvoie le milieu physique associe au probleme.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.
_SIZE_ dimension(int d) const