16#include <Frontiere_ouverte_temperature_imposee_rayo_semi_transp.h>
17#include <Temperature_imposee_paroi_rayo_semi_transp.h>
18#include <Neumann_paroi_rayo_semi_transp_VEF.h>
19#include <Frontiere_ouverte_rayo_semi_transp.h>
20#include <Champ_front_uniforme.h>
21#include <Eq_rayo_semi_transp.h>
22#include <Pb_rayo_semi_transp.h>
23#include <Flux_radiatif_VEF.h>
24#include <Schema_Temps_base.h>
25#include <Champ_Uniforme.h>
26#include <Fluide_base.h>
27#include <Domaine_VEF.h>
38 const double sigma,
double temps)
40 const DoubleTab& n = indice.
valeurs();
45 assert(le_champ_front->nb_comp() == 1);
46 DoubleTab& tab = le_champ_front->valeurs_au_temps(temps);
53 const int nfin = ndeb + le_bord.
nb_faces();
54 double epsi = -123., nn = -123., T = -123.;
57 for (
int face = ndeb; face < nfin; face++)
62 epsi = epsilon(face - ndeb, 0);
74 const double numer_coeff = 4 * nn * nn * sigma * pow(T, 4) * epsi;
75 const double denum_coeff =
A_ * (2 - epsi);
77 tab(face - ndeb, 0) = numer_coeff / denum_coeff;
87 const int nb_faces = le_bord.
nb_faces();
92 for (
int num_cl_temp = 0; num_cl_temp < les_cl_temp.size(); num_cl_temp++)
95 Nom nom_cl_temp = la_cl_temp->frontiere_dis().le_nom();
121 Cerr <<
"Coder pour les autres condition limites de l'equation de temperature 1 " << finl;
128 Cerr <<
"Erreur : il n'y a pas de condition limite sur une frontiere portant le nom : " <<
frontiere_dis().
le_nom() << finl;
147 assert(Tb->nb_comp() == 1);
149 double bilan_flux = 0.;
151 double epsi = -123., Tbord = -123., n = -123.;
154 for (
int face = 0; face < nb_faces; face++)
164 n = indice(face + ndeb, 0);
167 Tbord = Tb->valeurs()(0, 0);
169 Tbord = Tb->valeurs()(face, 0);
171 const double irra = irradiance(face + ndeb);
173 const double denum =
A_ * (2 - epsi);
174 const double numer = epsi * (irra - 4 * n * n * sigma * pow(Tbord, 4));
175 Flux(face, 0) = -numer / denum;
180 surface += (face_normales(face + ndeb, i) * face_normales(face + ndeb, i));
182 surface = sqrt(surface);
183 bilan_flux += surface * Flux(face, 0);
189 Cout <<
"Flux radiatif sur le bord " << le_bord.
le_nom() <<
" : " << bilan_flux << finl;
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 Champ_front_base Classe de base pour la hierarchie des champs aux frontieres.
virtual DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ.
virtual DoubleTab & valeurs_au_temps(double temps)=0
Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limites discretisee dont l'objet fait partie.
virtual Frontiere_dis_base & frontiere_dis()
Renvoie la frontiere discretisee a laquelle les conditions aux limites s'appliquent.
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_bord(const char *const msg, const DoubleVect &arr, int num_deb)
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
virtual double face_normales(int face, int comp) const
Class defining operators and methods for all reading operation in an input flow (file,...
const Pb_rayo_semi_transp & pb_rayo_semi_transp() const
const Champ_Inc_base & inconnue() const override
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
Schema_Temps_base & schema_temps()
Renvoie le schema en temps associe a l'equation.
virtual int nb_comp() const
classe Fluide_base Cette classe represente un d'un fluide incompressible ainsi que
Champ_Don_base & indice()
void calculer_flux_radiatif(const Equation_base &eq_temp) override
void evaluer_cl_rayonnement(Champ_front_base &Tb, const Champ_Don_base &, const Champ_Don_base &, const Champ_Don_base &, const Domaine_VF &, const double, double)
Champ_front_base & flux_radiatif()
Champ_front_base & emissivite()
int num_premiere_face() const
const Nom & le_nom() const override
Renvoie le nom de la frontiere geometrique.
Champ_front_base & temperature_bord()
Champ_front_base & temperature_bord()
Champ_front_base & temperature_bord()
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 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.
const double & valeur_sigma() const
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
int limpr() const
Renvoie 1 s'il y a lieu d'effectuer une impression (cf dt_impr) Renvoie 0 sinon.
Classe de base des flux de sortie.
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")
classe Temperature_imposee_paroi_rayo_semi_transp cette classe est utilisee pour imposer une temperat...
Champ_front_base & temperature_bord()