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>
115 Cerr <<
"Statistics time TBLE : OK" << finl;
118 Cerr <<
"WARNING !!!!! Statistics time for TBLE not coherent." << finl;
124 else if (mot==
"nu_t_dyn")
127 Cerr <<
"nu_t_dyn = " <<
nu_t_dyn << finl;
129 Cerr <<
"Dynamic calculation of nu_t for TBLE" << finl;
132 else if (mot==
"tps_start_stat_nu_t_dyn")
140 Cerr <<
"Problem with the tps_start_stat_nu_t_dyn parameter for TBLE." << finl;
145 else if (mot==
"tps_nu_t_dyn")
150 Cerr <<
"Time period of nu_t average before use = " <<
tps_nu_t_dyn << finl;
153 Cerr <<
"Problem with the tps_nu_t_dyn parameter for TBLE." << finl;
158 else if (mot==
"sonde_tble")
166 Cerr <<
"Nom"<<i<<
"=" <<
nom_pts[i] <<finl;
170 Cerr <<
"sonde_tble( "<< i <<
"," << j <<
" ) =" <<
sonde_tble(i,j) << finl;
175 else if (mot==
"stationnaire")
181 Cerr <<
"You must select the maximum iterations number to reach the time convergence for TBLE" << finl;
182 Cerr <<
"as well as the stop crterion value." << finl;
183 Cerr <<
"Syntax : statio max_it_statio eps_statio" << finl;
194 else if (mot==
"lambda")
200 else if (mot==
"sans_source_boussinesq")
210 const int nb_elem = domaine_dis.
nb_elem();
216 int compteur_faces_paroi = 0;
218 for (
int n_bord=0; n_bord<domaine_dis.
nb_front_Cl(); n_bord++)
225 compteur_faces_paroi += le_bord.
nb_faces();
228 eq_vit.dimensionner(compteur_faces_paroi);
253 compteur_faces_paroi=0;
254 for (
int n_bord=0; n_bord<domaine_dis.
nb_front_Cl(); n_bord++)
262 int nfin = ndeb + le_bord.
nb_faces();
264 for (
int num_face=ndeb; num_face<nfin; num_face++)
276 face=compteur_faces_paroi;
279 compteur_faces_paroi++;
287 Cerr <<
"Dimension de eq_vit = " << compteur_faces_paroi << finl;
288 Cerr <<
"nb_faces_bord = " << domaine_dis.
nb_faces_bord() << finl;
305 mu_lambda.typer(
"MuLambda_TBLE_Cte");
310 mu_lambda.typer(
"MuLambda_TBLE_Fcts_T");
316 Cerr <<
"Vous devez preciser a la fois mu et lambda dans les options de TBLE" << finl;
319 mu_lambda->initialiser(
getPbBase().milieu());
323 for (
int i=0; i<compteur_faces_paroi; i++)
325 eq_vit[i].associer_milieu(
getPbBase().milieu());
360 Cerr <<
"Reprise du champ TBLE au temps " << tps_reprise << finl;
361 int compteur_faces_paroi = 0;
363 Nom nom_fic=
"sauvegarde_tble_";
366 nom_fic+=
Nom(tps_reprise,
getPbBase().reprise_format_temps());
369 if (fic_sauve.
fail())
371 Cerr <<
"Erreur a l'ouverture du fichier " << nom_fic << finl;
372 Cerr <<
"Si vous ne souhaitez pas reprendre les quantites TBLE, utilisez le mot-cle 'restart' dans les options TBLE" << finl;
378 for (
int n_bord=0; n_bord<domaine_dis.
nb_front_Cl(); n_bord++)
386 compteur_faces_paroi+=le_bord.
nb_faces();
391 compteur_faces_paroi=0;
393 for (
int n_bord=0; n_bord<domaine_dis.
nb_front_Cl(); n_bord++)
400 int nfin = ndeb + le_bord.
nb_faces();
401 for (
int num_face=ndeb; num_face<nfin; num_face++)
403 for (
int comp=0; comp<
nb_comp; comp++)
405 for (
int itble=0; itble<
nb_pts+1; itble++)
410 compteur_faces_paroi++;
415 Cerr <<
"Reprise du champ TBLE OK" << finl;
426 Cerr <<
"Sauvegarde du champ TBLE au temps = " << tps<< finl;
428 Nom nom_fic=
"sauvegarde_tble_";
431 nom_fic+=
Nom(tps,
"%e");
434 int compteur_faces_paroi=0;
435 for (
int n_bord=0; n_bord<domaine_dis.
nb_front_Cl(); n_bord++)
442 int nfin = ndeb + le_bord.
nb_faces();
443 for (
int num_face=ndeb; num_face<nfin; num_face++)
445 for (
int comp=0; comp<
nb_comp; comp++)
447 for (
int itble=0; itble<
nb_pts+1; itble++)
448 fic_sauve << eq_vit[compteur_faces_paroi].get_Unp1(comp,itble) <<
" " ;
451 compteur_faces_paroi++;
477 fic_post <<
"# "<< tps <<
" U V U^2 V^2 UV Fx Fy"<< 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) <<
" " ;
488 fic_post << coeff*
Fymean_sum(j,i) <<
" " << finl;
493 fic_post <<
"# "<< tps <<
" U V W U^2 V^2 W^2 UV WV WU Fx Fy Fz "<< finl;
495 for(
int i=0; i<
nb_pts+1; i++)
497 fic_post << eq_vit[num_face].get_y(i) <<
" " ;
498 fic_post << coeff*
Umean_sum(j,i) <<
" " ;
499 fic_post << coeff*
Vmean_sum(j,i) <<
" " ;
500 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.