16#include <Convection_Diffusion_Concentration.h>
17#include <Champ_front_contact_fictif_VEF.h>
18#include <Modele_turbulence_scal_base.h>
19#include <Op_Diff_VEF_Anisotrope_Face.h>
20#include <Modele_turbulence_hyd_base.h>
21#include <Raccord_distant_homogene.h>
22#include <Champ_front_contact_VEF.h>
23#include <Champ_Fonc_P0_VEF.h>
24#include <Format_Post_Med.h>
25#include <Domaine_Cl_VEF.h>
26#include <Champ_Uniforme.h>
27#include <distances_VEF.h>
28#include <Probleme_base.h>
29#include <Pb_Conduction.h>
30#include <Schema_Comm.h>
31#include <Constituant.h>
32#include <Interprete.h>
53 nom_inco =
"temperature";
56 Cerr <<
"Champ_front_contact_VEF::readOn : " <<
nom_pb1 <<
" " <<
nom_bord1 <<
" " << nom_inco << finl;
57 Cerr <<
" connecte a : " <<
nom_pb2 <<
" " <<
nom_bord2 <<
" " << nom_inco << finl;
89 if (!sub_type(Raccord_distant_homogene, frontiere_opposee))
92 Cerr <<
"Error, the boundary " << frontiere_opposee.
le_nom() <<
" should be a Raccord." << finl;
93 Cerr <<
"Add in your data file between the definition and the partition of the domain " << nom_domaine_oppose <<
" :" << finl;
94 Cerr <<
"Modif_bord_to_raccord " << nom_domaine_oppose <<
" " << frontiere_opposee.
le_nom() << finl;
97 Raccord_distant_homogene& raccord_distant = ref_cast_non_const(Raccord_distant_homogene, frontiere_opposee);
98 raccord_distant.
initialise(frontiere_locale, domaine_dis_locale, domaine_dis_opposee);
143 Nom nom_inco1, nom_inco2;
144 nom_inco1 = nom_inco;
145 nom_inco2 = nom_inco;
152 nom_inco1 =
"concentration";
162 nom_inco2 =
"concentration";
167 if (nom_inco1 != nom_inco2)
169 Cerr <<
"Une condition limite de contact est mal specifiee" << finl;
170 Cerr <<
"Il existe une incoherence sur l'inconnue mise en jeu de part et d'autre de la frontiere de contact" << finl;
204 const DoubleTab& inco_valeurs = l_inconnue->
valeurs(temps);
209 const DoubleVect& vol = le_dom_dis.
volumes();
211 const IntTab& elem_faces = le_dom_dis.
elem_faces();
216 const int nb_faces = la_front_vf.
nb_faces();
219 DoubleTab coeff_lam, coeff_turb;
225 coeff_lam = ref_cast(
Constituant,le_milieu).diffusivite_constituant().valeurs();
228 int ind_loi_paroi = 0;
244 for (
int n_bord = 0; n_bord < le_dom_dis.
domaine().nb_front_Cl(); n_bord++)
248 for (
int ind_face = 0; ind_face < nb_faces; ind_face++)
254 double surface_pond, surface_face;
256 const int nd = coeff_lam.
nb_dim();
257 const bool is_uniforme = coeff_lam.
dimension(0) == 1;
259 for (
int fac_front = 0; fac_front < nb_faces; fac_front++)
265 const int fac_glob = fac_front + ndeb;
266 int num = face_voisins(fac_glob, 0);
268 num = face_voisins(fac_glob, 1);
273 ratio += (face_normales(fac_glob, i) * face_normales(fac_glob, i));
282 e_idx = is_uniforme ? 0 : num;
285 k_eff = coeff_lam(e_idx);
291 n[i] = face_normales(fac_glob, i) / ratio;
295 k_eff = coeff_lam(e_idx, 0);
299 k_eff += n[i] * n[i] * coeff_lam(e_idx, i);
307 const double Kij = 0.5 * (coeff_lam(e_idx, i *
dimension + j) + coeff_lam(e_idx, j *
dimension + i));
308 k_eff += n[i] * n[j] * Kij;
312 k_eff = coeff_lam(e_idx, 0);
318 n[i] = face_normales(fac_glob, i) / ratio;
322 k_eff += n[i] * coeff_lam(e_idx, i, j) * n[j];
329 k_eff += coeff_turb(num);
333 for (
int i = 0; i < nb_faces_elem; i++)
337 const int j = elem_faces(num, i);
342 surface_pond -= (face_normales(j, kk) * le_dom_dis.
oriente_normale(j, num) * face_normales(fac_glob, kk) * le_dom_dis.
oriente_normale(fac_glob, num)) / (surface_face * surface_face);
343 Scal_moy(fac_front) += inco_valeurs(j) * surface_pond;
348 for (
int fac = 0; fac <
dimension + 1; fac++)
351 const int fac_loc = elem_faces(num, fac);
353 if (fac_loc != fac_glob)
354 gradient_num_local(fac_front) += (signe * face_normales(fac_glob, i) / ratio * face_normales(fac_loc, i) * inco_valeurs(fac_loc));
356 gradient_fro_local(fac_front) += (signe * face_normales(fac_loc, i) / ratio * face_normales(fac_loc, i));
363 if (ind_loi_paroi == 1)
369 const double coeff_equiv = k_eff / d_equiv(fac_front);
384 const Frontiere& la_front=la_frontiere_dis->frontiere();
389 DoubleVect gradient_num_transf_autre_pb(nb_faces);
390 DoubleVect gradient_fro_transf_autre_pb(nb_faces);
393 Cerr <<
"Attention: Vous utilisez une condition de contact Champ_front_contact_VEF sur le bord " <<
nom_bord1 <<
" sur le probleme "<<
nom_pb1 <<
" " << finl;
394 Cerr <<
"Vous devez avoir un Champ_front_contact_VEF equivalent sur le bord " <<
nom_bord2 <<
" du probleme "<<
nom_pb2<<
" " << finl;
397 trace_face_raccord(fr_vf_autre_pb.valeur(),ch_fr_autre_pb->gradient_num_transf,gradient_num_transf_autre_pb);
398 trace_face_raccord(fr_vf_autre_pb.valeur(),ch_fr_autre_pb->gradient_fro_transf,gradient_fro_transf_autre_pb);
404 for (
int fac_front=0; fac_front<nb_faces; fac_front++)
406 tab(fac_front,0)= -(
gradient_num_local(fac_front) + gradient_num_transf_autre_pb(fac_front))
419 const Frontiere& la_front=la_frontiere_dis->frontiere();
422 DoubleVect Scal_moy_autre_pb(nb_faces);
423 trace_face_raccord(fr_vf_autre_pb.valeur(),ch_fr_autre_pb->Scal_moy,Scal_moy_autre_pb);
428 for (
int fac_front=0; fac_front<nb_faces; fac_front++)
430 if (
Scal_moy(fac_front) > Scal_moy_autre_pb(fac_front))
432 if ((tab(fac_front,0)>
Scal_moy(fac_front)) || (tab(fac_front,0)<Scal_moy_autre_pb(fac_front)))
434 if (tab(fac_front,0)>
Scal_moy(fac_front))
436 Cerr<<
"Attention, Tp n'est pas compris entre les temperatures"<<finl;
437 Cerr<<
"fluide et solide au voisinage de la paroi"<<finl;
438 Cerr<<
"Tp("<<fac_front<<
") = "<<tab(fac_front,0)<<
" est trop elevee"<<finl;
439 Cerr<<
"de DT = "<<tab(fac_front,0)-
Scal_moy(fac_front)<<
" K"<<finl;
443 Cerr<<
"Attention, Tp n'est pas compris entre les temperatures"<<finl;
444 Cerr<<
"fluide et solide au voisinage de la paroi"<<finl;
445 Cerr<<
"Tp("<<fac_front<<
") = "<<tab(fac_front,0)<<
" est trop basse "<<finl;
446 Cerr<<
"de DT = "<<Scal_moy_autre_pb(fac_front)-tab(fac_front,0)<<
" K"<<finl;
452 if ((tab(fac_front,0)<
Scal_moy(fac_front)) || (tab(fac_front,0)>Scal_moy_autre_pb(fac_front)))
454 if (tab(fac_front,0)<
Scal_moy(fac_front))
456 Cerr<<
"Attention, Tp n'est pas compris entre les temperatures"<<finl;
457 Cerr<<
"fluide et solide au voisinage de la paroi"<<finl;
458 Cerr<<
"Tp("<<fac_front<<
") = "<<tab(fac_front,0)<<
" est trop basse"<<finl;
459 Cerr<<
"de DT = "<<
Scal_moy(fac_front)-tab(fac_front,0)<<
" K"<<finl;
463 Cerr<<
"Attention, Tp n'est pas compris entre les temperatures"<<finl;
464 Cerr<<
"fluide et solide au voisinage de la paroi"<<finl;
465 Cerr<<
"Tp("<<fac_front<<
") = "<<tab(fac_front,0)<<
" est trop elevee"<<finl;
466 Cerr<<
"de DT = "<<tab(fac_front,0)-Scal_moy_autre_pb(fac_front)<<
" K"<<finl;
484 return l_inconnue.valeur();
498 Cerr <<
"\nError in Champ_front_contact_VEF::equation() : not able to return the equation !" << finl;
534 const DoubleVect& vol = le_dom_dis.
volumes();
539 int nb_faces = la_front_vf.
nb_faces();
543 for (fac_front = 0; fac_front<nb_faces; fac_front++)
545 int fac = fac_front + ndeb;
546 int num = face_voisins(fac,0);
547 if (num < 0) num = face_voisins(fac,1);
551 for (
int i=0; i<
dimension; i++) ratio += (face_normales(fac,i) * face_normales(fac,i));
560 alpha=tab_alpha(num);
563 double volume = vol(num);
578 for (num_cl = 0; num_cl<zcl.
nb_cond_lim(); num_cl++)
589 if (ch_fr_autre_pb->nom_pb1 ==
nom_pb1)
592 Cerr<<
"Attention, erreur lors de la lecture du Champ_Front_Contact_VEF"<<finl;
593 Cerr<<
"La syntaxe a utiliser est : nom_pb_local nom_bord_local nom_pb_distant nom_bord_distant"<<finl;
605 if (sub_type(Raccord_distant_homogene,fr_vf.
frontiere()))
613 Cerr <<
"The boundary named " << fr_vf.
frontiere().
le_nom() <<
" is not a 'Raccord Distant Homogene'" << finl;
614 Cerr <<
"Use keyword modif_bord_to_raccord to change the boundary of kind Paroi into a boundary of kind Raccord" << finl;
615 Cerr <<
"after you read the meshes during the partitioning." << finl;
619 int nb_fac_front=x.
size();
620 for(
int fac_front=0; fac_front<nb_fac_front; fac_front++)
634 const Frontiere& la_front = la_frontiere_dis->frontiere();
648 const DoubleTab& xv1 = le_dom_dis1.
xv();
651 const IntTab& elem_faces = le_dom_dis1.
elem_faces();
666 const DoubleTab& xv2 = le_dom_dis2.
xv();
671 int i,j,k,temoin,temoin_tot;
676 if (std::fabs(xv1(ndeb1,ii) - xv1(ndeb1+nb_faces,ii)) > erreur )
677 erreur = std::fabs(xv1(ndeb1,ii) - xv1(ndeb1+nb_faces,ii));
698 int nb_faces1 = la_front_vf1.
nb_faces();
699 int nb_faces2 = la_front_vf2.
nb_faces();
701 if(nb_faces1!=nb_faces2)
703 Cerr <<
"Warning, the number of faces (" << nb_faces1 <<
") on the boundary " << la_front_vf1.
le_nom();
704 Cerr <<
" of the domain " << le_dom_dis1.
domaine().
le_nom() << finl;
705 Cerr <<
"is different of the number of faces (" << nb_faces2 <<
") on the boundary " << la_front_vf2.
le_nom();
706 Cerr <<
" of the domain " << le_dom_dis2.
domaine().
le_nom() <<
" ..." << finl;
707 Cerr <<
"The exchange condition with the paroi_contact can't succeed!" << finl;
708 Nom fichier=
"connectivity_failed_";
709 Nom fichier_med=
"connectivity_failed_";
711 if(nb_faces1>nb_faces2)
717 connectivity_failed(le_dom_dis1, nb_faces1, ndeb1, le_dom_dis2, nb_faces2, ndeb2, fichier, fichier_med);
725 connectivity_failed(le_dom_dis2, nb_faces2, ndeb2, le_dom_dis1, nb_faces1, ndeb1, fichier, fichier_med);
729 Cerr <<
"have not the same number of faces." << finl;
730 Cerr <<
"Coincidence between meshes may be recovered " << finl;
731 Cerr <<
"by cutting mesh associated to " << nom_pb << finl;
732 Cerr <<
"thanks to decouper_bord_coincident keyword or HOMARD tool (see reference manual)." << finl;
743 for (i=0; i<nb_faces; i++)
750 int elem_voisin=face_voisin(ndeb1+i,0);
752 elem_voisin=face_voisin(ndeb1+i,1);
755 for (
int f=0; f<nbf; f++)
757 int f2=elem_faces(elem_voisin,f);
759 d1=std::min(d1,distance_2D(f2,elem_voisin,le_dom_dis1));
761 d1=std::min(d1,distance_3D(f2,elem_voisin,le_dom_dis1));
765 for (j=i; j<nb_faces; j++)
770 if (std::fabs(xv1(ndeb1+i,k) - xv2(ndeb2+j,k)) > erreur)
break;
796 if (std::fabs(xv1(ndeb1+i,k) - xv2(ndeb2+j,k)) > erreur)
break;
822 Cerr<<
" no connectivity found for face : "<<ndeb1+i<<
" located at : x= "<<xv1(ndeb1+i,0)<<
" y= "<<xv1(ndeb1+i,1)<<finl;
824 Cerr<<
" no connectivity found for face : "<<ndeb1+i<<
" located at : x= "<<xv1(ndeb1+i,0)<<
" y= "<<xv1(ndeb1+i,1)<<
" z= "<<xv1(ndeb1+i,2)<<finl;
831 Cerr<<
" Process stopped at Champ_front_contact_VEF::remplir_connect_bords() "<<finl;
835 ArrOfInt inv_connect_bords;
836 inv_connect_bords.
resize_array(nb_faces, RESIZE_OPTIONS::NOCOPY_NOINIT);
837 inv_connect_bords=-1;
838 for (i=0; i<nb_faces; i++)
842 if (min_array(inv_connect_bords) < 0)
844 Cerr<<
"Pb a la creation de connect_bord, ce n'est pas une bijection"<<finl;
845 Cerr<<
"tableau inverse "<<inv_connect_bords<<finl;
855 int size_cl = conds_lim.size();
857 int elem_vois, elem_vois_autre_fr;
861 int elem_vois_face_1, elem_vois_face_2;
864 for (
int ind_face_1=0; ind_face_1<size; ind_face_1++)
867 for (
int ind_face_2 =0; ind_face_2<size; ind_face_2++)
869 if (ind_face_1!=ind_face_2)
872 if ((elem_vois_face_1==elem_vois_face_2) && (elem_vois_face_1!=-1))
882 for (
int num_cl=0; num_cl<size_cl; num_cl++)
893 int size_autre_fr = elems_autre_fr.
size();
894 for (
int ind_face =0; ind_face<size; ind_face++)
897 for (
int ind_face_autre_fr =0; ind_face_autre_fr<size_autre_fr; ind_face_autre_fr++)
899 elem_vois_autre_fr = elems_autre_fr[ind_face_autre_fr];
900 if ((elem_vois==elem_vois_autre_fr) && (elem_vois!=-1))
914 const IntTab& face_voisins1 = le_dom_dis1.
face_voisins();
915 int nb_faces = la_front_vf1.
nb_faces();
918 int voisin_0, voisin_1;
923 for (
int face=0; face<nb_faces; face++)
926 voisin_0 = face_voisins1(ndeb+face,0);
927 voisin_1 = face_voisins1(ndeb+face,1);
940 const DoubleTab& xv1 = le_dom_dis1.
xv();
943 int size_cl = conds_lim.size();
945 const Nom& nom_dom = l_inconnue1->equation().probleme().domaine().
le_nom();
947 for (
int num_cl=0; num_cl<size_cl; num_cl++)
959 for (
int i=0; i<faces_coin_fr.
size(); i++)
961 if (faces_coin_fr(i)!=0)
964 Cerr<<
"La face suivante du bord "<<nom_bord_fr<<
" est une face de coin pour le domaine "<<nom_dom<<finl;
966 Cerr<<
"x_"<<k<<
" "<<xv1(ndeb_fr+i,k)<<finl;
973 Cerr<<
"Le codage de Champ_front_contact_VEF n est pas disponible pour cette situation"<<finl;
974 Cerr<<
"Decouper la (ou les) maille concernee en utilisant l interprete VerifierCoin"<<finl;
975 Cerr<<
"ou en utilisant Trianguler_H en 2D ou Tetraedriser_homogene en 3D"<<finl;
981 const Domaine_VEF& zvef2,
int& nb_faces2,
int& ndeb2,
982 Nom& fichier,
Nom& fichier_med)
986 const IntTab& elem_faces2 = zvef2.
elem_faces();
987 int nb_elem2 = zvef2.
nb_elem();
989 const DoubleTab& xv1 = zvef1.
xv();
992 int fac,elem,face1,face2,elem2,trouve;
1001 chp.
nommer(
"Raccord_Homard");
1002 DoubleTab& chp_val = chp.
valeurs();
1007 for (fac=0; fac<nb_faces1; fac++)
1018 Cerr <<
"Probleme dans la recherche de l'element associe !" << finl;
1031 fic << nb_faces2 << finl;
1032 fic << nb_faces1 << finl;
1034 for (fac=0; fac<nb_faces2; fac++)
1037 elem2=face_voisin2(face2,0);
1038 if (elem2==-1) elem2=face_voisin2(face2,1);
1042 for(j=0; j<nbf; j++)
1043 if(face2==elem_faces2(elem2,j))
1051 Cerr <<
"Probleme dans la recherche de l'indice local !" << finl;
1055 fic << chp_val(elem2) <<
" " << fac <<
" " << elem2 <<
" " << j << finl;
1067 for (elem=0; elem<nb_elem2; elem++)
1069 if(chp_val(elem)==(2*(
dimension-1))) chp_val(elem)=1;
1070 else chp_val(elem)=0;
1072 Nom bis(fichier_med);
1074 fichier_med.
prefix(
".med");
1075 const Domaine& dom2 = zvef2.
domaine();
1079 nom_compos[0]=chp.
le_nom();
classe Ch_front_var_instationnaire_dep Cette classe abstraite represente un champ sur une frontiere,
int initialiser(double temps, const Champ_Inc_base &inco) override
Initialisation en debut de calcul.
void dimensionner(int, int)
Fixe le nombre de composantes et le nombre de valeurs nodales.
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
void associer_domaine_dis_base(const Domaine_dis_base &) override
const Domaine_dis_base & domaine_dis_base() const override
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
classe Champ_base Cette classe est la base de la hierarchie des champs.
classe Champ_front_base Classe de base pour la hierarchie des champs aux frontieres.
virtual const Frontiere_dis_base & frontiere_dis() const
Renvoie la frontiere discretisee associee au champ.
DoubleTab & valeurs_au_temps(double temps) override
Renvoie les valeurs au temps desire.
classe Cond_lim_base Classe de base pour la hierarchie des classes qui representent les differentes c...
virtual Frontiere_dis_base & frontiere_dis()
Renvoie la frontiere discretisee a laquelle les conditions aux limites s'appliquent.
Champ_front_base & champ_front()
classe Conds_lim Cette classe represente un vecteur de conditions aux limites.
classe Constituant Cette classe represente le(s) constituant(s) d'un fluide.
classe Convection_Diffusion_Concentration Cas particulier de Convection_Diffusion_std
SmallArrOfTID_t & chercher_elements(const DoubleTab &pos, SmallArrOfTID_t &elem, int reel=0) const
Recherche des elements contenant les points dont les coordonnees sont specifiees.
int nb_faces_elem(int=0) const
Renvoie le nombre de face de type i des elements geometriques constituants le domaine.
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
int nb_cond_lim() const
Renvoie le nombre de conditions aux limites.
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
virtual const DoubleVect & face_surfaces() const
virtual double face_normales(int face, int comp) const
double xv(int num_face, int k) const
double volumes(int i) const
Frontiere_dis_base & frontiere_dis(int) override
renvoie la ieme frontiere_discrete.
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 oriente_normale(int f, int e) const
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
const Front_VF & front_VF(int i) const
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
const Frontiere_dis_base & frontiere_dis(const Nom &) const
Renvoie la frontiere de Nom nom.
int rang_frontiere(const Nom &)
const Domaine & domaine() const
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 RefObjU & get_modele(Type_modele type) const
virtual const Champ_Inc_base & inconnue() const =0
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
Probleme_base & probleme()
Renvoie le probleme associe a l'equation.
virtual void fixer_nb_comp(int i)
Fixe le nombre de composantes du champ.
const Nom & le_nom() const override
Renvoie le nom du champ.
void nommer(const Nom &) override
Donne un nom au champ.
: Classe de postraitement des champs euleriens au format med.
int ecrire_domaine(const Domaine &domaine, const int est_le_premier_post) override
Ecriture d'un maillage.
int initialize_by_default(const Nom &file_basename) override
Initialisation de la classe avec des parametres par defaut.
int ecrire_champ(const Domaine &domaine, const Noms &unite_, const Noms &noms_compo, int ncomp, double temps_, const Nom &id_du_champ, const Nom &id_du_domaine, const Nom &localisation, const Nom &nature, const DoubleTab &data) override
voir Format_Post_base::ecrire_champ
int num_premiere_face() const
virtual void trace_face_distant(const DoubleTab &, DoubleTab &) const
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
int_t nb_faces() const
Renvoie le nombre de faces de la frontiere.
classe Frontiere_dis_base Classe representant une frontiere discretisee.
const Frontiere & frontiere() const
Renvoie la frontiere geometrique associee.
const Domaine_dis_base & domaine_dis() const
const Nom & le_nom() const override
Renvoie le nom de la frontiere geometrique.
static Objet_U & objet(const Nom &)
Voir Interprete_bloc::objet_global() BM: la classe Interprete n'est pas le meilleur endroit pour cett...
classe Milieu_base Cette classe est la base de la hierarchie des milieux (physiques)
virtual const Equation_base & equation(const std::string &nom_inc) const
virtual const Champ_Don_base & conductivite() const
Renvoie la conductivite du milieu.
virtual const Champ_Don_base & diffusivite() const
Renvoie la diffusivite du milieu.
Classe Modele_turbulence_scal_base Cette classe represente un modele de turbulence pour une equation ...
const Champ_Fonc_base & conductivite_turbulente() const
const Turbulence_paroi_scal_base & loi_paroi() const
Renvoie la loi de turbulence sur la paroi (version const).
int loi_paroi_non_nulle() const
Renvoie si oui ou non loi de paroi (version const).
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
Une chaine de caractere (Nom) en majuscules.
class Nom Une chaine de caractere pour nommer les objets de TRUST
Nom & prefix(const char *const)
const Nom & le_nom() const override
Renvoie *this;.
Un tableau de chaine de caracteres (VECT(Nom)).
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.
Classe Pb_Conduction Cette classe represente un probleme de conduction avec rho et Cp non uniformes :
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
const Champ_base & get_champ(const Motcle &nom) const override
virtual const Equation_base & equation(int) const =0
static bool is_parallel()
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
void initialise(const Frontiere_t &, const Domaine_dis_base &, const Domaine_dis_base &)
Cette classe est a la classe C++ ofstream ce que la classe Sortie est a la classe C++ ostream Elle re...
Classe de base des flux de sortie.
void resize_array(_SIZE_ new_size, 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 Turbulence_paroi_scal_base Classe de base pour la hierarchie des classes representant les mode...
virtual bool use_equivalent_distance() const
Give a boolean indicating if we need to use equivant distance by default we consider that we use the ...
const DoubleVects & equivalent_distance() const