16#include <Champ_Generique_Tparoi_VEF.h>
17#include <Probleme_base.h>
20#include <Domaine_VEF.h>
21#include <Domaine_Cl_VEF.h>
22#include <Equation_base.h>
23#include <Modele_turbulence_scal_base.h>
24#include <Neumann_paroi.h>
25#include <Neumann_homogene.h>
26#include <Discretisation_base.h>
27#include <Synonyme_info.h>
70 espace_stockage = espace_stockage_fonc;
73 return espace_stockage;
95 espace_stockage = espace_stockage_fonc;
97 DoubleTab& valeurs_espace = espace_stockage->
valeurs();
98 const DoubleTab& source_so_val = source.
valeurs();
99 const DoubleTab& inconnue = source_so_val;
100 valeurs_espace = source_so_val;
105 const RefObjU& modele_turbulence = my_eqn.
get_modele(TURBULENCE);
116 const IntTab& elem_faces = domaine_VEF.
elem_faces();
117 const DoubleVect& vol = domaine_VEF.
volumes();
118 const IntTab& face_voisins = domaine_VEF.
face_voisins();
122 DoubleVect le_mauvais_gradient(nb_dim_pb);
124 for (
int n_bord=0; n_bord<nb_front; n_bord++)
152 ToDo_Kokkos(
"boundary");
153 for (
int ind_face=num1; ind_face<num2; ind_face++)
159 le_mauvais_gradient=0.;
160 int num_face = le_bord.
num_face(ind_face);
161 int elem1 = face_voisins(num_face,0);
162 if (elem1==-1) elem1 = face_voisins(num_face,1);
166 for (
int i=0; i<nb_faces_elem; i++)
168 int j = elem_faces(elem1,i);
171 double surface_pond = 0.;
172 for (
int kk=0; kk<nb_dim_pb; kk++)
173 surface_pond -= (face_normale(j,kk)*domaine_VEF.
oriente_normale(j,elem1)*face_normale(num_face,kk)*
174 domaine_VEF.
oriente_normale(num_face,elem1))/(surface_face*surface_face);
175 Tf+=inconnue(j)*surface_pond;
178 for(
int kk=0; kk<nb_dim_pb; kk++)
179 le_mauvais_gradient(kk)+=inconnue(j)*face_normale(j,kk)*domaine_VEF.
oriente_normale(j,elem1);
181 le_mauvais_gradient/=vol(elem1);
183 double mauvais_gradient=0;
184 for(
int kk=0; kk<nb_dim_pb; kk++)
185 mauvais_gradient+=le_mauvais_gradient(kk)*face_normale(num_face,kk)/surface_face;
195 valeurs_espace(num_face)=Tf-mauvais_gradient*d_equiv(ind_face)*(-domaine_VEF.
oriente_normale(num_face,elem1));
201 DoubleTab& espace_valeurs = espace_stockage->
valeurs();
204 return espace_stockage;
211 motcles[0] =
"composantes";
212 int rang = motcles.
search(query);
219 int nb_comp = source_compos.size();
241 Nom nom_post_source, nom_champ_source;
243 nom_champ_source = nom[0];
244 nom_post_source =
"Tparoi_";
245 nom_post_source += nom_champ_source;
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
Classe de base des champs generiques ayant comme source d'autres champs generiques L'utilisation des ...
const Noms get_property(const Motcle &query) const override
Renvoie la propriete demandee.
virtual OWN_PTR(Champ_Fonc_base) &creer_espace_stockage(const Nature_du_champ &nature
virtual const Champ_Generique_base & get_source(int i) const
const Motcle get_directive_pour_discr() const override
Renvoie la directive (champ_elem, champ_sommets, champ_face ou pression) pour lancer la discretisatio...
const Discretisation_base & get_discretisation() const override
Renvoie la discretisation associee au probleme.
const Domaine_dis_base & get_ref_domaine_dis_base() const override
Renvoie une ref au domaine_discretisee du domaine sur lequel sera evalue l espace de stockage.
virtual const int nb_comp
class Champ_Generique_Tparoi_VEF
const Champ_base & get_champ_without_evaluation(OWN_PTR(Champ_base)&espace_stockage) const override
void nommer_source() override
const Noms get_property(const Motcle &query) const override
Renvoie la propriete demandee.
const Champ_base & get_champ(OWN_PTR(Champ_base)&espace_stockage) const override
virtual const Noms get_property(const Motcle &query) const
Renvoie la propriete demandee.
virtual const Champ_base & get_champ(OWN_PTR(Champ_base) &espace_stockage) const =0
virtual const Champ_base & get_champ_without_evaluation(OWN_PTR(Champ_base)&espace_stockage) const =0
void nommer(const Nom &nom) override
Donne un nom a l'Objet_U Methode virtuelle a surcharger.
virtual DoubleTab & valeurs()=0
classe Champ_base Cette classe est la base de la hierarchie des champs.
classe Cond_lim_base Classe de base pour la hierarchie des classes qui representent les differentes c...
classe Cond_lim Classe generique servant a representer n'importe quelle classe
classe Discretisation_base Cette classe represente un schema de discretisation en espace,...
void discretiser_champ(const Motcle &directive, const Domaine_dis_base &z, const Nom &nom, const Nom &unite, int nb_comp, int nb_pas_dt, double temps, OWN_PTR(Champ_Inc_base)&champ, const Nom &sous_type=NOM_VIDE) const
int nb_faces_elem(int=0) const
Renvoie le nombre de face de type i des elements geometriques constituants le domaine.
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
virtual const DoubleVect & face_surfaces() const
virtual double face_normales(int face, int comp) const
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 oriente_normale(int f, int e) const
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
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 RefObjU & get_modele(Type_modele type) const
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
Domaine_dis_base & domaine_dis()
Renvoie le domaine discretise associe a l'equation.
virtual Nature_du_champ nature_du_champ() const
int num_face(const int) const
Classe Modele_turbulence_scal_base Cette classe represente un modele de turbulence pour une equation ...
const Turbulence_paroi_scal_base & loi_paroi() const
Renvoie la loi de turbulence sur la paroi (version const).
Une chaine de caractere (Nom) en majuscules.
Un tableau d'objets de la classe Motcle.
int search(const Motcle &t) const
Classe Neumann_homogene Cette classe est la classe de base de la hierarchie des conditions aux limite...
Classe Neumann_paroi Cette condition limite correspond a un flux impose pour l'equation de.
class Nom Une chaine de caractere pour nommer les objets de TRUST
Un tableau de chaine de caracteres (VECT(Nom)).
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 const Nom & le_nom() const
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
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 echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")
const Objet_U & valeur() const
Classe Turbulence_paroi_scal_base Classe de base pour la hierarchie des classes representant les mode...
virtual bool use_equivalent_distance() const
Give a boolean indicating if we need to use equivant distance by default we consider that we use the ...
const DoubleVects & equivalent_distance() const
const int & get_flag_calcul_ldp_en_flux_impose() const