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
Returns the array of field values at the current time.
Particular case of Convection_Diffusion_Chaleur_Fluide_Dilatable_base for a weakly compressible fluid...
const Operateur_Grad & operateur_gradient_WC() const
class Domaine_Cl_dis_base Domaine_Cl_dis_base objects represent discretized boundary conditions
const Cond_lim & les_conditions_limites(int) const
Returns the i-th boundary condition.
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,...
Solveur_Masse_base & solv_masse()
Returns the mass solver associated with the equation.
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Returns the discretized boundary condition domain associated with the equation.
Probleme_base & probleme()
Returns the problem associated with the equation.
int num_premiere_face() const
Carries the terms of the momentum equation for a weakly compressible fluid without turbulence modelli...
const Champ_Inc_base & inconnue() const override
Returns the velocity (unknown field of the equation) (const version).
virtual const Champ_Inc_base & vitesse() const
Operateur_Grad & operateur_gradient()
Returns the gradient operator associated with the equation.
Champ_Inc_base & grad_P()
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.
Classe Operateur_Grad Generic class of the hierarchy of operators computing the gradient.
DoubleTab & calculer(const DoubleTab &, DoubleTab &) const override
Initializes the array passed as parameter with the contribution of the operator.
virtual const Equation_base & equation(int) const =0
virtual DoubleTab & appliquer(DoubleTab &) const
Returns appliquer_impl(x/temporal_coefficient) if a temporal coefficient is set, otherwise returns ap...
Base class for output streams.
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