16#include <Frontiere_ouverte_temperature_imposee_rayo_semi_transp.h>
17#include <Echange_externe_impose_rayo_semi_transp.h>
18#include <Echange_global_impose_rayo_semi_transp.h>
19#include <Echange_contact_rayo_semi_transp_VDF.h>
20#include <Frontiere_ouverte_rayo_semi_transp.h>
21#include <Neumann_paroi_rayo_semi_transp_VDF.h>
22#include <Champ_front_uniforme.h>
23#include <Eq_rayo_semi_transp.h>
24#include <Pb_rayo_semi_transp.h>
25#include <Flux_radiatif_VDF.h>
26#include <Schema_Temps_base.h>
27#include <Champ_Uniforme.h>
28#include <Fluide_base.h>
29#include <Domaine_VDF.h>
39 const double sigma,
double temps)
41 const DoubleTab& l_rayo = longueur_rayo.
valeurs();
42 const DoubleTab& n = indice.
valeurs();
44 const DoubleTab& kappa = coeff_abs.
valeurs();
51 assert(le_champ_front->nb_comp() == 1);
52 DoubleTab& tab = le_champ_front->valeurs_au_temps(temps);
56 assert(longueur_rayo.
nb_comp() == 1);
57 assert(coeff_abs.
nb_comp() == 1);
62 const int nfin = ndeb + le_bord.
nb_faces();
63 double nn = -123., k = -123., l_r = -123.;
64 double epsi = -123., T = -123.;
67 for (
int face = ndeb; face < nfin; face++)
69 int elem = face_voisins(face, 0);
81 l_r = l_rayo(elem, 0);
98 epsi = epsilon(face - ndeb, 0);
101 double numer_coeff = l_r;
102 numer_coeff *= 4 * nn * nn * sigma * pow(T, 4);
104 double denum_coeff = 3 * k * epsi;
105 denum_coeff = 1 / denum_coeff;
106 denum_coeff *=
A_ * (2 - epsi);
107 denum_coeff = denum_coeff + eF;
109 if (epsi < DMINFLOAT)
110 tab(face - ndeb, 0) = 0.;
112 tab(face - ndeb, 0) = numer_coeff / denum_coeff;
122 const int nb_faces = le_bord.
nb_faces();
127 for (
int num_cl_temp = 0; num_cl_temp < les_cl_temp.size(); num_cl_temp++)
130 Nom nom_cl_temp = la_cl_temp->frontiere_dis().le_nom();
166 Cerr <<
"Coder pour les autres condition limites de l'equation de temperature 1 " << finl;
173 Cerr <<
"Erreur : il n'y a pas de condition limite sur une frontiere portant le nom : " <<
le_nom() << finl;
179 DoubleTab& Flux = flux_radiatif_->valeurs();
195 assert(Tb->nb_comp() == 1);
197 double bilan_flux = 0.;
199 double kappa_F = -123., epsi = -123.;
200 double Tbord = -123., n = -123.;
203 for (
int face = 0; face < nb_faces; face++)
205 int elem = face_voisins(face + ndeb, 0);
207 elem = face_voisins(face + ndeb, 1);
210 kappa_F = kappa(0, 0);
212 kappa_F = kappa(elem, 0);
225 Tbord = Tb->valeurs()(0, 0);
227 Tbord = Tb->valeurs()(face, 0);
229 const double G_F = irradiance(elem);
232 double denum =
A_ * (2 - epsi);
233 denum /= 3 * kappa_F * epsi;
236 const double numer = G_F - 4 * n * n * sigma * pow(Tbord, 4);
237 double grad_G = numer / denum;
239 if (epsi < DMINFLOAT)
242 Flux(face, 0) = -grad_G / (3 * kappa_F);
244 bilan_flux += face_surfaces(face + ndeb) * Flux(face, 0);
250 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.
double dist_norm_bord(int num_face) const override
virtual const DoubleVect & face_surfaces() const
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
classe Echange_externe_impose_rayo_semi_transp cette classe est utilisee pour imposer une temperature...
Champ_front_base & temperature_bord()
classe Echange_global_impose_rayo_semi_transp cette classe est utilisee pour imposer une temperature ...
Champ_front_base & temperature_bord()
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 & 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")