16#include <Traitement_particulier_NS_canal.h>
17#include <LecFicDistribue.h>
18#include <EcrFicCollecte.h>
19#include <Navier_Stokes_std.h>
20#include <Modele_turbulence_hyd_base.h>
21#include <Probleme_base.h>
22#include <Discretisation_base.h>
23#include <Domaine_VF.h>
24#include <Domaine_Cl_dis_base.h>
25#include <Dirichlet_paroi_fixe.h>
26#include <Schema_Temps_base.h>
27#include <communications.h>
28#include <Fluide_base.h>
29#include <Champ_Uniforme.h>
93 Cerr <<
" Traitement_particulier_canal has to be called from a Navier_Stokes problem " << finl;
97 Motcle accouverte =
"{" , accfermee =
"}" ;
100 if (motbidon == accouverte)
103 les_mots[0] =
"dt_impr_moy_spat";
104 les_mots[1] =
"dt_impr_moy_temp";
105 les_mots[2] =
"debut_stat";
106 les_mots[3] =
"fin_stat";
107 les_mots[4] =
"reprise";
108 les_mots[5] =
"pulsation_w";
109 les_mots[6] =
"nb_points_par_phase";
112 while(motlu != accfermee)
114 int rang=les_mots.
search(motlu);
120 Cerr <<
"Spatial averages are printed for : dt_impr_moy_spat = " <<
dt_impr_moy_spat << finl;
126 Cerr <<
"Temporal averages are printed for : dt_impr_moy_temp = " <<
dt_impr_moy_temp << finl;
132 Cerr <<
"Temporal averages start at : temps_deb = " <<
temps_deb << finl;
138 Cerr <<
"Temporal averages finish at : temps_fin = " <<
temps_fin << finl;
145 Cerr <<
"The time statistics file is : " <<
fich_repr << finl;
152 freq =
w/(2.*3.141592653);
163 Cerr << motlu <<
" is not a keyword for Traitement_particulier_NS_canal " << finl;
164 Cerr <<
"Since the TRUST v1.5, the syntax of Canal option has changed." << finl;
165 Cerr <<
"Check the reference manual." << finl;
172 if (motlu != accfermee)
174 Cerr <<
"Error while reading in Traitement_particulier_NS_canal" << finl;;
175 Cerr <<
"We were expecting a }" << finl;
181 Cerr <<
"Error while reading in Traitement_particulier_NS_canal" << finl;
182 Cerr <<
"We were expecting a {" << finl;
192 Cerr <<
"Traitement_particulier_NS_canal::remplir_Tab_recap ne marche pas pour le VEF" << finl;
198 const RefObjU& modele_turbulence = mon_equation->get_modele(TURBULENCE);
205 if (mon_equation->probleme().nombre_d_equations()>1)
206 if (mon_equation->probleme().equation(1).has_champ(
"temperature"))
208 Temp = mon_equation->probleme().equation(1).get_champ(
"temperature");
238 DoubleVect Y_p(tab_Y);
246 tab_Y_tot(0) = tab_Y(0);
251 for (
int k=0; k<Y_p.
size(); k++)
253 if(!est_egal(Y_p(k),-100.))
257 for (
int j=0; j<tab_Y_tot.
size(); j++)
258 if (est_egal(tab_Y_tot(j),Y_p(k)))
263 tab_Y_tot.
resize(j_tot+1);
264 tab_Y_tot(j_tot) = Y_p(k);
271 if(est_egal(tab_Y_tot(0),1.e12))
273 Cerr <<
"Probleme a la construction de Y_tot" << finl;
280 envoyer(tab_Y_tot, 0, p, 0);
292 Cerr <<
"Traitement_particulier_NS_canal::reprendre_stat!!" << flush << finl;
304 fich_repr_phase +=
"_phase";
314 double tps,tps_deb_moy;
319 fic.
setf(ios::scientific);
323 Cerr <<
"Impossible d'ouvrir le fichier " << fichier << finl;
338 for (
int k=0; k<Np; k++)
341 for (
int k=0; k<Np; k++)
342 for (
int j=0; j<Nv; j++)
343 for (
int i=0; i<NN; i++)
348 Cerr <<
"ERREUR : le temps de debut des stats figurant dans le jeu de donnees differe de beaucoup" << finl;
349 Cerr <<
"du temps defini dans le fichier de reprise : " << fichier << finl;
358 double tps = mon_equation->inconnue().temps();
362 Cerr <<
"Traitement_particulier_NS_canal::sauver_stat!!" << flush << finl;
365 Nom fich_sauv1 =
"val_moy_temp_";
368 Nom fich_sauv2 = fich_sauv1;
369 fich_sauv2+=
"_phase";
378 double tps = mon_equation->inconnue().temps();
385 fic.
setf(ios::scientific);
395 for (
int k=0; k<Np; k++)
398 for (
int k=0; k<Np; k++)
399 for (
int j=0; j<Nv; j++)
400 for (
int i=0; i<NN; i++)
401 fic << val(i,j,k) << finl;
410 DoubleTrav val_moy(
Ny,
Nval);
427 DoubleVect compt_p(
compt);
428 DoubleTab val_moy_p(val_moy);
430 const int NN =
Y_tot.size();
444 recevoir(compt_p,p,0,p);
445 recevoir(val_moy_p,p,0,p);
447 int Y_p_size = Y_p.
size();
448 for (
int i=0; i<Y_p_size; i++)
451 if(est_egal(
Y_tot[j],Y_p[i]))
break;
455 for (
int k=0; k<
Nval; k++)
460 for (
int i=0; i<NN; i++)
461 for (
int k=0; k<
Nval; k++)
474 double tps = mon_equation->inconnue().temps();
480 static int init_stat_temps = 0;
482 double dt_v = mon_equation->schema_temps().pas_de_temps();
483 int NN2 =
Y_tot.size();
485 if(init_stat_temps==0 &&
oui_repr!=1)
495 for (
int j=0; j<
Nval; j++)
496 for (
int i=0; i<NN2; i++)
498 if ((j!=3) && (j!=4) && (j!=5) && (j!=6) && (j!=7) && (j!=8) && (j!=14) && (j!=15) && (j!=16) && (j!=17))
537 double dt_v = mon_equation->schema_temps().pas_de_temps();
539 if ( (cos(
w*tps) > cos(
w*(tps+dt_v))) && (cos(
w*tps) > cos(
w*(tps-dt_v))) )
547 for(
int k=0; k<
Nphase; k++)
551 if( (tps > tps_k-0.5*dt_v) && (tps < tps_k+0.5*dt_v) )
553 for (
int j=0; j<
Nval; j++)
554 for (
int i=0; i<NN; i++)
571 double stationnaire_atteint=mon_equation->schema_temps().stationnaire_atteint();
572 double tps_passe=mon_equation->schema_temps().temps_courant();
573 double nb_pas_dt_max=mon_equation->schema_temps().nb_pas_dt_max();
574 double nb_pas_dt=mon_equation->schema_temps().nb_pas_dt();
575 double temps_max=mon_equation->schema_temps().temps_max();
582 double i, j, epsilon = 1.e-8;
593 double i, j, epsilon = 1.e-8;
601 if ((nb_pas_dt+1<=1) || impr_inst || (temps_max <= tps) || (nb_pas_dt_max <= nb_pas_dt+1) || stationnaire_atteint)
605 Nom fichier1 =
"Moyennes_spatiales_vitesse_rho_mu_";
606 Nom fichier2 =
"Moyennes_spatiales_nut_";
607 Nom fichier3 =
"Moyennes_spatiales_Temp_";
627 if ((tps>
temps_deb) && ((nb_pas_dt+1<=1) || impr_stat || (temps_max <= tps) || (nb_pas_dt_max <= nb_pas_dt+1) || stationnaire_atteint))
631 Nom fichier1 =
"Moyennes_temporelles_vitesse_rho_mu_";
632 Nom fichier2 =
"Moyennes_temporelles_nut_";
633 Nom fichier3 =
"Moyennes__temporelles_Temp_";
651 Nom fichier1 =
"Moyennes_temporelles_vitesse_rho_mu";
652 Nom fichier2 =
"Moyennes_temporelles_nut";
653 Nom fichier3 =
"Moyennes__temporelles_Temp";
666 for(
int k=0; k<
Nphase; k++)
670 Nom fichier1 =
"Moyennes_de_phase_vitesse_rho_mu_";
671 Nom fichier2 =
"Moyennes_de_phase_nut_";
672 Nom fichier3 =
"Moyennes_de_phase_Temp_";
697 int kmin=(nom_discr==
"VEFPreP1B" || nom_discr==
"VEF") ? 1 : 0;
698 int kmax=
Y_tot.size()-1-kmin;
699 double ymin=
Y_tot(kmin);
700 double ymax=
Y_tot(kmax);
701 double hs2=0.5*(ymin+ymax);
704 if ( ymin < 0. || ymax < 0.)
706 Cerr <<
"Error Traitement_particulier_NS_canal" << finl;
707 Cerr <<
"Invalid mesh: Y must be between 0 and H>0" << finl;
708 Cerr <<
"In addition, the mesh must be symmetric along the half-height." << finl;
721 double tauwb, tauwh, tauwm;
725 double tauw_diri_m=0.;
726 double retau_diri_m=0.;
727 double utau_diri_m=0.;
730 double tauw_robin_m=0.;
731 double retau_robin_m=0.;
732 double utau_robin_m=0.;
734 const RefObjU& modele_turbulence = mon_equation->get_modele(TURBULENCE);
739 double tps = mon_equation->inconnue().temps();
741 double nb_pas_dt=mon_equation->schema_temps().nb_pas_dt();
742 int reprise = mon_equation->probleme().reprise_effectuee();
743 bool new_file = ( nb_pas_dt == 0 && reprise == 0 );
746 mode = (ios::out | ios::app);
750 for (
auto& itr : les_cl)
753 if (la_cl->que_suis_je() ==
"Paroi_decalee_Robin")
776 if ( nb_cl_diri != 0 )
778 DoubleVect tauw_diri(nb_cl_diri);
779 DoubleVect retau_diri(nb_cl_diri);
780 DoubleVect utau_diri(nb_cl_diri);
783 double tauw_diri_tmp=0.;
784 int numero_bord_diri=0;
785 int nbfaces_bord_diri=0;
801 for (
auto& itr : les_cl)
812 nbfaces_bord_diri = la_front_dis.
nb_faces();
814 int nfin = ndeb + nbfaces_bord_diri;
818 for (
int fac=ndeb; fac<nfin ; fac++)
820 tauw_diri_tmp += sqrt(tau_tan(fac,0)*tau_tan(fac,0));
834 for (
int fac=ndeb; fac<nfin ; fac++)
836 tauw_diri_tmp += sqrt(tau_tan(fac,0)*tau_tan(fac,0)+tau_tan(fac,2)*tau_tan(fac,2));
848 tauw_diri_tmp=
mp_sum(tauw_diri_tmp)/nb_fac_bord_diri_tot;
849 if(!(mon_equation->probleme().is_dilatable()))
850 tauw_diri_tmp *= rho ;
853 rho=
mp_sum(rho)/nb_fac_bord_diri_tot;
855 mu=
mp_sum(mu)/nb_fac_bord_diri_tot;
857 tauw_diri(numero_bord_diri) = tauw_diri_tmp;
858 utau_diri(numero_bord_diri) = sqrt(tauw_diri_tmp/rho);
859 retau_diri(numero_bord_diri)= rho*utau_diri(numero_bord_diri)*hs2/mu;
861 tauw_diri_m += tauw_diri(numero_bord_diri);
862 utau_diri_m += utau_diri(numero_bord_diri);
863 retau_diri_m += retau_diri(numero_bord_diri);
869 tauw_diri_m =tauw_diri_m/nb_cl_diri;
870 retau_diri_m =retau_diri_m/nb_cl_diri;
871 utau_diri_m =utau_diri_m/nb_cl_diri;
877 SFichier fic8(
"reynolds_tau.dat", mode);
879 fic7 << tps <<
" " << tauw_diri_m <<
" ";
880 fic8 << tps <<
" " << retau_diri_m <<
" ";
881 fic9 << tps <<
" " << utau_diri_m <<
" ";
882 for (
int num=0 ; num<nb_cl_diri ; num++)
884 fic7 << tauw_diri(num) <<
" ";
885 fic8 << retau_diri(num) <<
" ";
886 fic9 << utau_diri(num) <<
" ";
901 if ( nb_cl_robin != 0 )
903 DoubleVect tauw_robin(nb_cl_robin);
904 DoubleVect retau_robin(nb_cl_robin);
905 DoubleVect utau_robin(nb_cl_robin);
908 double tauw_robin_tmp=0.;
909 int numero_bord_robin=0;
910 int nbfaces_bord_robin=0;
925 for (
auto& itr : les_cl)
933 if (la_cl->que_suis_je() ==
"Paroi_decalee_Robin")
936 nbfaces_bord_robin = la_front_dis.
nb_faces();
938 int nfin = ndeb + nbfaces_bord_robin;
942 for (
int fac=ndeb; fac<nfin ; fac++)
944 tauw_robin_tmp+=sqrt(tau_tan(fac,0)*tau_tan(fac,0));
958 for (
int fac=ndeb; fac<nfin ; fac++)
960 tauw_robin_tmp+=sqrt(tau_tan(fac,0)*tau_tan(fac,0)+tau_tan(fac,2)*tau_tan(fac,2));
972 tauw_robin_tmp=
mp_sum(tauw_robin_tmp)/nb_fac_bord_rob_tot;
973 if(!(mon_equation->probleme().is_dilatable()))
974 tauw_robin_tmp *= rho ;
977 rho=
mp_sum(rho)/nb_fac_bord_rob_tot;
979 mu=
mp_sum(mu)/nb_fac_bord_rob_tot;
981 tauw_robin(numero_bord_robin) = tauw_robin_tmp;
982 utau_robin(numero_bord_robin) = sqrt(tauw_robin_tmp/rho);
983 retau_robin(numero_bord_robin)= rho*utau_robin(numero_bord_robin)*hs2/mu;
985 tauw_robin_m += tauw_robin(numero_bord_robin);
986 utau_robin_m += utau_robin(numero_bord_robin);
987 retau_robin_m += retau_robin(numero_bord_robin);
989 numero_bord_robin+=1;
993 tauw_robin_m = tauw_robin_m/nb_cl_robin;
994 retau_robin_m = retau_robin_m/nb_cl_robin;
995 utau_robin_m = utau_robin_m/nb_cl_robin;
1000 SFichier fic4(
"tauw_robin.dat", mode);
1001 SFichier fic5(
"reynolds_tau_robin.dat", mode);
1002 SFichier fic6(
"u_tau_robin.dat", mode);
1003 fic4 << tps <<
" " << tauw_robin_m <<
" ";
1004 fic5 << tps <<
" " << retau_robin_m <<
" ";
1005 fic6 << tps <<
" " << utau_robin_m <<
" ";
1006 for (
int num=0 ; num<nb_cl_robin ; num++)
1008 fic4 << tauw_robin(num) <<
" ";
1009 fic5 << retau_robin(num) <<
" ";
1010 fic6 << utau_robin(num) <<
" ";
1122 tauwb= mu_bas * utang_bas / ymin;
1123 tauwh= mu_haut* utang_haut / ymin;
1130 double utaub=sqrt(tauwb/rho_bas);
1132 double utauh=sqrt(tauwh/rho_haut);
1134 double utaum=0.5*(utauh+utaub);
1137 double retaub=rho_bas*utaub*hs2/mu_bas;
1138 double retauh=rho_haut*utauh*hs2/mu_haut;
1139 double retaum=0.5*(retauh+retaub);
1140 tauwm=0.5*(tauwh+tauwb);
1142 SFichier fic1(
"reynolds_tau.dat", mode);
1145 fic1 << tps <<
" " << retaum <<
" " << retaub <<
" " << retauh << finl;
1146 fic2 << tps <<
" " << utaum <<
" " << utaub <<
" " << utauh << finl;
1147 fic3 << tps <<
" " << tauwm <<
" " << tauwb <<
" " << tauwh << finl;
1163 double tps = mon_equation->inconnue().temps();
1164 double u,v,wl,u2,v2,w2,uv,uw,vw,rho,mu;
1166 fic <<
"# Temps : " << tps << finl;
1169 fic <<
"# (0) : Y " << finl;
1170 fic <<
"# (1) : <u> " << finl;
1171 fic <<
"# (2) : <v> " << finl;
1172 fic <<
"# (3) : <w> " << finl;
1173 fic <<
"# (4) : sqrt(<u.u>-<u>*<u>) " << finl;
1174 fic <<
"# (5) : sqrt(<v.v>-<v>*<v>) " << finl;
1175 fic <<
"# (6) : sqrt(<w.w>-<w>*<w>) " << finl;
1176 fic <<
"# (7) : <u.v>-<u>*<v> " << finl;
1177 fic <<
"# (8) : <u.w>-<u>*<w> " << finl;
1178 fic <<
"# (9) : <v.w>-<v>*<w> " << finl;
1179 fic <<
"# (10) : <rho> " << finl;
1180 fic <<
"# (11) : <mu> " << finl;
1182 fic <<
"# " << finl;
1183 fic <<
"# Nombre minimum de points par plan Y=cste ayant servi au calcul de la moyenne spatiale : " << min_array(
compt_tot) << finl;
1184 fic <<
"# " << finl;
1186 for (
int i=0; i<
Y_tot.size(); i++)
1188 u = val_moy(i,0,k)/dt;
1189 v = val_moy(i,1,k)/dt;
1190 wl = val_moy(i,2,k)/dt;
1191 u2 = val_moy(i,3,k)/dt;
1192 v2 = val_moy(i,4,k)/dt;
1193 w2 = val_moy(i,5,k)/dt;
1194 uv = val_moy(i,6,k)/dt;
1195 uw = val_moy(i,7,k)/dt;
1196 vw = val_moy(i,8,k)/dt;
1197 rho = val_moy(i,10,k)/dt;
1198 mu = val_moy(i,11,k)/dt;
1201 fic <<
Y_tot(i) <<
" " ;
1202 fic << u <<
" " << v <<
" " << wl <<
" " ;
1204 fic << sqrt(std::max(0.,u2)) <<
" " << sqrt(std::max(v2,0.)) <<
" " << sqrt(std::max(w2,0.)) <<
" " ;
1205 fic << -uv <<
" " << -uw <<
" " << -vw <<
" " ;
1206 fic << rho <<
" " << mu <<
" " ;
1217 double tps = mon_equation->inconnue().temps();
1219 fic <<
"# Temps : " << tps << finl;
1222 fic <<
"# (0) : Y " << finl;
1223 fic <<
"# (1) : <nu_t> " << finl;
1225 fic <<
"# " << finl;
1226 fic <<
"# Nombre minimum de points par plan Y=cste ayant servi au calcul de la moyenne spatiale : " << min_array(
compt_tot) << finl;
1227 fic <<
"# " << finl;
1229 for (
int i=0; i<
Y_tot.size(); i++)
1230 fic <<
Y_tot(i) <<
" " << val_moy(i,12,k)/dt << finl;
1240 double tps = mon_equation->inconnue().temps();
1241 double T,T2,uT,vT,wT;
1243 fic <<
"# Temps : " << tps << finl;
1246 fic <<
"# (0) : Y " << finl;
1247 fic <<
"# (1) : <T> " << finl;
1248 fic <<
"# (2) : sqrt(<T.T>-<T>*<T>) " << finl;
1249 fic <<
"# (3) : <u.T>-<u>*<T> " << finl;
1250 fic <<
"# (4) : <v.T>-<v>*<T> " << finl;
1251 fic <<
"# (5) : <w.T>-<w>*<T> " << finl;
1253 fic <<
"# " << finl;
1254 fic <<
"# Nombre minimum de points par plan Y=cste ayant servi au calcul de la moyenne spatiale : " << min_array(
compt_tot) << finl;
1255 fic <<
"# " << finl;
1257 for (
int i=0; i<
Y_tot.size(); i++)
1262 T = val_moy(i,13,k)/dt;
1263 T2 = val_moy(i,14,k)/dt;
1264 uT = val_moy(i,15,k)/dt;
1265 vT = val_moy(i,16,k)/dt;
1266 wT = val_moy(i,17,k)/dt;
1269 fic <<
Y_tot(i) <<
" " ;
1271 fic << T <<
" " <<sqrt(std::max(T2,0.))<<
" ";
1272 fic << -uT <<
" " << -vT <<
" " << -wT <<
" ";
1286 double tps = mon_equation->inconnue().temps();
1287 double u,v,wl,u2,v2,w2,uv,uw,vw,rho,mu;
1289 fic <<
"# Temps : " << tps << finl;
1292 fic <<
"# (0) : Y " << finl;
1293 fic <<
"# (1) : <u> " << finl;
1294 fic <<
"# (2) : <v> " << finl;
1295 fic <<
"# (3) : <w> " << finl;
1296 fic <<
"# (4) : sqrt(<u.u>-<u>*<u>) " << finl;
1297 fic <<
"# (5) : sqrt(<v.v>-<v>*<v>) " << finl;
1298 fic <<
"# (6) : sqrt(<w.w>-<w>*<w>) " << finl;
1299 fic <<
"# (7) : <u.v>-<u>*<v> " << finl;
1300 fic <<
"# (8) : <u.w>-<u>*<w> " << finl;
1301 fic <<
"# (9) : <v.w>-<v>*<w> " << finl;
1302 fic <<
"# (10) : <rho> " << finl;
1303 fic <<
"# (11) : <mu> " << finl;
1305 fic <<
"# " << finl;
1306 fic <<
"# Nombre minimum de points par plan Y=cste ayant servi au calcul de la moyenne spatiale : " << min_array(
compt_tot) << finl;
1307 fic <<
"# " << finl;
1309 for (
int i=0; i<
Y_tot.size(); i++)
1311 u = val_moy(i,0,k)/dt;
1312 v = val_moy(i,1,k)/dt;
1313 wl = val_moy(i,2,k)/dt;
1314 u2 = val_moy(i,3,k)/dt;
1315 v2 = val_moy(i,4,k)/dt;
1316 w2 = val_moy(i,5,k)/dt;
1317 uv = val_moy(i,6,k)/dt;
1318 uw = val_moy(i,7,k)/dt;
1319 vw = val_moy(i,8,k)/dt;
1320 rho = val_moy(i,10,k)/dt;
1321 mu = val_moy(i,11,k)/dt;
1324 fic <<
Y_tot(i) <<
" " ;
1325 fic << u <<
" " << v <<
" " << wl <<
" " ;
1327 fic << sqrt(std::max(0.,u2-u*u)) <<
" " << sqrt(std::max(v2-v*v,0.)) <<
" " << sqrt(std::max(w2-wl*wl,0.)) <<
" " ;
1328 fic << u*v-uv <<
" " << u*wl-uw <<
" " << v*wl-vw <<
" " ;
1331 fic << rho <<
" " << mu <<
" " ;
1343 fic.
setf(ios::scientific);
1344 double tps = mon_equation->inconnue().temps();
1345 double u,v,wl,T,T2,uT,vT,wT;
1347 fic <<
"# Temps : " << tps << finl;
1350 fic <<
"# (0) : Y " << finl;
1351 fic <<
"# (1) : <T> " << finl;
1352 fic <<
"# (2) : sqrt(<T.T>-<T>*<T>) " << finl;
1353 fic <<
"# (3) : <u.T>-<u>*<T> " << finl;
1354 fic <<
"# (4) : <v.T>-<v>*<T> " << finl;
1355 fic <<
"# (5) : <w.T>-<w>*<T> " << finl;
1357 fic <<
"# " << finl;
1358 fic <<
"# Nombre minimum de points par plan Y=cste ayant servi au calcul de la moyenne spatiale : " << min_array(
compt_tot) << finl;
1359 fic <<
"# " << finl;
1361 for (
int i=0; i<
Y_tot.size(); i++)
1363 u = val_moy(i,0,k)/dt;
1364 v = val_moy(i,1,k)/dt;
1365 wl = val_moy(i,2,k)/dt;
1366 T = val_moy(i,13,k)/dt;
1367 T2 = val_moy(i,14,k)/dt;
1368 uT = val_moy(i,15,k)/dt;
1369 vT = val_moy(i,16,k)/dt;
1370 wT = val_moy(i,17,k)/dt;
1373 fic <<
Y_tot(i) <<
" " ;
1375 fic << T <<
" " << sqrt(std::max(T2-T*T,0.)) <<
" " ;
1376 fic << u*T-uT <<
" " << v*T-vT <<
" " << wl*T-wT <<
" ";
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
virtual DoubleTab & valeurs()=0
classe Cond_lim Classe generique servant a representer n'importe quelle classe
classe Conds_lim Cette classe represente un vecteur de conditions aux limites.
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.
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
Fichier en lecture Cette classe est a la classe C++ ifstream ce que la classe Entree est a la.
void setf(IOS_FORMAT code)
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 Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
Domaine_dis_base & domaine_dis()
Renvoie le domaine discretise associe a l'equation.
classe Fluide_base Cette classe represente un d'un fluide incompressible ainsi que
const Champ_Don_base & viscosite_dynamique() const
int num_premiere_face() const
virtual const Equation_base & equation(const std::string &nom_inc) const
virtual const Champ_base & masse_volumique() const
Renvoie la masse volumique du milieu.
Classe Modele_turbulence_hyd_base Cette classe sert de base a la hierarchie des classes.
Une chaine de caractere (Nom) en majuscules.
Un tableau d'objets de la classe Motcle.
int search(const Motcle &t) const
classe Navier_Stokes_std Cette classe porte les termes de l'equation de la dynamique
class Nom Une chaine de caractere pour nommer les objets de TRUST
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 Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
static int nproc()
renvoie le nombre de processeurs dans le groupe courant Voir Comm_Group::nproc() et PE_Groups::curren...
static double mp_sum(double)
Calcule la somme de x sur tous les processeurs du groupe courant.
static double mp_sum_as_double(int v)
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.
static int je_suis_maitre()
renvoie 1 si on est sur le processeur maitre du groupe courant (c'est a dire me() == 0),...
Cette classe est a la classe C++ ofstream ce que la classe Sortie est a la classe C++ ostream Elle re...
Sortie & flush() override
Force l'ecriture sur disque des donnees dans le tampon Utilise l'implementation de la classe ofstream...
void setf(IOS_FORMAT code) override
Classe de base des flux de sortie.
virtual void ref(const TRUSTTab &)
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
_SIZE_ dimension(int d) const
void resize(_SIZE_, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
const Objet_U & valeur() const
classe Traitement_particulier_NS_base Derive de Support_Champ_Masse_Volumique: utilisation de rho
classe Traitement_particulier_NS_canal Cette classe permet de faire les traitements particuliers
virtual void remplir_Tab_recap(IntTab &) const
Traitement_particulier_NS_canal()
void preparer_calcul_particulier() override
Entree & lire(Entree &) override
void ecriture_fichiers_moy_Temp_old(const DoubleTab &, const Nom &, const double, const int) const
virtual void calculer_moyenne_spatiale_Temp(DoubleTab &) const =0
virtual void calculer_moyenne_spatiale_nut(DoubleTab &) const =0
void calcul_reynolds_tau()
void ecriture_fichiers_moy_Temp(const DoubleTab &, const Nom &, const double, const int) const
void sauver_stat_canal(const DoubleTab &, const Nom &) const
virtual void calculer_moyenne_spatiale_vitesse_rho_mu(DoubleTab &) const =0
void ecriture_fichiers_moy_vitesse_rho_mu(const DoubleTab &, const Nom &, const double, const int) const
void post_traitement_particulier() override
void reprendre_stat_canal(DoubleTab &, const Nom &)
virtual void remplir_Y(DoubleVect &, DoubleVect &, int &) const =0
void ecriture_fichiers_moy_vitesse_rho_mu_old(const DoubleTab &, const Nom &, const double, const int) const
void ecriture_fichiers_moy_nut(const DoubleTab &, const Nom &, const double, const int) const
void remplir_reordonne_Y_tot(const DoubleVect &, DoubleVect &) const
void reprendre_stat() override
void sauver_stat() const override
Classe Turbulence_paroi_base Classe de base pour la hierarchie des classes representant les modeles.
const DoubleTab & Cisaillement_paroi() const