16#include <Perte_Charge_Reguliere_VEF_P1NC.h>
17#include <Domaine_VEF.h>
18#include <Sous_Domaine.h>
19#include <Fluide_Incompressible.h>
20#include <Equation_base.h>
21#include <Probleme_base.h>
23#include <Champ_Uniforme.h>
24#include <Matrice_Morse.h>
44 Cerr <<
" Perte_Charge_Reguliere_VEF_P1NC::readOn " << finl ;
63 Cerr <<
" Perte_Charge_Reguliere_VEF_P1NC::remplir_num_faces " << finl;
65 const Domaine_VEF& domaine_VEF = le_dom_VEF.valeur();
67 const IntTab& elem_faces = domaine_VEF.
elem_faces();
69 const DoubleVect& volumes = domaine_VEF.
volumes();
70 const Sous_Domaine& le_sous_domaine = le_domaine.
ss_domaine(un_nom_sous_domaine);
71 int nb_poly_ss_domaine = le_sous_domaine.
nb_elem_tot();
89 int num_elem,num_face, face_loc;
91 for (num_elem=0; num_elem<nb_poly_ss_domaine; num_elem++)
93 num_loc[le_sous_domaine(num_elem)] = num_elem;
96 for (num_elem=0; num_elem<nb_poly_ss_domaine; num_elem++)
98 num_poly = le_sous_domaine(num_elem);
99 for (face_loc = 0; face_loc < nfe ; face_loc++)
101 num_face = elem_faces(num_poly,face_loc);
102 if (fait(num_face) ==-1)
106 for (
int i=0; i<2; i++ )
108 num_poly_vois = face_voisins(num_face,i);
109 if (num_poly_vois != -1)
110 if (num_loc[num_poly_vois] == -1)
112 corr_front_ss[nfac-1] = volumes(num_poly)/(volumes(num_poly)+volumes(num_poly_vois)) ;
128 const DoubleTab& vit = la_vitesse->valeurs();
129 const IntTab& face_voisins = domaine_VEF.
face_voisins();
132 double Cf,CK,Reynolds;
136 const DoubleTab& visco = nu.
valeurs();
143 d_visco = ch_nu.
valeurs()(0,0);
150 Cerr <<
" PQ : 17/06/08 : Cette option a ete supprimee dans Perte_Charge_Reguliere_VEF_P1NC" << finl;
151 Cerr <<
" Possibilite de retrouver la meme fonctionnalite a l'aide du mot cle : " << finl;
152 Cerr <<
" Perte_charge_anisotrope (voir doc) " << finl;
159 for (
int i=0; i<nb_faces; i++)
165 n0 = face_voisins(numfa,0);
166 n1 = face_voisins(numfa,1);
167 if (numfa < premiere_face_int)
175 d_visco = 0.5*(visco[n0]+visco[n1]);
181 U_abs += vit(numfa,j)*vit(numfa,j);
184 U_abs = sqrt(U_abs) ;
187 Reynolds = U_abs*
D()/d_visco;
196 resu(numfa,direction) += CK*U_abs*vit(numfa,direction)*volumes_entrelaces(numfa)*porosite_face(numfa)*
corr_front_ss(i);
209 const DoubleTab& vit = la_vitesse->valeurs();
210 const IntTab& face_voisins = domaine_VEF.
face_voisins();
213 double Cf,CK,Reynolds;
217 const DoubleTab& visco = nu.
valeurs();
224 d_visco = ch_nu.
valeurs()(0,0);
231 Cerr <<
" PQ : 17/06/08 : Cette option a ete supprimee dans Perte_Charge_Reguliere_VEF_P1NC" << finl;
232 Cerr <<
" Possibilite de retrouver la meme fonctionnalite a l'aide du mot cle : " << finl;
233 Cerr <<
" Perte_charge_anisotrope (voir doc) " << finl;
240 for (
int i=0; i<nb_faces; i++)
246 n0 = face_voisins(numfa,0);
247 n1 = face_voisins(numfa,1);
248 if (numfa < premiere_face_int)
256 d_visco = 0.5*(visco[n0]+visco[n1]);
262 U_abs += vit(numfa,j)*vit(numfa,j);
265 U_abs = sqrt(U_abs) ;
268 Reynolds = U_abs*
D()/d_visco;
279 matrice.
coef(n0bis,n0bis)-=CK*U_abs*volumes_entrelaces(numfa)*porosite_face(numfa)*
corr_front_ss(i);
classe Champ_Don_base classe de base des Champs donnes (non calcules)
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
const Sous_Domaine_t & ss_domaine(int i) const
int nb_faces_elem(int=0) const
Renvoie le nombre de face de type i des elements geometriques constituants le domaine.
DoubleVect & volumes_entrelaces()
int nb_faces_tot() const
renvoie le nombre total de faces.
double volumes(int i) const
int elem_faces(int i, int j) const
renvoie le numero de le ieme face de la maille num_elem la facon dont ces faces sont numerotees est
int premiere_face_int() const
une face est interne ssi elle separe deux elements.
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
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
Probleme_base & probleme()
Renvoie le probleme associe a l'equation.
Classe Matrice_Morse Represente une matrice M (creuse), non necessairement carree.
double coef(int i, int j) const
DoubleVect & porosite_face()
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
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.
class Perte_Charge_Reguliere_VEF_P1NC
void completer() override
Met a jour les references internes a l'objet Source_base.
void contribuer_a_avec(const DoubleTab &, Matrice_Morse &) const override
contribution a la matrice implicite des termes sources par defaut pas de contribution
void remplir_num_faces(Nom &)
DoubleTab & ajouter(DoubleTab &) const override
double calculer_Cf_blasius(double) const
Entree & lire_donnees(Entree &)
Lit les specifications d'une perte de charge reguliere a partir d'un flot d'entree.
class Perte_Charge_VEF_Face
int direction_perte_charge() const
Renvoie la direction de perte de charge.
const Domaine & domaine() const
Renvoie le domaine associe au probleme.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.
virtual void completer()
Met a jour les references internes a l'objet Source_base.
int_t nb_elem_tot() const