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>
58 param.lire_avec_accolades_depuis(s);
79 uplus_.resize(le_dom_dis_->nb_faces_bord());
88 Cmu_ = mon_modele_turb_hyd->get_Cmu();
99 const IntTab& face_voisins = le_dom_dis_->face_voisins();
103 int ndeb, nfin, elem;
105 for (
int n_bord = 0; n_bord < le_dom_dis_->nb_front_Cl(); n_bord++)
111 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
122 Cerr <<
"Erreur TRUST dans Paroi_std_hyd_VDF::preparer_calculer_hyd" << finl;
123 Cerr <<
"Le DoubleTab tab ne peut pas avoir plus de 2 entrees" << finl;
128 for (
int num_face = ndeb; num_face < nfin; num_face++)
129 if ((elem = face_voisins(num_face, 0)) != -1)
130 for (
int k = 0; k < nb_comp; k++)
134 elem = face_voisins(num_face, 1);
135 for (
int k = 0; k < nb_comp; k++)
167 const IntVect& orientation = domaine_VDF.
orientation();
168 const IntTab& face_voisins = domaine_VDF.
face_voisins();
169 const Equation_base& eqn_hydr = mon_modele_turb_hyd->equation();
173 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
178 visco = std::max(tab_visco(0, 0), DMINFLOAT);
186 Cerr <<
"In Paroi_std_hyd_VDF::calculer_hyd : visco = " << tab_visco.
local_min_vect() <<
" <= 0 ? " << finl;
189 int ndeb, nfin, elem, ori;
190 double norm_v, dist, u_plus_d_plus, d_visco;
200 for (
int n_bord = 0; n_bord < domaine_VDF.
nb_front_Cl(); n_bord++)
207 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
220 for (
int face = ndeb; face < nfin; face++)
222 vitesse_imposee_face_bord(face-ndeb, k) = cl_diri.
val_imp(face-ndeb, k);
227 for (
int num_face = ndeb; num_face < nfin; num_face++)
231 int rang = num_face-ndeb;
233 vit_paroi[k] = vitesse_imposee_face_bord(rang, k);
235 ori = orientation(num_face);
236 if ((elem = face_voisins(num_face, 0)) != -1)
239 norm_v = norm_vit(vit, elem, ori, domaine_VDF, vit_paroi, val);
244 elem = face_voisins(num_face, 1);
246 norm_v = norm_vit(vit, elem, ori, domaine_VDF, vit_paroi, val);
258 d_visco = tab_visco(elem, 0);
260 u_plus_d_plus = norm_v*dist/d_visco;
268 calculer_local(u_plus_d_plus, d_visco, tab1, norm_v, dist, elem, num_face);
275 calculer_local(u_plus_d_plus, d_visco, tab1, tab2, norm_v, dist, elem, num_face);
303 num_face, dist, d_visco, norm_v) ;
400 uplus_.resize(le_dom_dis_->nb_faces_bord());
402 Cmu_ = mon_modele_turb_hyd->get_Cmu();
414 for (
int iter = 0; iter < 10; ++iter)
423 const IntVect& orientation = domaine_VDF.
orientation();
424 const IntTab& face_voisins = domaine_VDF.
face_voisins();
425 const Equation_base& eqn_hydr = mon_modele_turb_hyd->equation();
429 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
437 visco = std::max(tab_visco(0, 0), DMINFLOAT);
445 Cerr <<
"In Paroi_std_hyd_VDF::compute_law_komega : visco = " << tab_visco.
local_min_vect() <<
" <= 0 ? " << finl;
448 int ndeb, nfin, elem, ori;
450 double norm_v, dist, d_visco;
460 for (
int n_bord = 0; n_bord < domaine_VDF.
nb_front_Cl(); n_bord++)
468 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
484 for (
int face = ndeb; face < nfin; face++)
486 vitesse_imposee_face_bord(face - ndeb, k) = cl_diri.
val_imp(face - ndeb, k);
491 for (
int num_face = ndeb; num_face < nfin; num_face++)
495 vit_paroi[k] = vitesse_imposee_face_bord(num_face - ndeb, k);
497 ori = orientation(num_face);
498 if ((elem = face_voisins(num_face, 0)) != -1)
501 norm_v = norm_vit(vit, elem, ori, domaine_VDF, vit_paroi, val);
506 elem = face_voisins(num_face, 1);
508 norm_v = norm_vit(vit, elem, ori, domaine_VDF, vit_paroi, val);
522 d_visco = tab_visco(elem, 0);
524 const double u_plus_d_plus = norm_v*dist/d_visco;
553 num_face, dist, d_visco, norm_v) ;
564 DoubleTab& field_komega,
double norm_vit,
565 double dist,
int elem,
int num_face)
570 if (u_plus_d_plus <= valmin)
576 else if ((u_plus_d_plus > valmin) && (u_plus_d_plus < valmax))
593 double viscosity,
int elem)
595 field_komega(elem, 0) = 0;
601 double viscosity,
int elem,
int face)
610 const double yPlus = u_star*dist_y/viscosity;
613 double deriv = Fdypar_direct(lm_plus);
614 double x = lm_plus*u_star*deriv;
616 field_komega(elem, 0) = x*x/
sCmu;
617 const double phiTanh = tanh(0.1*0.1*0.1*0.1*yPlus*yPlus*yPlus*yPlus);
619 const double omega_log = u_star/(std::sqrt(
BETA_K)*
Kappa_*dist_y);
620 const double b1 = omega_vis + omega_log;
621 const double b2 = pow(pow(omega_vis, 1.2) + pow(omega_log,1.2), 1.0/1.2);
623 field_komega(elem, 1) = phiTanh*b1 + (1 - phiTanh)*b2;
631 const double u_star_carre = u_star*u_star;
633 field_komega(elem, 0) = u_star_carre/sqrt(
Cmu_);
634 field_komega(elem, 1) = u_star/(std::sqrt(
BETA_K)*
Kappa_*dist_y);
641 DoubleVect& tab_ustar,
int num_face,
642 double dist,
double d_visco,
double norm_v)
644 double ustar = tab_ustar(num_face);
645 dplus(num_face) = ustar*dist/d_visco;
647 uplus(num_face) = norm_v/ustar;
652 DoubleTab& k_eps,
double norm_vit,
653 double dist,
int elem,
int num_face)
658 if (u_plus_d_plus <= valmin)
665 else if ((u_plus_d_plus > valmin) && (u_plus_d_plus < valmax))
684 DoubleTab& tab_nu_t, DoubleTab& tab_k,
double norm_vit,
685 double dist,
int elem,
int num_face)
690 if (u_plus_d_plus <= valmin)
697 else if ((u_plus_d_plus > valmin) && (u_plus_d_plus < valmax))
705 else if (u_plus_d_plus >= valmax)
716 double dist,
int& type_cou,
double& d_plus)
722 if (u_plus_d_plus <= valmin)
730 else if ((u_plus_d_plus > valmin) && (u_plus_d_plus < valmax))
738 else if (u_plus_d_plus >= valmax)
759 double dist,
int face)
773 return sqrt(norm_vit*d_visco/dist);
778 int elem,
double d_visco,
int face)
790 double d_plus = dist*u_star/d_visco;
791 double u_star_carre = u_star*u_star;
800 K_eps(elem, 0) = u_star_carre*d_plus*d_plus*C;
802 K_eps(elem, 1) = u_star_carre*u_star_carre/d_visco*(d_plus*d_plus*C)*alpha;
819 double d_visco,
double dist,
int face)
823 double d_plus_min = 5;
824 double d_plus_max = 30;
825 double epsilon = 1.e-12;
826 double gauche =
table_hyd.val(d_plus_min);
827 double droite =
table_hyd.val(d_plus_max);
829 if (gauche == droite)
835 double deriv = (droite - gauche)/(d_plus_max - d_plus_min);
836 d_plus = d_plus_min + (u_plus_d_plus - gauche)/deriv;
838 if (std::fabs(valeur - u_plus_d_plus) < epsilon)
840 double u_star = (d_visco*d_plus)/dist;
844 if (valeur > u_plus_d_plus)
861 double d_plus,
int elem,
int face)
866 double deriv = Fdypar_direct(lm_plus);
867 double x = lm_plus*u_star*deriv;
882 K_eps(elem,0) = x*x/sqrt(
Cmu_) ;
883 K_eps(elem,1) = (K_eps(elem,0)*u_star*u_star*deriv)*sqrt(
Cmu_)/d_visco;
890 double d_visco,
double d_plus,
897 double deriv = Fdypar_direct(lm_plus);
898 double x = lm_plus*u_star*deriv;
910 double k = x*x/sqrt(
Cmu_);
911 double eps = (k*u_star*u_star*deriv)*sqrt(
Cmu_)/d_visco;
913 nu_t(elem) =
Cmu_*k*k/eps;
918 double dist,
double& d_plus)
922 double d_plus_min = 5;
923 double d_plus_max = 30;
925 double epsilon = 1.e-12;
926 double gauche =
table_hyd.val(d_plus_min);
927 double droite =
table_hyd.val(d_plus_max);
930 if (gauche == droite)
936 double deriv = (droite - gauche)/(d_plus_max - d_plus_min);
937 d_plus = d_plus_min + (u_plus_d_plus - gauche)/deriv;
939 if(std::fabs(valeur - u_plus_d_plus) < epsilon)
941 u_star = (d_visco*d_plus)/dist;
944 if(valeur > u_plus_d_plus)
961 double dist,
int face)
966 const double Xpini = 30.;
968 const int itmax = 25;
969 const double seuil = 0.01;
970 const double c1 =
Kappa_*norm_vit;
971 const double c2 = log(
Erugu*dist/d_visco);
973 double u_star = Xpini*d_visco/dist;
976 while ((iter++ < itmax) && (std::fabs(u_star1) > seuil))
978 u_star1 = (c1 - u_star*(log(u_star) + c2))/(c1 + u_star);
979 u_star = (1 + u_star1)*u_star;
981 if (std::fabs(u_star1) >= seuil) erreur_non_convergence();
997 double u_star_carre = u_star*u_star;
999 K_eps(elem, 0) = u_star_carre/sqrt(
Cmu_);
1000 K_eps(elem, 1) = u_star_carre*u_star/(
Kappa_*dist);
1007 double dist,
int elem,
int face)
1018 tab_k(elem,0) = u_star*u_star/sqrt(
Cmu_);
1019 nu_t(elem) = u_star*
Kappa_*dist;
1031 double norme_L2 = 0.;
1035 for (
int n_bord = 0; n_bord < domaine_VDF.
nb_front_Cl(); n_bord++)
1037 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
1045 Ustar <<
"Bord " << le_bord.
le_nom() << finl;
1048 Ustar <<
"-------------------------------------------------------------------------------------------";
1049 Ustar <<
"--------------------------------------------------------------------------------------------" << finl;
1050 Ustar <<
"\tFace a\t\t\t\t|\t\t\t\t\t\t\t\t\t| TAU=Nu.Grad(Ut) [m2/s2]" << finl;
1051 Ustar <<
"----------------------------------------|--------------------------------------------------";
1052 Ustar <<
"---------------------|----------------------------------------------------------------------" << finl;
1053 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;
1054 Ustar <<
"----------------|-----------------------|-----------------------|-----------------------|--";
1055 Ustar <<
"---------------------|-----------------------|-----------------------|----------------------" << finl;
1059 Ustar <<
"-----------------------------------------------------------------------------------------------------------------";
1060 Ustar <<
"-----------------------------------------------------------------------------------------------------------------" << finl;
1061 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;
1062 Ustar <<
"----------------------------------------------------------------|------------------------------------------------";
1063 Ustar <<
"-----------------------|-----------------------------------------------------------------------------------------" << finl;
1064 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;
1065 Ustar <<
"----------------|-----------------------|-----------------------|-----------------------|-----------------------|";
1066 Ustar <<
"-----------------------|-----------------------|-----------------------|-----------------------|-----------------" << finl;
1071 for (
int num_face = ndeb; num_face < nfin; num_face++)
1073 double x = domaine_VDF.
xv(num_face,0);
1074 double y = domaine_VDF.
xv(num_face,1);
1079 Ustar << x <<
"\t| " << y;
1082 double z = domaine_VDF.
xv(num_face, 2);
1083 Ustar << x <<
"\t| " << y <<
"\t| " << z;
1086 norme_L2 = sqrt(norme_L2);
1088 Ustar <<
"\t| " <<
uplus_(num_face)
1091 <<
"\t| " << norme_L2
1099 moy(0) +=
uplus_(num_face);
1112 Ustar <<
"-------------------------------------------------------------" << finl;
1113 Ustar <<
"Calcul des valeurs moyennes (en supposant maillage regulier):" << finl;
1114 Ustar <<
"<u+>= " << moy(0)/moy(3)
1115 <<
" <d+>= " << moy(1)/moy(3)
1116 <<
" <u*>= " << moy(2)/moy(3)
1121 Ustar << finl << finl;
1138 const IntTab& face_voisins = domaine_VDF.
face_voisins();
1139 const IntTab& elem_faces = domaine_VDF.
elem_faces();
1140 const Equation_base& eqn_hydr = mon_modele_turb_hyd->equation();
1144 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
1145 const IntVect& orientation = domaine_VDF.
orientation();
1154 DoubleTrav values(5, 2);
1156 values(0, 0) = visco_1;
1157 values(0, 1) = visco_2;
1158 values(1, 0) = dist_1;
1159 values(1, 1) = dist_2;
1164 int dir_par, dir1, dir2;
1171 visco = std::max(tab_visco(0, 0), DMINFLOAT);
1179 Cerr <<
"In Paroi_std_hyd_VDF::calculer_moyennes_parois : visco = " << tab_visco.
local_min_vect() <<
" <= 0 ? " << finl;
1185 for (
int n_bord = 0; n_bord < nb_front_Cl; n_bord++)
1193 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
1199 int nfin = ndeb + le_bord.
nb_faces();
1212 dir_par = orientation(ndeb);
1237 Cerr <<
que_suis_je() <<
" Aborting during detection of wall orientation."<< finl;
1238 Cerr<<
"Please contact TRUST support."<<finl;
1244 for (
int num_face = ndeb; num_face < nfin; num_face++)
1248 num_elem = face_voisins(num_face, 0);
1252 num_elem = face_voisins(num_face, 1);
1259 values(2,0) += vitesse(elem_faces(num_elem, dir1));
1260 values(3,0) += vitesse(elem_faces(num_elem, dir2));
1261 values(1,0) += domaine_VDF.
dim_elem(num_elem, dir_par);
1263 values(0,0) += visco;
1265 values(0,0) += tab_visco(num_elem);
1270 values(2,1) += vitesse(elem_faces(num_elem, dir1));
1271 values(3,1) += vitesse(elem_faces(num_elem, dir2));
1272 values(1,1) += domaine_VDF.
dim_elem(num_elem, dir_par);
1274 values(0,1) += visco;
1276 values(0,1) += tab_visco(num_elem);
1287 U_moy_1 = sqrt( values(2, 0) * values(2, 0) + values(3, 0) * values(3, 0) ) / values(4, 0);
1288 U_moy_2 = sqrt( values(2, 1) * values(2, 1) + values(3, 1) * values(3, 1) ) / values(4, 1);
1289 dist_1 = values(1, 0)/values(4, 0);
1290 dist_2 = values(1, 1)/values(4, 1);
1291 visco_1 = values(0, 0)/values(4, 0);
1292 visco_2 = values(0, 1)/values(4, 1);
1297 double u_star,
double dist,
1298 double d_visco,
double d_plus,
1299 DoubleTab& tab_nu_t, DoubleTab& tab_k)
1304 tab_nu_t(num_elem) = 0.;
1305 tab_k(num_elem) = 0.;
1307 else if (type_cou == 1)
1310 double deriv = Fdypar_direct(lm_plus);
1311 double x= lm_plus*u_star*deriv;
1322 double k = x*x/sqrt(
Cmu_);
1323 double eps = (k*u_star*u_star*deriv)*sqrt(
Cmu_)/d_visco;
1324 tab_k(num_elem) = k;
1325 tab_nu_t(num_elem) =
Cmu_*k*k/eps;
1327 else if (type_cou == 2)
1329 tab_k(num_elem) = u_star*u_star/sqrt(
Cmu_);
1330 tab_nu_t(num_elem) = u_star*
Kappa_*dist ;
1334 Cerr <<
"Il y a un pbl : type_cou doit etre egal a 0, 1, ou 2!!" << finl;
1335 Cerr <<
"type_cou=" << type_cou << finl;
1342 Cerr <<
"On ne doit pas passer dans Paroi_std_hyd_VDF::calculer_u_star..." << finl;
1353 const IntVect& orientation = domaine_VDF.
orientation();
1354 const IntTab& face_voisins = domaine_VDF.
face_voisins();
1355 const Equation_base& eqn_hydr = mon_modele_turb_hyd->equation();
1359 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
1364 visco = std::max(tab_visco(0, 0), DMINFLOAT);
1372 Cerr <<
"In Paroi_std_hyd_VDF::calculer_hyd_BiK : visco = " << tab_visco.
local_min_vect() <<
" <= 0 ? " << finl;
1380 double u_plus_d_plus, d_visco;
1389 for (
int n_bord=0; n_bord<domaine_VDF.
nb_front_Cl(); n_bord++)
1396 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
1409 for (
int face=ndeb; face<nfin; face++)
1411 vitesse_imposee_face_bord(face-ndeb,k) = cl_diri.
val_imp(face-ndeb,k);
1416 for (
int num_face=ndeb; num_face<nfin; num_face++)
1420 int rang = num_face-ndeb;
1422 vit_paroi[k]=vitesse_imposee_face_bord(rang,k);
1424 ori = orientation(num_face);
1425 if ( (elem =face_voisins(num_face,0)) != -1)
1428 norm_v=norm_vit(vit,elem,ori,domaine_VDF,vit_paroi,val);
1433 elem = face_voisins(num_face,1);
1435 norm_v=norm_vit(vit,elem,ori,domaine_VDF,vit_paroi,val);
1445 d_visco = tab_visco(elem,0);
1447 u_plus_d_plus = norm_v*dist/d_visco;
1454 if (u_plus_d_plus <= valmin)
1461 tab_eps(elem,1) = 0.;
1464 else if ((u_plus_d_plus > valmin) && (u_plus_d_plus < valmax))
1472 double deriv = Fdypar_direct(lm_plus);
1473 double x= lm_plus*u_star*deriv;
1484 tab_k(elem,0) = x*x/sqrt(
Cmu_) ;
1485 tab_eps(elem,1) = (tab_k(elem)*u_star*u_star*deriv)*sqrt(
Cmu_)/d_visco;
1500 double u_star_carre = u_star*u_star;
1502 tab_k(elem) = u_star_carre/sqrt(
Cmu_);
1503 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_