16#include <Op_Diff_K_Eps_VEF_Face.h>
17#include <Paroi_hyd_base_VEF.h>
31void Op_Diff_K_Eps_VEF_Face::divide_nu_turb_by_prandtl(DoubleTab& tab_nu_turb_m)
const
35 int n_tot =
nu_.dimension_tot(0);
36 tab_nu_turb_m.
resize(n_tot, 2);
38 DoubleTabView nu_turb_m = tab_nu_turb_m.
view_wo();
39 Kokkos::parallel_for(start_gpu_timer(__KERNEL_NAME__), n_tot, KOKKOS_LAMBDA(
const int k)
41 nu_turb_m(k,0) = nu_turb(k)/Prdt0;
42 nu_turb_m(k,1) = nu_turb(k)/Prdt1;
44 end_gpu_timer(__KERNEL_NAME__);
53 flux_bords_.resize(le_dom_vef->nb_faces_bord(), nb_comp);
57 divide_nu_turb_by_prandtl(nu_turb_m);
73 divide_nu_turb_by_prandtl(nu_turb_m);
77 DoubleTrav porosite_eventuelle(
equation().milieu().porosite_face());
79 if (!marq) porosite_eventuelle = 1;
94 if (paroi.face_keps_imposee().size_array()>0)
101 CIntArrView face_keps_imposee = paroi.face_keps_imposee().view_ro();
102 auto tab1 = matrice.
get_tab1().view_ro();
105 DoubleTabView secmem = tab_secmem.
view_wo();
106 Kokkos::parallel_for(start_gpu_timer(__KERNEL_NAME__), size, KOKKOS_LAMBDA(
const int face)
108 if (face_keps_imposee(face)!=-2)
110 for (
int comp=0; comp<nb_comp; comp++)
113 int idiag = tab1(face*nb_comp+comp)-1;
116 int nbvois = tab1(face*nb_comp+1+comp) - tab1(face*nb_comp+comp);
117 for (
int k=1; k < nbvois; k++)
119 secmem(face,comp) = val(face,comp);
123 end_gpu_timer(__KERNEL_NAME__);
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const Milieu_base & milieu() const =0
virtual const Champ_Inc_base & inconnue() const =0
Classe Matrice_Morse Represente une matrice M (creuse), non necessairement carree.
const auto & get_tab1() const
DoubleVect & porosite_face()
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
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.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
class Op_Diff_K_Eps_VEF_Face Cette classe represente l'operateur de diffusion turbulente
DoubleTab & ajouter(const DoubleTab &, DoubleTab &) const override
void modifier_pour_Cl(Matrice_Morse &matrice, DoubleTab &secmem) const override
DOES NOTHING - to override in derived classes.
void contribuer_a_avec(const DoubleTab &, Matrice_Morse &) const override
DOES NOTHING - to override in derived classes.
class Op_Diff_K_Eps_VEF_Face Cette classe represente l'operateur de diffusion turbulente
const Champ_Fonc_base & diffusivite_turbulente() const
int phi_psi_diffuse(const Equation_base &eq) const
definit si on calcule div(phi nu grad Psi) ou div(nu grap Phi psi)
virtual void remplir_nu(DoubleTab &) const
std::enable_if_t< _TYPE_==Type_Champ::VECTORIEL, void > ajouter_bord_gen(const DoubleTab &, DoubleTab &, DoubleTab &, const DoubleTab &, const DoubleTab &) const
void ajouter_contribution_bord_gen(const DoubleTab &, Matrice_Morse &, const DoubleTab &, const DoubleTab &, const DoubleVect &) const
std::enable_if_t< _TYPE_==Type_Champ::VECTORIEL, void > ajouter_interne_gen(const DoubleTab &, DoubleTab &, DoubleTab &, const DoubleTab &, const DoubleTab &) const
void ajouter_contribution_interne_gen(const DoubleTab &inco, Matrice_Morse &mat, const DoubleTab &nu, const DoubleTab &nu_turb, const DoubleVect &porosite_eventuelle) const
void modifier_pour_Cl(Matrice_Morse &matrice, DoubleTab &secmem) const override
DOES NOTHING - to override in derived classes.
void modifier_matrice_pour_periodique_apres_contribuer(Matrice_Morse &matrice, const Equation_base &) const
Somme les 2 lignes des faces periodiques associees permet de calculer dans le code sans se poser de q...
void modifier_matrice_pour_periodique_avant_contribuer(Matrice_Morse &matrice, const Equation_base &) const
divise les coefficients sur les ligne des faces periodiques par 2 en prevision de l'application modif...
void modifier_flux(const Operateur_base &) const
CLASS: Paroi_hyd_base_VEF Classe de base des lois de paroi hydraulique en VEF.
Classe de base des flux de sortie.
std::enable_if_t< is_default_exec_space< EXEC_SPACE >, View< _TYPE_, _SHAPE_ > > view_wo()
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
std::enable_if_t< is_default_exec_space< EXEC_SPACE >, ConstView< _TYPE_, _SHAPE_ > > view_ro() const
_SIZE_ dimension(int d) const
Classe Turbulence_paroi_base Classe de base pour la hierarchie des classes representant les modeles.