16#include <Modele_EASM_Baglietto_VEF.h>
17#include <Domaine_VEF.h>
18#include <Domaine_Cl_VEF.h>
19#include <Periodique.h>
20#include <Champ_Uniforme.h>
22#include <Champ_P1NC.h>
23#include <Champ_P0_VEF.h>
24#include <Discretisation_base.h>
25#include <Check_espace_virtuel.h>
26#include <LecFicDiffuse.h>
27#include <EcritureLectureSpecial.h>
48 const DoubleTab& vitesse,
const DoubleTab& K_eps_Bas_Re,
const Champ_Don_base& ch_visco )
const
65 const DoubleTab& tab_visco=ch_visco.
valeurs();
71 const DoubleTab& wall_length = BR_wall_length_->valeurs();
72 DoubleTab wall_length_face(0);
78 int nb_cl=les_cl.size();
83 for (
int n_bord=0; n_bord<nb_cl; n_bord++)
88 int nfin = ndeb + le_bord.
nb_faces();
92 for (
int num_face=ndeb; num_face<nfin; num_face++)
94 int elem1 = face_voisins(num_face,0);
95 int elem2 = face_voisins(num_face,1);
96 wall_length_face(num_face) = 0.5*wall_length(elem1) + 0.5*wall_length(elem2);
101 for (
int num_face=ndeb; num_face<nfin; num_face++)
103 int elem1 = face_voisins(num_face,0);
104 wall_length_face(num_face) = wall_length(elem1);
109 for (
int num_face=n0; num_face<nb_faces; num_face++)
113 wall_length_face(num_face) = 0.5*wall_length(elem0)+0.5*wall_length(elem1);
116 for (
int num_face=0; num_face <nb_faces; num_face ++ )
118 double Re = (K_eps_Bas_Re(num_face,0)*K_eps_Bas_Re(num_face,0))/(visco*K_eps_Bas_Re(num_face,1)+DMINFLOAT);
119 double Rey = wall_length_face(num_face)*sqrt(K_eps_Bas_Re(num_face,0))/visco;
120 Pderive(num_face) = 1.33*(1. - 0.3*exp(-Re*Re))
121 * (P(num_face) + 2.*visco*K_eps_Bas_Re(num_face,0)/(wall_length_face(num_face)*wall_length_face(num_face)+DMINFLOAT))
122 * exp(-0.00375*Rey*Rey);
126 for (
int num_face=0; num_face <nb_faces; num_face ++ )
128 F1[num_face] = 1.+ Pderive(num_face) / (P(num_face));
137 const DoubleTab& tab_visco=ch_visco.
valeurs();
140 visco=tab_visco(0,0);
144 for (
int num_face=0; num_face<nb_faces ; num_face++)
152 visco = tab_visco(elem0)*le_dom.
volumes(elem0)+tab_visco(elem1)*le_dom.
volumes(elem1);
156 visco = tab_visco(elem0);
158 if (visco>0 && K_eps_Bas_Re(num_face,1)>0)
160 double Re = (K_eps_Bas_Re(num_face,0)*K_eps_Bas_Re(num_face,0))/(visco*K_eps_Bas_Re(num_face,1));
161 F2[num_face] = 1. - (0.3*exp(-Re*Re));
173 const DoubleTab& tab_visco=ch_visco.
valeurs();
176 visco=tab_visco(0,0);
180 const DoubleTab& wall_length = BR_wall_length_->valeurs();
181 DoubleTab wall_length_face(0);
184 int nb_cl=les_cl.size();
189 for (
int n_bord=0; n_bord<nb_cl; n_bord++)
194 int nfin = ndeb + le_bord.
nb_faces();
198 for (
int num_face=ndeb; num_face<nfin; num_face++)
200 int elem1 = face_voisins(num_face,0);
201 int elem2 = face_voisins(num_face,1);
202 wall_length_face(num_face) = 0.5*wall_length(elem1) + 0.5*wall_length(elem2);
207 for (
int num_face=ndeb; num_face<nfin; num_face++)
209 int elem1 = face_voisins(num_face,0);
210 wall_length_face(num_face) = wall_length(elem1);
215 for (
int num_face=n0; num_face<nb_faces; num_face++)
219 wall_length_face(num_face) = 0.5*wall_length(elem0)+0.5*wall_length(elem1);
223 for (
int num_face=0; num_face<nb_faces ; num_face++)
231 visco = tab_visco(elem0)*le_dom.
volumes(elem0)+tab_visco(elem1)*le_dom.
volumes(elem1);
235 visco = tab_visco(elem0);
239 double Rey = wall_length_face(num_face)*sqrt(K_eps_Bas_Re(num_face,0))/visco;
240 Fmu[num_face] = 1.0 - exp(-0.029*pow(Rey,0.5) - 0.00011*Rey*Rey);
251 const DoubleTab& tab_visco=ch_visco.
valeurs();
254 visco=tab_visco(0,0);
258 const DoubleTab& wall_length = BR_wall_length_->valeurs();
259 DoubleTab wall_length_face(0);
262 int nb_cl=les_cl.size();
267 for (
int n_bord=0; n_bord<nb_cl; n_bord++)
272 int nfin = ndeb + le_bord.
nb_faces();
276 for (
int num_face=ndeb; num_face<nfin; num_face++)
278 int elem1 = face_voisins(num_face,0);
279 int elem2 = face_voisins(num_face,1);
280 wall_length_face(num_face) = 0.5*wall_length(elem1) + 0.5*wall_length(elem2);
285 for (
int num_face=ndeb; num_face<nfin; num_face++)
287 int elem1 = face_voisins(num_face,0);
288 wall_length_face(num_face) = wall_length(elem1);
293 for (
int num_face=n0; num_face<nb_faces; num_face++)
297 wall_length_face(num_face) = 0.5*wall_length(elem0)+0.5*wall_length(elem1);
302 for (
int num_face=0; num_face<nb_faces ; num_face++)
310 visco = tab_visco(elem0)*le_dom.
volumes(elem0)+tab_visco(elem1)*le_dom.
volumes(elem1);
314 visco = tab_visco(elem0);
318 double Rey = wall_length_face(num_face)*sqrt(K_Bas_Re(num_face))/visco;
319 Fmu[num_face] = 1.0 - exp(-0.029*pow(Rey,0.5) - 0.00011*Rey*Rey);
332 const DoubleTab& tab_visco=ch_visco.
valeurs();
335 visco=tab_visco(0,0);
339 for (
int num_face=0; num_face<nb_faces ; num_face++)
347 visco = tab_visco(elem0)*le_dom.
volumes(elem0)+tab_visco(elem1)*le_dom.
volumes(elem1);
351 visco = tab_visco(elem0);
353 if (visco>0 && eps_Bas_Re(num_face)>0)
355 double Re = (K_Bas_Re(num_face)*K_Bas_Re(num_face))/(visco*eps_Bas_Re(num_face));
356 F2[num_face] = 1. - (0.3*exp(-Re*Re));
369 const DoubleTab& tab_visco=ch_visco.
valeurs();
372 visco=tab_visco(0,0);
375 const DoubleTab& wall_length = BR_wall_length_->valeurs();
376 DoubleTab wall_length_face(0);
378 DoubleTab Pderive(0);
382 int nb_cl=les_cl.size();
387 for (
int n_bord=0; n_bord<nb_cl; n_bord++)
392 int nfin = ndeb + le_bord.
nb_faces();
396 for (
int num_face=ndeb; num_face<nfin; num_face++)
398 int elem1 = face_voisins(num_face,0);
399 int elem2 = face_voisins(num_face,1);
400 wall_length_face(num_face) = 0.5*wall_length(elem1) + 0.5*wall_length(elem2);
405 for (
int num_face=ndeb; num_face<nfin; num_face++)
407 int elem1 = face_voisins(num_face,0);
408 wall_length_face(num_face) = wall_length(elem1);
413 for (
int num_face=n0; num_face<nb_faces; num_face++)
417 wall_length_face(num_face) = 0.5*wall_length(elem0)+0.5*wall_length(elem1);
420 for (
int num_face=0; num_face <nb_faces; num_face ++ )
422 double Re = (K_Bas_Re(num_face)*K_Bas_Re(num_face))/(visco*eps_Bas_Re(num_face)+DMINFLOAT);
423 double Rey = wall_length_face(num_face)*sqrt(K_Bas_Re(num_face))/visco;
424 Pderive(num_face) = 1.33*(1. - 0.3*exp(-Re*Re))
425 * (P(num_face) + 2.*visco*K_Bas_Re(num_face)/(wall_length_face(num_face)*wall_length_face(num_face)+DMINFLOAT))
426 * exp(-0.00375*Rey*Rey);
430 for (
int num_face=0; num_face <nb_faces; num_face ++ )
432 F1[num_face] = 1.+ Pderive(num_face) / (P(num_face));
441 return Calcul_E( E, domaine_dis, domaine_Cl_dis, transporte, K_Bas_Re, ch_visco, visco_turb );
445 const DoubleTab& vitesse,
const DoubleTab& K_Bas_Re,
const DoubleTab& eps_Bas_Re,
const Champ_Don_base& ch_visco )
const
classe Champ_Don_base classe de base des Champs donnes (non calcules)
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
virtual DoubleTab & valeurs()=0
classe Champ_base Cette classe est la base de la hierarchie des champs.
classe Cond_lim Classe generique servant a representer n'importe quelle classe
classe Conds_lim Cette classe represente un vecteur de conditions aux limites.
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
int nb_faces() const
renvoie le nombre global de faces.
void creer_tableau_faces(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
double volumes(int i) const
int premiere_face_int() const
une face est interne ssi elle separe deux elements.
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
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,...
int num_premiere_face() const
DoubleTab & Calcul_F2_BiK(DoubleTab &, DoubleTab &, const Domaine_dis_base &, const DoubleTab &, const DoubleTab &, const Champ_base &) const override
DoubleTab & Calcul_E_BiK(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const Champ_Don_base &, const DoubleTab &) const override
DoubleTab & Calcul_F1_BiK(DoubleTab &F1, const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &P, const DoubleTab &K_Bas_Re, const DoubleTab &eps_Bas_Re, const Champ_base &ch_visco) const override
DoubleTab & Calcul_Fmu(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &, const Champ_Don_base &) const override
DoubleTab & Calcul_D_BiK(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const Champ_Don_base &) const override
DoubleTab & Calcul_D(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, const DoubleTab &, const DoubleTab &, const Champ_Don_base &) const override
DoubleTab & Calcul_F1(DoubleTab &F1, const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &P, const DoubleTab &K_eps_Bas_Re, const Champ_base &ch_visco) const override
DoubleTab & Calcul_Fmu_BiK(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, const DoubleTab &, const DoubleTab &, const Champ_Don_base &) const override
DoubleTab & Calcul_F2(DoubleTab &, DoubleTab &, const Domaine_dis_base &, const DoubleTab &, const Champ_base &) const override
DoubleTab & Calcul_E(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, const DoubleTab &, const DoubleTab &, const Champ_Don_base &, const DoubleTab &) const override
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 Periodique Cette classe represente une condition aux limites periodique.
Classe de base des flux de sortie.
_TYPE_ mp_max_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const
_TYPE_ mp_min_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const