16#include <Source_Generique_Face_PolyMAC_CDO.h>
17#include <Domaine_PolyMAC_MPFA.h>
18#include <Champ_Face_PolyMAC_CDO.h>
19#include <Domaine_Cl_PolyMAC_family.h>
21#include <Equation_base.h>
22#include <Milieu_base.h>
37inline double valeur(
const DoubleTab& valeurs_champ,
int elem1,
int elem2,
const int compo)
40 return valeurs_champ(0, compo);
45 if (valeurs_champ.
nb_dim() == 1)
46 return 0.5 * (valeurs_champ(elem1) + valeurs_champ(elem2));
48 return 0.5 * (valeurs_champ(elem1, compo) + valeurs_champ(elem2, compo));
66 const Champ_base& la_source = ch_source_->get_champ(espace_stockage);
70 const IntTab& f_e = domaine.face_voisins();
71 const DoubleTab& xv = domaine.xv(), &xp = domaine.xp();
73 for (
int n_bord = 0; n_bord < domaine.nb_front_Cl(); n_bord++)
81 int e = domaine.face_voisins(f, 0);
82 double fac = pf(f) * fs(f);
84 resu(f) += fac * la_source.
valeurs()(f) * (xv(f, r) - xp(e, r));
88 for (
int f = domaine.premiere_face_int(); f < domaine.nb_faces(); f++)
90 double fac = pf(f) * fs(f);
91 for (
int i = 0; i < 2; i++)
92 for (
int r = 0, e = f_e(f, i); r <
dimension; r++)
93 resu(f) += fac * la_source.
valeurs()(f) * (xv(f, r) - xp(e, r)) * (i ? -1 : 1);
101 const Champ_base& la_source = ch_source_->get_champ(espace_stockage);
105 for (
int f = 0, calc_cl = !sub_type(
Domaine_PolyMAC_MPFA, domaine); f < domaine.nb_faces(); f++)
106 if (calc_cl || fcl(f, 0) < 2)
107 resu(f) += pf(f) * vf(f) * la_source.
valeurs()(f);
virtual DoubleTab & valeurs()=0
classe Champ_base Cette classe est la base de la hierarchie des champs.
classe Cond_lim Classe generique servant a representer n'importe quelle classe
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const Milieu_base & milieu() const =0
int num_premiere_face() const
DoubleVect & porosite_face()
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
Classe Neumann_homogene Cette classe est la classe de base de la hierarchie des conditions aux limite...
Classe Neumann Cette classe est la classe de base de la hierarchie des conditions aux limites de type...
class Nom Une chaine de caractere pour nommer les objets de TRUST
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.
Classe de base des flux de sortie.
DoubleTab & ajouter(DoubleTab &) const override
Nom localisation_source() override
void associer_domaines(const Domaine_dis_base &, const Domaine_Cl_dis_base &) override
DoubleTab & ajouter(DoubleTab &) const override
classe Source_Generique_base Cette classe est la base de la hierarchie des sources portant
OWN_PTR(Champ_Generique_base) ch_source_
_SIZE_ dimension(int d) const