16#include <Modele_turbulence_scal_base.h>
17#include <Modele_turbulence_hyd_base.h>
18#include <Turbulence_paroi_scal_base.h>
19#include <Convection_Diffusion_std.h>
20#include <Discretisation_base.h>
21#include <Schema_Temps_base.h>
22#include <Champ_Uniforme.h>
23#include <Probleme_base.h>
24#include <EcrFicPartage.h>
25#include <Domaine_VF.h>
27#include <Dirichlet_paroi_defilante.h>
28#include <Dirichlet_paroi_fixe.h>
58 Cerr <<
"Lecture du type de loi de parois " << finl;
63 const RefObjU& modele_turbulence = eqn.
get_modele(TURBULENCE);
67 if (typ !=
"negligeable_scalaire")
70 Cerr <<
"La loi de paroi de type " << typ <<
" choisie pour le scalaire n'est pas compatible avec" << finl;
71 Cerr <<
"la loi de type " << loi.
que_suis_je() <<
" choisie pour l'hydraulique" << finl;
72 Cerr <<
"Utiliser le type 'negligeable_scalaire' pour le scalaire ou utiliser une loi de paroi" << finl;
73 Cerr <<
"non negligeable pour l hydraulique" << finl;
81 if (discr ==
"VEFPreP1B")
85 if (typ ==
"loi_analytique_scalaire_VDF")
87 Cerr <<
"La loi de paroi scalaire de type loi_analytique_scalaire" << finl;
88 Cerr <<
"n est utilisable qu avec une discretisation de type VEF" << finl;
92 Cerr <<
"et typage : " << typ << finl;
100 return champs_compris_.get_champ(nom);
105 return champs_compris_.
has_champ(nom, ref_champ);
109 return champs_compris_.has_champ(nom);
114 if (opt == DESCRIPTION)
115 Cerr <<
"Turbulence_paroi_scal_base : " << champs_compris_.liste_noms_compris() << finl;
117 nom.add(champs_compris_.liste_noms_compris());
134 Nusselt.
ouvrir(fichier, ios::app);
150 Nom nom_fic = nom_fichier +
"." + extension;
160 fichier.
ouvrir(nom_fic, ios::app);
199 fields[0] =
"dist. carac. (m)";
200 fields[1] =
"Nusselt (local)";
201 fields[2] =
"h (Conv. W/m2/K)";
202 fields[3] =
"Tf cote paroi (K)";
203 fields[4] =
"T face de bord (K)";
204 fields[5] =
"Tparoi equiv.(K)";
223 for (
int n_bord = 0; n_bord < le_dom_dis_->nb_front_Cl(); n_bord++)
225 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
226 const Nom& nom_bord = la_cl->frontiere_dis().le_nom();
242 else if (boundaries_list.size() > 0)
244 err +=
"The boundary named '";
246 err +=
"' is not of type Dirichlet_paroi_fixe or Dirichlet_paroi_defilante.\n";
247 err +=
"So TRUST will not write Nusselt mean values.\n\n";
283 int ndeb, nfin, size0, num_bord;
286 if (boundaries_list.size() != 0)
288 size0 = boundaries_list.size();
292 size0 = le_dom_dis_->nb_front_Cl();
294 DoubleTrav moy_bords(size0 + 1,
nb_fields_+1);
300 for (
int n_bord = 0; n_bord < le_dom_dis_->nb_front_Cl(); n_bord++)
302 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
308 if (boundaries_ == 0 || (boundaries_ == 1 && boundaries_list.
contient(le_bord.
le_nom())))
310 for (
int num_face = ndeb; num_face < nfin; num_face++)
313 double aire = le_dom_dis_->face_surfaces(num_face);
316 moy_bords(0, i) += aire *
tab_(num_face, i);
317 moy_bords(num_bord + 1, i) += aire *
tab_(num_face, i);
334 fichier <<
" \t" << moy_bords(0, i) / moy_bords(0,
nb_fields_);
338 for (
int n_bord = 0; n_bord < le_dom_dis_->nb_front_Cl(); n_bord++)
340 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
344 if (boundaries_ == 0 || (boundaries_ == 1 && boundaries_list.
contient(le_bord.
le_nom())))
349 fichier <<
" \t" << moy_bords(num_bord + 1, i) / moy_bords(num_bord + 1,
nb_fields_);
classe Champ_base Cette classe est la base de la hierarchie des champs.
bool has_champ(const Motcle &nom, OBS_PTR(FIELD_TYPE)&ref_champ) const
classe Cond_lim Classe generique servant a representer n'importe quelle classe
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 ouvrir(const char *name, IOS_OPEN_MODE mode=ios::out) override
Ouvre le fichier avec les parametres mode et prot donnes Ces parametres sont les parametres de la met...
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 RefObjU & get_modele(Type_modele type) const
const Discretisation_base & discretisation() const
Renvoie la discretisation associee a l'equation.
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.
Domaine_dis_base & domaine_dis()
Renvoie le domaine discretise associe a l'equation.
int num_premiere_face() const
const Nom & le_nom() const override
Renvoie le nom de la frontiere geometrique.
Classe Modele_turbulence_hyd_base Cette classe sert de base a la hierarchie des classes.
const Turbulence_paroi_base & loi_paroi() const
Classe Modele_turbulence_scal_base Cette classe represente un modele de turbulence pour une equation ...
Convection_Diffusion_std & equation()
Une chaine de caractere (Nom) en majuscules.
class Nom Une chaine de caractere pour nommer les objets de TRUST
bool contient(const Nom &nom) const
Un tableau de chaine de caracteres (VECT(Nom)).
classe Objet_U Cette classe est la classe de base des 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.
static const Nom & nom_du_cas()
Renvoie une reference constante vers le nom du cas.
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.
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
bool & reprise_effectuee()
const Schema_Temps_base & schema_temps() const
Renvoie le schema en temps associe au probleme.
virtual const Equation_base & equation(int) const =0
static void mp_sum_for_each_item(TRUSTArray< _TYPE_ > &x, int n=-1)
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),...
double temps_courant() const
Renvoie le temps courant.
Classe de base des flux de sortie.
const Objet_U & valeur() const
Classe Turbulence_paroi_base Classe de base pour la hierarchie des classes representant les modeles.
Classe Turbulence_paroi_scal_base Classe de base pour la hierarchie des classes representant les mode...
virtual bool use_equivalent_distance() const
Give a boolean indicating if we need to use equivant distance by default we consider that we use the ...
void imprimer_premiere_ligne_nusselt(int, const LIST(Nom)&, const Nom &) const
Writes header line for Nusselt number and heat transfer statistics file.
static void typer_lire_turbulence_paroi_scal(OWN_PTR(Turbulence_paroi_scal_base)&, const Modele_turbulence_scal_base &, Entree &)
Lit les caracteristques de la loi de parois a partir d'un flot d'entree.
void creer_champ(const Motcle &motlu) override
const Champ_base & get_champ(const Motcle &nom) const override
void imprimer_nusselt_mean_only(Sortie &, int, const LIST(Nom)&, const Nom &) const
Prints mean Nusselt number and heat transfer statistics to a file for specified boundaries.
void associer_modele(const Modele_turbulence_scal_base &)
Associe un modele de turbulence a l'objet.
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
Turbulence_paroi_scal_base()
virtual void compute_nusselt() const =0
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
virtual void associer(const Domaine_dis_base &, const Domaine_Cl_dis_base &)=0
void ouvrir_fichier_partage(EcrFicPartage &, const Nom &) const
Ouverture/creation d'un fichier d'impression de Face, d_eq, Nu local, h.