TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Modele_turbulence_hyd_base.h
1/****************************************************************************
2* Copyright (c) 2026, CEA
3* All rights reserved.
4*
5* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
9*
10* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
11* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
12* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13*
14*****************************************************************************/
15
16#ifndef Modele_turbulence_hyd_base_included
17#define Modele_turbulence_hyd_base_included
18
19#include <Support_Champ_Masse_Volumique.h>
20#include <Turbulence_paroi_base.h>
21
23class Equation_base;
24class Motcle;
25class Param;
26
27static constexpr double CMU = 0.09;
28
29/*! @brief Classe Modele_turbulence_hyd_base Cette classe sert de base a la hierarchie des classes
30 *
31 * qui representent un modele de turbulence pour les
32 * equations de Navier-Stokes. Il existe deja deux classes derivees
33 * qui representent le modele de turbulence (k,e) et le modele
34 * de turbulence sous maille. Ces deux modeles ont en commun
35 * le calcul d'une viscosite turbulente.
36 *
37 * B.Mat. : la classe herite de support_champ_masse_volumique.
38 * en Front-Tracking (et plus tard en qc), elle fournit le
39 * mecanisme pour recuperer rho.
40 *
41 */
43{
44 Declare_base(Modele_turbulence_hyd_base);
45public:
46 inline const Champ_Fonc_base& viscosite_turbulente() const { return la_viscosite_turbulente_; }
47 inline Champ_Fonc_base& viscosite_turbulente() { return la_viscosite_turbulente_; }
48 inline Equation_base& equation();
49 inline const Equation_base& equation() const;
50 inline const Turbulence_paroi_base& loi_paroi() const { return loipar_.valeur(); }
51 inline Turbulence_paroi_base& loi_paroi() { return loipar_.valeur(); }
52 bool utiliser_loi_paroi() const { return loipar_ ? loipar_->use_shear() : false; }
53 bool has_loi_paroi_hyd() const { return bool(loipar_); }
54 virtual bool calcul_tenseur_Re(const DoubleTab& nu_turb, const DoubleTab& grad, DoubleTab& Re) const { return false; }
55 virtual void set_param(Param& param) const override;
56 int lire_motcle_non_standard(const Motcle&, Entree&) override;
57 virtual int preparer_calcul();
58 virtual bool initTimeStep(double dt);
59 virtual void mettre_a_jour(double) =0;
60 virtual void discretiser();
63 void discretiser_K(const Schema_Temps_base&, Domaine_dis_base&, OWN_PTR(Champ_Fonc_base)&) const; // Utilise par les modeles de tubulence dans TrioCFD
64 virtual void completer() { /* Do nothing */ }
65 void associer_eqn(const Equation_base&);
66 virtual void associer(const Domaine_dis_base&, const Domaine_Cl_dis_base&) { /* Do nothing */ }
67 int reprendre(Entree&) override;
68
69 void creer_champ(const Motcle& motlu) override;
70 const Champ_base& get_champ(const Motcle& nom) const override;
71 void get_noms_champs_postraitables(Noms& nom, Option opt = NONE) const override;
72 bool has_champ(const Motcle& nom, OBS_PTR(Champ_base) &ref_champ) const override;
73 bool has_champ(const Motcle& nom) const override;
74 inline Champs_compris& champs_compris() { return champs_compris_; }
75
76 virtual void imprimer(Sortie&) const;
77 void a_faire(Sortie&) const;
78 int sauvegarder(Sortie&) const override;
79 virtual std::vector<YAML_data> data_a_sauvegarder() const;
80
81 int limpr_ustar(double, double, double, double) const;
82 inline double get_Cmu() const { return LeCmu_; }
84
86
87protected:
88 double LeCmu_ = CMU;
89 OWN_PTR(Champ_Fonc_base) la_viscosite_turbulente_, wall_length_;
90 OBS_PTR(Equation_base) mon_equation_;
93 int boundaries_ = 0;
94 LIST(Nom) boundaries_list_;
96 Champs_compris champs_compris_;
97
98private:
99 double XNUTM_ = 1.E8, dt_diff_sur_dt_conv_ = -1;
100 bool calcul_borne_locale_visco_turb_ = false;
101 OWN_PTR(Champ_Fonc_base) corr_visco_turb_;
102 DoubleVect borne_visco_turb_;
103};
104
105/*! @brief Renvoie l'equation associee au modele de turbulence.
106 *
107 * (c'est une equation du type Equation_base)
108 *
109 * @return (Equation_base&) l'equation associee au modele de turbulence
110 */
112{
113 if (!mon_equation_)
114 {
115 Cerr << "Error in Modele_turbulence_hyd_base::equation() : The equation is unknown !" << finl;
117 }
118 return mon_equation_.valeur();
119}
120
122{
123 if (!mon_equation_)
124 {
125 Cerr << "Error in Modele_turbulence_hyd_base::equation() : The equation is unknown !" << finl;
127 }
128 return mon_equation_.valeur();
129}
130
131#endif /* Modele_turbulence_hyd_base_included */
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
classe Champ_base Cette classe est la base de la hierarchie des champs.
Definition Champ_base.h:43
classe Champs_compris_interface Cette classe contient une interface de methodes destinees a gerer
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Class defining operators and methods for all reading operation in an input flow (file,...
Definition Entree.h:42
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
Classe Modele_turbulence_hyd_base Cette classe sert de base a la hierarchie des classes.
OBS_PTR(Equation_base) mon_equation_
int limpr_ustar(double, double, double, double) const
virtual void associer(const Domaine_dis_base &, const Domaine_Cl_dis_base &)
LIST(Nom) boundaries_list_
virtual std::vector< YAML_data > data_a_sauvegarder() const
for PDI IO: retrieve name, type and dimensions of the fields to save/restore
void associer_eqn(const Equation_base &)
Associe l'equation passe en parametre au modele de turbulence.
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.
OWN_PTR(Champ_Fonc_base) la_viscosite_turbulente_
virtual int preparer_calcul()
Prepare le calcul.
virtual bool calcul_tenseur_Re(const DoubleTab &nu_turb, const DoubleTab &grad, DoubleTab &Re) const
OWN_PTR(Turbulence_paroi_base) loipar_
void discretiser_visc_turb(const Schema_Temps_base &, Domaine_dis_base &, OWN_PTR(Champ_Fonc_base)&) const
virtual void set_param(Param &param) const override
void discretiser_K(const Schema_Temps_base &, Domaine_dis_base &, OWN_PTR(Champ_Fonc_base)&) const
int reprendre(Entree &) override
Reprend la loi de paroi.
void discretiser_corr_visc_turb(const Schema_Temps_base &, Domaine_dis_base &, OWN_PTR(Champ_Fonc_base)&) const
int sauvegarder(Sortie &) const override
Sauvegarde le modele de turbulence sur un flot de sortie.
virtual void mettre_a_jour(double)=0
const Turbulence_paroi_base & loi_paroi() const
const Champ_Fonc_base & viscosite_turbulente() const
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
void creer_champ(const Motcle &motlu) override
void lire_distance_paroi()
Lit le fichier dom_Wall_length.
Turbulence_paroi_base & loi_paroi()
Equation_base & equation()
Renvoie l'equation associee au modele de turbulence.
virtual void discretiser()
Discretise le modele de turbulence.
void a_faire(Sortie &) const
Effectue l'ecriture d'une identite si cela est necessaire.
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
virtual void imprimer(Sortie &) const
Effectue l'impression si cela est necessaire.
const Champ_base & get_champ(const Motcle &nom) const override
Une chaine de caractere (Nom) en majuscules.
Definition Motcle.h:26
class Nom Une chaine de caractere pour nommer les objets de TRUST
Definition Nom.h:31
Un tableau de chaine de caracteres (VECT(Nom)).
Definition Noms.h:26
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...
Definition Objet_U.cpp:55
Helper class to factorize the readOn method of Objet_U classes.
Definition Param.h:112
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Definition Process.cpp:455
class Schema_Temps_base
Classe de base des flux de sortie.
Definition Sortie.h:52
Support_Champ_Masse_Volumique()
Constructeur de la classe.
Classe Turbulence_paroi_base Classe de base pour la hierarchie des classes representant les modeles.