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) <<
" " ;
Class Champ_Fonc_Fonction Derived class of Champ_Fonc_Tabule representing.
class Champ_base This class is the base of the fields hierarchy.
class Cond_lim Generic class used to represent any class
void associer_mulambda(const MuLambda_TBLE_base &m)
Classe Diffu_totale_hyd_base Classe abstraite calculant la diffusivite totale (somme diffusivite.
Dirichlet_paroi_fixe Represents a fixed wall in a Navier-Stokes type equation.
class Domaine_Cl_dis_base Domaine_Cl_dis_base objects represent discretized boundary conditions
const Cond_lim & les_conditions_limites(int) const
Returns the i-th boundary condition.
double xv(int num_face, int k) const
int nb_faces_bord() const
Returns the number of faces on which boundary conditions are applied:
class Domaine_dis_base This class is the base of the hierarchy of discretized domains.
File for reading. This class is to the C++ ifstream class what the Entree class is to the.
Sortie & syncfile() override
Triggers writing to disk of the data accumulated on the different processors since the last call to s...
Class defining operators and methods for all reading operation in an input flow (file,...
Base class for an incompressible fluid and its properties:
int num_premiere_face() const
A character string (Nom) in uppercase.
Classe MuLambda_TBLE_Fcts_T Classe abstraite calculant Mu et Lambda suivant une fonction de T.
void setFcts(Nom &, Nom &)
class Nom: a character string for naming TRUST objects.
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()
Returns the rank of the local processor in the current communication group. See Comm_Group::rank() an...
static void exit(int exit_code=-1)
Exit routine for TRUST within a Kokkos region.
Base class for output streams.