16#include <Champ_Q1_EF.h>
17#include <Domaine_EF.h>
19#include <Equation_base.h>
20#include <distances_EF.h>
21#include <Dirichlet_paroi_fixe.h>
22#include <Dirichlet_paroi_defilante.h>
23#include <Equation_base.h>
24#include <Fluide_base.h>
25#include <Champ_Uniforme.h>
26#include <Modele_turbulence_hyd_base.h>
41 return ref_cast(
Domaine_EF, le_dom_VF.valeur());
48 const DoubleTab& coord =
domaine.coord_sommets();
49 const int nb_som =
domaine.nb_som();
50 const DoubleTab& val =
valeurs();
53 for (som = 0; som < nb_som; som++)
56 os << coord(som, 0) <<
" " << coord(som, 1) <<
" " << coord(som, 2) <<
" ";
58 os << coord(som, 0) <<
" " << coord(som, 1) <<
" ";
60 os << val(som) << finl;
62 os << val(som, ncomp) << finl;
65 Cout <<
"Champ_Q1_EF::imprime FIN >>>>>>>>>> " << finl;
80 const DoubleTab& Bij_thilde = domaine_EF_.
Bij_thilde();
86 operator_egal(gradient_elem, 0.);
88 for (
int num_elem = 0; num_elem < nb_elems; num_elem++)
94 for (
int j = 0; j < nb_som_elem; j++)
96 int s = elems(num_elem, j);
97 gradient_elem(num_elem, a, b) += vitesse(s, a) * Bij_thilde(num_elem, j, b);
99 gradient_elem(num_elem, a, b) /= volume_thilde(num_elem);
120 for (num_elem = 0; num_elem < nb_elems; num_elem++)
122 vorticite(num_elem) = gradient_elem(num_elem, 1, 0) - gradient_elem(num_elem, 0, 1);
128 for (num_elem = 0; num_elem < nb_elems; num_elem++)
130 vorticite(num_elem, 0) = gradient_elem(num_elem, 2, 1) - gradient_elem(num_elem, 1, 2);
131 vorticite(num_elem, 1) = gradient_elem(num_elem, 0, 2) - gradient_elem(num_elem, 2, 0);
132 vorticite(num_elem, 2) = gradient_elem(num_elem, 1, 0) - gradient_elem(num_elem, 0, 1);
147 int ndeb, nfin, elem, l_unif;
148 double norm_tau, u_etoile, norm_v = 0, dist, d_visco = 0, visco = 1.;
152 const IntTab& face_voisins =
domaine_EF.face_voisins();
154 int nsom_elem =
domaine_EF.domaine().nb_som_elem();
155 int nb_nodes_free = nsom_elem - nsom;
156 const IntTab& elems=
domaine_EF.domaine().les_elems() ;
161 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
165 visco = tab_visco(0, 0);
171 DoubleTab yplus_faces(1, 1);
172 int yplus_already_computed = 0;
174 const RefObjU& modele_turbulence = eqn_hydr.
get_modele(TURBULENCE);
183 yplus_already_computed = 1;
190 ArrOfInt nodes_face(nsom);
192 for (
int n_bord = 0; n_bord <
domaine_EF.nb_front_Cl(); n_bord++)
203 for (
int ind_face = ndeb; ind_face < nfin; ind_face++)
206 int num_face=le_bord.
num_face(ind_face);
207 if (face_voisins(num_face, 0) != -1)
208 elem = face_voisins(num_face, 0);
210 elem = face_voisins(num_face, 1);
212 if (yplus_already_computed)
215 y_plus(elem) = yplus_faces(num_face);
221 for(
int jsom=0; jsom<nsom; jsom++)
223 int num_som =
domaine_EF.face_sommets(num_face, jsom);
224 nodes_face[jsom] = num_som;
225 for(
int comp=0; comp<
dimension; comp++) vit_face[comp]+=vitesse(num_som,comp)/nsom;
229 for (
int i=0; i<nsom_elem; i++)
231 int node=elems(elem,i);
233 for(
int jsom=0; jsom<nsom; jsom++)
234 if (nodes_face[jsom] == node) IOK=0;
238 vit[j]+=(vitesse(node,j)-vit_face[j])/nb_nodes_free;
240 norm_v = norm_vit_lp(vit,num_face,
domaine_EF,val);
241 dist = distance_face_elem(num_face,elem,
domaine_EF);
246 d_visco = tab_visco[elem];
249 norm_tau = d_visco * norm_v / dist;
251 u_etoile = sqrt(norm_tau);
252 y_plus(elem) = dist * u_etoile / d_visco;
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 Domaine & domaine() const
int lire_donnees(Entree &)
Lit les valeurs du champs a partir d'un flot d'entree.
const Domaine_dis_base & domaine_dis_base() const override
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
int imprime(Sortie &, int) const override
const Domaine_EF & domaine_EF() const
void calcul_y_plus(const Domaine_Cl_EF &, DoubleTab &)
void gradient(DoubleTab &)
void cal_rot_ordre1(DoubleTab &)
classe Cond_lim Classe generique servant a representer n'importe quelle classe
static void verifier(const char *const msg, double)
classe Dirichlet_paroi_fixe Represente une paroi immobile dans une equation de type Navier_Stokes.
int nb_som_elem() const
Renvoie le nombre de sommets des elements geometriques constituants le domaine.
int_t nb_elem_tot() const
virtual void creer_tableau_elements(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
creation d'un tableau parallele de valeurs aux elements.
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
const DoubleTab & Bij_thilde() const
const DoubleVect & volumes_thilde() const
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,...
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
virtual const Milieu_base & milieu() const =0
virtual const RefObjU & get_modele(Type_modele type) const
virtual const Champ_Inc_base & inconnue() const =0
const Nom & le_nom() const override
Renvoie le nom du champ.
classe Fluide_base Cette classe represente un d'un fluide incompressible ainsi que
const Champ_Don_base & viscosite_cinematique() const
int num_face(const int) const
Classe Modele_turbulence_hyd_base Cette classe sert de base a la hierarchie des classes.
const Turbulence_paroi_base & loi_paroi() const
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
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.
virtual void ref(const TRUSTTab &)
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
_SIZE_ dimension_tot(int) const override
_SIZE_ dimension(int d) const
const Objet_U & valeur() const
Classe Turbulence_paroi_base Classe de base pour la hierarchie des classes representant les modeles.
const DoubleVect & tab_d_plus() const
virtual bool use_shear() const