15#include <Modele_Lam_Bremhorst_VEF.h>
16#include <Domaine_VEF.h>
17#include <Domaine_Cl_VEF.h>
18#include <Periodique.h>
19#include <Champ_Uniforme.h>
21#include <Champ_P1NC.h>
22#include <Champ_P0_VEF.h>
23#include <Discretisation_base.h>
24#include <Check_espace_virtuel.h>
25#include <LecFicDiffuse.h>
26#include <EcritureLectureSpecial.h>
44 param.lire_avec_accolades_depuis(is);
45 if (is_Reynolds_stress_isotrope_ == 0)
54 param.
ajouter(
"Reynolds_stress_isotrope",&is_Reynolds_stress_isotrope_);
60 return is_Reynolds_stress_isotrope_;
65 return is_Cmu_constant_;
84 const DoubleTab& vitesse,
const DoubleTab& K_eps_Bas_Re,
const Champ_Don_base& ch_visco )
const
109 const DoubleTab& tab_visco=ch_visco.
valeurs();
112 visco=tab_visco(0,0);
114 const DoubleTab& wall_length = BR_wall_length_->valeurs();
115 DoubleTab wall_length_face(0);
117 DoubleTab Pderive(0);
119 DoubleTab Fmu_loc(0);
127 for (num_face=0; num_face<nb_faces ; num_face++)
129 int elem0 = face_voisins(num_face,0);
130 int elem1 = face_voisins(num_face,1);
132 wall_length_face(num_face) = 0.5*wall_length(elem0)+0.5*wall_length(elem1);
134 wall_length_face(num_face) = wall_length(elem0);
137 for (num_face=0; num_face <nb_faces; num_face ++ )
139 if (visco>BR_EPS && K_eps_Bas_Re(num_face,1)>BR_EPS && K_eps_Bas_Re(num_face,0))
141 Re = (K_eps_Bas_Re(num_face,0)*K_eps_Bas_Re(num_face,0))/(visco*K_eps_Bas_Re(num_face,1));
142 Rey = wall_length_face(num_face)*sqrt(K_eps_Bas_Re(num_face,0))/visco;
143 Fmu_loc(num_face) = (1. - exp(-0.0165*Rey-BR_EPS))*(1. - exp(-0.0165*Rey-BR_EPS))*(1.+20.5/(Re+BR_EPS));
146 Fmu_loc(num_face) = 1.;
148 if (Fmu_loc(num_face) > 1. + 1.e-8)
150 Fmu_loc(num_face) = 1.;
158 for (num_face=0; num_face <nb_faces; num_face ++ )
160 if (Fmu_loc(num_face) > BR_EPS && (visco>BR_EPS && K_eps_Bas_Re(num_face,1)>BR_EPS && K_eps_Bas_Re(num_face,0)))
161 F1[num_face] = 1.+ (0.05/(Fmu_loc(num_face)+BR_EPS))*(0.05/(Fmu_loc(num_face)+BR_EPS))*(0.05/(Fmu_loc(num_face)+BR_EPS));
172 const DoubleTab& tab_visco=ch_visco.
valeurs();
175 visco=tab_visco(0,0);
181 for (num_face=0; num_face<nb_faces ; num_face++)
189 visco = tab_visco(elem0)*le_dom.
volumes(elem0)+tab_visco(elem1)*le_dom.
volumes(elem1);
193 visco = tab_visco(elem0);
196 if (visco>BR_EPS && K_eps_Bas_Re(num_face,1)>BR_EPS)
198 Re = (K_eps_Bas_Re(num_face,0)*K_eps_Bas_Re(num_face,0))/(visco*K_eps_Bas_Re(num_face,1));
199 F2[num_face] = 1. - (exp(-Re*Re));
212 const DoubleTab& tab_visco=ch_visco.
valeurs();
215 visco=tab_visco(0,0);
217 const DoubleTab& wall_length = BR_wall_length_->valeurs();
218 DoubleTab wall_length_face(0);
220 DoubleTab Pderive(0);
228 for (num_face=0; num_face<nb_faces ; num_face++)
230 int elem0 = face_voisins(num_face,0);
231 int elem1 = face_voisins(num_face,1);
233 wall_length_face(num_face) = 0.5*wall_length(elem0)+0.5*wall_length(elem1);
235 wall_length_face(num_face) = wall_length(elem0);
238 for (num_face=0; num_face <nb_faces; num_face ++ )
240 if (visco>BR_EPS && K_eps_Bas_Re(num_face,1)>BR_EPS && K_eps_Bas_Re(num_face,0))
242 Re = (K_eps_Bas_Re(num_face,0)*K_eps_Bas_Re(num_face,0))/(visco*K_eps_Bas_Re(num_face,1));
243 Rey = wall_length_face(num_face)*sqrt(K_eps_Bas_Re(num_face,0))/visco;
244 Fmu(num_face) = (1. - exp(-0.0165*Rey-BR_EPS))*(1. - exp(-0.0165*Rey-BR_EPS))*(1.+20.5/(Re+BR_EPS));
251 if (Fmu(num_face) > 1. + 1.e-8)
301 assert_espace_virtuel_vect(Tenseur_elem);
302 const IntTab& face_voisins = domaine_VEF.
face_voisins();
303 int nb_faces = domaine_VEF.
nb_faces();
306 int nb_cl=les_cl.size();
307 const DoubleVect& volumes = domaine_VEF.
volumes();
309 for (
int n_bord=0; n_bord<nb_cl; n_bord++)
314 int nfin = ndeb + le_bord.
nb_faces();
318 for (
int fac=ndeb; fac<nfin; fac++)
320 int poly1 = face_voisins(fac,0);
321 int poly2 = face_voisins(fac,1);
322 double a=volumes(poly1)/(volumes(poly1)+volumes(poly2));
323 double b=volumes(poly2)/(volumes(poly1)+volumes(poly2));
326 Tenseur_face(fac,i,j) = a*Tenseur_elem(poly1,i,j) + b*Tenseur_elem(poly2,i,j);
331 for (
int fac=ndeb; fac<nfin; fac++)
333 int poly1 = face_voisins(fac,0);
336 Tenseur_face(fac,i,j) = Tenseur_elem(poly1,i,j);
341 for (
int fac = n0; fac<nb_faces; fac++)
343 int poly1 = face_voisins(fac,0);
344 int poly2 = face_voisins(fac,1);
345 double a=volumes(poly1)/(volumes(poly1)+volumes(poly2));
346 double b=volumes(poly2)/(volumes(poly1)+volumes(poly2));
349 Tenseur_face(fac,i,j) = a*Tenseur_elem(poly1,i,j) + b*Tenseur_elem(poly2,i,j);
365 for (
int elem=0; elem<nelem; elem++)
369 S(elem,i,j) = G(elem,i,j) + G(elem,j,i);
370 R(elem,i,j) = G(elem,i,j) - G(elem,j,i);
375 Re =
calcul_tenseur_Re_elem(mon_equation->discretisation(),domaine_dis,G,S,R,Sn,mon_equation->inconnue());
390 for (
int elem=0; elem<nelem; elem++)
394 S(elem,i,j) = G(elem,i,j) + G(elem,j,i);
395 R(elem,i,j) = G(elem,i,j) - G(elem,j,i);
400 Re =
calcul_tenseur_Re_elem_BiK(mon_equation->discretisation(),domaine_dis,G,S,R,Sn,mon_equation->inconnue(),ma_seconde_equation->inconnue());
407 const DoubleTab& G,
const DoubleTab& S,
408 const DoubleTab& R,
const DoubleTab& Sn,
414 Noms noms(2), unites(2);
419 const Motcle wtype=
"champ_elem";
420 dis.
discretiser_champ(wtype,domaine_dis,multi_scalaire,noms,unites,2,0.,K_Eps_elem);
421 K_Eps_elem->affecter(K_Eps);
422 DoubleTab tab_K_Eps = K_Eps_elem->valeurs();
428 for (
int elem=0; elem<nelem; elem++)
431 if (tab_K_Eps(elem,1) <= BR_EPS)
433 kseps = tab_K_Eps(elem,0)/BR_EPS;
437 kseps = tab_K_Eps(elem,0)/tab_K_Eps(elem,1);
439 double Cmu = (2./3.)/(A1+sqrt(0.5)*Sn(elem)*kseps);
440 double C1 = CNL1/((CNL4+CNL5*pow(sqrt(0.5)*Sn(elem)*kseps,3.))*Cmu)* kseps;
441 double C2 = CNL2/((CNL4+CNL5*pow(sqrt(0.5)*Sn(elem)*kseps,3.))*Cmu)* kseps;
442 double C3 = CNL3/((CNL4+CNL5*pow(sqrt(0.5)*Sn(elem)*kseps,3.))*Cmu)* kseps;
446 ReNL(elem,i,j) = S(elem,i,j);
448 ReNL(elem,i,j) -= C1* S(elem,i,k)*S(elem,k,j) +
449 C2*(R(elem,i,k)*S(elem,k,j) + R(elem,j,k)*S(elem,k,i)) +
450 C3 *R(elem,i,k)*R(elem,j,k);
455 ReNL(elem,i,j) += 1./3.*(C1*S(elem,k,l)*S(elem,k,l)+C3*R(elem,k,l)*R(elem,k,l));
467 const DoubleTab& G,
const DoubleTab& S,
468 const DoubleTab& R,
const DoubleTab& Sn,
475 Noms noms(1), unites(1), noms2(1), unites2(1);
480 const Motcle wtype=
"champ_elem";
482 dis.
discretiser_champ(wtype,domaine_dis,multi_scalaire,noms2,unites2,1,0.,Eps_elem);
485 Eps_elem->affecter(Eps);
486 DoubleTab tab_K = K_elem->valeurs();
487 DoubleTab tab_Eps = Eps_elem->valeurs();
494 for (
int elem=0; elem<nelem; elem++)
497 if (tab_Eps(elem,0) <= BR_EPS)
499 kseps = tab_K(elem,0)/BR_EPS;
503 kseps = tab_K(elem,0)/tab_Eps(elem,0);
505 double Cmu = (2./3.)/(A1+sqrt(0.5)*Sn(elem)*kseps);
506 double C1 = CNL1/((CNL4+CNL5*pow(sqrt(0.5)*Sn(elem)*kseps,3.))*Cmu)* kseps;
507 double C2 = CNL2/((CNL4+CNL5*pow(sqrt(0.5)*Sn(elem)*kseps,3.))*Cmu)* kseps;
508 double C3 = CNL3/((CNL4+CNL5*pow(sqrt(0.5)*Sn(elem)*kseps,3.))*Cmu)* kseps;
512 ReNL(elem,i,j) = S(elem,i,j);
514 ReNL(elem,i,j) -= C1* S(elem,i,k)*S(elem,k,j) +
515 C2*(R(elem,i,k)*S(elem,k,j) + R(elem,j,k)*S(elem,k,i)) +
516 C3 *R(elem,i,k)*R(elem,j,k);
521 ReNL(elem,i,j) += 1./3.*(C1*S(elem,k,l)*S(elem,k,l)+C3*R(elem,k,l)*R(elem,k,l));
543 for (
int elem=0; elem<nelem; elem++)
547 S(elem,i,j) = 0.5*(G(elem,i,j) + G(elem,j,i));
548 R(elem,i,j) = 0.5*(G(elem,i,j) - G(elem,j,i));
552 S(elem,i,j) -= 1/3 * G(elem,k,k);
567 const DoubleTab& G,
const DoubleTab& S,
568 const DoubleTab& R,
const DoubleTab& Sn,
const DoubleTab& Rn,
574 Noms noms(2), unites(2);
579 const Motcle wtype=
"champ_elem";
580 dis.
discretiser_champ(wtype,domaine_dis,multi_scalaire,noms,unites,2,0.,K_Eps_elem);
581 K_Eps_elem->affecter(K_Eps);
582 DoubleTab tab_K_Eps = K_Eps_elem->valeurs();
589 for (
int elem=0; elem<nelem; elem++)
592 if (tab_K_Eps(elem,1) <= BR_EPS)
594 kseps = tab_K_Eps(elem,0)/BR_EPS;
598 kseps = tab_K_Eps(elem,0)/tab_K_Eps(elem,1);
600 double Cmu = (1.)/(6.5+sqrt(pow(Sn(elem),2)+pow(Rn(elem),2))*1.8*kseps);
601 double C2 = sqrt(1-pow(3*Cmu*Sn(elem)*kseps,2))/(1+6.*Sn(elem)*kseps*Rn(elem)*kseps);
605 ReNL(elem,i,j) = 2*S(elem,i,j);
607 ReNL(elem,i,j) -= 2*C2*kseps/Cmu*(-S(elem,i,k)*R(elem,k,j)+S(elem,k,j)*R(elem,i,k));
621 for (
int num_elem=0; num_elem<nb_elems; num_elem++)
625 Tnorme(num_elem) += Tenseur(num_elem,i,j)*Tenseur(num_elem,i,j);
626 Tnorme(num_elem) = sqrt(Tnorme(num_elem));
636 const Domaine_VEF& domaine_VEF = le_dom_VEF.valeur();
637 DoubleTab& wall_length = BR_wall_length_->valeurs();
645 Cerr <<
" File " <<
nom_fic<<
" doesn't exist. To generate it, please, refer to html.doc (Distance_paroi) " << finl;
656 Cerr <<
"Recall : " <<
nom_fic<<
" obtained from boundaries nammed : "<< finl;
657 for (
int b=0; b<nom_paroi.size(); b++)
659 Cerr << nom_paroi[b]<< finl;
670 const DoubleTab& vitesse,
const DoubleTab& K_Eps,
const double EPS_MIN)
const
676 DoubleTab gradient_elem;
683 for (
int elem=0; elem<nelem; elem++)
686 S_elem(elem,i,j) = gradient_elem(elem,i,j) + gradient_elem(elem,j,i);
695 DoubleTab Snorme_face;
698 for (
int face=0; face<nfaces; face++)
703 somme += S_face(face,i,j)*S_face(face,i,j);
704 Snorme_face(face) = sqrt(somme);
707 for (
int face=0; face<nfaces; face++)
710 if (K_Eps(face,1) <= EPS_MIN)
711 Cmu[face] = (2./3.)/(A1+sqrt(0.5)*Snorme_face[face]*K_Eps(face,0)/BR_EPS);
713 Cmu[face] = (2./3.)/(A1+sqrt(0.5)*Snorme_face[face]*K_Eps(face,0)/K_Eps(face,1));
721 const DoubleTab& visco,
const DoubleTab& visco_turb,
722 const DoubleTab& loi_paroi,
const int idt,
723 const DoubleTab& vitesse,
const DoubleTab& K_Eps,
const double EPS_MIN)
const
729 DoubleTab gradient_elem;
738 for (
int elem=0; elem<nelem; elem++)
741 S_elem(elem,i,j) = gradient_elem(elem,i,j) + gradient_elem(elem,j,i);
750 DoubleTab Snorme_face;
753 for (
int face=0; face<nfaces; face++)
758 somme += S_face(face,i,j)*S_face(face,i,j);
759 Snorme_face(face) = sqrt(somme);
762 for (
int face=0; face<nfaces; face++)
765 if (K_Eps(face,1) <= EPS_MIN)
766 Cmu[face] = (2./3.)/(A1+sqrt(0.5)*Snorme_face[face]*K_Eps(face,0)/BR_EPS);
768 Cmu[face] = (2./3.)/(A1+sqrt(0.5)*Snorme_face[face]*K_Eps(face,0)/K_Eps(face,1));
779 const DoubleTab& vitesse,
const DoubleTab& K,
const DoubleTab& Eps,
const double EPS_MIN)
const
785 DoubleTab gradient_elem;
792 for (
int elem=0; elem<nelem; elem++)
795 S_elem(elem,i,j) = gradient_elem(elem,i,j) + gradient_elem(elem,j,i);
804 DoubleTab Snorme_face;
807 for (
int face=0; face<nfaces; face++)
812 somme += S_face(face,i,j)*S_face(face,i,j);
813 Snorme_face(face) = sqrt(somme);
816 for (
int face=0; face<nfaces; face++)
819 if (Eps(face) <= EPS_MIN)
820 Cmu[face] = (2./3.)/(A1+sqrt(0.5)*Snorme_face[face]*K(face)/BR_EPS);
822 Cmu[face] = (2./3.)/(A1+sqrt(0.5)*Snorme_face[face]*K(face)/Eps(face));
830 const DoubleTab& visco,
const DoubleTab& visco_turb,
831 const DoubleTab& loi_paroi,
const int idt,
832 const DoubleTab& vitesse,
const DoubleTab& K,
const DoubleTab& Eps,
const double EPS_MIN)
const
838 DoubleTab gradient_elem;
847 for (
int elem=0; elem<nelem; elem++)
850 S_elem(elem,i,j) = gradient_elem(elem,i,j) + gradient_elem(elem,j,i);
859 DoubleTab Snorme_face;
862 for (
int face=0; face<nfaces; face++)
867 somme += S_face(face,i,j)*S_face(face,i,j);
868 Snorme_face(face) = sqrt(somme);
871 for (
int face=0; face<nfaces; face++)
874 if (Eps(face) <= EPS_MIN)
875 Cmu[face] = (2./3.)/(A1+sqrt(0.5)*Snorme_face[face]*K(face)/BR_EPS);
877 Cmu[face] = (2./3.)/(A1+sqrt(0.5)*Snorme_face[face]*K(face)/Eps(face));
889 const DoubleTab& tab_visco=ch_visco.
valeurs();
892 visco=tab_visco(0,0);
894 const DoubleTab& wall_length = BR_wall_length_->valeurs();
895 DoubleTab wall_length_face(0);
903 for (num_face=0; num_face<nb_faces ; num_face++)
905 int elem0 = face_voisins(num_face,0);
906 int elem1 = face_voisins(num_face,1);
908 wall_length_face(num_face) = 0.5*wall_length(elem0)+0.5*wall_length(elem1);
910 wall_length_face(num_face) = wall_length(elem0);
913 for (num_face=0; num_face <nb_faces; num_face ++ )
915 if (visco>BR_EPS && eps_Bas_Re(num_face)>BR_EPS && K_Bas_Re(num_face))
917 Re = (K_Bas_Re(num_face)*K_Bas_Re(num_face))/(visco*eps_Bas_Re(num_face));
918 Rey = wall_length_face(num_face)*sqrt(K_Bas_Re(num_face))/visco;
919 Fmu(num_face) = (1. - exp(-0.0165*Rey-BR_EPS))*(1. - exp(-0.0165*Rey-BR_EPS))*(1.+20.5/(Re+BR_EPS));
927 if (Fmu(num_face) > 1. + 1.e-8)
944 const DoubleTab& tab_visco=ch_visco.
valeurs();
947 visco=tab_visco(0,0);
953 for (num_face=0; num_face<nb_faces ; num_face++)
961 visco = tab_visco(elem0)*le_dom.
volumes(elem0)+tab_visco(elem1)*le_dom.
volumes(elem1);
965 visco = tab_visco(elem0);
968 if (visco>BR_EPS && eps_Bas_Re(num_face)>BR_EPS)
970 Re = (K_Bas_Re(num_face)*K_Bas_Re(num_face))/(visco*eps_Bas_Re(num_face));
971 F2[num_face] = 1. - (exp(-Re*Re));
985 const DoubleTab& tab_visco=ch_visco.
valeurs();
988 visco=tab_visco(0,0);
990 const DoubleTab& wall_length = BR_wall_length_->valeurs();
991 DoubleTab wall_length_face(0);
993 DoubleTab Fmu_loc(0);
1001 for (num_face=0; num_face<nb_faces ; num_face++)
1003 int elem0 = face_voisins(num_face,0);
1004 int elem1 = face_voisins(num_face,1);
1006 wall_length_face(num_face) = 0.5*wall_length(elem0)+0.5*wall_length(elem1);
1008 wall_length_face(num_face) = wall_length(elem0);
1011 for (num_face=0; num_face <nb_faces; num_face ++ )
1013 if (visco>BR_EPS && eps_Bas_Re(num_face)>BR_EPS && K_Bas_Re(num_face))
1015 Re = (K_Bas_Re(num_face)*K_Bas_Re(num_face))/(visco*eps_Bas_Re(num_face));
1016 Rey = wall_length_face(num_face)*sqrt(K_Bas_Re(num_face))/visco;
1017 Fmu_loc(num_face) = (1. - exp(-0.0165*Rey-BR_EPS))*(1. - exp(-0.0165*Rey-BR_EPS))*(1.+20.5/(Re+BR_EPS));
1020 Fmu_loc(num_face) = 1.;
1022 if (Fmu_loc(num_face) > 1. + 1.e-8)
1024 Fmu_loc(num_face) = 1.;
1032 for (num_face=0; num_face <nb_faces; num_face ++ )
1034 if (Fmu_loc(num_face) > BR_EPS && (visco>BR_EPS && eps_Bas_Re(num_face)>BR_EPS && K_Bas_Re(num_face)))
1035 F1[num_face] = 1.+ (0.05/(Fmu_loc(num_face)+BR_EPS))*(0.05/(Fmu_loc(num_face)+BR_EPS))*(0.05/(Fmu_loc(num_face)+BR_EPS));
1052 const DoubleTab& vitesse,
const DoubleTab& K_Bas_Re,
const DoubleTab& eps_Bas_Re,
const Champ_Don_base& ch_visco )
const
classe Champ_Don_base classe de base des Champs donnes (non calcules)
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
static DoubleTab & calcul_gradient(const DoubleTab &, DoubleTab &, const Domaine_Cl_VEF &)
static DoubleTab & calcul_duidxj_paroi(DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const Domaine_Cl_VEF &)
virtual DoubleTab & valeurs()=0
classe Champ_base Cette classe est la base de la hierarchie des champs.
classe Cond_lim Classe generique servant a representer n'importe quelle classe
classe Conds_lim Cette classe represente un vecteur de conditions aux limites.
static void verifier(const char *const msg, double)
classe Discretisation_base Cette classe represente un schema de discretisation en espace,...
void discretiser_champ(const Motcle &directive, const Domaine_dis_base &z, const Nom &nom, const Nom &unite, int nb_comp, int nb_pas_dt, double temps, OWN_PTR(Champ_Inc_base)&champ, const Nom &sous_type=NOM_VIDE) const
virtual void creer_tableau_elements(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
creation d'un tableau parallele de valeurs aux elements.
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 nb_faces() const
renvoie le nombre global de faces.
void creer_tableau_faces(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
double volumes(int i) const
int premiere_face_int() const
une face est interne ssi elle separe deux elements.
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
int rang_frontiere(const Nom &)
const Domaine & domaine() const
static void lecture_special(Champ_base &ch, Entree &fich)
simple appel a EcritureLectureSpecial::lecture_special (const Domaine_VF& zvf,Entree& fich,...
Class defining operators and methods for all reading operation in an input flow (file,...
int num_premiere_face() const
Cette classe implemente les operateurs et les methodes virtuelles de la classe EFichier de la facon s...
int ouvrir(const char *name, IOS_OPEN_MODE mode=ios::in) override
Ouverture du fichier.
void set_bin(bool bin) override
appelle get_entree_master().
OWN_PTR(Champ_Fonc_base) BR_wall_length_
bool calcul_tenseur_Re_BiK(const DoubleTab &, const DoubleTab &, DoubleTab &) const override
DoubleTab & Calcul_D(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, const DoubleTab &, const DoubleTab &, const Champ_Don_base &) const override
virtual DoubleTab & calcul_tenseur_face(DoubleTab &, const DoubleTab &, const Domaine_VEF &, const Domaine_Cl_VEF &) const
virtual DoubleTab calcul_norme_elem(const Domaine_VEF &, const DoubleTab) const
DoubleTab & Calcul_F1(DoubleTab &F1, const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &P, const DoubleTab &K_eps_Bas_Re, const Champ_base &ch_visco) const override
DoubleTab & Calcul_Fmu_BiK(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, const DoubleTab &, const DoubleTab &, const Champ_Don_base &) const override
DoubleTab & Calcul_E_BiK(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const Champ_Don_base &, const DoubleTab &) const override
int Calcul_is_Reynolds_stress_isotrope() const override
void init_tenseur_face(DoubleTab &, const Domaine_VEF &, const int) const
DoubleTab & Calcul_F2_BiK(DoubleTab &, DoubleTab &, const Domaine_dis_base &, const DoubleTab &, const DoubleTab &, const Champ_base &) const override
virtual DoubleTab calcul_tenseur_Re_elem(const Discretisation_base &dis, const Domaine_dis_base &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const Champ_base &K_Eps) const
virtual void set_param(Param ¶m) const override
bool calcul_tenseur_Re(const DoubleTab &, const DoubleTab &, DoubleTab &) const override
void mettre_a_jour(double) override
void lire_distance_paroi() override
DoubleTab & Calcul_F2(DoubleTab &, DoubleTab &, const Domaine_dis_base &, const DoubleTab &, const Champ_base &) const override
DoubleTab & Calcul_D_BiK(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const Champ_Don_base &) const override
int Calcul_is_Cmu_constant() const override
virtual DoubleTab calcul_tenseur_Re_elem_BiK(const Discretisation_base &dis, const Domaine_dis_base &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const Champ_base &K, const Champ_base &Eps) const
void associer(const Domaine_dis_base &, const Domaine_Cl_dis_base &) override
Entree & lire(const Motcle &, Entree &)
DoubleTab & Calcul_F1_BiK(DoubleTab &F1, const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &P, const DoubleTab &K_Bas_Re, const DoubleTab &eps_Bas_Re, const Champ_base &ch_visco) const override
DoubleTab & Calcul_Cmu_Paroi_BiK(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const int, const DoubleTab &, const DoubleTab &, const DoubleTab &, const double) const override
DoubleTab & Calcul_Cmu(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, const DoubleTab &, const DoubleTab &, const double) const override
DoubleTab & Calcul_Cmu_Paroi(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const int, const DoubleTab &, const DoubleTab &, const double) const override
DoubleTab calcul_tenseur_Re_elem_shih(const Discretisation_base &, const Domaine_dis_base &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const Champ_base &K_Eps) const
DoubleTab & Calcul_Fmu(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, const DoubleTab &, const Champ_Don_base &) const override
DoubleTab calcul_tenseur_Re_shih(const Discretisation_base &dis, const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &G, const Champ_base &K_Eps) const
void init_tenseur_elem(DoubleTab &, const Domaine_VEF &, const int) const
DoubleTab & Calcul_Cmu_BiK(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const double) const override
DoubleTab & Calcul_E(DoubleTab &, const Domaine_dis_base &, const Domaine_Cl_dis_base &, const DoubleTab &, const DoubleTab &, const Champ_Don_base &, const DoubleTab &) const override
Une chaine de caractere (Nom) en majuscules.
Un tableau de chaine de caracteres (VECT(Nom)).
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.
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.
classe Periodique Cette classe represente une condition aux limites periodique.
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.
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
_SIZE_ dimension(int d) const
_TYPE_ mp_max_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const
_TYPE_ mp_min_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const
virtual const MD_Vector & get_md_vector() const
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")