16#include <Terme_Source_Canal_RANS_LES_VDF_Elem.h>
17#include <Champ_Uniforme.h>
18#include <Domaine_VDF.h>
19#include <Domaine_Cl_VDF.h>
20#include <Pb_Hydraulique.h>
21#include <Pb_Thermohydraulique.h>
23#include <Interprete.h>
38 vit_sauv << utemp_sum;
60 Motcle acc_ouverte(
"{");
61 Motcle acc_fermee(
"}");
62 nom_pb_rans=
"non_couple";
70 les_mots[0]=
"alpha_tau";
72 les_mots[2]=
"f_start";
74 les_mots[4]=
"type_moyenne";
75 les_mots[5]=
"nom_pb_rans";
78 if(mot_lu != acc_ouverte)
80 Cerr <<
"On attendait { a la place de " << mot_lu
81 <<
" lors de la lecture des parametres de la loi de paroi " << finl;
84 while(mot_lu != acc_fermee)
86 int rang=les_mots.search(mot_lu);
91 Cerr <<
"alpha_tau = " << alpha_tau << finl;
96 Cerr <<
"Ly = "<< Ly << finl;
101 Cerr <<
"f_start = "<< f_start << finl;
106 Cerr <<
"t_av = " << t_av << finl;
107 Cerr <<
"type_moyenne : " << moyenne << finl;
108 if((moyenne==1)&&(t_av<=0))
110 Cerr <<
"La periode en temps de la moyenne temporelle glissante est non precisee !"
118 Cerr <<
"type_moyenne : " << moyenne << finl;
128 Cerr << mot_lu <<
" n'est pas un mot compris" << finl;
129 Cerr <<
"Les mots compris sont : " << les_mots << finl;
135 Cerr <<
"nom_pb_rans = " << nom_pb_rans << finl;
136 Cerr << compteur <<
" motcles ont ete lus dans le readOn du terme de forcage thermique" << finl;
158 const Domaine_dis_base& zdisbase=mon_equation->inconnue().domaine_dis_base();
160 const double tps = mon_equation->schema_temps().temps_courant();
162 int nb_elems = domaine_VDF.
nb_elem();
165 tau.resize(nb_elems);
166 U_RANS.resize(nb_elems);
167 if(nom_pb_rans ==
"non_couple")
170 EFichier fic_vit(
"temperature_RANS.dat");
172 for(
int num_elem=0 ; num_elem<nb_elems ; num_elem++)
176 fic_vit >> U_RANS(elem) ;
177 fic_verif << elem <<
" " << U_RANS(elem) << finl;
181 for(
int num_elem=0 ; num_elem<nb_elems ; num_elem++)
183 tau(num_elem) = alpha_tau;
186 utemp_gliss.resize(nb_elems);
187 utemp.resize(nb_elems);
188 utemp_sum.resize(nb_elems);
194 umoy.resize(nb_elems);
198 EFichier vit_umoy (
"Ttemp_sum.dat");
200 SFichier vit_reprise (
"TLES.reprise");
201 SFichier vit_reprise2 (
"TLES2.reprise");
205 Cerr <<
"trash = " << trash << finl;
207 Cerr <<
"trash = " << trash << finl;
209 for(
int num_elem = 0 ; num_elem<nb_elems ; num_elem++)
211 vit_umoy >> utemp_sum(num_elem);
212 vit_umoy2 >> umoy(num_elem);
214 vit_reprise << num_elem <<
" " << utemp_sum(num_elem) << finl;
215 vit_reprise2 << num_elem <<
" " << umoy(num_elem) << finl;
227 const Domaine_VDF& domaine_VDF = le_dom_VDF.valeur();
231 const DoubleTab& vitesse = mon_equation->inconnue().valeurs();
232 const double dt = mon_equation->schema_temps().pas_de_temps();
233 const double tps = mon_equation->schema_temps().temps_courant();
234 int nb_elems = domaine_VDF.
nb_elem();
235 const double dt_min = mon_equation->schema_temps().pas_temps_min();
242 if(nom_pb_rans !=
"non_couple")
252 U_RANS = pb_rans->equation(1).inconnue().valeurs();
265 if((tps>(f_start-t_av))&&(tps<f_start))
269 for (
int num_elem=0; num_elem<nb_elems; num_elem++)
271 utemp_sum(num_elem) = vitesse(num_elem)*(tps-(f_start-t_av));
272 umoy(num_elem) = vitesse(num_elem);
278 for (
int num_elem=0; num_elem<nb_elems; num_elem++)
280 utemp_sum(num_elem) += vitesse(num_elem)*dt;
281 umoy(num_elem) = utemp_gliss(num_elem)/(tps-(f_start-t_av));
290 for (
int num_elem=0; num_elem<nb_elems; num_elem++)
292 utemp_sum(num_elem) += dt*vitesse(num_elem);
293 umoy(num_elem)=utemp_sum(num_elem)/(tps-(f_start-t_av));
310 for (
int num_elem=0; num_elem<nb_elems; num_elem++)
312 utemp_sum(num_elem) = vitesse(num_elem)*dt;
313 umoy(num_elem) = vitesse(num_elem);
319 for (
int num_elem=0; num_elem<nb_elems; num_elem++)
321 utemp_sum(num_elem) += vitesse(num_elem)*dt;
322 umoy(num_elem) = utemp_sum(num_elem)/(tps-dt_min+dt);
330 Cerr <<
"moyenne = " << moyenne << finl;
331 Cerr <<
"Probleme pour le choix du type de moyenne" << finl;
340 const Domaine_VDF& domaine_VDF = le_dom_VDF.valeur();
341 int nb_elems = domaine_VDF.
nb_elem();
342 const DoubleVect& volume = domaine_VDF.
volumes();
343 const double tps = mon_equation->schema_temps().temps_courant();
344 const double dt = mon_equation->schema_temps().pas_de_temps();
345 const double dt_min = mon_equation->schema_temps().pas_temps_min();
348 const DoubleTab& vitesse = mon_equation->inconnue().valeurs();
351 SFichier fic_f(
"f_temp.dat", ios::app);
352 SFichier fic_finst(
"f_temp_inst.dat", ios::app);
361 if(((tps>f_start)&&(compteur_reprise > 1))||((moyenne==3)&&(tps>dt_min)))
363 for(
int num_elem = 0 ; num_elem<nb_elems ; num_elem++)
365 vol = volume(num_elem);
367 secmem(num_elem) += ((U_RANS(num_elem)-umoy(num_elem))/(tau(num_elem)*dt))*vol;
369 mbf2 +=((U_RANS(num_elem)-umoy(num_elem))/(tau(num_elem)*dt))*vol;
378 mbf = (U_RANS(num_elem)-umoy(num_elem))
379 /(tau(num_elem)*dt)*vol;
381 fic_finst << tps <<
" " << mbf <<
" " << U_RANS(num_elem)
382 <<
" " << umoy(num_elem) <<
" " << vitesse(num_elem) << finl;
384 fic_f << tps <<
" " << mbf2 <<
" "
385 << U_RANS(num_elem) <<
" " << umoy(num_elem) <<
" "
386 << utemp_sum(num_elem) <<
" " << dt <<finl;
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
double volumes(int i) const
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Fichier en lecture Cette classe est a la classe C++ ifstream ce que la classe Entree est a la.
Class defining operators and methods for all reading operation in an input flow (file,...
static Objet_U & objet(const Nom &)
Voir Interprete_bloc::objet_global() BM: la classe Interprete n'est pas le meilleur endroit pour cett...
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.
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Cette classe est a la classe C++ ofstream ce que la classe Sortie est a la classe C++ ostream Elle re...
Classe de base des flux de sortie.
classe Source_base Un objet Source_base est un terme apparaissant au second membre d'une
virtual DoubleTab & ajouter(DoubleTab &) const
class Terme_Source_Canal_RANS_LES_VDF_Elem Cette classe concerne un terme source calcule en partie gr...
DoubleTab & calculer(DoubleTab &) const override
~Terme_Source_Canal_RANS_LES_VDF_Elem() override
OBS_PTR(Domaine_VDF) le_dom_VDF
void associer_domaines(const Domaine_dis_base &, const Domaine_Cl_dis_base &) override
void ajouter_blocs(matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl) const override
void associer_pb(const Probleme_base &) override
void mettre_a_jour(double) override
DOES NOTHING - to override in derived classes.