TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Paroi_TBLE_QDM.cpp
1/****************************************************************************
2* Copyright (c) 2015 - 2016, CEA
3* All rights reserved.
4*
5* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
9*
10* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
11* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
12* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13*
14*****************************************************************************/
15#include <Paroi_TBLE_QDM.h>
16#include <Domaine_dis_base.h>
17
18#include <Front_VF.h>
19#include <Domaine_VF.h>
20#include <EFichier.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>
25#include <SFichier.h>
26#include <EcrFicPartage.h>
27#include <Champ_Fonc_Fonction.h>
28#include <Fluide_base.h>
29#include <Domaine_Cl_dis_base.h>
30#include <Param.h>
31#include <Cond_lim.h>
32
33// XD Paroi_TBLE_QDM objet_u Paroi_TBLE_QDM BRACE Wall function using the thin boundary layer formulation.
34
36{
37 nb_pts=-1; // nb de pts dans le maillage fin
38 modele_visco = "Diffu_lm"; //modele de viscosite turbulente
39 nb_comp = Objet_U::dimension-1; //nb de composantes dans le maillage fin
40 fac=1.; // facteur de raffinement du maillage fin
41 oui_stats=0; // stats (1=oui/0=non)
42 tps_deb_stats=-1; // debut calcul des moyennes stats dans le maillage fin
43 tps_fin_stats=-1; // fin des stats
44 epsilon = 1.e-5; // seuil de resolution dans le maillage fin
45 max_it = 1000; // max d'iterations dans le maillage fin
46 nu_t_dyn=0;
47 tps_start_stat_nu_t_dyn = -1;//tps de declenchement de la moyenne de nu_t en premiere maille
48 tps_nu_t_dyn = -1;//Temps de debut d'utilisation du nu_t en premiere maille dans TBLE
49 nb_post_pts = 0;
50 reprise_ok = 0;
51
52 mu_fonction = 0;
54
55 statio = 0;
56 max_it_statio = -1;
57 eps_statio = -1.;
58
60}
61
63{
64 param.ajouter("N",&nb_pts,Param::REQUIRED); // XD_ADD_P int
65 // XD_CONT Number of points for the fine mesh
66 param.ajouter("modele_visco",&modele_visco); // XD_ADD_P chaine
67 // XD_CONT Name of the turbulent viscosity model
68 param.ajouter("facteur",&fac); // XD_ADD_P double
69 // XD_CONT Fine mesh refinement factor
70 //param.ajouter_non_std("stats",(this));
71 param.ajouter("epsilon",&epsilon); // XD_ADD_P double
72 // XD_CONT Resolution threshold for the fine mesh
73 param.ajouter("max_it",&max_it); // XD_ADD_P int
74 // XD_CONT Maximum number of iteration in the fine mesh
75 /*
76 param.ajouter_non_std("nu_t_dyn",(this));
77 param.ajouter_non_std("tps_start_stat_nu_t_dyn",(this));
78 param.ajouter_non_std("tps_nu_t_dyn",(this));
79 param.ajouter_non_std("sonde_tble",(this));
80 */
81 param.ajouter_flag("restart",&restart);
82 /*
83 param.ajouter_non_std("stationnaire",(this));
84 param.ajouter_non_std("mu",(this));
85 param.ajouter_non_std("lambda",(this));
86 param.ajouter_non_std("sans_source_boussinesq",(this));
87 */
88}
89
91{
92 //Motcle motlu;
93 if (mot=="stats")
94 {
95 oui_stats=1;
96 is >> tps_deb_stats;
97 is >> tps_fin_stats;
98 if((tps_deb_stats!=-1) && tps_fin_stats!=-1)
99 Cerr << "Statistics time TBLE : OK" << finl;
100 else
101 {
102 Cerr << "WARNING !!!!! Statistics time for TBLE not coherent." << finl;
104 }
105 return 1;
106 }
107
108 else if (mot=="nu_t_dyn")
109 {
110 is >> nu_t_dyn;
111 Cerr << "nu_t_dyn = " << nu_t_dyn << finl;
112 if(nu_t_dyn!=0)
113 Cerr << "Dynamic calculation of nu_t for TBLE" << finl;
114 return 1;
115 }
116 else if (mot=="tps_start_stat_nu_t_dyn")
117 {
119 Cerr << "tps_start_stat_nu_t_dyn = " << tps_start_stat_nu_t_dyn << finl;
120 if((nu_t_dyn!=0)&&(tps_start_stat_nu_t_dyn >= 0))
121 Cerr << "nu_t average starts at t = " << tps_start_stat_nu_t_dyn << finl;
122 else
123 {
124 Cerr << "Problem with the tps_start_stat_nu_t_dyn parameter for TBLE." << finl;
126 }
127 return 1;
128 }
129 else if (mot=="tps_nu_t_dyn")
130 {
131 is >> tps_nu_t_dyn;
132 Cerr << "tps_nu_t_dyn = " << tps_nu_t_dyn << finl;
133 if((nu_t_dyn!=0)&&(tps_nu_t_dyn >= 0))
134 Cerr << "Time period of nu_t average before use = " << tps_nu_t_dyn << finl;
135 else
136 {
137 Cerr << "Problem with the tps_nu_t_dyn parameter for TBLE." << finl;
139 }
140 return 1;
141 }
142 else if (mot=="sonde_tble")
143 {
144 is >> nb_post_pts;
146 for(int i=0; i<nb_post_pts; i++)
147 {
148 nom_pts.dimensionner(nb_post_pts);
149 is >> nom_pts[i];
150 Cerr << "Nom"<<i<<"=" << nom_pts[i] <<finl;
151 for(int j=0; j<Objet_U::dimension ; j++)
152 {
153 is >> sonde_tble(i,j);
154 Cerr << "sonde_tble( "<< i << "," << j <<" ) =" << sonde_tble(i,j) << finl;
155 }
156 }
157 return 1;
158 }
159 else if (mot=="stationnaire")
160 {
161 statio = 1;
162 is >> max_it_statio >> eps_statio;
163 if (max_it_statio<0 || eps_statio<0)
164 {
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;
169 }
170 return 1;
171 }
172 else if (mot=="mu")
173 {
174 mu_fonction = 1 ;
175 is >> mu_chaine;
176 return 1;
177 }
178 else if (mot=="lambda")
179 {
180 lambda_fonction = 1 ;
181 is >> lambda_chaine;
182 return 1;
183 }
184 else if (mot=="sans_source_boussinesq")
185 {
187 return 1;
188 }
189 return -1;
190}
191
192int Paroi_TBLE_QDM::init_lois_paroi(const Domaine_VF& domaine_dis, const Domaine_Cl_dis_base& le_dom_Cl)
193{
194 const int nb_elem = domaine_dis.nb_elem();
195
198
199
200 int compteur_faces_paroi = 0; //Reinitialisation de compteur_faces_paroi
201
202 for (int n_bord=0; n_bord<domaine_dis.nb_front_Cl(); n_bord++)
203 {
204 const Cond_lim& la_cl = le_dom_Cl.les_conditions_limites(n_bord);
205
206 if (sub_type(Dirichlet_paroi_fixe,la_cl.valeur()) )
207 {
208 const Front_VF& le_bord = ref_cast(Front_VF,la_cl->frontiere_dis());
209 compteur_faces_paroi += le_bord.nb_faces();
210 }
211 }
212 eq_vit.dimensionner(compteur_faces_paroi); //Dimensionnement du vecteur eq_couch_lim
213
214
215 Fxmean_sum.resize(nb_post_pts,nb_pts+1);
216 Fymean_sum.resize(nb_post_pts,nb_pts+1);
217 Fzmean_sum.resize(nb_post_pts,nb_pts+1);
218 Umean_sum.resize(nb_post_pts,nb_pts+1);
219 Vmean_sum.resize(nb_post_pts,nb_pts+1);
220 Wmean_sum.resize(nb_post_pts,nb_pts+1);
224 UVmean_sum.resize(nb_post_pts,nb_pts+1);
225 WVmean_sum.resize(nb_post_pts,nb_pts+1);
226 WUmean_sum.resize(nb_post_pts,nb_pts+1);
227
228
229
230 visco_turb_moy.resize(nb_elem);
231
232 for(int j=0; j<nb_post_pts; j++)
233 {
234 double d0=1.e9;
235 int face=-1;
236 int face2=-1;
237 compteur_faces_paroi=0;
238 for (int n_bord=0; n_bord<domaine_dis.nb_front_Cl(); n_bord++)
239 {
240 const Cond_lim& la_cl = le_dom_Cl.les_conditions_limites(n_bord);
241
242 if (sub_type(Dirichlet_paroi_fixe,la_cl.valeur()) )
243 {
244 const Front_VF& le_bord = ref_cast(Front_VF,la_cl->frontiere_dis());
245 int ndeb = le_bord.num_premiere_face();
246 int nfin = ndeb + le_bord.nb_faces();
247
248 for (int num_face=ndeb; num_face<nfin; num_face++)
249 {
250 double d1=0.;
251 for (int d=0; d<Objet_U::dimension; d++)
252 {
253 double x=domaine_dis.xv(num_face,d)-sonde_tble(j,d);
254 d1+=x*x;
255 }
256
257 if (d1<d0)
258 {
259 d0=d1;
260 face=compteur_faces_paroi;
261 face2=num_face;
262 }
263 compteur_faces_paroi++;
264 }
265 }
266 }
267 num_faces_post(j)=face;
268 num_global_faces_post(j)=face2;
269 }
270
271 Cerr << "Dimension de eq_vit = " << compteur_faces_paroi << finl;
272 Cerr << "nb_faces_bord = " << domaine_dis.nb_faces_bord() << finl;
273
274 if (getPbBase().milieu().has_conductivite() && sub_type(Champ_Fonc_Fonction,getPbBase().milieu().conductivite()))
275 {
277 lambda_chaine=ref_cast(Champ_Fonc_Fonction,getPbBase().milieu().conductivite()).table().parser(0).getString().c_str();
278 }
279 const Champ_base& mu=ref_cast(Fluide_base,getPbBase().milieu()).viscosite_dynamique();
280 if (sub_type(Champ_Fonc_Fonction,mu))
281 {
282 mu_fonction =1;
283 mu_chaine=ref_cast(Champ_Fonc_Fonction,mu).table().parser(0).getString().c_str();
284 }
285 // Choix entre MuLambda cte ou MuLambda fonctions de T
286 if ((mu_fonction == 0) && (lambda_fonction == 0))
287 {
288 // typage MuLambda_TBLE_Cte
289 mu_lambda.typer("MuLambda_TBLE_Cte");
290 }
291 else if ((mu_fonction == 1) && (lambda_fonction == 1))
292 {
293 // typage MuLambda_TBLE_Fonctions_T
294 mu_lambda.typer("MuLambda_TBLE_Fcts_T");
295 MuLambda_TBLE_Fcts_T& ml_fct = ref_cast(MuLambda_TBLE_Fcts_T, mu_lambda.valeur());
297 }
298 else
299 {
300 Cerr << "Vous devez preciser a la fois mu et lambda dans les options de TBLE" << finl;
302 }
303 mu_lambda->initialiser(getPbBase().milieu());
304
305
306 // associer les "Eq_couch_lim" a "MuLambda_TBLE"
307 for (int i=0; i<compteur_faces_paroi; i++)
308 {
309 eq_vit[i].associer_milieu(getPbBase().milieu());
310 eq_vit[i].set_diffu(modele_visco); //modele de viscosite turbulente
311 Diffu_totale_hyd_base& diffu_hyd = ref_cast_non_const(Diffu_totale_hyd_base, eq_vit[i].get_diffu()); //modele de viscosite turbulente
312 diffu_hyd.associer_mulambda(mu_lambda.valeur());
313 }
314
315
316
317 //Pour l'instant, tout ce qui concerne le terme de Boussinesq dans les equations de TBLE se trouve dans les classe filles : PAroiVDF_TBLE et ParoiVEF_TBLE
318 // On verra ce qu'on peut factoriser ici.
319 // On verifie la presence ou non d'un terme source de Boussinesq dans le pb hydraulique :
320 /* const Sources& les_sources=eqnNS.sources();
321 int nb_sources=les_sources.size();
322
323 for (int j=0; j<nb_sources; j++)
324 {
325 const Source_base& ts = les_sources(j).valeur();
326 if (sub_type(Terme_Boussinesq_temper_VDF_Face,ts))
327 {
328 Terme_Boussinesq_temper_VDF_Face& terme_boussi = ref_cast(Terme_Boussinesq_temper_VDF_Face,ts);
329 T0 = terme_boussi.T0();
330 boussi_ok=1;
331 }
332 }
333
334 */
335
336 return 1;
337}
338
339
340int Paroi_TBLE_QDM::reprendre(Entree&, const Domaine_dis_base& domaine_dis, const Domaine_Cl_dis_base& le_dom_Cl, double tps_reprise)
341{
342 if (restart == 0) // Si on souhaite bien reprendre TBLE
343 {
344 Cerr << "Reprise du champ TBLE au temps " << tps_reprise << finl;
345 int compteur_faces_paroi = 0; //Reinitialisation de compteur_faces_paroi
346 const int ME=Process::me();
347 Nom nom_fic="sauvegarde_tble_";
348 nom_fic+=Nom(ME);
349 nom_fic+=Nom("_");
350 nom_fic+=Nom(tps_reprise,getPbBase().reprise_format_temps());
351 EFichier fic_sauve(nom_fic);
352
353 if (fic_sauve.fail())
354 {
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;
358 }
359
360
361 // On compte avant pour dimensionner
362 for (int n_bord=0; n_bord<domaine_dis.nb_front_Cl(); n_bord++)
363 {
364 const Cond_lim& la_cl = le_dom_Cl.les_conditions_limites(n_bord);
365
366 if (sub_type(Dirichlet_paroi_fixe,la_cl.valeur()) )
367
368 {
369 const Front_VF& le_bord = ref_cast(Front_VF,la_cl->frontiere_dis());
370 compteur_faces_paroi+=le_bord.nb_faces();
371 }
372 }
373
374 valeurs_reprises.resize(compteur_faces_paroi, nb_comp, nb_pts+1);
375 compteur_faces_paroi=0;
376
377 for (int n_bord=0; n_bord<domaine_dis.nb_front_Cl(); n_bord++)
378 {
379 const Cond_lim& la_cl = le_dom_Cl.les_conditions_limites(n_bord);
380 if (sub_type(Dirichlet_paroi_fixe,la_cl.valeur()) )
381 {
382 const Front_VF& le_bord = ref_cast(Front_VF,la_cl->frontiere_dis());
383 int ndeb = le_bord.num_premiere_face();
384 int nfin = ndeb + le_bord.nb_faces();
385 for (int num_face=ndeb; num_face<nfin; num_face++)
386 {
387 for (int comp=0; comp<nb_comp; comp++)
388 {
389 for (int itble=0; itble<nb_pts+1; itble++)
390 {
391 fic_sauve >> valeurs_reprises(compteur_faces_paroi,comp,itble);
392 }
393 }
394 compteur_faces_paroi++;
395 }
396 }
397 }
398 fic_sauve.close();
399 Cerr << "Reprise du champ TBLE OK" << finl;
400 reprise_ok=1;
401 }
402 return 1;
403}
404
405
406
407
408int Paroi_TBLE_QDM::sauvegarder(Sortie&, const Domaine_dis_base& domaine_dis, const Domaine_Cl_dis_base& le_dom_Cl,double tps) const
409{
410 Cerr << "Sauvegarde du champ TBLE au temps = " << tps<< finl;
411 const int ME=Process::me();
412 Nom nom_fic="sauvegarde_tble_";
413 nom_fic+=Nom(ME);
414 nom_fic+=Nom("_");
415 nom_fic+=Nom(tps,"%e");
416
417 EcrFicPartage fic_sauve(nom_fic);
418 int compteur_faces_paroi=0;
419 for (int n_bord=0; n_bord<domaine_dis.nb_front_Cl(); n_bord++)
420 {
421 const Cond_lim& la_cl = le_dom_Cl.les_conditions_limites(n_bord);
422 if (sub_type(Dirichlet_paroi_fixe,la_cl.valeur()) )
423 {
424 const Front_VF& le_bord = ref_cast(Front_VF,la_cl->frontiere_dis());
425 int ndeb = le_bord.num_premiere_face();
426 int nfin = ndeb + le_bord.nb_faces();
427 for (int num_face=ndeb; num_face<nfin; num_face++)
428 {
429 for (int comp=0; comp<nb_comp; comp++)
430 {
431 for (int itble=0; itble<nb_pts+1; itble++)
432 fic_sauve << eq_vit[compteur_faces_paroi].get_Unp1(comp,itble) << " " ;
433 }
434 fic_sauve << finl;
435 compteur_faces_paroi++;
436 }
437 }
438 }
439 fic_sauve.syncfile();
440 fic_sauve.close();
441 return 1;
442}
443
444
445void Paroi_TBLE_QDM::imprimer_stat(Sortie&, double tps) const
446{
447 if (oui_stats==1)
448 {
449 for(int j=0; j<nb_post_pts; j++)
450 {
451 int num_face=num_faces_post(j);
452 double coeff = 1./(tps-tps_deb_stats);
453 Nom tmp;
454 tmp="tble_stats_";
455 tmp+=nom_pts[j];
456 tmp+=".dat";
457
458 EcrFicPartage fic_post(tmp, ios::app);
459 if (Objet_U::dimension==2)
460 {
461 fic_post << "# "<< tps << " U V U^2 V^2 UV Fx Fy"<< finl;
462
463 for(int i=0; i<nb_pts+1; i++)
464 {
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) << " " ;
468 fic_post << coeff*Umean_2_sum(j,i) << " " ;
469 fic_post << coeff*Vmean_2_sum(j,i) << " " ;
470 fic_post << coeff*UVmean_sum(j,i) << " " ;
471 fic_post << coeff*Fxmean_sum(j,i) << " " ;
472 fic_post << coeff*Fymean_sum(j,i) << " " << finl;
473 }
474 }
475 else if (Objet_U::dimension==3)
476 {
477 fic_post << "# "<< tps << " U V W U^2 V^2 W^2 UV WV WU Fx Fy Fz "<< finl;
478
479 for(int i=0; i<nb_pts+1; i++)
480 {
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) << " " ;
485 fic_post << coeff*Umean_2_sum(j,i) << " " ;
486 fic_post << coeff*Vmean_2_sum(j,i) << " " ;
487 fic_post << coeff*Wmean_2_sum(j,i) << " " ;
488 fic_post << coeff*UVmean_sum(j,i) << " " ;
489 fic_post << coeff*WVmean_sum(j,i) << " " ;
490 fic_post << coeff*WUmean_sum(j,i) << " " ;
491 fic_post << coeff*Fxmean_sum(j,i) << " " ;
492 fic_post << coeff*Fymean_sum(j,i) << " " ;
493 fic_post << coeff*Fzmean_sum(j,i) << " " ;
494 fic_post << finl;
495 }
496 }
497 fic_post.syncfile();
498 fic_post.close();
499 }
500
501 }
502}
503
504
505void Paroi_TBLE_QDM::calculer_stat(int j, int i, double Fx, double Fy, double Fz, double u, double v, double w, double dt)
506{
507 Fxmean_sum(j,i) += Fx*dt;
508 Fymean_sum(j,i) += Fy*dt;
509 Fzmean_sum(j,i) += Fz*dt;
510 Umean_sum(j,i) += u*dt;
511 Umean_2_sum(j,i) += u*u*dt;
512 Vmean_sum(j,i) += v*dt;
513 Vmean_2_sum(j,i) += v*v*dt;
514 Wmean_sum(j,i) += w*dt;
515 Wmean_2_sum(j,i) += w*w*dt;
516 UVmean_sum(j,i) += u*v*dt;
517 WVmean_sum(j,i) += w*v*dt;
518 WUmean_sum(j,i) += w*u*dt;
519}
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.
Definition Champ_base.h:43
classe Cond_lim Classe generique servant a representer n'importe quelle classe
Definition Cond_lim.h:31
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.
class Domaine_VF
Definition Domaine_VF.h:44
double xv(int num_face, int k) const
Definition Domaine_VF.h:76
int nb_faces_bord() const
renvoie le nombre de faces sur lesquelles sont appliquees les conditions limites :
Definition Domaine_VF.h:513
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
int nb_front_Cl() const
Fichier en lecture Cette classe est a la classe C++ ifstream ce que la classe Entree est a la.
Definition EFichier.h:29
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,...
Definition Entree.h:42
classe Fluide_base Cette classe represente un d'un fluide incompressible ainsi que
Definition Fluide_base.h:38
class Front_VF
Definition Front_VF.h:36
int nb_faces() const
Definition Front_VF.h:53
int num_premiere_face() const
Definition Front_VF.h:63
Une chaine de caractere (Nom) en majuscules.
Definition Motcle.h:26
Classe MuLambda_TBLE_Fcts_T Classe abstraite calculant Mu et Lambda suivant une fonction de T.
class Nom Une chaine de caractere pour nommer les objets de TRUST
Definition Nom.h:31
static int dimension
Definition Objet_U.h:99
Helper class to factorize the readOn method of Objet_U classes.
Definition Param.h:112
void ajouter_flag(const char *keyword, const bool *value)
Register a boolean flag whose mere presence switches it to true.
Definition Param.cpp:474
void ajouter(const char *keyword, const int *value, Param::Nature nat=Param::OPTIONAL)
Register an integer parameter.
Definition Param.cpp:364
@ REQUIRED
Definition Param.h:115
DoubleTab Vmean_sum
double tps_start_stat_nu_t_dyn
DoubleTab visco_turb_moy
void calculer_stat(int indice_post, int indice_maillage, double Fx, double Fy, double Fz, double u, double v, double w, double dt)
DoubleTab WVmean_sum
DoubleTab UVmean_sum
void imprimer_stat(Sortie &, double) const
DoubleTab sonde_tble
DoubleTab Umean_sum
void set_param(Param &param) const
DoubleTab Fymean_sum
DoubleTab Wmean_2_sum
DoubleTab Vmean_2_sum
int reprendre(Entree &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, double tps)
DoubleTab Fxmean_sum
IntTab num_global_faces_post
DoubleTab Umean_2_sum
int sauvegarder(Sortie &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, double tps) const
DoubleTab Fzmean_sum
virtual const Probleme_base & getPbBase() const =0
DoubleTab Wmean_sum
DoubleTab valeurs_reprises
DoubleTab WUmean_sum
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.
Definition Process.cpp:125
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Definition Process.cpp:455
Classe de base des flux de sortie.
Definition Sortie.h:52