16#include <Convection_Diffusion_Chaleur_WC.h>
17#include <Source_WC_Chaleur_VDF.h>
18#include <Neumann_sortie_libre.h>
19#include <Domaine_Cl_dis_base.h>
20#include <Navier_Stokes_WC.h>
21#include <Probleme_base.h>
22#include <Domaine_VF.h>
64 const Domaine_dis_base& domaine_dis = mon_equation->inconnue().domaine_dis_base();
66 assert (domaine_dis.
que_suis_je() ==
"Domaine_VDF");
72 DoubleTab UgradP(grad_Ptot);
74 assert ( n == domaine.nb_faces_tot() && la_vitesse.
line_size() == 1);
77 for (
int i=0 ; i <n ; i++) UgradP(i,0) = la_vitesse(i,0) * grad_Ptot(i,0);
78 face_to_elem(domaine,UgradP,UgradP_elem);
82void Source_WC_Chaleur_VDF::face_to_elem(
const Domaine_VF& domaine,
const DoubleTab& UgradP,DoubleTab& UgradP_elem)
const
84 const IntTab& elem_faces = domaine.elem_faces();
85 const int nb_face_elem = elem_faces.
line_size(), nb_elem_tot= domaine.nb_elem_tot();
89 for (
int ele=0; ele<nb_elem_tot; ele++)
90 for (
int s=0; s<nb_face_elem; s++) UgradP_elem(ele,0) += UgradP(elem_faces(ele,s),0);
96void Source_WC_Chaleur_VDF::compute_interpolate_gradP_old(DoubleTab& UgradP_elem,
const DoubleTab& Ptot)
const
99 const Navier_Stokes_WC& eqHyd = ref_cast(Navier_Stokes_WC,mon_equation->probleme().equation(0));
103 gradient.calculer(Ptot,grad_Ptot);
122 const Domaine_VF& domaine = ref_cast(Domaine_VF, domaine_dis);
124 assert (domaine_dis.
que_suis_je() ==
"Domaine_VDF");
126 for (
int n_bord=0; n_bord<domaine.nb_front_Cl(); n_bord++)
130 if ( sub_type(Neumann_sortie_libre,la_cl.valeur()) )
133 const Front_VF& le_bord = ref_cast(Front_VF,la_cl->frontiere_dis());
136 for (
int num_face=ndeb; num_face<nfin; num_face++) grad_Ptot(num_face,0) = 0.;
141 DoubleTab UgradP(grad_Ptot);
143 assert ( n == domaine.nb_faces() );
144 assert ( Ptot.
dimension(0) == domaine.nb_elem() );
145 for (
int i=0 ; i <n ; i++) UgradP(i,0) = la_vitesse(i,0) * grad_Ptot(i,0);
146 face_to_elem(domaine,UgradP,UgradP_elem);
const Domaine_dis_base & domaine_dis_base() const override
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
classe Convection_Diffusion_Chaleur_WC Cas particulier de Convection_Diffusion_Chaleur_Fluide_Dilatab...
const Operateur_Grad & operateur_gradient_WC() const
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,...
Solveur_Masse_base & solv_masse()
Renvoie le solveur de masse associe a l'equation.
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
Probleme_base & probleme()
Renvoie le probleme associe a l'equation.
int num_premiere_face() const
classe Navier_Stokes_WC Cette classe porte les termes de l'equation de la dynamique
const Champ_Inc_base & inconnue() const override
Renvoie la vitesse (champ inconnue de l'equation) (version const).
virtual const Champ_Inc_base & vitesse() const
Operateur_Grad & operateur_gradient()
Renvoie l'operateur de calcul du gradient associe a l'equation.
Champ_Inc_base & grad_P()
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 Operateur_Grad Classe generique de la hierarchie des operateurs calculant le gradient.
DoubleTab & calculer(const DoubleTab &, DoubleTab &) const override
Initialise le tableau passe en parametre avec la contribution de l'operateur.
virtual const Equation_base & equation(int) const =0
virtual DoubleTab & appliquer(DoubleTab &) const
renvoie appliquer_impl(x/coeffient_temporelle) si on a un coefficient temporel sinon renvoie applique...
Classe de base des flux de sortie.
void associer_volume_porosite_impl(const Domaine_dis_base &domaine, DoubleVect &volumes, DoubleVect &porosites)
void associer_domaines_impl(const Domaine_dis_base &domaine, const Domaine_Cl_dis_base &domaine_cl)
class Source_WC_Chaleur_VDF
void compute_interpolate_gradP(DoubleTab &gradP, const DoubleTab &Ptot) const override
void associer_domaines(const Domaine_dis_base &domaine, const Domaine_Cl_dis_base &zcl) override
const DoubleTab & correct_grad_boundary(const Domaine_VF &domaine, DoubleTab &grad_Ptot) const
_SIZE_ dimension_tot(int) const override
_SIZE_ dimension(int d) const