16#include <Viscosite_turbulente_k_omega.h>
17#include <Masse_ajoutee_base.h>
18#include <Milieu_composite.h>
19#include <TRUSTTab_parts.h>
20#include <Pb_Multiphase.h>
21#include <Champ_base.h>
35 param.ajouter(
"limiter|limiteur", &limiter_);
37 param.ajouter(
"sigma", &sigma_);
39 param.ajouter(
"beta_k", &beta_k_);
41 param.ajouter(
"gas_turb", &gas_turb_);
43 param.lire_avec_accolades_depuis(is);
51 if ( (gas_turb_) && !(pbm) )
54 if ( (gas_turb_) && (!pb_->has_correlation(
"masse_ajoutee")) )
57 if ( (gas_turb_) && (!
int(pb_->has_champ(
"alpha"))) )
60 if (pb_->has_correlation(
"masse_ajoutee"))
61 correlation_ = pb_->get_correlation(
"masse_ajoutee");
67 const DoubleTab& k = pb_->get_champ(
"k").passe();
68 const DoubleTab& omega = pb_->get_champ(
"omega").passe();
69 const DoubleTab& nu = pb_->get_champ(
"viscosite_cinematique").passe();
70 const DoubleTab& rho = pb_->get_champ(
"masse_volumique").passe();
71 const DoubleTab *alpha = pb_->has_champ(
"alpha") ? &(pb_->get_champ(
"alpha").passe()) : nullptr ;
77 for (
int i = 0; i < nu_t.
dimension(0); i++)
78 for (
int n = 0; n < nu_t.
dimension(1); n++)
80 ? sigma_ * ( (omega(i,n) > 0.) ? std::max(k(i, n) / omega(i, n), limiter_ * nu(!cnu * i, n)): limiter_ * nu(!cnu * i, n) )
89 for (
int i = 0; i < nu_t.
dimension(0); i++)
92 corr_ma_.
coefficient( & (*alpha)(i,0), &rho(i,0), coeff);
94 nu_t(i, n) = nu_t(i, 0.) * (1. + coeff(n)* rho(i,0)/rho(i,n)) * std::min((*alpha)(i,n)*10, 1.) ;
102 const DoubleTab& k = pb_->get_champ(
"k").passe();
103 const DoubleTab& omega = pb_->get_champ(
"omega").passe();
104 const DoubleTab& nu = pb_->get_champ(
"viscosite_cinematique").passe();
105 const DoubleTab& grad_u = pb_->get_champ(
"gradient_vitesse").passe();
113 ConstDoubleTab_parts p_gu(grad_u);
114 for (
int i = 0; i < p_gu.
size(); i++)
115 if (p_gu[i].get_md_vector() == R_ij.get_md_vector())
119 Process::exit(
"Viscosite_turbulente_k_omega : inconsistency between velocity gradient and k!");
121 const DoubleTab& gu = p_gu[i_part];
122 for (
int i = 0; i < R_ij.dimension(0); i++)
123 for (
int n = 0; n < N; n++)
125 double sum_diag = 0.;
126 double nut_loc {0.0};
129 if (omega(i, n) > 0.)
130 nut_loc = std::max(k(i, n) / omega(i, n), limiter_ * nu(!cnu * i, n));
132 nut_loc = limiter_*nu(!cnu*i, n);
135 for (
int d = 0; d < D; d++)
136 sum_diag += gu(i, d, D * n + d) ;
138 for (
int d = 0; d < D; d++)
139 for (
int db = 0; db < D; db++)
140 R_ij(i, n, d, db) = (n < Nk)
141 ? sigma_* ( 2. / 3. * (k(i, n) + nut_loc * sum_diag) * (d == db) - nut_loc * (gu(i, d, D * n + db) + gu(i, db, D * n + d)))
148 const DoubleTab& omega = pb_->get_champ(
"omega").passe();
152 assert(nl == omega.
dimension(0) && Nt <= N);
154 for (
int i = 0; i < nl; i++)
155 for (
int n = 0; n < N; n++)
156 k_sur_eps(i, n) = (n < Nt)
157 ? ((omega(i,n) > 0.) ? 1/(omega(i, n)*beta_k_) : 0)
163 const DoubleTab& omega = pb_->get_champ(
"omega").passe();
164 const DoubleTab& k = pb_->get_champ(
"k").passe();
168 assert(nl == omega.
dimension(0) && Nt <= N);
170 for (
int i = 0; i < nl; i++)
171 for (
int n = 0; n < N; n++)
172 eps_(i, n) = beta_k_ * ((n < Nt) ? k(i,n) * omega(i, n) : 0);
Class defining operators and methods for all reading operation in an input flow (file,...
classe Masse_ajoutee_base masse ajoutee de la forme
virtual void coefficient(const double *alpha, const double *rho, DoubleTab &coeff) const
Classe Milieu_composite Cette classe represente un fluide reel ainsi que.
bool are_fluid_properties_initialised() 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.
classe Pb_Multiphase Cette classe represente un probleme de thermohydraulique multiphase de type "3*N...
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
classe Viscosite_turbulente_base correlations de viscosite turbulente decrivant le tenseur de Reynold...
classe Viscosite_turbulente_k_omega Turbulent viscosity for a "k-omega" model : nu_t = k / omega
void eps(DoubleTab &eps) const override
void reynolds_stress(DoubleTab &R_ij) const override
void mettre_a_jour(double) override
void completer() override
void eddy_viscosity(DoubleTab &nu_t) const override
void k_over_eps(DoubleTab &k_sur_eps) const override