16#include <Modele_turbulence_hyd_base.h>
17#include <Turbulence_paroi_base.h>
18#include <Discretisation_base.h>
19#include <Schema_Temps_base.h>
20#include <Probleme_base.h>
21#include <Equation_base.h>
22#include <EcrFicPartage.h>
27#include <Dirichlet_paroi_defilante.h>
28#include <Dirichlet_paroi_fixe.h>
65 Cerr <<
"Lecture du type de loi de parois " << finl;
70 if (typ ==
"loi_standard_hydr_scalaire" || typ ==
"loi_paroi_2_couches_scalaire" || typ ==
"negligeable_scal")
72 Cerr <<
"Le format du jeu de donnees a change:" << finl;
73 Cerr <<
"Chaque modele de turbulence doit avoir sa loi de paroi specifiee." << finl;
74 Cerr <<
"Ainsi par exemple, loi_standard_hydr sera pour le modele de turbulence de l'equation de qdm" << finl;
75 Cerr <<
"et loi_standard_hydr_scalaire pour le modele de turbulence de l'equation d'energie." << typ << finl;
83 if (discr ==
"VEFPreP1B") discr =
"VEF";
86 Cerr <<
"et typage : " << typ << finl;
94 if (motlu ==
"u_star" && !champ_u_star_)
102 const Equation_base& equation = mon_modele_turb_hyd->equation();
111 if (champ_u_star_ && (nom == champ_u_star_->le_nom()))
122 if (champ_u_star_ && (nom == champ_u_star_->
le_nom()))
130 if (champ_u_star_ && nom == champ_u_star_->
le_nom())
133 DoubleTab& valeurs = champ_u_star_->valeurs();
135 const Equation_base& my_eqn = mon_modele_turb_hyd->equation();
140 for (
int n_bord = 0; n_bord < nb_front; n_bord++)
145 int nfin = ndeb + le_bord.
nb_faces();
146 for (
int num_face = ndeb; num_face < nfin; num_face++)
162 noms_compris.add(
"u_star");
163 if (opt == DESCRIPTION)
164 Cerr <<
que_suis_je() <<
" : " << noms_compris << finl;
166 nom.add(noms_compris);
188 Ustar.
ouvrir(fichier, ios::app);
206 Nom nom_fic = nom_fichier +
"." + extension;
216 fichier.
ouvrir(nom_fic, ios::app);
239 ligne =
"# Time \tMean(u*) \tMean(d+)";
241 for (
int n_bord = 0; n_bord < le_dom_dis_->nb_front_Cl(); n_bord++)
243 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
244 const Nom& nom_bord = la_cl->frontiere_dis().le_nom();
256 else if (boundaries_list.size() > 0)
258 err +=
"The boundary named '";
260 err +=
"' is not of type Dirichlet_paroi_fixe or Dirichlet_paroi_defilante.\n";
261 err +=
"So TRUST will not write his u_star and d_plus means.\n\n";
291 int ndeb, nfin, size0, num_bord;
294 if (boundaries_list.size() != 0)
296 size0 = boundaries_list.size();
300 size0 = le_dom_dis_->nb_front_Cl();
302 DoubleTrav moy_bords(size0 + 1, 3);
308 for (
int n_bord = 0; n_bord < le_dom_dis_->nb_front_Cl(); n_bord++)
310 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
316 if (boundaries_ == 0 || (boundaries_ == 1 && boundaries_list.
contient(le_bord.
le_nom())))
318 for (
int num_face = ndeb; num_face < nfin; num_face++)
321 double aire = le_dom_dis_->face_surfaces(num_face);
322 moy_bords(0, 0) += aire *
tab_u_star(num_face);
323 moy_bords(0, 1) += aire;
324 moy_bords(0, 2) += aire *
tab_d_plus(num_face);
325 moy_bords(num_bord + 1, 0) += aire *
tab_u_star(num_face);
326 moy_bords(num_bord + 1, 1) += aire;
327 moy_bords(num_bord + 1, 2) += aire *
tab_d_plus(num_face);
338 fichier << sch.
temps_courant() <<
" \t" << moy_bords(0, 0) / moy_bords(0, 1) <<
" \t" << moy_bords(0, 2) / moy_bords(0, 1);
342 for (
int n_bord = 0; n_bord < le_dom_dis_->nb_front_Cl(); n_bord++)
344 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
348 if (boundaries_ == 0 || (boundaries_ == 1 && boundaries_list.
contient(le_bord.
le_nom())))
352 fichier <<
" \t" << moy_bords(num_bord + 1, 0) / moy_bords(num_bord + 1, 1) <<
" \t" << moy_bords(num_bord + 1, 2) / moy_bords(num_bord + 1, 1);
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 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 Discretisation_base Cette classe represente un schema de discretisation en espace,...
void discretiser_champ(const Motcle &directive, const Domaine_dis_base &z, const Nom &nom, const Nom &unite, int nb_comp, int nb_pas_dt, double temps, OWN_PTR(Champ_Inc_base)&champ, const Nom &sous_type=NOM_VIDE) const
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
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....
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.
Schema_Temps_base & schema_temps()
Renvoie le schema en temps 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.
Equation_base & equation()
Renvoie l'equation associee au modele de turbulence.
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
const Nom & le_nom() const override
Renvoie *this;.
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.
const Discretisation_base & discretisation() const
Renvoie la discretisation associee au probleme.
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.
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")
Classe Turbulence_paroi_base Classe de base pour la hierarchie des classes representant les modeles.
virtual void imprimer_premiere_ligne_ustar(int, const LIST(Nom)&, const Nom &) const
Writes header line for u* (friction velocity) statistics file.
const DoubleVect & tab_d_plus() const
const DoubleVect & tab_u_star() const
virtual void imprimer_ustar_mean_only(Sortie &, int, const LIST(Nom)&, const Nom &) const
Prints mean friction velocity (u*) statistics to a file for specified boundaries.
void ouvrir_fichier_partage(EcrFicPartage &, const Nom &) const
Ouverture/creation d'un fichier d'impression de Face, uplus_, dplus_, tab_u_star, Cisaillement_paroi_...
const Champ_base & get_champ(const Motcle &nom) const override
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
OWN_PTR(Champ_Fonc_base) champ_u_star_
Champs_compris champs_compris_
void creer_champ(const Motcle &motlu) override
virtual void associer(const Domaine_dis_base &, const Domaine_Cl_dis_base &)=0
void associer_modele(const Modele_turbulence_hyd_base &)
Associe un modele de turbulence a l'objet.
static void typer_lire_turbulence_paroi(OWN_PTR(Turbulence_paroi_base)&, const Modele_turbulence_hyd_base &, Entree &)
Lit les caracteristques de la loi de parois a partir d'un flot d'entree.