16#include <Source_rayo_semi_transp_base.h>
17#include <Cond_lim_rayo_semi_transp.h>
18#include <Pb_rayo_semi_transp.h>
19#include <Discretisation_base.h>
20#include <Flux_radiatif_base.h>
21#include <Schema_Temps_base.h>
22#include <Champ_Uniforme.h>
23#include <Fluide_base.h>
46 double temps = pb_fluide_->presentTime();
50 statistics().begin_count(STD_COUNTERS::update_variables, statistics().get_last_opened_counter_level() + 1);
52 statistics().end_count(STD_COUNTERS::update_variables);
57 le_schema_en_temps_ = un_schema_en_temps;
85 ch_l_rayo.
nommer(
"longueur_de_rayonnement");
95 Cerr <<
"Le coefficient d'absorption n'est pas un OWN_PTR(Champ_base) Uniforme mais un " << coeff_abs.
que_suis_je() <<
". modifier la methode " << finl;
96 Cerr <<
"Pb_Couple_rayo_semi_transp::discretiser pour pouvoir prendre en compte ce type de Champ_Don" << finl;
98 fluide.
initialiser(pb_fluide_->schema_temps().temps_courant());
102 Cerr <<
"Erreur 0 dans Pb_Couple_rayo_semi_transp::discretiser vous n'avez probablement pas renseigne tous les" << finl;
103 Cerr <<
"parametres physique de votre fluide incompressible pour pouvoir traiter un probleme de rayonnement semi transparent" << finl;
109 Cerr <<
"Erreur dans Pb_rayo_semi_transp::readOn Le probleme de rayonnement semi transparent ne peut etre utilise" << finl;
110 Cerr <<
"qu'avec un Fluide_base et non " << pb_fluide_->milieu().que_suis_je() << finl;
117 int contient_source_rayo_semi_transp = 0;
119 for (
int j = 0; j < pb_fluide_->nombre_d_equations(); j++)
124 for (
int num_cl = 0; num_cl < la_zcl.
nb_cond_lim(); num_cl++)
141 for (
int num_source = 0; num_source < les_sources.size(); num_source++)
143 contient_source_rayo_semi_transp = 1;
146 if (contient_source_rayo_semi_transp == 0)
148 Cerr <<
"Attention, vous n'avez pas defini de terme source de rayonnement semi transparent" << finl;
149 Cerr <<
"pensez a ajourter le terme source Source_rayo_semi_transp dans la liste des termes " << finl;
150 Cerr <<
"sources de l'equation de l'energie" << finl;
167 for (
int num_cl_rayo = 0; num_cl_rayo < les_cl_rayo.size(); num_cl_rayo++)
176 else if (sub_type(
Symetrie, la_cl_rayo.valeur()))
182 Cerr <<
"Erreur : les conditions aux limites de l'equation de rayonnement" << finl;
183 Cerr <<
"doivent forcement etre du type rayonnantes" << finl;
194 for (
int num_cl_rayo = 0; num_cl_rayo < les_cl_rayo.size(); num_cl_rayo++)
198 if (la_cl_rayo->frontiere_dis().le_nom() == nom_bord)
207 Cerr <<
"Erreur : les conditions aux limites de l'equation de rayonnement" << finl;
208 Cerr <<
"doivent forcement etre du type rayonnantes" << finl;
214 Cerr <<
"Erreur : Pb_rayo_semi_transp::flux_radiatif" << finl;
215 Cerr <<
"il n'y a pas de condition a la limite portant le nom " << nom_bord << finl;
classe Champ_Don_base classe de base des Champs donnes (non calcules)
int fixer_nb_valeurs_nodales(int nb_noeuds) override
Fixe le nombre de degres de liberte par composante.
virtual double changer_temps(const double t)
Fixe le temps auquel se situe le champ.
classe Champ_front_base Classe de base pour la hierarchie des champs aux frontieres.
classe Cond_lim_base Classe de base pour la hierarchie des classes qui representent les differentes c...
virtual bool is_bc_rayo_semi_transp(Cond_lim_rayo_semi_transp *&la_cl_rayo)
classe Cond_lim_rayo_semi_transp
virtual void associer_pb_rayo_semi_transp(const Pb_rayo_semi_transp &)
virtual void completer_Cl_opposee_si_contact()
virtual void recherche_emissivite_et_A()
classe Cond_lim Classe generique servant a representer n'importe quelle classe
classe Conds_lim Cette classe represente un vecteur de conditions aux limites.
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
int nb_cond_lim() const
Renvoie le nombre de conditions aux limites.
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
Class defining operators and methods for all reading operation in an input flow (file,...
void completer() override
Complete la construction (initialisation) des objets associes a l'equation.
bool initTimeStep(double dt) override
Allocation et initialisation de l'inconnue et des CLs jusqu'a present+dt.
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
Sources & sources()
Renvoie les termes sources asssocies a l'equation.
virtual void mettre_a_jour(double temps)
La valeur de l'inconnue sur le pas de temps a ete calculee.
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
virtual void fixer_nb_comp(int i)
Fixe le nombre de composantes du champ.
void nommer(const Nom &) override
Donne un nom au champ.
virtual const Nom & fixer_unite(const Nom &)
Specifie l'unite d'un champ scalaire ou dont toutes les composantes ont la meme unite.
classe Fluide_base Cette classe represente un d'un fluide incompressible ainsi que
bool is_rayo_semi_transp() const override
void typer_longeur_rayo(const Nom &typ)
int initialiser(const double temps) override
Initialise les parametres du fluide.
Champ_Don_base & longueur_rayo()
Champ_front_base & flux_radiatif()
virtual void calculer_flux_radiatif(const Equation_base &eq_temp)=0
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
Un tableau de chaine de caracteres (VECT(Nom)).
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 Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
Le Pb_rayo_semi_transp est un Probleme_base qui a 4 particularites : * Son equation doit etre typee e...
void preparer_calcul() override
Prepare le calcul: initialise les parametres du milieu et prepare le calcul de chacune des equations.
const Champ_front_base & flux_radiatif(const Nom &nom_bord) const
bool iterateTimeStep(bool &converged) override
In the case solveTimeStep uses an iterative process, this method executes a single iteration.
void validateTimeStep() override
Validates the calculated unknown by moving the present time at the end of the time step.
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
void discretise_longueur_rayo()
void typer_lire_milieu(Entree &is) override
int nombre_d_equations() const override
Eq_rayo_semi_transp & eq_rayo()
void calculer_flux_radiatif()
void associer_sch_tps_base(const Schema_Temps_base &) override
Associe un schema en temps au probleme.
bool initTimeStep(double dt) override
This method allocates and initializes the unknown and given fields for the future time step.
const Equation_base & equation(int i) const override
Eq_rayo_semi_transp eq_rayo_
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
virtual void discretiser_equations()
Postraitements les_postraitements_
const Schema_Temps_base & schema_temps() const
Renvoie le schema en temps associe au probleme.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
virtual void associer_pb(const Probleme_base &)
virtual int mettre_a_jour()
Mise a jour du temps courant (t+=dt) et du nombre de pas de temps effectue (nb_pas_dt_++).
Classe de base des flux de sortie.
classe Source_rayo_semi_transp_base Classe de base de la hierarchie des termes sources de l'eqution d...
class Sources Sources represente une liste de Source.
classe Symetrie Sur les faces de symetrie on a les proprietes suivantes: