16#include <grad_Champ_Face_PolyMAC_MPFA.h>
17#include <Champ_Fonc_Elem_PolyMAC_CDO.h>
18#include <Frottement_impose_base.h>
19#include <Champ_Face_PolyMAC_MPFA.h>
77 domaine.fgrad(
champ_a_deriver().
valeurs().line_size(), 0, cls, f_cl,
nullptr,
nullptr, 1, full_stencil,
gradve_d,
gradve_e,
gradve_w);
96 const DoubleTab& tab_ch = ch.
passe();
99 for (f = 0; f < nf; f++)
101 for (d_U = 0; d_U < D; d_U++)
102 for (n = 0; n < N; n++)
104 val(f, d_U + n * D) = 0;
111 double val_e = tab_ch(nf_tot + d_U + e * D, n);
112 val(f, d_U + n * D) +=
gradve_w(j, n) * val_e;
114 else if (fcl(f_bord = e - ne_tot, 0) == 3)
116 double val_f_bord = ref_cast(
Dirichlet, cls[fcl(f_bord, 1)].valeur()).val_imp(fcl(f_bord, 2), N * d_U + n);
117 val(f, d_U + n * D) +=
gradve_w(j, n) * val_f_bord;
129 const DoubleVect& ve =
domaine.volumes(), &fs =
domaine.face_surfaces();
130 const IntTab& e_f =
domaine.elem_faces(), &f_e =
domaine.face_voisins();
135 for (e = 0; e < ne_tot; e++)
137 for (d = 0; d < D; d++)
138 for (n = 0; n < N; n++)
139 val(nf_tot + D * e + d, n) = 0;
140 for (j = 0; j < e_f.
dimension(1) && (f = e_f(e, j)) >= 0; j++)
141 for (fac = (e == f_e(f, 0) ? 1 : -1) * fs(f) / ve(e), d = 0; d < D; d++)
142 for (n = 0; n < N; n++)
143 val(nf_tot + D * e + d, n) += fac * (xv(f, d) - xp(e, d)) * val(f, n);
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
: class Champ_Face_PolyMAC_MPFA
const IntTab & fcl() const
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
virtual const Domaine & domaine() const
virtual const Domaine_VF & domaine_vf() const
void mettre_a_jour(double temps) override
Mise a jour en temps du champ.
virtual void creer_tableau_distribue(const MD_Vector &, RESIZE_OPTIONS=RESIZE_OPTIONS::COPY_INIT)
const Domaine_dis_base & domaine_dis_base() const override
DoubleTab & passe(int i=1) override
Renvoie les valeurs du champs a l'instant t-i.
const Domaine_Cl_dis_base & domaine_Cl_dis() const
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
double temps() const
Renvoie le temps du champ.
classe Conds_lim Cette classe represente un vecteur de conditions aux limites.
classe Dirichlet Cette classe est la classe de base de la hierarchie des conditions aux limites de ty...
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
Class defining operators and methods for all reading operation in an input flow (file,...
const Nom & le_nom() const override
Renvoie le nom du champ.
: Cette classe est un OWN_PTR mais l'objet pointe est partage entre plusieurs
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.
_SIZE_ dimension(int d) const
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")
class grad_Champ_Face_PolyMAC_MPFA for the calculation of the gradient This field is a Champ_Fonc_Fac...
void update_ge2(DoubleTab &val, int incr=0) const
int fixer_nb_valeurs_nodales(int n) override
Fixe le nombre de degres de liberte par composante.
void update_tab_grad(int full_stencil)
void mettre_a_jour(double) override
Mise a jour en temps du champ.
virtual Champ_Face_PolyMAC_MPFA & champ_a_deriver()