16#include <Terme_Boussinesq_VEF_Face.h>
17#include <Fluide_Incompressible.h>
18#include <Champ_Uniforme.h>
19#include <Domaine_VEF.h>
20#include <Domaine_Cl_VEF.h>
21#include <Navier_Stokes_std.h>
22#include <Synonyme_info.h>
57 const Domaine_VEF& domaine_VEF = le_dom_VEF.valeur();
59 CDoubleArrView scalaire0 =
Scalaire0_.view_ro();
61 CDoubleArrView g =
static_cast<const DoubleVect&
>(
gravite().
valeurs()).view_ro();
62 CDoubleTabView xv = domaine_VEF.
xv().view_ro();
63 CDoubleTabView xp = domaine_VEF.
xp().view_ro();
65 CDoubleTabView face_normales = domaine_VEF.
face_normales().view_ro();
66 CDoubleTabView param = tab_param.
view_ro();
67 CIntTabView face_voisins = domaine_VEF.
face_voisins().view_ro();
68 DoubleTabView resu = tab_resu.
view_rw();
71 int nb_faces = domaine_VEF.
nb_faces();
76 Kokkos::parallel_for(start_gpu_timer(__KERNEL_NAME__),
78 KOKKOS_LAMBDA (
int face)
80 int elem1 = face_voisins(face,0);
81 int elem2 = face_voisins(face,1);
83 double delta_param = 0.0;
84 for (
int compo = 0; compo < nbcomp_param; compo++)
85 delta_param += valeur(beta_v,beta_dimension0,beta_nb_dim,elem1,elem2,compo,nbcomp_param)*(scalaire0(compo)-param(face,compo));
87 for (
int comp = 0; comp < dim; comp++)
91 delta_coord = xv(face,comp) - xp(elem1,comp);
93 delta_coord = xp(elem2,comp) - xp(elem1,comp);
95 for (
int compo = 0; compo < nbcomp; compo++)
96 resu(face,compo) += delta_param*delta_coord*face_normales(face,compo)*g(comp)*porosite_surf(face);
99 end_gpu_timer(__KERNEL_NAME__);
DoubleTab & valeurs() override
Overrides Champ_base::valeurs() Returns the array of values.
DoubleTab & valeurs() override
Returns the array of field values at the current time.
const Champ_Inc_base & inconnue() const override=0
class Domaine_Cl_dis_base Domaine_Cl_dis_base objects represent discretized boundary conditions
int nb_faces() const
Returns the total number of faces.
virtual double face_normales(int face, int comp) const
double xv(int num_face, int k) const
double xp(int num_elem, int k) const
int face_voisins(int num_face, int i) const
Returns the neighbouring element of num_face in direction i.
class Domaine_dis_base This class is the base of the hierarchy of discretized domains.
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const Milieu_base & milieu() const =0
DoubleVect & porosite_face()
const Equation_base & equation() const
Returns the reference to the equation pointed to by MorEqn::mon_equation.
const Nom & que_suis_je() const
Returns the string identifying the class.
virtual Entree & readOn(Entree &)
Reads an Objet_U from an input stream. Virtual method to override.
virtual Sortie & printOn(Sortie &) const
Writes the object to an output stream. Virtual method to override.
Base class for output streams.
std::enable_if_t< is_default_exec_space< EXEC_SPACE >, ConstView< _TYPE_, _SHAPE_ > > view_ro() const
std::enable_if_t< is_default_exec_space< EXEC_SPACE >, View< _TYPE_, _SHAPE_ > > view_rw()
_SIZE_ dimension(int d) const
Boussinesq source term for a VEF discretization.
DoubleTab & ajouter(DoubleTab &) const override
void associer_domaines(const Domaine_dis_base &, const Domaine_Cl_dis_base &) override
Classe Terme_Boussinesq_base This class represents the gravity term appearing in the momentum equatio...
const Convection_Diffusion_std & equation_scalaire() const
const Champ_Don_base & gravite() const
const ArrOfDouble & getScalaire0() const
const Champ_Don_base & beta() const