16#include <Modele_Shih_Zhu_Lumley_VDF.h>
17#include <Domaine_VDF.h>
18#include <Domaine_Cl_VDF.h>
21#include <Dirichlet_homogene.h>
22#include <Dirichlet_paroi_defilante.h>
23#include <Echange_externe_impose.h>
24#include <Periodique.h>
27#include <Neumann_homogene.h>
28#include <Champ_Face_VDF.h>
29#include <Champ_Uniforme.h>
49 param.lire_avec_accolades_depuis(is);
83 for (
int elem=0; elem<
nelem_; elem++)
90 double Sij = 0.5*( gij(elem,i,j,0) + gij(elem,j,i,0) ) ;
94 S_( elem ) = sqrt(2.*somme2);
102#ifdef __INTEL_COMPILER
105 for (
int elem=0; elem<
nelem_; elem++)
109 if (K_Eps(elem,1) <= EPS_MIN)
110 eta =
S_(elem) * K_Eps(elem,0)/BR_EPS;
112 eta =
S_(elem) * K_Eps(elem,0)/K_Eps(elem,1);
114 C1_[elem] = std::max( 0.43 , eta / ( 5. + eta ) );
123#ifdef __INTEL_COMPILER
126 for (
int elem=0; elem<
nelem_; elem++)
130 if (Eps(elem) <= EPS_MIN)
131 eta =
S_(elem) * K(elem)/BR_EPS;
133 eta =
S_(elem) * K(elem)/Eps(elem);
135 C1_[elem] = std::max( 0.43 , eta / ( 5. + eta ) );
151 DoubleTab U_etoile(
nelem_);
154 for (
int elem=0; elem<
nelem_; elem++)
163 double Sij = 0.5*( gij(elem,i,j,0) + gij(elem,j,i,0) ) ;
164 double Rij = 0.5*( gij(elem,i,j,0) - gij(elem,j,i,0) ) ;
166 somme += Sij*Sij+Rij*Rij;
171 double Sjk = 0.5*( gij(elem,j,k,0) + gij(elem,k,j,0) ) ;
172 double Ski = 0.5*( gij(elem,k,i,0) + gij(elem,i,k,0) ) ;
174 somme3 += Sij*Sjk*Ski;
178 U_etoile( elem ) = sqrt(somme);
179 double S_tilde = sqrt(somme2);
180 S_( elem ) = sqrt(2.*somme2);
181 double val_cosinus = sqrt(6.) * somme3 / ( S_tilde * S_tilde * S_tilde +1.e-20 );
183 if ( val_cosinus > 1. )
187 else if ( val_cosinus < -1. )
192 As( elem ) = sqrt(6.) * cos( (1./3.) * acos( val_cosinus ) );
200 Cmu_[elem] = 1./(
A0_+As(elem)*U_etoile(elem)*K_Eps(elem,0)/( K_Eps(elem,1) + BR_EPS ));
216 DoubleTab U_etoile(
nelem_);
219 for (
int elem=0; elem<
nelem_; elem++)
228 double Sij = 0.5*( gij(elem,i,j,0) + gij(elem,j,i,0) ) ;
229 double Rij = 0.5*( gij(elem,i,j,0) - gij(elem,j,i,0) ) ;
231 somme += Sij*Sij+Rij*Rij;
236 double Sjk = 0.5*( gij(elem,j,k,0) + gij(elem,k,j,0) ) ;
237 double Ski = 0.5*( gij(elem,k,i,0) + gij(elem,i,k,0) ) ;
239 somme3 += Sij*Sjk*Ski;
243 U_etoile( elem ) = sqrt(somme);
244 double S_tilde = sqrt(somme2);
245 S_( elem ) = sqrt(2.*somme2);
246 double val_cosinus = sqrt(6.) * somme3 / ( S_tilde * S_tilde * S_tilde +1.e-20 );
248 if ( val_cosinus > 1. )
252 else if ( val_cosinus < -1. )
257 As( elem ) = sqrt(6.) * cos( (1./3.) * acos( val_cosinus ) );
265 Cmu_[elem] = 1./(
A0_+As(elem)*U_etoile(elem)*K(elem)/( Eps(elem) + BR_EPS ));
289 Calcul_C1(domaine_dis,domaine_Cl_dis,vitesse,K_Eps,EPS_MIN);
293 const DoubleTab& visco_tab,
const DoubleTab& visco_turb,
const DoubleTab& tab_paroi,
const int idt)
297 Calcul_C1(domaine_dis,domaine_Cl_dis,vitesse,K_Eps,EPS_MIN);
304 Calcul_C1_BiK(domaine_dis,domaine_Cl_dis,vitesse,K,Eps,EPS_MIN);
308 const DoubleTab& visco_tab,
const DoubleTab& visco_turb,
const DoubleTab& tab_paroi,
const int idt)
312 Calcul_C1_BiK(domaine_dis,domaine_Cl_dis,vitesse,K,Eps,EPS_MIN);
class Champ_Face_VDF Cette classe sert a representer un champ vectoriel dont on ne calcule
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Class defining operators and methods for all reading operation in an input flow (file,...
void Calcul_Cmu_et_S(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K_Eps, const double EPS_MIN) override
void Calcul_C1_BiK(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K, const DoubleTab &Eps, const double EPS_MIN) override
void Calcul_C1(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K_Eps, const double EPS_MIN) override
void Contributions_Sources_Paroi(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K_Eps, const double EPS_MIN, const DoubleTab &visco_tab, const DoubleTab &visco_turb, const DoubleTab &tab_paroi, const int idt) override
void Contributions_Sources_Paroi_BiK(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K, const DoubleTab &Eps, const double EPS_MIN, const DoubleTab &visco_tab, const DoubleTab &visco_turb, const DoubleTab &tab_paroi, const int idt) override
virtual void set_param(Param ¶m) const override
void Calcul_S(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse) override
void Contributions_Sources_BiK(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K, const DoubleTab &Eps, const double EPS_MIN) override
void Initialisation(const Domaine_dis_base &domaine_dis)
void associer(const Domaine_dis_base &, const Domaine_Cl_dis_base &) override
void mettre_a_jour(double) override
void Calcul_Cmu_et_S_BiK(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K, const DoubleTab &Eps, const double EPS_MIN) override
void Contributions_Sources(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K_Eps, const double EPS_MIN) override
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.
Helper class to factorize the readOn method of Objet_U classes.
void ajouter(const char *keyword, const int *value, Param::Nature nat=Param::OPTIONAL)
Register an integer parameter.
Classe de base des flux de sortie.