16#include <Traitement_particulier_NS_THI_thermo_VDF.h>
17#include <Domaine_VDF.h>
18#include <Navier_Stokes_std.h>
19#include <Convection_Diffusion_Temperature.h>
20#include <Convection_Diffusion_Chaleur_QC.h>
21#include <Probleme_base.h>
55 const Probleme_base& pb = mon_equation->probleme();
59 if(sub_type(Convection_Diffusion_Temperature,pb.
equation(i)))
61 mon_equation_NRJ = ref_cast(Convection_Diffusion_Temperature,pb.
equation(i));
64 else if(sub_type(Convection_Diffusion_Chaleur_QC,pb.
equation(i)))
66 mon_equation_NRJ = ref_cast(Convection_Diffusion_Chaleur_QC,pb.
equation(i));
72 Cerr <<
"Erreur dans Traitement_particulier_NS_THI_thermo_VDF::init_calc_spectre " << finl;
73 Cerr <<
"L'equation d'energie n'a pas ete trouvee...!" << finl;
74 Cerr <<
"On ne peut pas demander de spectres sur la temperature" << finl;
75 Cerr <<
"si on ne resout pas une equation de la chaleur." << finl;
76 Cerr <<
"Solution : enlever le suffixe '_thermo'." << finl;
91 const Domaine_dis_base& zdis = mon_equation->domaine_dis();
92 const Domaine& domaine = zdis.
domaine();
93 int nb_elem = domaine.nb_elem();
98 double temps_crt = mon_equation->inconnue().temps();
99 const DoubleTab& Temp = mon_equation_NRJ->inconnue().valeurs();
109 Nom fichier_temp =
"chp_temperature_";
110 Nom tps = Nom(temps_crt);
112 SFichier fic12 (fichier_temp);
118 for (i=0; i<nb_elem; i++)
119 fic12 << Temp(i) <<finl;
130void Traitement_particulier_NS_THI_thermo_VDF::sorties_fichiers()
132 const Domaine_dis_base& zdis = mon_equation->domaine_dis();
133 const Domaine& domaine = zdis.
domaine();
134 int nb_elem = domaine.nb_elem();
137 double temps_crt = mon_equation->inconnue().temps();
138 const DoubleTab& Temp = mon_equation_NRJ->inconnue().valeurs();
140 SFichier fic45(
"Sorties_THI_Thermo.dat",ios::app);
149 double Tmean=0.,Tmax_mean=-10000.,Tmin_mean=10000.,Tp2=0.;
151 for (i=0; i<nb_elem; i++)
154 if(Temp(i)>Tmax_mean) Tmax_mean=Temp(i);
155 if(Temp(i)<Tmin_mean) Tmin_mean=Temp(i);
162 for (i=0; i<nb_elem; i++)
164 Tp2+=(Temp(i)-Tmean)*(Temp(i)-Tmean);
169 DT=calcul_enstrophie();
171 fic45 << temps_crt <<
" " << Tmean <<
" " << Tmax_mean <<
" " << Tmin_mean <<
" " << Tp2 <<
" " << DT << finl;
179 double delta=(Tmax_mean-Tmin_mean)/ni;
182 Nom fichier_pdf =
"PDF_";
183 Nom tps = Nom(temps_crt);
185 fichier_pdf +=
".dat";
186 SFichier fic46 (fichier_pdf);
188 for (i=0; i<nb_elem; i++)
191 k=(int)(((Temp(i)/Tmean)-Tmin_mean)/delta);
206 fic46 << (Tmin_mean+i*delta) <<
" " << PDF[i] <<finl;
213double Traitement_particulier_NS_THI_thermo_VDF::calcul_enstrophie()
215 const Domaine_dis_base& zdis = mon_equation->domaine_dis();
216 const Domaine& domaine = zdis.
domaine();
217 const Domaine_VDF& domaine_VDF = ref_cast(Domaine_VDF,zdis);
218 int nb_elem = domaine.nb_elem();
219 const IntTab& face_voisins = domaine_VDF.
face_voisins();
220 const IntTab& elem_faces = domaine_VDF.
elem_faces();
222 const DoubleTab& Temp = mon_equation_NRJ->inconnue().valeurs();
228 int element0,element1;
230 for(
int elem=0; elem<nb_elem; elem++)
235 face0 = elem_faces(elem,ori);
237 element0 = face_voisins(face0,0);
238 element1 = face_voisins(face1,1);
239 gradT += pow((Temp(element0)-Temp(elem))/domaine_VDF.
dist_elem(element0,elem,ori),2);
240 gradT += pow((Temp(element1)-Temp(elem))/domaine_VDF.
dist_elem(element1,elem,ori),2);
double dist_elem(int, int, int) 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 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 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.
virtual int nombre_d_equations() const =0
virtual const Equation_base & equation(int) const =0
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
static int je_suis_maitre()
renvoie 1 si on est sur le processeur maitre du groupe courant (c'est a dire me() == 0),...
Classe de base des flux de sortie.
classe Traitement_particulier_NS_THI_VDF Cette classe permet de faire les traitements particuliers
void init_calc_spectre() override
void calcul_spectre() override
classe Traitement_particulier_NS_THI_thermo_VDF Cette classe permet de faire les traitements particul...
virtual void init_calc_spectre()=0
virtual void calcul_spectre()=0
int & calcul_nb_elem_dir(const Domaine &)