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 <<
"Warning, nothing is done in Axi for 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;
class Champ_Don_base base class of Given Fields (not calculated)
DoubleTab & valeurs() override
Overrides Champ_base::valeurs() Returns the array of values.
DoubleTab & valeurs() override
Returns the array of field values at the current time.
class Cond_lim Generic class used to represent any class
Convection_Diffusion_std This class is the base for equations modelling the transport.
Dirichlet_paroi_defilante Imposes the wall velocity in an equation of type Navier_Stokes.
Dirichlet_paroi_fixe Represents a fixed wall in a Navier-Stokes type equation.
class Domaine_Cl_dis_base Domaine_Cl_dis_base objects represent discretized boundary conditions
const Cond_lim & les_conditions_limites(int) const
Returns the i-th boundary condition.
class Domaine_dis_base This class is the base of the hierarchy of discretized domains.
Sortie & syncfile() override
Triggers writing to disk of the data accumulated on the different processors since the last call to s...
Class defining operators and methods for all reading operation in an input flow (file,...
class Equation_base The role of an equation is the calculation of one or more fields....
virtual const Milieu_base & milieu() const =0
virtual const Champ_Inc_base & inconnue() const =0
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Returns the discretized boundary condition domain associated with the equation.
Probleme_base & probleme()
Returns the problem associated with the equation.
virtual int nb_comp() const
Base class for an incompressible fluid and its properties:
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
Creates an array with one "row" per face of this boundary.
const Frontiere & frontiere() const
Returns the associated geometric boundary.
const Nom & le_nom() const override
Returns the name of the geometric boundary.
virtual const Champ_Don_base & conductivite() const
Returns the conductivity of the medium (const version).
Classe Neumann_paroi This boundary condition corresponds to an imposed flux for the.
virtual double flux_impose(int i) const
Returns the value of the imposed flux on the i-th component of the field representing the flux at the...
class Nom: a character string for naming TRUST objects.
const Nom & que_suis_je() const
Returns the string identifying the class.
virtual Entree & readOn(Entree &)
Reads an Objet_U from an input stream. Virtual method to override.
virtual const Nom & le_nom() const
Returns the name of the Objet_U. Virtual method to override: returns "neant" in this implementation.
virtual Sortie & printOn(Sortie &) const
Writes the object to an output stream. Virtual method to override.
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)
Exit routine for TRUST within a Kokkos region.
static int je_suis_maitre()
Returns 1 if on the master processor of the current group (i.e. me() == 0), 0 otherwise.
Base class for output streams.
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")
Base class for the hierarchy of scalar wall-law models computing turbulent quantities near walls....
DoubleVects equivalent_distance_
const DoubleVects & equivalent_distance() const
void ouvrir_fichier_partage(EcrFicPartage &, const Nom &) const
Opens or creates a print file for Face, d_eq, local Nu, h.