16#include <Source_Reaction_Particules_VDF.h>
18#include <Transport_Marqueur_FT.h>
20#include <Domaine_VDF.h>
21#include <Champ_implementation_P1.h>
23#include <Dirichlet_homogene.h>
24#include <Milieu_base.h>
25#include <MD_Vector_tools.h>
26#include <Probleme_base.h>
47 const DoubleTab& source_action = eq_marqueur_->source_stockage();
51 const Domaine& domaine_geom = zdis.
domaine();
53 const IntTab& sommet_poly = domaine_geom.
les_elems();
57 const DoubleTab& positions = maillage.
sommets();
64 int nb_som_face = domaine_geom.type_elem()->nb_som_face();
71 const int nb_elem_reels = domaine_geom.
nb_elem();
74 DoubleTab source_som(0, dim);
83 const DoubleTab& rho_faces = champ_rho.
valeurs();
88 for (
int pos=0; pos<nb_pos; pos++)
90 x_pos = positions(pos,0);
91 y_pos = positions(pos,1);
93 z_pos = positions(pos,2);
98 if (elem < nb_elem_reels)
100 for (
int som=0; som<nb_som_elem; som++)
102 som_glob = sommet_poly(elem,som);
104 coord_b = coord_barycentrique_P1_rectangle(sommet_poly,coord,x_pos,y_pos,elem,som) ;
106 coord_b = coord_barycentrique_P1_hexaedre(sommet_poly,coord,x_pos,y_pos,z_pos,elem,som) ;
107 for (
int k=0; k<dim; k++)
108 source_som(som_glob,k) -= source_action(pos,k)*coord_b;
120 for (num_cl=0 ; num_cl<zdis.
nb_front_Cl() ; num_cl++)
125 int nfin = ndeb + le_bord.
nb_faces();
129 for (
int face=ndeb ; face<nfin ; face++)
131 int ncomp = orient(face);
134 rho = (is_FT==1?rho_faces(face):rho_faces(0,0));
135 for (
int nbsf=0; nbsf<nb_som_face; nbsf++)
137 som_glob = face_som(face,nbsf);
138 resu(face) += (1./nb_som_face)*source_som(som_glob,ncomp)/rho;
144 for (
int face=premiere_face_interne; face<nb_faces; face++)
146 int ncomp = orient(face);
149 rho = (is_FT==1?rho_faces(face):rho_faces(0,0));
151 for (
int nbsf=0; nbsf<nb_som_face; nbsf++)
153 som_glob = face_som(face,nbsf);
154 resu(face) += (1./nb_som_face)*source_som(som_glob,ncomp)/rho;
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 Dirichlet_homogene Cette classe est la classe de base de la hierarchie des conditions aux limi...
classe Dirichlet Cette classe est la classe de base de la hierarchie des conditions aux limites de ty...
int nb_som_elem() const
Renvoie le nombre de sommets des elements geometriques constituants le domaine.
const DoubleTab_t & coord_sommets() const
virtual void creer_tableau_sommets(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
Cree un tableau ayant une "ligne" par sommet du maillage.
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.
int orientation(int) const override
inline DoubleVect& Domaine_VDF::porosite_face() {
int nb_faces() const
renvoie le nombre global de faces.
int face_sommets(int i, int j) const
renvoie le numero du ieme sommet de la face num_face.
int premiere_face_int() const
une face est interne ssi elle separe deux elements.
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
const Domaine & domaine() const
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const Milieu_base & milieu() const =0
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.
Domaine_dis_base & domaine_dis()
Renvoie le domaine discretise associe a l'equation.
int num_premiere_face() const
: class Maillage_FT_Disc Cette classe decrit un maillage:
const DoubleTab & sommets() const
renvoie le tableau des sommets (reels et virtuels) dimension(0) = nombre de sommets,
const ArrOfInt & sommet_elem() const
pour postraitement, renvoie sommet_elem_
virtual const Champ_base & masse_volumique() const
Renvoie la masse volumique du milieu.
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
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.
bool is_dilatable() const
Classe de base des flux de sortie.
Classe Source_Reaction_Particules_VDF.
DoubleTab & ajouter(DoubleTab &) const override
Classe Source_Reaction_Particules Calcul du terme source a ajouter dans Navier_Stokes pour prendre en...
_SIZE_ dimension(int d) const