16#include <Echange_contact_VDF_FT_Disc.h>
18#include <Champ_front_calc.h>
19#include <Probleme_base.h>
20#include <Champ_Uniforme.h>
21#include <Schema_Temps_base.h>
22#include <Milieu_base.h>
23#include <Modele_turbulence_scal_base.h>
24#include <Domaine_VDF.h>
25#include <Equation_base.h>
26#include <Conduction.h>
28#include <Probleme_FT_Disc_gen.h>
29#include <Triple_Line_Model_FT_Disc.h>
30#include <Domaine_VF.h>
49 Cerr<<
"Lecture des parametres du contact (Echange_contact_VDF_FT_Disc::readOn)"<<finl;
50 Param param(
"Echange_contact_VDF_FT_Disc::readOn");
59 param.ajouter(
"Ri_liq",&
Ri_);
64 param.lire_avec_accolades(s);
70 T_autre_pb_.typer(
"Champ_front_calc");
73 le_champ_front.typer(
"Ch_front_var_instationnaire_dep");
85 indicatrice_->mettre_a_jour(temps);
87 const DoubleTab& I = indicatrice_->valeurs_au_temps(temps);
99 DoubleTab& mon_h= h_imp_->valeurs();
107 DoubleTab& mon_Tex=
T_ext(). valeurs();
114 DoubleTab& mon_Ti= Ti_wall_-> valeurs();
115 DoubleTab Twalltmp(mon_Ti);
121 for (
int ii=0; ii<taille; ii++)
122 for (
int jj=0; jj<nb_comp; jj++)
126 mon_h(ii,jj)=1./(1./
autre_h(ii,jj)+1./mon_h(ii,jj));
127 mon_Ti(ii, jj) = Twalltmp(ii, jj);
136 mon_Ti(ii, jj) = Twalltmp(ii, jj);
141 Nom nom_pb=mon_dom_cl_dis->equation().probleme().
le_nom();
149 if (pbft-> tcl().is_activated())
153 DoubleTab& mon_phi =
phi_ext_-> valeurs();
161 const ArrOfDouble& Q_from_CL = tcl->
Q();
162 const ArrOfInt& faces_with_CL_contrib = tcl-> boundary_faces();
166 const int nb_contact_line_contribution = faces_with_CL_contrib.
size_array();
169 for (
int jj = 0; jj < nb_comp; jj++)
176 for (
int idx = 0; idx < nb_contact_line_contribution; idx++)
178 const int facei = faces_with_CL_contrib[idx];
179 bool Not_find_ =
true;
182 for (ii=0; ii<taille; ii++)
192 const double sign = (face_voisins (facei, 0) == -1) ? -1. : 1.;
193 const double TCL_wall_flux = Q_from_CL[idx] / surface (facei);
194 const double val = -sign * TCL_wall_flux;
197 mon_phi(ii, jj) += val;
199 Process::exit(
Nom(
"Echange_contact_VDF_FT_Disc : missing element corresponding") +
Nom(facei) +
" ! Check all faces number in TCL are at BC?" );
203 for (
int ii=0; ii<taille; ii++)
205 if (!est_egal(mon_phi(ii, jj), 0.))
219 Ti_wall_->mettre_a_jour(temps);
228 ready_inject =
false;
232 for (
int ii = 0; ii < taille; ii++)
243 double sum_surface = 0;
245 for (
int ii = 0; ii < taille; ii++)
251 sum_surface += surface (face);
252 sum_T += surface (face) * mon_Ti (ii, 0);
259 sum_T = (sum_surface > DMINFLOAT) ? sum_T / sum_surface : 0;
261 ready_inject = (sum_T >= pbft->
tcl ().tempC_tcl ()) ? true :
false;
273 indicatrice_.typer(
"Champ_front_calc");
277 Nom nom_pb = mon_dom_cl_dis->equation ().probleme ().
le_nom ();
310 derivee_phi_ext_.typer (
"Champ_front_fonc");
311 derivee_phi_ext_->fixer_nb_comp (1);
313 derivee_phi_ext_->valeurs ().resize (nb_faces_raccord1, 1);
315 phi_ext_.typer (
"Champ_front_fonc");
318 phi_ext_->valeurs ().resize (nb_faces_raccord1, 1);
323 Ti_wall_.typer (
"Champ_front_fonc");
324 Ti_wall_->fixer_nb_comp (1);
326 Ti_wall_->valeurs().resize (nb_faces_raccord1, 1);
339 indicatrice_->changer_temps_futur(temps,i);
349 ok = ok && indicatrice_->avancer(temps);
350 ok = ok && Ti_wall_ ->
avancer(temps);
360 ok = ok && indicatrice_->reculer(temps);
361 ok = ok && Ti_wall_ ->
reculer(temps);
372 DoubleTab& mon_Ti = Ti_wall_->valeurs ();
374 int is_pb_fluide = 0;
375 DoubleTab mon_h (mon_Ti);
376 DoubleTab mautre_h (mon_Ti);
384 DoubleTab Twalltmp (mon_Ti);
394 for (
int ii = 0; ii < taille; ii++)
396 double tempValue = Twalltmp(ii);
403 mon_Ti(ii, 0) = tempValue;
414 Ti_wall_->set_temps_defaut(temps);
416 indicatrice_->set_temps_defaut(temps);
422 if (Ti_wall_->valeurs().size() == 1)
423 return Ti_wall_->valeurs()(0, 0);
424 else if (Ti_wall_->valeurs().dimension(1) == 1)
425 return Ti_wall_->valeurs()(i, 0);
427 Cerr <<
"Echange_contact_VDF_FT_Disc::Ti_wall_ erreur" << finl;
virtual void associer_fr_dis_base(const Frontiere_dis_base &)
Associe une frontiere discretisee au champ.
virtual DoubleTab & valeurs() override
Renvoie le tableau des valeurs du 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
void creer(const Nom &, const Nom &, const Motcle &)
Cree l'objet Champ_front_calc representant la trace d'un champ inconnue sur une frontiere a partir de...
int initialiser(double, const Champ_Inc_base &) override
Initialisation en debut de calcul.
const Milieu_base & milieu() const
Renvoie le milieu associe a l'equation qui porte le champ inconnue dont on prend la trace.
void fixer_nb_valeurs_temporelles(int nb_cases) override
Surcharge Champ_front_base::fixer_nb_valeurs_temporelles.
Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limites discretisee dont l'objet fait partie.
std::vector< Motcle > app_domains
virtual Frontiere_dis_base & frontiere_dis()
Renvoie la frontiere discretisee a laquelle les conditions aux limites s'appliquent.
Classe Conduction Cette classe represente l'equation d'evolution.
virtual const DoubleVect & face_surfaces() const
double xv(int num_face, int k) const
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
void set_temps_defaut(double temps) override
Change le i-eme temps futur de la cl.
void mettre_a_jour(double temps) override
Effectue une mise a jour en temps de la condition aux limites.
void fixer_nb_valeurs_temporelles(int nb_cases) override
Appele par Conds_lim::completer Appel cha_front_base::fixer_nb_valeurs_temporelles.
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,...
Schema_Temps_base & schema_temps()
Renvoie le schema en temps associe a l'equation.
virtual void fixer_nb_comp(int i)
Fixe le nombre de composantes du champ.
virtual int nb_comp() const
int_t num_premiere_face() 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.
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...
classe Milieu_base Cette classe est la base de la hierarchie des milieux (physiques)
virtual const Champ_Don_base & conductivite() const
Renvoie la conductivite du milieu.
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 & le_nom() const override
Renvoie *this;.
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.
const Triple_Line_Model_FT_Disc & tcl() const
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
static double mp_max(double)
static double mp_sum(double)
Calcule la somme de x sur tous les processeurs du groupe courant.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
virtual int nb_valeurs_temporelles() const =0
Classe de base des flux de sortie.
_SIZE_ size_array() const
_SIZE_ dimension(int d) const
virtual void detach_vect()
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")
bool reinjection_tcl() const
bool ready_inject_tcl() const
bool is_activated() const
const double & Rc_inject() const