16#include <Echange_contact_rayo_transp_VDF.h>
17#include <Modele_rayo_transp.h>
18#include <Champ_front_uniforme.h>
19#include <Champ_front_calc.h>
20#include <Champ_Uniforme.h>
21#include <Pb_Fluide_base.h>
22#include <Domaine_VDF.h>
33 assert (!le_modele_rayo_);
41 le_modele_rayo_ =ref_cast(
Pb_Fluide_base, this_pb).get_mod_rayo_transp();
50 le_modele_rayo_ = ref_cast(
Pb_Fluide_base, other_pb).get_mod_rayo_transp();
54 Cerr << finl <<
"Big issue in Echange_contact_rayo_transp_VDF::initialiser !!!" << finl;
56 Cerr <<
"of problems " << this_pb.
le_nom() <<
" and " <<
nom_autre_pb_ <<
" , but neither is a fluid radiation problem !!!" << finl;
57 Process::exit(
"Please fix your data file and use the classical paroi_contact BC for these boundaries ... \n");
75 const int nb_faces_bord = ma_front_vf.
nb_faces();
77 for (
int numfa = 0; numfa < nb_faces_bord; numfa++)
79 const int ind_fac = numfa + ndeb;
86 teta_i_(numfa) = mon_inco(elem);
100 Cerr <<
"fin de construction dans " <<
que_suis_je() << finl;
129 Process::exit(
"Le nom de bord doit etre le meme pour les deux domaines au niveau du raccord");
135 if (domaine_dis1.
domaine().
raccord(nom_racc1)->que_suis_je() !=
"Raccord_distant_homogene")
145 assert(nb_comp == 1);
146 int is_pb_fluide = 0;
149 DoubleTab& mon_h = h_imp_->valeurs();
152 double invhparoi = 1. /
h_paroi;
163 for (
int ii = 0; ii < taille; ii++)
164 for (
int jj = 0; jj < nb_comp; jj++)
165 mon_h(ii, jj) = 1. / (1. /
autre_h(ii, jj) + 1. / mon_h(ii, jj));
172 Cerr <<
"On ne doit pas passer par la Echange_contact_rayo_transp_VDF::calculer_Teta_equiv " << __FILE__ << finl;
191 int nb_faces_bord = ma_front_vf.
nb_faces();
206 const Front_VF& frontfluide = (ispbfluide ? ma_front_vf : autre_front_vf);
207 int nb_faces_bord_fluide = frontfluide.
nb_faces();
208 DoubleVect flux_radia_fluide(nb_faces_bord_fluide);
211 for (
int nfluide = 0; nfluide < nb_faces_bord_fluide; nfluide++)
212 flux_radia_fluide(nfluide) = modrayo.
flux_radiatif(nfluide + ndebfluide);
214 DoubleVect fluxradia;
218 if ((ispbfluide) || (domaine_dis1.
domaine().
raccord(nom_racc1)->que_suis_je() !=
"Raccord_distant_homogene"))
219 fluxradia = flux_radia_fluide;
223 for (
int numfa = 0; numfa < nb_faces_bord; numfa++)
225 ind_fac = numfa + ndeb;
231 double new_Teta_i = (mon_h(numfa, 0) * mon_inco(elem) + lautre_h(numfa, 0) * t_autre(numfa, 0) - fluxradia(numfa)) / (mon_h(numfa, 0) + lautre_h(numfa, 0));
233 double tetisa =
teta_i_(numfa);
236 Teta_equiv(numfa, 0) = (-mon_h(numfa, 0) * mon_inco(elem) + (lautre_h(numfa, 0) + mon_h(numfa, 0)) *
teta_i(numfa)) / lautre_h(numfa, 0);
240 Cerr <<
"Teta_equiv fin " << Teta_equiv(numfa, 0) <<
" Teta_i_old " << tetisa <<
" Teta_i " <<
teta_i_(numfa);
241 Cerr <<
" Teta_equiv avt modif " << (mon_h(numfa, 0) * mon_inco(elem) + lautre_h(numfa, 0) * t_autre(numfa) - fluxradia(numfa)) / (mon_h(numfa, 0) + lautre_h(numfa, 0));
242 Cerr <<
" h " << mon_h(numfa, 0) <<
" autreh " << lautre_h(numfa, 0) <<
" flux radia " << fluxradia(numfa);
243 Cerr <<
" mon T " << mon_inco(elem) <<
" autre T " << t_autre(numfa) << finl;
247 Debog::verifier(
"Teta_equiv dans Echange_contact_rayo_transp_VDF::calculer_Teta_paroi", Teta_equiv);
264Echange_contact_Rayo_transp_sans_relax_VDF::Echange_contact_Rayo_transp_sans_relax_VDF()
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
virtual void associer_fr_dis_base(const Frontiere_dis_base &)
Associe une frontiere discretisee au champ.
virtual void mettre_a_jour(double temps)
NE FAIT RIEN, a surcharger.
classe Champ_front_calc Classe derivee de Champ_front_var qui represente les
const Frontiere_dis_base & front_dis() const
Renvoie la frontiere discretisee correspondante au domaine sur lequel prend la trace.
const Champ_Inc_base & inconnue() const
Renvoie le champ inconnue associe.
const Milieu_base & milieu() const
Renvoie le milieu associe a l'equation qui porte le champ inconnue dont on prend la trace.
DoubleTab & valeurs_au_temps(double temps) override
Renvoie les valeurs au temps desire.
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.
virtual double teta_i(int numfa) const
void preparer_surface(const Frontiere_dis_base &, const Domaine_Cl_dis_base &)
static void verifier(const char *const msg, double)
Raccord_t & raccord(int i)
Domaine_dis_base & domaine_dis()
Renvoie une reference sur le domaine discretise associe aux conditions aux limites.
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.
const Frontiere_dis_base & frontiere_dis(const Nom &) const
Renvoie la frontiere de Nom nom.
const Domaine & domaine() const
void mettre_a_jour(double temps) override
Effectue une mise a jour en temps de la condition aux limites.
virtual Champ_front_base & T_ext()
Renvoie le champ T_ext de temperature imposee a la frontiere.
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 Champ_Inc_base & inconnue() const =0
Probleme_base & probleme()
Renvoie le probleme associe a l'equation.
Domaine_dis_base & domaine_dis()
Renvoie le domaine discretise associe a l'equation.
virtual int nb_comp() const
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.
const Frontiere & frontiere() const
Renvoie la frontiere geometrique associee.
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 bool is_rayo_transp() const
virtual const Champ_Don_base & conductivite() const
Renvoie la conductivite du milieu.
double relaxation() const
double flux_radiatif(int num_face_global) const
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
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.
classe Pb_Fluide_base Cette classe a pour but de disposer d une classe amont pour
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
virtual const Milieu_base & milieu() const
Renvoie le milieu physique associe au probleme.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.
_SIZE_ dimension(int d) const