TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Calcul_Production_K_VEF.h
1/****************************************************************************
2* Copyright (c) 2015 - 2016, 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 Calcul_Production_K_VEF_included
17#define Calcul_Production_K_VEF_included
18
19#include <TRUSTTabs_forward.h>
20#include <View_Types.h>
21
22class Champ_Don_base;
23class Domaine_Cl_VEF;
24class Domaine_VEF;
25
26// CLASS Calcul_Production_K_VEF
27// Classe qui porte les fonctions de calcul des termes de production de l'energie cinetique turbulente et de destruction
28// de cette energie. Cette classe ne derive d'aucune autre car nous voulons l'utiliser pour faire de l'heritage multiple.
30{
31protected:
33
34 // Standard TKE production
35 DoubleTab& calculer_terme_production_K(const Domaine_VEF&, const Domaine_Cl_VEF&, DoubleTab&, const DoubleTab&, const DoubleTab&, const DoubleTab&, const int& interpol_visco,
36 const double& limiteur, const bool& deactivate_production_limiter=false, const double& cst_production_limiter=0.) const;
37 void loop_for_internal_or_periodic_faces(DoubleTab& prodK, const DoubleTab& gradient_elem, const DoubleTab& visco_turb,
38 const DoubleVect& volumes, const IntTab& face_voisins, const int nfaceinit, const int nfaceend,
39 const int interpol_visco, const double limiteur, const DoubleTab& K_Omega, const bool& activate_production_limiter=false,const double& cst_production_limiter=0.) const;
40 void loop_for_non_periodic_boundaries(DoubleTab& prodK, const DoubleTab& gradient_elem, const DoubleTab& visco_turb,
41 const DoubleVect& volumes, const IntTab& face_voisins, const int nfaceinit, const int nfaceend,
42 const int interpol_visco, const double limiteur, const DoubleTab& K_Omega, const bool& activate_production_limiter=false,const double& cst_production_limiter=0.) const;
43
44 DoubleTab& calculer_terme_production_K_BiK(const Domaine_VEF&, const Domaine_Cl_VEF&, DoubleTab&, const DoubleTab&, const DoubleTab&, const DoubleTab&, const DoubleTab&, const int& interpol_visco, const double& limiteur) const;
45 // EASM
46 DoubleTab& calculer_terme_production_K_EASM(const Domaine_VEF&, const Domaine_Cl_VEF&, DoubleTab&, const DoubleTab&, const DoubleTab&, const DoubleTab&, const DoubleTab&, const int& interpol_visco, const double& limiteur) const;
47 void compute_production_term_EASM(const int face, const double visco_face, const DoubleTab& Re_face, const DoubleTab& gradient_face, DoubleTab& P) const;
48 DoubleTab& calcul_tenseur_face(DoubleTab&, const DoubleTab&, const Domaine_VEF&, const Domaine_Cl_VEF&) const;
49
50 // Commons
51 KOKKOS_INLINE_FUNCTION
52 double get_turbulent_viscosity(CDoubleArrView visco_turb, CDoubleArrView volumes, const int type_interpo, const int poly1, const int poly2, const double limiteur) const;
53 double get_turbulent_viscosity(const DoubleTab& visco_turb, const DoubleVect& volumes, const int type_interpo, const int poly1, const int poly2, const double limiteur) const;
54
55 // TKE destruction
56 DoubleTab& calculer_terme_destruction_K_gen(const Domaine_VEF&, const Domaine_Cl_VEF&, DoubleTab&, const DoubleTab&, const DoubleTab&, const Champ_Don_base&, const DoubleVect&, int) const;
57 void compute_utheta_nbConsti_le_1_nbCompo_eq_0(const Domaine_VEF& domaine_VEF, const Domaine_Cl_VEF& zcl_VEF, const IntTab& face_voisins, const DoubleVect& volumes, const DoubleTab& tab_beta, const DoubleTab& alpha_turb, const DoubleTrav& gradient_elem, DoubleTrav& u_theta) const;
58 void compute_utheta_nbConsti_le_1_nbCompo_eq_1(const Domaine_VEF& domaine_VEF, const Domaine_Cl_VEF& zcl_VEF, const IntTab& face_voisins, const DoubleVect& volumes, const DoubleTab& tab_beta, const DoubleTab& alpha_turb, const DoubleTrav& gradient_elem, DoubleTrav& u_theta) const;
59 void compute_utheta_nbConsti_le_1_nbCompo_gt_1(const Domaine_VEF& domaine_VEF, const Domaine_Cl_VEF& zcl_VEF, const IntTab& face_voisins, const DoubleVect& volumes, const DoubleTab& tab_beta, const DoubleTab& alpha_turb, const DoubleTrav& gradient_elem, DoubleTrav& u_theta) const;
60 void compute_utheta_nbConsti_gt_1_nbCompo_eq_0(const Domaine_VEF& domaine_VEF, const Domaine_Cl_VEF& zcl_VEF, const IntTab& face_voisins, const DoubleVect& volumes, const DoubleTab& tab_beta, const DoubleTab& alpha_turb, const DoubleTrav& gradient_elem, const int nb_consti, DoubleTrav& u_theta) const;
61 void compute_utheta_nbConsti_gt_1_nbCompo_eq_1(const Domaine_VEF& domaine_VEF, const Domaine_Cl_VEF& zcl_VEF, const IntTab& face_voisins, const DoubleVect& volumes, const DoubleTab& tab_beta, const DoubleTab& alpha_turb, const DoubleTrav& gradient_elem, const int nb_consti, DoubleTrav& u_theta) const;
62 void compute_utheta_nbConsti_gt_1_nbCompo_gt_1(const Domaine_VEF& domaine_VEF, const Domaine_Cl_VEF& zcl_VEF, const IntTab& face_voisins, const DoubleVect& volumes, const DoubleTab& tab_beta, const DoubleTab& alpha_turb, const DoubleTrav& gradient_elem, const int nb_consti, DoubleTrav& u_theta) const;
63
64 void mettre_a_jour(double temps) { }
65};
66
67#endif /* Calcul_Production_K_VEF_included */
void compute_utheta_nbConsti_le_1_nbCompo_eq_0(const Domaine_VEF &domaine_VEF, const Domaine_Cl_VEF &zcl_VEF, const IntTab &face_voisins, const DoubleVect &volumes, const DoubleTab &tab_beta, const DoubleTab &alpha_turb, const DoubleTrav &gradient_elem, DoubleTrav &u_theta) const
void compute_utheta_nbConsti_gt_1_nbCompo_eq_1(const Domaine_VEF &domaine_VEF, const Domaine_Cl_VEF &zcl_VEF, const IntTab &face_voisins, const DoubleVect &volumes, const DoubleTab &tab_beta, const DoubleTab &alpha_turb, const DoubleTrav &gradient_elem, const int nb_consti, DoubleTrav &u_theta) const
void compute_utheta_nbConsti_le_1_nbCompo_eq_1(const Domaine_VEF &domaine_VEF, const Domaine_Cl_VEF &zcl_VEF, const IntTab &face_voisins, const DoubleVect &volumes, const DoubleTab &tab_beta, const DoubleTab &alpha_turb, const DoubleTrav &gradient_elem, DoubleTrav &u_theta) const
void loop_for_non_periodic_boundaries(DoubleTab &prodK, const DoubleTab &gradient_elem, const DoubleTab &visco_turb, const DoubleVect &volumes, const IntTab &face_voisins, const int nfaceinit, const int nfaceend, const int interpol_visco, const double limiteur, const DoubleTab &K_Omega, const bool &activate_production_limiter=false, const double &cst_production_limiter=0.) const
Compute production term on non periodic boundary faces.
void compute_production_term_EASM(const int face, const double visco_face, const DoubleTab &Re_face, const DoubleTab &gradient_face, DoubleTab &P) const
void compute_utheta_nbConsti_gt_1_nbCompo_gt_1(const Domaine_VEF &domaine_VEF, const Domaine_Cl_VEF &zcl_VEF, const IntTab &face_voisins, const DoubleVect &volumes, const DoubleTab &tab_beta, const DoubleTab &alpha_turb, const DoubleTrav &gradient_elem, const int nb_consti, DoubleTrav &u_theta) const
DoubleTab & calculer_terme_destruction_K_gen(const Domaine_VEF &, const Domaine_Cl_VEF &, DoubleTab &, const DoubleTab &, const DoubleTab &, const Champ_Don_base &, const DoubleVect &, int) const
DoubleTab & calculer_terme_production_K(const Domaine_VEF &, const Domaine_Cl_VEF &, DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const int &interpol_visco, const double &limiteur, const bool &deactivate_production_limiter=false, const double &cst_production_limiter=0.) const
Compute the production term for the turbulent kinetic energy.
void compute_utheta_nbConsti_le_1_nbCompo_gt_1(const Domaine_VEF &domaine_VEF, const Domaine_Cl_VEF &zcl_VEF, const IntTab &face_voisins, const DoubleVect &volumes, const DoubleTab &tab_beta, const DoubleTab &alpha_turb, const DoubleTrav &gradient_elem, DoubleTrav &u_theta) const
DoubleTab & calcul_tenseur_face(DoubleTab &, const DoubleTab &, const Domaine_VEF &, const Domaine_Cl_VEF &) const
DoubleTab & calculer_terme_production_K_EASM(const Domaine_VEF &, const Domaine_Cl_VEF &, DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const int &interpol_visco, const double &limiteur) const
KOKKOS_INLINE_FUNCTION double get_turbulent_viscosity(CDoubleArrView visco_turb, CDoubleArrView volumes, const int type_interpo, const int poly1, const int poly2, const double limiteur) const
Get the turbulent viscosity depending on the interpolation choice.
DoubleTab & calculer_terme_production_K_BiK(const Domaine_VEF &, const Domaine_Cl_VEF &, DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const int &interpol_visco, const double &limiteur) const
void loop_for_internal_or_periodic_faces(DoubleTab &prodK, const DoubleTab &gradient_elem, const DoubleTab &visco_turb, const DoubleVect &volumes, const IntTab &face_voisins, const int nfaceinit, const int nfaceend, const int interpol_visco, const double limiteur, const DoubleTab &K_Omega, const bool &activate_production_limiter=false, const double &cst_production_limiter=0.) const
Compute production term on internal and periodic boundary faces.
void compute_utheta_nbConsti_gt_1_nbCompo_eq_0(const Domaine_VEF &domaine_VEF, const Domaine_Cl_VEF &zcl_VEF, const IntTab &face_voisins, const DoubleVect &volumes, const DoubleTab &tab_beta, const DoubleTab &alpha_turb, const DoubleTrav &gradient_elem, const int nb_consti, DoubleTrav &u_theta) const
classe Champ_Don_base classe de base des Champs donnes (non calcules)
class Domaine_VEF
Definition Domaine_VEF.h:54