16#include <Champ_front_contact_rayo_transp_VEF.h>
17#include <Schema_Temps_base.h>
18#include <Pb_Fluide_base.h>
19#include <Champ_Inc_base.h>
20#include <Pb_Conduction.h>
21#include <Equation_base.h>
22#include <Domaine_VEF.h>
36 assert (!le_modele_rayo_);
44 le_modele_rayo_ =ref_cast(
Pb_Fluide_base, pb1).get_mod_rayo_transp();
52 le_modele_rayo_ =ref_cast(
Pb_Fluide_base, pb2).get_mod_rayo_transp();
56 Cerr << finl <<
"Big issue in Champ_front_contact_rayo_transp_VEF::initialiser !!!" << finl;
57 Cerr <<
"It seems that you defined a radiation contact BC between the boundaries " <<
nom_bord1 <<
" and " <<
nom_bord2 << finl;
58 Cerr <<
"of problems " <<
nom_pb1 <<
" and " <<
nom_pb2 <<
" , but neither is a fluid radiation problem !!!" << finl;
59 Process::exit(
"Please fix your data file and use a classical paroi_contact BC for these boundaries ... \n");
64 flux_radiatif_.resize(nb_faces);
78 DoubleTab flux_radiatif_autre_pb;
79 int nb_faces = fr_vf_autre_pb->frontiere().nb_faces();
80 int ndeb = fr_vf_autre_pb->frontiere().num_premiere_face();
81 flux_radiatif_autre_pb.
resize(nb_faces);
82 for (
int fac_front = 0; fac_front < nb_faces; fac_front++)
83 flux_radiatif_autre_pb(fac_front) = le_modele_rayo_->flux_radiatif(fac_front + ndeb);
91 flux_radiatif_.resize(nb_faces);
92 for (
int fac_front = 0; fac_front < nb_faces; fac_front++)
93 flux_radiatif_(fac_front) = le_modele_rayo_->flux_radiatif(fac_front + ndeb);
107 const Nom& nom_pb_rayonnant = le_modele_rayo_->nom_pb_rayonnant();
110 if ((nom_pb_rayonnant !=
nom_pb1) && (nom_pb_rayonnant !=
nom_pb2))
111 Process::exit(
"Error in Champ_front_contact_rayo_transp_VEF::calculer_coeffs_echange !! You should not be here since the problem is not a radiation problem !!!");
123 const Frontiere& la_front = la_frontiere_dis->frontiere();
127 DoubleVect gradient_num_transf_autre_pb(nb_faces);
128 DoubleVect gradient_fro_transf_autre_pb(nb_faces);
129 trace_face_raccord(fr_vf_autre_pb.valeur(), ch_fr_autre_pb->get_gradient_num_transf(), gradient_num_transf_autre_pb);
130 trace_face_raccord(fr_vf_autre_pb.valeur(), ch_fr_autre_pb->get_gradient_fro_transf(), gradient_fro_transf_autre_pb);
135 DoubleVect coeff_amort_num_autre_pb(nb_faces);
136 DoubleVect coeff_amort_denum_autre_pb(nb_faces);
137 trace_face_raccord(fr_vf_autre_pb.valeur(), ch_fr_autre_pb->get_coeff_amort_num(), coeff_amort_num_autre_pb);
138 trace_face_raccord(fr_vf_autre_pb.valeur(), ch_fr_autre_pb->get_coeff_amort_denum(), coeff_amort_denum_autre_pb);
142 for (
int fac_front = 0; fac_front < nb_faces; fac_front++)
147 double e = coeff_amort_num_autre_pb(fac_front) +
coeff_amort_num(fac_front);
148 double omega = dt / (dt + e / (coeff_amort_denum_autre_pb(fac_front) +
coeff_amort_denum(fac_front)));
153 double tab_past = tab(fac_front, 0);
157 tab(fac_front, 0) = omega * tab(fac_front, 0) + (1 - omega) * tab_past;
171 const Frontiere& la_front = la_frontiere_dis->frontiere();
172 const int nb_faces = la_front.
nb_faces();
176 for (
int fac_front = 0; fac_front < nb_faces; fac_front++)
181 for (
int fac_front = 0; fac_front < nb_faces; fac_front++)
182 gradient_num_transf_autre_pb(fac_front) = gradient_num_transf_autre_pb(fac_front) - flux_radiatif_(fac_front);
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.
Class defining operators and methods for all reading operation in an input flow (file,...
virtual void fixer_nb_comp(int i)
Fixe le nombre de composantes du champ.
int_t num_premiere_face() const
int_t nb_faces() const
Renvoie le nombre de faces de la frontiere.
const Frontiere & frontiere() const
Renvoie la frontiere geometrique associee.
static Objet_U & objet(const Nom &)
Voir Interprete_bloc::objet_global() BM: la classe Interprete n'est pas le meilleur endroit pour cett...
virtual bool is_rayo_transp() const
class Nom Une chaine de caractere pour nommer les objets de TRUST
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_Fluide_base Cette classe a pour but de disposer d une classe amont pour
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.
double pas_de_temps() const
Renvoie le pas de temps (delta_t) courant.
Classe de base des flux de sortie.
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)