16#include <Modifier_pour_fluide_dilatable.h>
17#include <Modele_turbulence_scal_base.h>
18#include <Fluide_Quasi_Compressible.h>
19#include <Dirichlet_paroi_defilante.h>
20#include <Convection_Diffusion_std.h>
21#include <Paroi_scal_hyd_base_EF.h>
22#include <Dirichlet_paroi_fixe.h>
23#include <Paroi_decalee_Robin.h>
24#include <Champ_Uniforme.h>
25#include <EcrFicPartage.h>
26#include <Neumann_paroi.h>
27#include <Probleme_base.h>
28#include <Domaine_Cl_EF.h>
29#include <Fluide_base.h>
30#include <Domaine_EF.h>
41 le_dom_dis_ = ref_cast(
Domaine_VF, domaine_dis);
42 le_dom_Cl_dis_ = domaine_Cl_dis;
49 int nb_boundaries = le_dom_dis_->domaine().nb_front_Cl();
50 for (
int n_bord = 0; n_bord < nb_boundaries; n_bord++)
52 const Front_VF& fr_vf = le_dom_dis_->front_VF(n_bord);
54 if (fr_vf.
le_nom() == nom_bord)
57 for (
int ind_face = 0; ind_face < nb_faces; ind_face++)
66 int nb_faces_bord_reelles = le_dom_dis_->nb_faces_bord();
72 const IntTab& face_voisins = le_dom_dis_->face_voisins();
73 const DoubleVect& volumes_maille = le_dom_dis_->volumes();
74 const DoubleVect& surfaces_face = le_dom_dis_->face_surfaces();
78 Cerr <<
"Attention, rien n'est fait en Axi pour le EF" << finl;
83 int nb_front = le_dom_dis_->nb_front_Cl();
85 for (
int n_bord = 0; n_bord < nb_front; n_bord++)
87 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
99 for (
int ind_face = 0; ind_face < size; ind_face++)
101 int num_face = le_bord.
num_face(ind_face);
103 elem = face_voisins(num_face, 0);
105 elem = face_voisins(num_face, 1);
107 double distance = volumes_maille(elem) / surfaces_face(num_face);
111 dist_equiv(ind_face) = distance;
124 const IntTab& face_voisins = le_dom_dis_->face_voisins();
125 int ndeb, nfin, elem;
132 const DoubleTab& conductivite_turbulente = mon_modele_turb_scal->conductivite_turbulente().valeurs();
134 const IntTab& elems = le_dom_dis_->domaine().les_elems();
135 int nsom = le_dom_dis_->nb_som_face();
136 int nsom_elem = le_dom_dis_->domaine().nb_som_elem();
137 ArrOfInt nodes_face(nsom);
138 int nb_nodes_free = nsom_elem - nsom;
140 for (
int n_bord = 0; n_bord < le_dom_dis_->nb_front_Cl(); n_bord++)
142 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
151 for (
int num_face = ndeb; num_face < nfin; num_face++)
153 double lambda, lambda_t;
154 elem = face_voisins(num_face, 0);
156 elem = face_voisins(num_face, 1);
158 lambda = conductivite.
valeurs()(0, 0);
161 if (conductivite.
nb_comp() == 1)
162 lambda = conductivite.
valeurs()(elem);
164 lambda = conductivite.
valeurs()(elem, 0);
167 lambda_t = conductivite_turbulente(elem);
172 for (
int jsom = 0; jsom < nsom; jsom++)
174 int num_som = le_dom_dis_->face_sommets(num_face, jsom);
175 nodes_face[jsom] = num_som;
176 tparoi += temperature(num_som) / nsom;
181 for (
int i = 0; i < nsom_elem; i++)
183 int node = elems(elem, i);
185 for (
int jsom = 0; jsom < nsom; jsom++)
186 if (nodes_face[jsom] == node)
190 tfluide += temperature(node) / nb_nodes_free;
195 tab_(num_face, 0) = d_equiv;
196 tab_(num_face, 1) = (lambda + lambda_t) / lambda *
tab_d_reel_[num_face] / d_equiv;
197 tab_(num_face, 2) = (lambda + lambda_t) / d_equiv;
198 tab_(num_face, 3) = tfluide;
199 tab_(num_face, 4) = tparoi;
204 double flux = la_cl_neum.
flux_impose(num_face - ndeb);
205 double tparoi_equiv = tfluide + flux / (lambda + lambda_t) * d_equiv;
206 tab_(num_face, 5) = tparoi_equiv;
210 tab_(num_face, 5) = 0.;
221 const IntTab& face_voisins = le_dom_dis_->face_voisins();
222 int ndeb, nfin, elem;
228 for (
int n_bord = 0; n_bord < le_dom_dis_->nb_front_Cl(); n_bord++)
230 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
240 Nusselt <<
"Bord " << le_bord.
le_nom() << finl;
246 <<
"----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
248 Nusselt <<
"\tFace a\t\t\t\t|" << finl;
250 <<
"----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
252 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;
254 <<
"----------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------"
260 <<
"----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
262 Nusselt <<
"\tFace a\t\t\t\t\t\t\t|" << finl;
264 <<
"----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
266 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;
268 <<
"----------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------"
276 Nusselt <<
"----------------------------------------------------------------------------------------------------------------------------------------------------------------"
278 Nusselt <<
"\tFace a\t\t\t\t|" << finl;
279 Nusselt <<
"----------------------------------------------------------------------------------------------------------------------------------------------------------------"
281 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;
282 Nusselt <<
"----------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------" << finl;
286 Nusselt <<
"----------------------------------------------------------------------------------------------------------------------------------------------------------------"
288 Nusselt <<
"\tFace a\t\t\t\t\t\t\t|" << finl;
289 Nusselt <<
"----------------------------------------------------------------------------------------------------------------------------------------------------------------"
291 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;
292 Nusselt <<
"----------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------|-----------------------"
299 for (
int num_face = ndeb; num_face < nfin; num_face++)
301 double x = le_dom_dis_->xv(num_face, 0);
302 double y = le_dom_dis_->xv(num_face, 1);
303 elem = face_voisins(num_face, 0);
305 elem = face_voisins(num_face, 1);
308 Nusselt << x <<
"\t| " << y;
311 double z = le_dom_dis_->xv(num_face, 2);
312 Nusselt << x <<
"\t| " << y <<
"\t| " << z;
318 Nusselt <<
"\t| " <<
tab_(num_face, i);
324 for (
int i=0; i<4; i++)
325 Nusselt <<
"\t| " <<
tab_(num_face, i);
333 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.
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.
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.
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
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
int num_premiere_face() const
int num_face(const int) const
virtual void creer_tableau_faces(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
Cree un tableau ayant une "ligne" par face de cette frontiere Voir MD_Vector_tools::creer_tableau_dis...
const Frontiere & frontiere() const
Renvoie la frontiere geometrique associee.
const Nom & le_nom() const override
Renvoie le nom de la frontiere geometrique.
virtual const Champ_Don_base & conductivite() const
Renvoie la conductivite 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...
class Nom Une chaine de caractere pour nommer les objets de TRUST
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.
void associer(const Domaine_dis_base &, const Domaine_Cl_dis_base &) override
DoubleVect & equivalent_distance_name(DoubleVect &d_eq, const Nom &nom_bord) const override
void imprimer_nusselt(Sortie &) const override
void compute_nusselt() const override
int init_lois_paroi() override
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.
void resize(_SIZE_, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
virtual const MD_Vector & get_md_vector() const
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")
Classe Turbulence_paroi_scal_base Classe de base pour la hierarchie des classes representant les mode...
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.