16#include <Loi_Paroi_Nu_Impose_VEF.h>
17#include <Champ_Uniforme.h>
18#include <Domaine_Cl_VEF.h>
19#include <Dirichlet_paroi_fixe.h>
20#include <Dirichlet_paroi_defilante.h>
22#include <Neumann_paroi.h>
23#include <Fluide_base.h>
24#include <Fluide_Quasi_Compressible.h>
25#include <Convection_Diffusion_std.h>
26#include <Modele_turbulence_scal_base.h>
27#include <Probleme_base.h>
28#include <EcrFicPartage.h>
30#include <Modifier_pour_fluide_dilatable.h>
51 les_mots[0] =
"nusselt";
52 les_mots[1] =
"diam_hydr";
56 Motcle motlu, accolade_fermee=
"}", accolade_ouverte=
"{";
58 assert(motlu==accolade_ouverte);
60 if(motlu == accolade_ouverte)
65 while (motlu != accolade_fermee)
67 int rang=les_mots.search(motlu);
75 Cerr <<
"Lecture et interpretation de la fonction " << tmp <<
" ... ";
93 Cerr <<
"Mot cle \"" << motlu <<
"\" non compris lors de la lecture d'un "
103 Cerr <<
"Il faut definir l'expression nusselt(Re,Pr)" << finl;
107 if (diam_hydr->nb_comp()!=1)
109 Cerr <<
"Il faut definir le champ diam_hydr a une composante" << finl;
125 const IntTab& face_voisins = domaine_VEF.
face_voisins();
131 const DoubleTab& xv=domaine_VEF.
xv() ;
132 const IntTab& elem_faces = domaine_VEF.
elem_faces();
137 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
143 visco = std::max(tab_visco(0,0),DMINFLOAT);
148 if ((!l_unif) && (local_min_vect(tab_visco)<DMINFLOAT))
151 Cerr <<
"In Loi_Paroi_Nu_Impose_VEF::calculer_scal : visco = " << tab_visco.
local_min_vect() <<
" <= 0 ? " << finl;
156 bool dh_constant=sub_type(
Champ_Uniforme,diam_hydr.valeur())?
true:
false;
157 double dh_valeur=diam_hydr->valeurs()(0,0);
162 DoubleTab alpha_t = diffusivite_turb.
valeurs();
165 for (
int n_bord=0; n_bord<domaine_VEF.
nb_front_Cl(); n_bord++)
172 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
175 || (sub_type(
Symetrie,la_cl.valeur())) )
179 for (
int ind_face=0; ind_face<size; ind_face++)
181 int num_face = le_bord.
num_face(ind_face);
182 elem = face_voisins(num_face,0);
184 elem = face_voisins(num_face,1);
188 d_visco = tab_visco[elem];
192 d_alpha = alpha.
valeurs()(0,0);
196 d_alpha = alpha.
valeurs()(elem);
198 d_alpha = alpha.
valeurs()(elem,0);
200 double Pr = d_visco/d_alpha;
206 for (
int nfa=0; nfa<domaine_VEF.
domaine().nb_faces_elem(); nfa++)
209 int face = elem_faces(elem,nfa);
211 v[dim] += vitesse(face,dim);
216 v[dim] /= Compte_face ;
223 pos[i]=xv(num_face,i);
228 dh_valeur=diam_hydr->valeur_a_compo(pos,0);
231 double Re=Ud*dh_valeur/d_visco;
240 equivalent_distance_[n_bord](ind_face) = (d_alpha+alpha_t(elem))/d_alpha*dh_valeur/(Nu+DMINFLOAT);
252 const IntTab& face_voisins = domaine_VEF.
face_voisins();
260 const DoubleTab& conductivite_turbulente = mon_modele_turb_scal->conductivite_turbulente().valeurs();
265 bool dh_constant=sub_type(
Champ_Uniforme,diam_hydr.valeur())?
true:
false;
266 double dh_valeur=diam_hydr->valeurs()(0,0);
269 for (
int n_bord=0; n_bord<domaine_VEF.
nb_front_Cl(); n_bord++)
271 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
274 || (sub_type(
Symetrie,la_cl.valeur())) )
283 Nusselt <<
"Bord " << le_bord.
le_nom() << finl;
288 Nusselt <<
"----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------" << finl;
289 Nusselt <<
"\tFace a\t\t\t\t|" << finl;
290 Nusselt <<
"----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------" << finl;
291 Nusselt <<
"X\t\t| Y\t\t\t| dist. carac. (m)\t| Nusselt (local)\t| h (Conv. W/m2/K)\t| Tf cote paroi (K)\t| T face de bord (K)\t| Tparoi equiv.(K) " << finl;
292 Nusselt <<
"----------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------" << finl;
296 Nusselt <<
"----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------" << finl;
297 Nusselt <<
"\tFace a\t\t\t\t\t\t\t|" << finl;
298 Nusselt <<
"----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------" << finl;
299 Nusselt <<
"X\t\t| Y\t\t\t| Z\t\t\t| dist. carac. (m)\t| Nusselt (local)\t| h (Conv. W/m2/K)\t| Tf cote paroi (K)\t| T face de bord (K)\t| Tparoi equiv.(K)" << finl;
300 Nusselt <<
"----------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------" << finl;
307 Nusselt <<
"----------------------------------------------------------------------------------------------------------------------------------------" << finl;
308 Nusselt <<
"\tFace a\t\t\t\t|" << finl;
309 Nusselt <<
"----------------------------------------------------------------------------------------------------------------------------------------" << finl;
310 Nusselt <<
"X\t\t| Y\t\t\t| dist. carac. (m)\t| Nusselt (local)\t| h (Conv. W/m2/K)\t| Tf cote paroi (K)" << finl;
311 Nusselt <<
"----------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------" << finl;
315 Nusselt <<
"----------------------------------------------------------------------------------------------------------------------------------------------------------------" << finl;
316 Nusselt <<
"\tFace a\t\t\t\t\t\t\t|" << finl;
317 Nusselt <<
"----------------------------------------------------------------------------------------------------------------------------------------------------------------" << finl;
318 Nusselt <<
"X\t\t| Y\t\t\t| Z\t\t\t| dist. carac. (m)\t| Nusselt (local)\t| h (Conv. W/m2/K)\t| Tf cote paroi (K)" << finl;
319 Nusselt <<
"----------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------" << finl;
326 for (
int num_face=ndeb; num_face<nfin; num_face++)
330 pos[i]=domaine_VEF.
xv(num_face,i);
334 dh_valeur=diam_hydr->valeur_a_compo(pos,0);
336 double x=domaine_VEF.
xv(num_face,0);
337 double y=domaine_VEF.
xv(num_face,1);
338 double lambda,lambda_t;
339 elem = face_voisins(num_face,0);
341 elem = face_voisins(num_face,1);
343 lambda = conductivite.
valeurs()(0,0);
347 lambda = conductivite.
valeurs()(elem);
349 lambda = conductivite.
valeurs()(elem,0);
352 lambda_t=conductivite_turbulente(elem);
354 Nusselt << x <<
"\t| " << y;
357 double z=domaine_VEF.
xv(num_face,2);
358 Nusselt << x <<
"\t| " << y <<
"\t| " << z;
367 for (
int i=0; i<nb_faces_elem; i++)
369 if ( (j=domaine_VEF.
elem_faces(elem,i)) != num_face )
374 domaine_VEF.
oriente_normale(num_face,elem))/(surface_face*surface_face);
375 tfluide+=temperature(j)*surface_pond;
385 double tparoi = temperature(num_face);
386 double flux = la_cl_neum.
flux_impose(num_face-ndeb);
387 double tparoi_equiv = tfluide+flux/lambda*d_equiv;
388 Nusselt <<
"\t| " << d_equiv <<
"\t| " << (lambda+lambda_t)/lambda*dh_valeur/d_equiv <<
"\t| " << (lambda+lambda_t)/d_equiv <<
"\t| " << tfluide <<
"\t| " << tparoi <<
"\t| " << tparoi_equiv << finl;
393 Nusselt <<
"\t| " << d_equiv <<
"\t| " << (lambda+lambda_t)/lambda*dh_valeur/d_equiv <<
"\t| " << (lambda+lambda_t)/d_equiv <<
"\t| " << tfluide << finl;
400 Nusselt << finl << finl;
classe Champ_Don_base classe de base des Champs donnes (non calcules)
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
classe Cond_lim Classe generique servant a representer n'importe quelle classe
classe Convection_Diffusion_std Cette classe est la base des equations modelisant le transport
classe Dirichlet_paroi_defilante Impose la vitesse de paroi dnas une equation de type Navier_Stokes.
classe Dirichlet_paroi_fixe Represente une paroi immobile dans une equation de type Navier_Stokes.
int nb_faces_elem(int=0) const
Renvoie le nombre de face de type i des elements geometriques constituants le domaine.
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
virtual const DoubleVect & face_surfaces() const
virtual double face_normales(int face, int comp) const
double xv(int num_face, int k) const
int elem_faces(int i, int j) const
renvoie le numero de le ieme face de la maille num_elem la facon dont ces faces sont numerotees est
int oriente_normale(int f, int e) 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.
const Domaine & domaine() const
Sortie & syncfile() override
Provoque l'ecriture sur disque des donnees accumulees sur les differents processeurs depuis le dernie...
Class defining operators and methods for all reading operation in an input flow (file,...
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
virtual const Milieu_base & milieu() const =0
virtual const Champ_Inc_base & inconnue() const =0
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
Probleme_base & probleme()
Renvoie le probleme associe a l'equation.
virtual int nb_comp() const
classe Fluide_base Cette classe represente un d'un fluide incompressible ainsi que
const Champ_Don_base & viscosite_cinematique() const
int num_premiere_face() const
int num_face(const int) const
const Nom & le_nom() const override
Renvoie le nom de la frontiere geometrique.
classe Loi_Paroi_Nu_Impose_VEF
int calculer_scal(Champ_Fonc_base &) override
void imprimer_nusselt(Sortie &) const override
virtual const Champ_Don_base & conductivite() const
Renvoie la conductivite du milieu.
virtual const Champ_Don_base & diffusivite() const
Renvoie la diffusivite du milieu.
Classe Neumann_paroi Cette condition limite correspond a un flux impose pour l'equation de.
virtual double flux_impose(int i) const
Renvoie la valeur du flux impose sur la i-eme composante du champ representant le flux a la frontiere...
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 const Nom & le_nom() const
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
virtual const Equation_base & equation(int) const =0
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
static int je_suis_maitre()
renvoie 1 si on est sur le processeur maitre du groupe courant (c'est a dire me() == 0),...
Classe de base des flux de sortie.
classe Symetrie Sur les faces de symetrie on a les proprietes suivantes:
_TYPE_ local_min_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const
DoubleVects equivalent_distance_
const DoubleVects & equivalent_distance() const
void ouvrir_fichier_partage(EcrFicPartage &, const Nom &) const
Ouverture/creation d'un fichier d'impression de Face, d_eq, Nu local, h.