TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Turbulence_paroi_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 Turbulence_paroi_base_included
17#define Turbulence_paroi_base_included
18
19#include <Champs_compris_interface.h>
20#include <Champs_compris.h>
21#include <Champ_Inc_base.h>
22#include <TRUST_Ref.h>
23#include <YAML_data.h>
24
26class Probleme_base;
27class EcrFicPartage;
28class Param;
29
30/*! @brief Classe Turbulence_paroi_base Classe de base pour la hierarchie des classes representant les modeles
31 *
32 * de calcul des grandeurs turbulentes aux voisinages des parois.
33 * Contient une reference a un modele de turbulence.
34 *
35 * @sa Paroi_std_hyd_VDF Paroi_std_scal_hyd_VDF, Classe abstraite, Methodes abstraites, void associer(const Domaine_dis_base&, const Domaine_Cl_dis_base&), int init_lois_paroi(), int calculer_hyd(DoubleTab& ), int calculer_hyd(DoubleTab& , DoubleTab& )
36 */
38{
39 Declare_base(Turbulence_paroi_base);
40public:
41
43
44 virtual void set_param(Param& param) const override { /* Do nothing */ }
46 virtual void associer(const Domaine_dis_base&, const Domaine_Cl_dis_base&)=0;
47 virtual void completer() { }
48 virtual int init_lois_paroi() =0;
49 inline int calculer_hyd(Champ_Inc_base&);
51 virtual int calculer_hyd(DoubleTab&) =0;
52 virtual int calculer_hyd(DoubleTab&, DoubleTab&) =0;
53 virtual int calculer_hyd_BiK(DoubleTab&, DoubleTab&) =0;
54 inline virtual DoubleTab& corriger_derivee_impl(DoubleTab& d) const { return d; }
55 inline virtual void imprimer_ustar(Sortie&) const { }
56 virtual void imprimer_premiere_ligne_ustar(int, const LIST(Nom)&, const Nom&) const;
57 virtual void imprimer_ustar_mean_only(Sortie&, int, const LIST(Nom)&, const Nom&) const;
58 // rajout pour prendre en compte Cisaillement_paroi dans la classe de base
59
60 inline const DoubleTab& Cisaillement_paroi() const;
61 inline const DoubleVect& tab_u_star() const;
62 inline double tab_u_star(int face) const;
63 inline const DoubleVect& tab_d_plus() const;
64 inline double tab_d_plus(int face) const;
65
66 //OC 01/2006: ajout de la fonctionnalite sauvegarde/reprise : utile pour TBLE pour l'instant.
67 int sauvegarder(Sortie&) const override { return 0; }
68 int reprendre(Entree&) override { return 0; }
69 virtual std::vector<YAML_data> data_a_sauvegarder() const { return std::vector<YAML_data>(); }
70
71 void creer_champ(const Motcle& motlu) override;
72 const Champ_base& get_champ(const Motcle& nom) const override;
73 void get_noms_champs_postraitables(Noms& nom, Option opt = NONE) const override;
74 bool has_champ(const Motcle& nom, OBS_PTR(Champ_base) &ref_champ) const override;
75 bool has_champ(const Motcle& nom) const override;
76
77 // Ecriture dans un fichier separe de u_star, Cisaillement_paroi etc...
78 void ouvrir_fichier_partage(EcrFicPartage&, const Nom&) const;
79 void ouvrir_fichier_partage(EcrFicPartage&, const Nom&, const Nom&) const;
80 // indique si on utilise le cisaillement ou non
81 virtual bool use_shear() const { return true; } // Generalement true sauf par exemple pour loi paroi_negligeable_XXX
82
83protected:
84 OBS_PTR(Modele_turbulence_hyd_base) mon_modele_turb_hyd;
85 DoubleTab Cisaillement_paroi_; //valeurs des contraintes tangentielles aux
86 // parois calculees localement a partir de u*
87 DoubleVect tab_u_star_; // valeurs des u* calculees localement
88 DoubleVect tab_d_plus_; // valeurs des d+ calculees localement
89 mutable OWN_PTR(Champ_Fonc_base) champ_u_star_; // Champ pour postraitement
90 mutable int nb_impr_ = 0, nb_impr0_ = 0; // Compteur d'impression
91 Champs_compris champs_compris_;
92 OBS_PTR(Domaine_VF) le_dom_dis_;
94};
95
96/*! @brief Associe un modele de turbulence a l'objet.
97 *
98 * @param (Modele_turbulence_hyd_base& le_modele) le modele de turbulence hydraulique a associer a l'objet
99 */
101{
102 mon_modele_turb_hyd = le_modele;
103}
104
105/*! @brief Simple appel a int calculer_hyd(DoubleTab& ).
106 *
107 * @param (Champ_Inc_base& ch)
108 * @return (int) code de retour propage
109 */
111{
112 return calculer_hyd(ch.valeurs());
113}
114
115/*! @brief Simple appel a int calculer_hyd(DoubleTab&, DoubleTab&).
116 *
117 * @param (Champ_Inc_base& ch1)
118 * @param (Champ_Inc_base& ch2)
119 * @return (int) code de retour propage
120 */
122{
123 return calculer_hyd(ch1.valeurs(), ch2.valeurs());
124}
125
126inline const DoubleTab& Turbulence_paroi_base::Cisaillement_paroi() const
127{
128 return Cisaillement_paroi_;
129}
130
131inline const DoubleVect& Turbulence_paroi_base::tab_u_star() const
132{
133 return tab_u_star_;
134}
135
136inline double Turbulence_paroi_base::tab_u_star(int face) const
137{
138 return tab_u_star_(face);
139}
140
141inline const DoubleVect& Turbulence_paroi_base::tab_d_plus() const
142{
143 return tab_d_plus_;
144}
145
146inline double Turbulence_paroi_base::tab_d_plus(int face) const
147{
148 return tab_d_plus_(face);
149}
150
151inline void erreur_non_convergence()
152{
153 Cerr << "TRUST stopped cause in the function calculer_u_plus of wall law." << finl;
154 Cerr << "The iterative process of u* did not converge" << finl;
156 Cerr << " on the processor" << Process::me();
157 else
158 Cerr << ".";
159 Cerr << finl << "The hydraulic calculation is may be diverging." << finl;
161}
162
163#endif
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
Classe Champ_Inc_base.
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
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
class Domaine_VF
Definition Domaine_VF.h:44
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Classe Modele_turbulence_hyd_base Cette classe sert de base a la hierarchie des classes.
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
friend class Entree
Definition Objet_U.h:76
friend class Sortie
Definition Objet_U.h:75
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
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
static bool is_parallel()
Definition Process.cpp:110
static int me()
renvoie mon rang dans le groupe de communication courant.
Definition Process.cpp:125
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Definition Process.cpp:455
Classe de base des flux de sortie.
Definition Sortie.h:52
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.
OBS_PTR(Domaine_VF) le_dom_dis_
const DoubleTab & Cisaillement_paroi() const
const DoubleVect & tab_d_plus() const
virtual int calculer_hyd(DoubleTab &, DoubleTab &)=0
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.
virtual void imprimer_ustar(Sortie &) const
OBS_PTR(Domaine_Cl_dis_base) le_dom_Cl_dis_
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
virtual int init_lois_paroi()=0
virtual int calculer_hyd(DoubleTab &)=0
OWN_PTR(Champ_Fonc_base) champ_u_star_
int reprendre(Entree &) override
Reprise d'un Objet_U sur un flot d'entree Methode a surcharger.
void creer_champ(const Motcle &motlu) override
int calculer_hyd(Champ_Inc_base &)
Simple appel a int calculer_hyd(DoubleTab& ).
virtual std::vector< YAML_data > data_a_sauvegarder() const
virtual DoubleTab & corriger_derivee_impl(DoubleTab &d) const
virtual bool use_shear() const
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.
virtual int calculer_hyd_BiK(DoubleTab &, DoubleTab &)=0
int sauvegarder(Sortie &) const override
Sauvegarde d'un Objet_U sur un flot de sortie Methode a surcharger.
OBS_PTR(Modele_turbulence_hyd_base) mon_modele_turb_hyd
virtual void set_param(Param &param) const override