17#include <Dirichlet_paroi_defilante.h>
18#include <Dirichlet_paroi_fixe.h>
19#include <Paroi_std_hyd_VDF.h>
20#include <TRUSTTabs_forward.h>
21#include <Paroi_std_hyd_VDF.h>
22#include <Schema_Temps_base.h>
23#include <Modele_turbulence_hyd_base.h>
24#include <Champ_Uniforme.h>
25#include <Domaine_Cl_VDF.h>
26#include <communications.h>
27#include <EcrFicPartage.h>
28#include <Equation_base.h>
29#include <Fluide_base.h>
61 param.lire_avec_accolades_depuis(s);
83 uplus_.resize(le_dom_dis_->nb_faces_bord());
92 Cmu_ = mon_modele_turb_hyd->get_Cmu();
101 int nb_dim = tab.
nb_dim();
103 const IntTab& face_voisins = le_dom_dis_->face_voisins();
107 int ndeb, nfin, elem;
109 for (
int n_bord = 0; n_bord < le_dom_dis_->nb_front_Cl(); n_bord++)
115 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
126 Cerr <<
"Erreur TRUST dans Paroi_std_hyd_VDF::preparer_calculer_hyd" << finl;
127 Cerr <<
"Le DoubleTab tab ne peut pas avoir plus de 2 entrees" << finl;
132 for (
int num_face = ndeb; num_face < nfin; num_face++)
133 if ((elem = face_voisins(num_face, 0)) != -1)
134 for (
int k = 0; k < nb_comp; k++)
138 elem = face_voisins(num_face, 1);
139 for (
int k = 0; k < nb_comp; k++)
171 const IntVect& orientation = domaine_VDF.
orientation();
172 const IntTab& face_voisins = domaine_VDF.
face_voisins();
173 const Equation_base& eqn_hydr = mon_modele_turb_hyd->equation();
177 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
182 visco = std::max(tab_visco(0, 0), DMINFLOAT);
190 Cerr <<
"In Paroi_std_hyd_VDF::calculer_hyd : visco = " << tab_visco.
local_min_vect() <<
" <= 0 ? " << finl;
193 int ndeb, nfin, elem, ori;
194 double norm_v, dist, u_plus_d_plus, d_visco;
204 for (
int n_bord = 0; n_bord < domaine_VDF.
nb_front_Cl(); n_bord++)
211 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
224 for (
int face = ndeb; face < nfin; face++)
226 vitesse_imposee_face_bord(face-ndeb, k) = cl_diri.
val_imp(face-ndeb, k);
231 for (
int num_face = ndeb; num_face < nfin; num_face++)
235 int rang = num_face-ndeb;
237 vit_paroi[k] = vitesse_imposee_face_bord(rang, k);
239 ori = orientation(num_face);
240 if ((elem = face_voisins(num_face, 0)) != -1)
243 norm_v = norm_vit(vit, elem, ori, domaine_VDF, vit_paroi, val);
248 elem = face_voisins(num_face, 1);
250 norm_v = norm_vit(vit, elem, ori, domaine_VDF, vit_paroi, val);
262 d_visco = tab_visco(elem, 0);
264 u_plus_d_plus = norm_v*dist/d_visco;
272 calculer_local(u_plus_d_plus, d_visco, tab1, norm_v, dist, elem, num_face);
279 calculer_local(u_plus_d_plus, d_visco, tab1, tab2, norm_v, dist, elem, num_face);
307 num_face, dist, d_visco, norm_v) ;
404 uplus_.resize(le_dom_dis_->nb_faces_bord());
406 Cmu_ = mon_modele_turb_hyd->get_Cmu();
418 for (
int iter = 0; iter < 10; ++iter)
427 const IntVect& orientation = domaine_VDF.
orientation();
428 const IntTab& face_voisins = domaine_VDF.
face_voisins();
429 const Equation_base& eqn_hydr = mon_modele_turb_hyd->equation();
433 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
441 visco = std::max(tab_visco(0, 0), DMINFLOAT);
449 Cerr <<
"In Paroi_std_hyd_VDF::compute_law_komega : visco = " << tab_visco.
local_min_vect() <<
" <= 0 ? " << finl;
452 int ndeb, nfin, elem, ori;
454 double norm_v, dist, d_visco;
464 for (
int n_bord = 0; n_bord < domaine_VDF.
nb_front_Cl(); n_bord++)
472 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
488 for (
int face = ndeb; face < nfin; face++)
490 vitesse_imposee_face_bord(face - ndeb, k) = cl_diri.
val_imp(face - ndeb, k);
495 for (
int num_face = ndeb; num_face < nfin; num_face++)
499 vit_paroi[k] = vitesse_imposee_face_bord(num_face - ndeb, k);
501 ori = orientation(num_face);
502 if ((elem = face_voisins(num_face, 0)) != -1)
505 norm_v = norm_vit(vit, elem, ori, domaine_VDF, vit_paroi, val);
510 elem = face_voisins(num_face, 1);
512 norm_v = norm_vit(vit, elem, ori, domaine_VDF, vit_paroi, val);
526 d_visco = tab_visco(elem, 0);
528 const double u_plus_d_plus = norm_v*dist/d_visco;
557 num_face, dist, d_visco, norm_v) ;
568 DoubleTab& field_komega,
double norm_vit,
569 double dist,
int elem,
int num_face)
574 if (u_plus_d_plus <= valmin)
580 else if ((u_plus_d_plus > valmin) && (u_plus_d_plus < valmax))
597 double viscosity,
int elem)
599 field_komega(elem, 0) = 0;
605 double viscosity,
int elem,
int face)
614 const double yPlus = u_star*dist_y/viscosity;
617 double deriv = Fdypar_direct(lm_plus);
618 double x = lm_plus*u_star*deriv;
620 field_komega(elem, 0) = x*x/
sCmu;
621 const double phiTanh = tanh(0.1*0.1*0.1*0.1*yPlus*yPlus*yPlus*yPlus);
623 const double omega_log = u_star/(std::sqrt(
BETA_K)*
Kappa_*dist_y);
624 const double b1 = omega_vis + omega_log;
625 const double b2 = pow(pow(omega_vis, 1.2) + pow(omega_log,1.2), 1.0/1.2);
627 field_komega(elem, 1) = phiTanh*b1 + (1 - phiTanh)*b2;
635 const double u_star_carre = u_star*u_star;
637 field_komega(elem, 0) = u_star_carre/sqrt(
Cmu_);
638 field_komega(elem, 1) = u_star/(std::sqrt(
BETA_K)*
Kappa_*dist_y);
645 DoubleVect& tab_ustar,
int num_face,
646 double dist,
double d_visco,
double norm_v)
648 double ustar = tab_ustar(num_face);
649 dplus(num_face) = ustar*dist/d_visco;
651 uplus(num_face) = norm_v/ustar;
656 DoubleTab& k_eps,
double norm_vit,
657 double dist,
int elem,
int num_face)
662 if (u_plus_d_plus <= valmin)
669 else if ((u_plus_d_plus > valmin) && (u_plus_d_plus < valmax))
688 DoubleTab& tab_nu_t, DoubleTab& tab_k,
double norm_vit,
689 double dist,
int elem,
int num_face)
694 if (u_plus_d_plus <= valmin)
701 else if ((u_plus_d_plus > valmin) && (u_plus_d_plus < valmax))
709 else if (u_plus_d_plus >= valmax)
720 double dist,
int& type_cou,
double& d_plus)
726 if (u_plus_d_plus <= valmin)
734 else if ((u_plus_d_plus > valmin) && (u_plus_d_plus < valmax))
742 else if (u_plus_d_plus >= valmax)
763 double dist,
int face)
777 return sqrt(norm_vit*d_visco/dist);
782 int elem,
double d_visco,
int face)
794 double d_plus = dist*u_star/d_visco;
795 double u_star_carre = u_star*u_star;
804 K_eps(elem, 0) = u_star_carre*d_plus*d_plus*C;
806 K_eps(elem, 1) = u_star_carre*u_star_carre/d_visco*(d_plus*d_plus*C)*alpha;
823 double d_visco,
double dist,
int face)
827 double d_plus_min = 5;
828 double d_plus_max = 30;
829 double epsilon = 1.e-12;
830 double gauche =
table_hyd.val(d_plus_min);
831 double droite =
table_hyd.val(d_plus_max);
833 if (gauche == droite)
839 double deriv = (droite - gauche)/(d_plus_max - d_plus_min);
840 d_plus = d_plus_min + (u_plus_d_plus - gauche)/deriv;
842 if (std::fabs(valeur - u_plus_d_plus) < epsilon)
844 double u_star = (d_visco*d_plus)/dist;
848 if (valeur > u_plus_d_plus)
865 double d_plus,
int elem,
int face)
870 double deriv = Fdypar_direct(lm_plus);
871 double x = lm_plus*u_star*deriv;
886 K_eps(elem,0) = x*x/sqrt(
Cmu_) ;
887 K_eps(elem,1) = (K_eps(elem,0)*u_star*u_star*deriv)*sqrt(
Cmu_)/d_visco;
894 double d_visco,
double d_plus,
901 double deriv = Fdypar_direct(lm_plus);
902 double x = lm_plus*u_star*deriv;
914 double k = x*x/sqrt(
Cmu_);
915 double eps = (k*u_star*u_star*deriv)*sqrt(
Cmu_)/d_visco;
917 nu_t(elem) =
Cmu_*k*k/eps;
922 double dist,
double& d_plus)
926 double d_plus_min = 5;
927 double d_plus_max = 30;
929 double epsilon = 1.e-12;
930 double gauche =
table_hyd.val(d_plus_min);
931 double droite =
table_hyd.val(d_plus_max);
934 if (gauche == droite)
940 double deriv = (droite - gauche)/(d_plus_max - d_plus_min);
941 d_plus = d_plus_min + (u_plus_d_plus - gauche)/deriv;
943 if(std::fabs(valeur - u_plus_d_plus) < epsilon)
945 u_star = (d_visco*d_plus)/dist;
948 if(valeur > u_plus_d_plus)
965 double dist,
int face)
970 const double Xpini = 30.;
972 const int itmax = 25;
973 const double seuil = 0.01;
974 const double c1 =
Kappa_*norm_vit;
975 const double c2 = log(
Erugu*dist/d_visco);
977 double u_star = Xpini*d_visco/dist;
980 while ((iter++ < itmax) && (std::fabs(u_star1) > seuil))
982 u_star1 = (c1 - u_star*(log(u_star) + c2))/(c1 + u_star);
983 u_star = (1 + u_star1)*u_star;
985 if (std::fabs(u_star1) >= seuil) erreur_non_convergence();
1001 double u_star_carre = u_star*u_star;
1003 K_eps(elem, 0) = u_star_carre/sqrt(
Cmu_);
1004 K_eps(elem, 1) = u_star_carre*u_star/(
Kappa_*dist);
1011 double dist,
int elem,
int face)
1022 tab_k(elem,0) = u_star*u_star/sqrt(
Cmu_);
1023 nu_t(elem) = u_star*
Kappa_*dist;
1035 double norme_L2 = 0.;
1039 for (
int n_bord = 0; n_bord < domaine_VDF.
nb_front_Cl(); n_bord++)
1041 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
1049 Ustar <<
"Bord " << le_bord.
le_nom() << finl;
1052 Ustar <<
"-------------------------------------------------------------------------------------------";
1053 Ustar <<
"--------------------------------------------------------------------------------------------" << finl;
1054 Ustar <<
"\tFace a\t\t\t\t|\t\t\t\t\t\t\t\t\t| TAU=Nu.Grad(Ut) [m2/s2]" << finl;
1055 Ustar <<
"----------------------------------------|--------------------------------------------------";
1056 Ustar <<
"---------------------|----------------------------------------------------------------------" << finl;
1057 Ustar <<
"X\t\t| Y\t\t\t| u+\t\t\t| d+\t\t\t| u*\t\t\t| ||TAU||_2\t\t| |TAUx|\t\t| |TAUy|" << finl;
1058 Ustar <<
"----------------|-----------------------|-----------------------|-----------------------|--";
1059 Ustar <<
"---------------------|-----------------------|-----------------------|----------------------" << finl;
1063 Ustar <<
"-----------------------------------------------------------------------------------------------------------------";
1064 Ustar <<
"-----------------------------------------------------------------------------------------------------------------" << finl;
1065 Ustar <<
"\tFace a\t\t\t\t\t\t\t|\t\t\t\t\t\t\t\t\t| TAU=Nu.Grad(Ut) [m2/s2]" << finl;
1066 Ustar <<
"----------------------------------------------------------------|------------------------------------------------";
1067 Ustar <<
"-----------------------|-----------------------------------------------------------------------------------------" << finl;
1068 Ustar <<
"X\t\t| Y\t\t\t| Z\t\t\t| u+\t\t\t| d+\t\t\t| u*\t\t\t| ||TAU||_2\t\t| |TAUx|\t\t| |TAUy|\t\t| |TAUz|" << finl;
1069 Ustar <<
"----------------|-----------------------|-----------------------|-----------------------|-----------------------|";
1070 Ustar <<
"-----------------------|-----------------------|-----------------------|-----------------------|-----------------" << finl;
1075 for (
int num_face = ndeb; num_face < nfin; num_face++)
1077 double x = domaine_VDF.
xv(num_face,0);
1078 double y = domaine_VDF.
xv(num_face,1);
1083 Ustar << x <<
"\t| " << y;
1086 double z = domaine_VDF.
xv(num_face, 2);
1087 Ustar << x <<
"\t| " << y <<
"\t| " << z;
1090 norme_L2 = sqrt(norme_L2);
1092 Ustar <<
"\t| " <<
uplus_(num_face)
1095 <<
"\t| " << norme_L2
1103 moy(0) +=
uplus_(num_face);
1116 Ustar <<
"-------------------------------------------------------------" << finl;
1117 Ustar <<
"Calcul des valeurs moyennes (en supposant maillage regulier):" << finl;
1118 Ustar <<
"<u+>= " << moy(0)/moy(3)
1119 <<
" <d+>= " << moy(1)/moy(3)
1120 <<
" <u*>= " << moy(2)/moy(3)
1125 Ustar << finl << finl;
1142 const IntTab& face_voisins = domaine_VDF.
face_voisins();
1143 const IntTab& elem_faces = domaine_VDF.
elem_faces();
1144 const Equation_base& eqn_hydr = mon_modele_turb_hyd->equation();
1148 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
1149 const IntVect& orientation = domaine_VDF.
orientation();
1158 DoubleTrav values(5, 2);
1160 values(0, 0) = visco_1;
1161 values(0, 1) = visco_2;
1162 values(1, 0) = dist_1;
1163 values(1, 1) = dist_2;
1168 int dir_par, dir1, dir2;
1175 visco = std::max(tab_visco(0, 0), DMINFLOAT);
1183 Cerr <<
"In Paroi_std_hyd_VDF::calculer_moyennes_parois : visco = " << tab_visco.
local_min_vect() <<
" <= 0 ? " << finl;
1189 for (
int n_bord = 0; n_bord < nb_front_Cl; n_bord++)
1197 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
1203 int nfin = ndeb + le_bord.
nb_faces();
1216 dir_par = orientation(ndeb);
1241 Cerr <<
que_suis_je() <<
" Aborting during detection of wall orientation."<< finl;
1242 Cerr<<
"Please contact TRUST support."<<finl;
1248 for (
int num_face = ndeb; num_face < nfin; num_face++)
1252 num_elem = face_voisins(num_face, 0);
1256 num_elem = face_voisins(num_face, 1);
1263 values(2,0) += vitesse(elem_faces(num_elem, dir1));
1264 values(3,0) += vitesse(elem_faces(num_elem, dir2));
1265 values(1,0) += domaine_VDF.
dim_elem(num_elem, dir_par);
1267 values(0,0) += visco;
1269 values(0,0) += tab_visco(num_elem);
1274 values(2,1) += vitesse(elem_faces(num_elem, dir1));
1275 values(3,1) += vitesse(elem_faces(num_elem, dir2));
1276 values(1,1) += domaine_VDF.
dim_elem(num_elem, dir_par);
1278 values(0,1) += visco;
1280 values(0,1) += tab_visco(num_elem);
1291 U_moy_1 = sqrt( values(2, 0) * values(2, 0) + values(3, 0) * values(3, 0) ) / values(4, 0);
1292 U_moy_2 = sqrt( values(2, 1) * values(2, 1) + values(3, 1) * values(3, 1) ) / values(4, 1);
1293 dist_1 = values(1, 0)/values(4, 0);
1294 dist_2 = values(1, 1)/values(4, 1);
1295 visco_1 = values(0, 0)/values(4, 0);
1296 visco_2 = values(0, 1)/values(4, 1);
1301 double u_star,
double dist,
1302 double d_visco,
double d_plus,
1303 DoubleTab& tab_nu_t, DoubleTab& tab_k)
1308 tab_nu_t(num_elem) = 0.;
1309 tab_k(num_elem) = 0.;
1311 else if (type_cou == 1)
1314 double deriv = Fdypar_direct(lm_plus);
1315 double x= lm_plus*u_star*deriv;
1326 double k = x*x/sqrt(
Cmu_);
1327 double eps = (k*u_star*u_star*deriv)*sqrt(
Cmu_)/d_visco;
1328 tab_k(num_elem) = k;
1329 tab_nu_t(num_elem) =
Cmu_*k*k/eps;
1331 else if (type_cou == 2)
1333 tab_k(num_elem) = u_star*u_star/sqrt(
Cmu_);
1334 tab_nu_t(num_elem) = u_star*
Kappa_*dist ;
1338 Cerr <<
"Il y a un pbl : type_cou doit etre egal a 0, 1, ou 2!!" << finl;
1339 Cerr <<
"type_cou=" << type_cou << finl;
1346 Cerr <<
"On ne doit pas passer dans Paroi_std_hyd_VDF::calculer_u_star..." << finl;
1357 const IntVect& orientation = domaine_VDF.
orientation();
1358 const IntTab& face_voisins = domaine_VDF.
face_voisins();
1359 const Equation_base& eqn_hydr = mon_modele_turb_hyd->equation();
1363 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
1368 visco = std::max(tab_visco(0, 0), DMINFLOAT);
1376 Cerr <<
"In Paroi_std_hyd_VDF::calculer_hyd_BiK : visco = " << tab_visco.
local_min_vect() <<
" <= 0 ? " << finl;
1384 double u_plus_d_plus, d_visco;
1393 for (
int n_bord=0; n_bord<domaine_VDF.
nb_front_Cl(); n_bord++)
1400 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
1413 for (
int face=ndeb; face<nfin; face++)
1415 vitesse_imposee_face_bord(face-ndeb,k) = cl_diri.
val_imp(face-ndeb,k);
1420 for (
int num_face=ndeb; num_face<nfin; num_face++)
1424 int rang = num_face-ndeb;
1426 vit_paroi[k]=vitesse_imposee_face_bord(rang,k);
1428 ori = orientation(num_face);
1429 if ( (elem =face_voisins(num_face,0)) != -1)
1432 norm_v=norm_vit(vit,elem,ori,domaine_VDF,vit_paroi,val);
1437 elem = face_voisins(num_face,1);
1439 norm_v=norm_vit(vit,elem,ori,domaine_VDF,vit_paroi,val);
1449 d_visco = tab_visco(elem,0);
1451 u_plus_d_plus = norm_v*dist/d_visco;
1458 if (u_plus_d_plus <= valmin)
1465 tab_eps(elem,1) = 0.;
1468 else if ((u_plus_d_plus > valmin) && (u_plus_d_plus < valmax))
1476 double deriv = Fdypar_direct(lm_plus);
1477 double x= lm_plus*u_star*deriv;
1488 tab_k(elem,0) = x*x/sqrt(
Cmu_) ;
1489 tab_eps(elem,1) = (tab_k(elem)*u_star*u_star*deriv)*sqrt(
Cmu_)/d_visco;
1504 double u_star_carre = u_star*u_star;
1506 tab_k(elem) = u_star_carre/sqrt(
Cmu_);
1507 tab_eps(elem) = u_star_carre*u_star/(
Kappa_*dist);
classe Champ_Don_base classe de base des Champs donnes (non calcules)
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
classe Cond_lim Classe generique servant a representer n'importe quelle classe
classe Dirichlet_paroi_defilante Impose la vitesse de paroi dnas une equation de type Navier_Stokes.
classe Dirichlet_paroi_fixe Represente une paroi immobile dans une equation de type Navier_Stokes.
virtual double val_imp(int i) const
Renvoie la valeur imposee sur la i-eme composante du champ a la frontiere au temps par defaut du cham...
double dist_norm_bord_axi(int num_face) const
double dim_elem(int, int) const
int orientation(int) const override
inline DoubleVect& Domaine_VDF::porosite_face() {
double dist_norm_bord(int num_face) const override
double xv(int num_face, int k) 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.
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 Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
virtual const Milieu_base & milieu() const =0
virtual const Champ_Inc_base & inconnue() const =0
classe Fluide_base Cette classe represente un d'un fluide incompressible ainsi que
const Champ_Don_base & viscosite_cinematique() const
int num_premiere_face() const
const Nom & le_nom() const override
Renvoie le nom de la frontiere geometrique.
cette classe permet de specifier des options a la loi de paroi standard.
virtual void set_param(Param &) const
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.
virtual const Nom & le_nom() const
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
Helper class to factorize the readOn method of Objet_U classes.
void ajouter(const char *keyword, const int *value, Param::Nature nat=Param::OPTIONAL)
Register an integer parameter.
void init_lois_paroi_hydraulique_()
void set_param(Param ¶m) const
double calcul_lm_plus(double d_plus)
CLASS: Paroi_std_hyd_VDF.
int calculer_u_star_sous_couche_visq(double, double, double, int)
int compute_buffer_layer(DoubleTab &, double, double, int, int)
int calculer_u_star_sous_couche_log(double, double, double, int)
virtual int initialize_wall_law_komega(DoubleTab &)
int calculer_local(double, double, DoubleTab &, double, double, int, int)
static constexpr double BETA_K
int init_lois_paroi() override
int turbulence_model_type_
void calculer_moyennes_parois(double &, double &, double &, double &, double &, double &)
virtual double calculer_u_star(double &, double &, double &)
int calculer_sous_couche_tampon(DoubleTab &, double, double, int, int)
int compute_law_komega(DoubleTab &)
void imprimer_ustar(Sortie &) const override
int compute_viscous_layer(DoubleTab &field_komega, double dist_y, double viscosity, int elem)
virtual int preparer_calcul_hyd(DoubleTab &)
static constexpr double BETA1
void check_turbulence_model()
Returns an integer value depending on the turbulence model.
int calculer_sous_couche_visq(DoubleTab &, double, int, double, int)
int calculer_hyd_BiK(DoubleTab &, DoubleTab &) override
void modifs_valeurs_turb(int, int, double, double, double, double, DoubleTab &, DoubleTab &)
virtual int init_lois_paroi_hydraulique()
void calculer_uplus_dplus(DoubleVect &, DoubleVect &, DoubleVect &, int, double, double, double)
void set_param(Param ¶m) const override
int calculer_u_star_sous_couche_tampon(double &, double, double, double, int)
int compute_log_layer(DoubleTab &, double, int, int)
int calculer_sous_couche_log(DoubleTab &, double, int, int)
int compute_layer_selection(double, double, DoubleTab &, double, double, int, int)
int calculer_hyd(DoubleTab &) override
static void mp_sum_for_each_item(TRUSTArray< _TYPE_ > &x, int n=-1)
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.
_TYPE_ local_min_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")
const DoubleVect & tab_d_plus() const
const DoubleVect & tab_u_star() const
void ouvrir_fichier_partage(EcrFicPartage &, const Nom &) const
Ouverture/creation d'un fichier d'impression de Face, uplus_, dplus_, tab_u_star, Cisaillement_paroi_...
DoubleTab Cisaillement_paroi_