TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Paroi_std_hyd_VEF.h
1/****************************************************************************
2* Copyright (c) 2017, 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// .NOM Paroi_std_hyd_VEF :
17// .ENTETE TRUST VEF Turbulence
18// .LIBRAIRIE libhydVEFturb
19// .FILE Paroi_std_hyd_VEF.h
20// .FILE Paroi_std_hyd_VEF.cpp
21
22#ifndef Paroi_std_hyd_VEF_included
23#define Paroi_std_hyd_VEF_included
24
25#include <Paroi_hyd_base_VEF.h>
26#include <distances_VEF.h>
27#include <Paroi_log_QDM.h>
28#include <Modele_turbulence_hyd_K_Eps.h>
29#include <Modele_turbulence_hyd_K_Omega.h>
30
31
32class Champ_Fonc_base;
33
34/*! @brief CLASS: Paroi_std_hyd_VEF
35 *
36 * .SECTION voir aussi
37 * Turbulence_paroi_base
38 *
39 */
40void remplir_face_keps_imposee(int& flag_face_keps_imposee_,int methode_calcul_face_keps_impose_, IntVect& face_keps_imposee_, const Domaine_VEF& domaine_VEF,const Domaine_Cl_dis_base& le_dom_Cl_dis_,int is_champ_P1NC);
41
42
44{
45
46 Declare_instanciable_sans_constructeur(Paroi_std_hyd_VEF);
47
48public:
49
51 void set_param(Param& param) const override;
52 int init_lois_paroi() override;
53 int calculer_hyd(DoubleTab& ) override;
54 int calculer_hyd_BiK(DoubleTab& , DoubleTab& ) override;
55 int calculer_hyd(DoubleTab& , DoubleTab& ) override;
56
57 void imprimer_ustar(Sortie& ) const override;
58 double calculer_u_plus(const int ,const double ,const double erugu );
59
60 inline void check_turbulence_model();
61 KOKKOS_FUNCTION
62 void compute_turbulent_quantities(int, double&, double&, double d_plus, double u_star, double d_visco, double dist, const double Cmu, const double Kappa);
63 KOKKOS_FUNCTION
64 int calculer_k_eps(double& , double& , double , double , double , double, const double, const double);
65 KOKKOS_FUNCTION
66 void compute_k(double& k, const double yp, const double u_star, const double Cmu);
67 KOKKOS_FUNCTION
68 void compute_k_for_komega(double& k, const double yp, const double u_star, const double Cmu);
69 KOKKOS_FUNCTION
70 void compute_epsilon(double& epsilon, const double yp, const double u_star, const double d_visco, const double Kappa);
71 KOKKOS_FUNCTION
72 void compute_omega(double& omega, const double yp, const double u_star, const double d_visco, const double dist, const double Kappa);
73 KOKKOS_FUNCTION
74 void compute_k_epsilon(double& k, double& epsilon, const double yplus, const double u_star, const double d_visco, const double dist, const double Cmu, const double kappa);
75 KOKKOS_FUNCTION
76 void compute_k_omega(double& k, double& omega, const double yplus, const double u_star, const double d_visco, const double dist, const double Cmu, const double Kappa);
77
78protected:
79
80 int methode_calcul_face_keps_impose_; // 0 std avant: 1 toutes les faces accroches 2:: comme avant mais toutes les faces des elts accroches. 3: comme avant sans test si bord... 4: que les faces des elts acrroches
81
82 DoubleVect uplus_;
83
84 DoubleVect seuil_LP_;
86
90 virtual int init_lois_paroi_hydraulique();
91
92 int turbulence_model_type_ {0}; // To redirect the computation of the wall quantities
93
94 static constexpr double BETA_OMEGA {0.075};
95 static constexpr double BETA_K {0.09}; // equals to Cmu
96};
97
98KOKKOS_FUNCTION
99double calculer_u_plus(const int ind_face, const double u_plus_d_plus, const double erugu, const double Kappa, DoubleArrView seuil_LP, IntArrView iterations_LP);
100
101/*! @brief Returns an integer value depending on the turbulence model.
102 *
103 */
105{
107 // if (sub_type(Modele_turbulence_hyd_K_Eps, mon_modele_turb_hyd.valeur()))
108 // turbulence_model_type = 1;
109 if (sub_type(Modele_turbulence_hyd_K_Omega, mon_modele_turb_hyd.valeur()))
111 // else
112 // Process::exit("The turbulence model should either be K_Eps or K_Omega");
113}
114
115/*! @brief cette classe permet de specifier des options a la loi de paroi standard.
116 *
117 * Elle est reservee aux experts.
118 *
119 */
121{
122 Declare_instanciable(Loi_expert_hydr_VEF);
123};
124
125#endif
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
class Domaine_VEF
Definition Domaine_VEF.h:54
cette classe permet de specifier des options a la loi de paroi standard.
Classe Modele_turbulence_hyd_K_Omega Cette classe represente le modele de turbulence (k,...
friend class Sortie
Definition Objet_U.h:75
Helper class to factorize the readOn method of Objet_U classes.
Definition Param.h:112
CLASS: Paroi_hyd_base_VEF Classe de base des lois de paroi hydraulique en VEF.
Paroi_log_QDM()=default
int calculer_hyd_BiK(DoubleTab &, DoubleTab &) override
KOKKOS_FUNCTION void compute_omega(double &omega, const double yp, const double u_star, const double d_visco, const double dist, const double Kappa)
static constexpr double BETA_K
KOKKOS_FUNCTION void compute_epsilon(double &epsilon, const double yp, const double u_star, const double d_visco, const double Kappa)
void set_param(Param &param) const override
int init_lois_paroi() override
static constexpr double BETA_OMEGA
KOKKOS_FUNCTION void compute_k_omega(double &k, double &omega, const double yplus, const double u_star, const double d_visco, const double dist, const double Cmu, const double Kappa)
KOKKOS_FUNCTION void compute_k_for_komega(double &k, const double yp, const double u_star, const double Cmu)
KOKKOS_FUNCTION int calculer_k_eps(double &, double &, double, double, double, double, const double, const double)
void check_turbulence_model()
Returns an integer value depending on the turbulence model.
virtual int init_lois_paroi_hydraulique()
KOKKOS_FUNCTION void compute_k_epsilon(double &k, double &epsilon, const double yplus, const double u_star, const double d_visco, const double dist, const double Cmu, const double kappa)
int calculer_hyd(DoubleTab &) override
double calculer_u_plus(const int, const double, const double erugu)
void imprimer_ustar(Sortie &) const override
KOKKOS_FUNCTION void compute_turbulent_quantities(int, double &, double &, double d_plus, double u_star, double d_visco, double dist, const double Cmu, const double Kappa)
KOKKOS_FUNCTION void compute_k(double &k, const double yp, const double u_star, const double Cmu)