15#include <Paroi_TBLE_QDM.h>
16#include <Domaine_dis_base.h>
19#include <Domaine_VF.h>
21#include <Dirichlet_paroi_fixe.h>
22#include <Diffu_totale_hyd_base.h>
23#include <Probleme_base.h>
24#include <MuLambda_TBLE_Fcts_T.h>
26#include <EcrFicPartage.h>
27#include <Champ_Fonc_Fonction.h>
28#include <Fluide_base.h>
29#include <Domaine_Cl_dis_base.h>
99 Cerr <<
"Statistics time TBLE : OK" << finl;
102 Cerr <<
"WARNING !!!!! Statistics time for TBLE not coherent." << finl;
108 else if (mot==
"nu_t_dyn")
111 Cerr <<
"nu_t_dyn = " <<
nu_t_dyn << finl;
113 Cerr <<
"Dynamic calculation of nu_t for TBLE" << finl;
116 else if (mot==
"tps_start_stat_nu_t_dyn")
124 Cerr <<
"Problem with the tps_start_stat_nu_t_dyn parameter for TBLE." << finl;
129 else if (mot==
"tps_nu_t_dyn")
134 Cerr <<
"Time period of nu_t average before use = " <<
tps_nu_t_dyn << finl;
137 Cerr <<
"Problem with the tps_nu_t_dyn parameter for TBLE." << finl;
142 else if (mot==
"sonde_tble")
150 Cerr <<
"Nom"<<i<<
"=" <<
nom_pts[i] <<finl;
154 Cerr <<
"sonde_tble( "<< i <<
"," << j <<
" ) =" <<
sonde_tble(i,j) << finl;
159 else if (mot==
"stationnaire")
165 Cerr <<
"You must select the maximum iterations number to reach the time convergence for TBLE" << finl;
166 Cerr <<
"as well as the stop crterion value." << finl;
167 Cerr <<
"Syntax : statio max_it_statio eps_statio" << finl;
178 else if (mot==
"lambda")
184 else if (mot==
"sans_source_boussinesq")
194 const int nb_elem = domaine_dis.
nb_elem();
200 int compteur_faces_paroi = 0;
202 for (
int n_bord=0; n_bord<domaine_dis.
nb_front_Cl(); n_bord++)
209 compteur_faces_paroi += le_bord.
nb_faces();
212 eq_vit.dimensionner(compteur_faces_paroi);
237 compteur_faces_paroi=0;
238 for (
int n_bord=0; n_bord<domaine_dis.
nb_front_Cl(); n_bord++)
246 int nfin = ndeb + le_bord.
nb_faces();
248 for (
int num_face=ndeb; num_face<nfin; num_face++)
260 face=compteur_faces_paroi;
263 compteur_faces_paroi++;
271 Cerr <<
"Dimension de eq_vit = " << compteur_faces_paroi << finl;
272 Cerr <<
"nb_faces_bord = " << domaine_dis.
nb_faces_bord() << finl;
289 mu_lambda.typer(
"MuLambda_TBLE_Cte");
294 mu_lambda.typer(
"MuLambda_TBLE_Fcts_T");
300 Cerr <<
"Vous devez preciser a la fois mu et lambda dans les options de TBLE" << finl;
303 mu_lambda->initialiser(
getPbBase().milieu());
307 for (
int i=0; i<compteur_faces_paroi; i++)
309 eq_vit[i].associer_milieu(
getPbBase().milieu());
344 Cerr <<
"Reprise du champ TBLE au temps " << tps_reprise << finl;
345 int compteur_faces_paroi = 0;
347 Nom nom_fic=
"sauvegarde_tble_";
350 nom_fic+=
Nom(tps_reprise,
getPbBase().reprise_format_temps());
353 if (fic_sauve.
fail())
355 Cerr <<
"Erreur a l'ouverture du fichier " << nom_fic << finl;
356 Cerr <<
"Si vous ne souhaitez pas reprendre les quantites TBLE, utilisez le mot-cle 'restart' dans les options TBLE" << finl;
362 for (
int n_bord=0; n_bord<domaine_dis.
nb_front_Cl(); n_bord++)
370 compteur_faces_paroi+=le_bord.
nb_faces();
375 compteur_faces_paroi=0;
377 for (
int n_bord=0; n_bord<domaine_dis.
nb_front_Cl(); n_bord++)
384 int nfin = ndeb + le_bord.
nb_faces();
385 for (
int num_face=ndeb; num_face<nfin; num_face++)
387 for (
int comp=0; comp<
nb_comp; comp++)
389 for (
int itble=0; itble<
nb_pts+1; itble++)
394 compteur_faces_paroi++;
399 Cerr <<
"Reprise du champ TBLE OK" << finl;
410 Cerr <<
"Sauvegarde du champ TBLE au temps = " << tps<< finl;
412 Nom nom_fic=
"sauvegarde_tble_";
415 nom_fic+=
Nom(tps,
"%e");
418 int compteur_faces_paroi=0;
419 for (
int n_bord=0; n_bord<domaine_dis.
nb_front_Cl(); n_bord++)
426 int nfin = ndeb + le_bord.
nb_faces();
427 for (
int num_face=ndeb; num_face<nfin; num_face++)
429 for (
int comp=0; comp<
nb_comp; comp++)
431 for (
int itble=0; itble<
nb_pts+1; itble++)
432 fic_sauve << eq_vit[compteur_faces_paroi].get_Unp1(comp,itble) <<
" " ;
435 compteur_faces_paroi++;
461 fic_post <<
"# "<< tps <<
" U V U^2 V^2 UV Fx Fy"<< finl;
463 for(
int i=0; i<
nb_pts+1; i++)
465 fic_post << eq_vit[num_face].get_y(i) <<
" " ;
466 fic_post << coeff*
Umean_sum(j,i) <<
" " ;
467 fic_post << coeff*
Vmean_sum(j,i) <<
" " ;
472 fic_post << coeff*
Fymean_sum(j,i) <<
" " << finl;
477 fic_post <<
"# "<< tps <<
" U V W U^2 V^2 W^2 UV WV WU Fx Fy Fz "<< finl;
479 for(
int i=0; i<
nb_pts+1; i++)
481 fic_post << eq_vit[num_face].get_y(i) <<
" " ;
482 fic_post << coeff*
Umean_sum(j,i) <<
" " ;
483 fic_post << coeff*
Vmean_sum(j,i) <<
" " ;
484 fic_post << coeff*
Wmean_sum(j,i) <<
" " ;
Classe Champ_Fonc_Fonction Classe derivee de Champ_Fonc_Tabule qui represente les.
classe Champ_base Cette classe est la base de la hierarchie des champs.
classe Cond_lim Classe generique servant a representer n'importe quelle classe
void associer_mulambda(const MuLambda_TBLE_base &m)
Classe Diffu_totale_hyd_base Classe abstraite calculant la diffusivite totale (somme diffusivite.
classe Dirichlet_paroi_fixe Represente une paroi immobile dans une equation de type Navier_Stokes.
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
double xv(int num_face, int k) const
int nb_faces_bord() const
renvoie le nombre de faces sur lesquelles sont appliquees les conditions limites :
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.
Sortie & syncfile() override
Provoque l'ecriture sur disque des donnees accumulees sur les differents processeurs depuis le dernie...
Class defining operators and methods for all reading operation in an input flow (file,...
classe Fluide_base Cette classe represente un d'un fluide incompressible ainsi que
int num_premiere_face() const
Une chaine de caractere (Nom) en majuscules.
Classe MuLambda_TBLE_Fcts_T Classe abstraite calculant Mu et Lambda suivant une fonction de T.
void setFcts(Nom &, Nom &)
class Nom Une chaine de caractere pour nommer les objets de TRUST
Helper class to factorize the readOn method of Objet_U classes.
void ajouter_flag(const char *keyword, const bool *value)
Register a boolean flag whose mere presence switches it to true.
void ajouter(const char *keyword, const int *value, Param::Nature nat=Param::OPTIONAL)
Register an integer parameter.
double tps_start_stat_nu_t_dyn
void calculer_stat(int indice_post, int indice_maillage, double Fx, double Fy, double Fz, double u, double v, double w, double dt)
void imprimer_stat(Sortie &, double) const
void set_param(Param ¶m) const
int reprendre(Entree &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, double tps)
IntTab num_global_faces_post
int sauvegarder(Sortie &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, double tps) const
virtual const Probleme_base & getPbBase() const =0
DoubleTab valeurs_reprises
int lire_motcle_non_standard(const Motcle &, Entree &)
int init_lois_paroi(const Domaine_VF &, const Domaine_Cl_dis_base &)
static int me()
renvoie mon rang dans le groupe de communication courant.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.