16#ifndef Eval_Darcy_VEF_Face_included
17#define Eval_Darcy_VEF_Face_included
19#include <Evaluateur_Source_VEF_Face.h>
20#include <Modele_Permeabilite_base.h>
21#include <Champ_Uniforme.h>
22#include <Domaine_VEF.h>
37 template <
typename Type_Double>
40 template <
typename Type_Double>
50 template <
typename Type_Double>
51 inline void calculer_terme_source(
int , Type_Double& ,
const DoubleVect&)
const;
55 DoubleTab db_diffusivite_;
61 int nb_faces_tot = ref_cast(
Domaine_VEF,le_dom.valeur()).nb_faces_tot();
62 db_diffusivite_.resize(nb_faces_tot, RESIZE_OPTIONS::NOCOPY_NOINIT);
69 int nb_faces_tot = ref_cast(
Domaine_VEF,le_dom.valeur()).nb_faces_tot();
71 db_diffusivite_ = diffusivite_->valeurs()(0, 0);
74 const DoubleTab& val_diff = diffusivite_->valeurs();
75 const IntTab& face_vois = le_dom->face_voisins();
76 const DoubleVect& volumes = ref_cast(
Domaine_VEF,le_dom.valeur()).volumes();
80 for (
int fac = 0; fac < nb_faces_tot; fac++)
82 int elem1 = face_vois(fac, 0);
83 int elem2 = face_vois(fac, 1);
87 db_diffusivite_(fac) += val_diff(elem1) * volumes(elem1);
88 vol += volumes(elem1);
92 db_diffusivite_(fac) += val_diff(elem2) * volumes(elem2);
93 vol += volumes(elem2);
95 db_diffusivite_(fac) /= vol;
101template <
typename Type_Double>
102inline void Eval_Darcy_VEF_Face::calculer_terme_source(
int num_face, Type_Double& source,
const DoubleVect& volumes)
const
104 int size = source.size_array();
105 for (
int i = 0; i < size; i++)
106 source[i] = -db_diffusivite_(num_face) / modK_->getK(porosite_) * volumes[num_face] *
porosite_surf[num_face] * (vitesse_->valeurs()(num_face, i));
115 KOKKOS_INLINE_FUNCTION
120 KOKKOS_INLINE_FUNCTION
classe Champ_Don_base classe de base des Champs donnes (non calcules)
KOKKOS_INLINE_FUNCTION void calculer_terme_source_non_standard_view(int num_face, DoubleArrView source) const
void set(const Eval_Darcy_VEF_Face &eval) const
KOKKOS_INLINE_FUNCTION void calculer_terme_source_standard_view(int num_face, DoubleArrView source) const
void mettre_a_jour() override
void associer(const Champ_Don_base &)
void calculer_terme_source_non_standard(const int num_face, Type_Double &source) const
void calculer_terme_source_standard(const int num_face, Type_Double &source) const
OWN_PTR(Modele_Permeabilite_base) modK_
void associer(const Champ_Inc_base &v)
Eval_Darcy_VEF_Face(const Eval_Darcy_VEF_Face &eval)
DoubleVect volumes_entrelaces
DoubleVect volumes_entrelaces_Cl
Evaluateur_Source_VEF_Face()
classe Modele_Permeabilite_base Cette classe de base represente un modele de permeabilite
static KOKKOS_INLINE_FUNCTION void Kokkos_exit(const char *)
Routine de sortie de TRUST dans une region Kokkos.