16#include <Modele_turbulence_scal_base.h>
17#include <Modele_turbulence_hyd_base.h>
18#include <EcritureLectureSpecial.h>
19#include <Convection_Diffusion_std.h>
20#include <Discretisation_base.h>
21#include <Probleme_base.h>
39 Cerr <<
"Reading of data for a " <<
que_suis_je() <<
" scalar turbulence model" << finl;
41 Motcle mot =
"turbulence_paroi";
43 param.lire_avec_accolades_depuis(is);
44 const Probleme_base& le_pb = mon_equation_->probleme();
47 const Modele_turbulence_hyd_base& mod_turb_hydr = ref_cast(Modele_turbulence_hyd_base, modele_turbulence.
valeur());
51 Cerr <<
"Mot cle " << mot <<
"non trouve !" << finl;
52 Cerr <<
"On doit lire une loi de paroi dans le modele de turbulence pour un scalaire." << finl;
77 if (mot ==
"turbulence_paroi")
80 is >> loipar_.valeur();
82 else if (mot ==
"dt_impr_nusselt_mean_only")
84 if (loipar_->que_suis_je().contient(
"negligeable"))
85 Process::exit(
"Please remove dt_impr_nusselt option if the wall law is of Negligeable type.");
89 Nom accolade_ouverte =
"{";
90 Nom accolade_fermee =
"}";
95 for (
int b = 0; b < nbfr; b++)
101 if (motlu != accolade_ouverte)
103 Cerr << motlu <<
" is not a keyword understood by " <<
que_suis_je() <<
" in lire_motcle_non_standard" << finl;
104 Cerr <<
"A specification of kind : dt_impr_nusselt_mean_only { dt_impr periode [boundaries nb_boundaries boundary_name1 boundary_name2 ... ] } was expected." << finl;
108 if (motlu !=
"dt_impr")
110 Cerr <<
"We expected dt_impr..." << finl;
116 if (motlu != accolade_fermee)
118 if (motlu ==
"boundaries")
129 for (
int i = 0; i < nb_bords; i++)
132 boundaries_list_.add(
Nom(nom_bord_lu));
134 if (!nlistbord_dom.contient(boundaries_list_[i]))
136 Cerr <<
"Problem in the dt_impr_nusselt_mean_only instruction:" << finl;
137 Cerr <<
"The boundary named '" << boundaries_list_[i] <<
"' is not a boundary of the domain " << dom.
le_nom() <<
"." << finl;
144 if (motlu != accolade_fermee)
146 Cerr <<
"Problem in the dt_impr_nusselt_mean_only instruction:" << finl;
147 Cerr <<
"TRUST wants to read a '" << accolade_fermee <<
"' but find '" << motlu <<
"'!!" << finl;
153 Cerr << motlu <<
" is not a keyword understood by " <<
que_suis_je() <<
" in lire_motcle_non_standard" << finl;
154 Cerr <<
"A specification of kind : dt_impr_nusselt_mean_only { dt_impr periode [boundaries nb_boundaries boundary_name1 boundary_name2 ... ] } was expected." << finl;
190 Cerr <<
"Turbulence scalar model discretization" << finl;
221 loipar_->init_lois_paroi();
233 std::vector<YAML_data> data;
235 data = loipar_->data_a_sauvegarder();
247 return loipar_->sauvegarder(os);
265 mon_ident +=
Nom(temps,
"%e");
266 os << mon_ident << finl;
281 loipar_->reprendre(is);
288 loipar_->creer_champ(motlu);
297 if (loipar_->has_champ(nom, ref_champ))
309 if (loipar_->has_champ(nom))
323 if (loipar_->has_champ(nom, ref_champ))
326 throw std::runtime_error(std::string(
"Field ") + nom.
getString() + std::string(
" not found !"));
331 if (opt == DESCRIPTION)
337 loipar_->get_noms_champs_postraitables(nom, opt);
352 && dt_nusselt != DMAXFLOAT))
357 double i, j, epsilon = 1.e-8;
358 modf(temps_courant / dt_nusselt + epsilon, &i);
359 modf(temps_prec / dt_nusselt + epsilon, &j);
374 loipar_->imprimer_nusselt(os);
classe Champ_base Cette classe est la base de la hierarchie des champs.
double temps() const
Renvoie le temps du champ.
bool has_champ(const Motcle &nom, OBS_PTR(FIELD_TYPE)&ref_champ) const
classe Convection_Diffusion_std Cette classe est la base des equations modelisant le transport
const Champ_Inc_base & inconnue() const override=0
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 Frontiere_t & frontiere(int i) const
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
static int is_ecriture_special(int &special, int &a_faire)
indique si le format special a ete demande en lecture active par sauvegarde xyz .
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
Probleme_base & probleme()
Renvoie le probleme associe a l'equation.
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
void add(const Frontiere_32_64 &)
Ajoute les sommets (et faces) de la frontiere passee en parametre a l'objet (Frontiere_32_64).
bool has_loi_paroi_hyd() const
Classe Modele_turbulence_scal_base Cette classe represente un modele de turbulence pour une equation ...
Champs_compris champs_compris_
OBS_PTR(Convection_Diffusion_std) mon_equation_
int lire_motcle_non_standard(const Motcle &, Entree &) override
Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree.
virtual void mettre_a_jour(double)=0
virtual void completer()
Complete le modele de turbulence: met a jour des references de l'objet.
Convection_Diffusion_std & equation()
const Champ_base & get_champ(const Motcle &nom) const override
void associer_eqn(const Equation_base &)
Associe l'equation passe en parametre au modele de turbulence.
virtual bool initTimeStep(double dt)
A surcharger dans les classes derivees qui possedent une ou des equations Appeler preparer_pas_de_tem...
virtual void imprimer(Sortie &) const
Effectue l'impression si cela est necessaire.
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
int reprendre(Entree &) override
NE FAIT RIEN.
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 &)
NE FAIT RIEN.
double dt_impr_nusselt_mean_only_
void creer_champ(const Motcle &motlu) override
int sauvegarder(Sortie &) const override
NE FAIT RIEN.
LIST(Nom) boundaries_list_
int limpr_nusselt(double, double, double, double) const
Indique s'il faut imprimer ou non le Nusselt local.
virtual void set_param(Param &) const override
virtual std::vector< YAML_data > data_a_sauvegarder() const
for PDI IO: retrieve name, type and dimensions of the fields to save/restore
virtual int preparer_calcul()
NE FAIT RIEN.
virtual void discretiser()
Discretise le modele de turbulence.
void a_faire(Sortie &) const
Effectue l'ecriture d'une identite si cela est necessaire.
Une chaine de caractere (Nom) en majuscules.
class Nom Une chaine de caractere pour nommer les objets de TRUST
const std::string & getString() 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.
Helper class to factorize the readOn method of Objet_U classes.
void ajouter(const char *keyword, const int *value, Param::Nature nat=Param::OPTIONAL)
Register an integer parameter.
void ajouter_non_std(const char *keyword, const Objet_U *value, Param::Nature nat=Param::OPTIONAL)
Register a keyword handled by Objet_U::lire_motcle_non_standard.
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
const Domaine & domaine() const
Renvoie le domaine associe au probleme.
virtual const Equation_base & equation(int) const =0
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
double temps_courant() const
Renvoie le temps courant.
int nb_pas_dt_max_atteint() const
Renvoie 1 si (le nombre de pas de temps >= nombre de pas de temps maximum).
int temps_final_atteint() const
Renvoie 1 si le temps final est atteint (ou depasse).
double pas_de_temps() const
Renvoie le pas de temps (delta_t) courant.
int nb_pas_dt() const
Renvoie le nombre de pas de temps effectues.
int stop_lu() const
Renvoie 1 si le fichier (d'extension) .
int stationnaire_atteint() const
int temps_cpu_max_atteint() const
double temps_precedent() const
Renvoie le temps courant.
Classe de base des flux de sortie.
const Objet_U & valeur() const
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.