16#include <Frontiere_dis_base.h>
17#include <Discret_Thermique.h>
18#include <Probleme_base.h>
19#include <Conduction.h>
34 terme_diffusif.set_fichier(
"Diffusion_chaleur");
35 terme_diffusif.set_description((Nom)
"Conduction heat transfer rate=Integral(lambda*grad(T)*ndS) [W] if SI units used");
43 param.
ajouter_condition(
"is_read_diffusion",
"The diffusion operator must be read, select negligeable type if you want to neglect it.");
53 Cerr <<
"Reading and typing of the diffusion operator : " << finl;
59 terme_diffusif.associer_diffusivite_pour_pas_de_temps(
milieu().diffusivite());
60 solveur_masse->set_name_of_coefficient_temporel(
"rho_cp_comme_T");
64 else if (mot==
"Traitement_particulier")
66 Cerr <<
"Reading and typing of the Traitement_particulier object : " << finl;
67 Nom type=
"Traitement_particulier_";
82 if (discr ==
"VEFPreP1B")
86 le_traitement_particulier.typer(type);
87 le_traitement_particulier->associer_eqn(*
this);
88 le_traitement_particulier->lire(is);
89 le_traitement_particulier->preparer_calcul_particulier();
94 Cerr <<
"Error while reading Traitement_particulier" << finl;
95 Cerr <<
"A { is expected." << finl;
112 return terme_diffusif.diffusivite();
130 le_solide = un_solide;
156 return terme_diffusif;
159 Cerr <<
"Conduction::operateur("<<i<<
") !! " << finl;
160 Cerr <<
"Equation Conduction has only one operator." << finl;
164 return terme_diffusif;
180 return terme_diffusif;
183 Cerr <<
"Conduction::operateur("<<i<<
") !! " << finl;
184 Cerr <<
"Equation Conduction has only one operator." << finl;
188 return terme_diffusif;
197 Cerr <<
"Conduction equation discretization" << finl;
238 Cerr <<
"You forgot to associate the solid to the problem named " <<
probleme().
le_nom() << finl;
241 return le_solide.valeur();
246 if (motlu ==
"temperature_paroi" || motlu ==
"wall_temperature")
248 if (!temperature_paroi_)
261 if (nom ==
"temperature_paroi" || nom ==
"wall_temperature")
270 if (le_traitement_particulier)
271 if (le_traitement_particulier->has_champ(nom, ref_champ))
279 if (nom ==
"temperature_paroi" || nom ==
"wall_temperature")
285 if (le_traitement_particulier)
286 if (le_traitement_particulier->has_champ(nom))
296 if (nom ==
"temperature_paroi" || nom ==
"wall_temperature")
300 if (((ch_tp.
temps() != la_temperature->temps()) || (ch_tp.
temps() == temps_init)) && ((la_temperature->mon_equation_non_nul())))
308 if (le_traitement_particulier)
309 if (le_traitement_particulier->has_champ(nom, ref_champ))
312 throw std::runtime_error(std::string(
"Field ") + nom.
getString() + std::string(
" not found !"));
320 noms_compris.add(
"TEMPERATURE_PAROI");
321 noms_compris.add(
"WALL_TEMPERATURE");
323 if (opt == DESCRIPTION)
324 Cerr <<
"Conduction : " << noms_compris << finl;
326 nom.add(noms_compris);
328 if (le_traitement_particulier)
329 le_traitement_particulier->get_noms_champs_postraitables(nom, opt);
341 Cerr <<
"A solide medium has not been associated to a Conduction equation"<<finl;
344 return le_solide.valeur();
365 static Motcle domaine =
"Thermique";
373 if (le_traitement_particulier)
374 le_traitement_particulier->post_traitement_particulier();
classe Champ_Don_base classe de base des Champs donnes (non calcules)
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
void mettre_a_jour(double temps) override
Mise a jour en temps du champ.
classe Champ_base Cette classe est la base de la hierarchie des champs.
double temps() const
Renvoie le temps du champ.
Classe Conduction Cette classe represente l'equation d'evolution.
int nombre_d_operateurs() const override
Renvoie le nombre d'operateurs de l'equation pour l'equation de conduction standart renvoie toujours ...
void set_param(Param &) const override
void mettre_a_jour(double temps) override
La valeur de l'inconnue sur le pas de temps a ete calculee.
void creer_champ(const Motcle &motlu) override
const Solide & solide() const
Renvoie le milieu solide associe a l'equation.
void associer_solide(const Solide &)
Associe le milieu solide a l'equation.
int lire_motcle_non_standard(const Motcle &, Entree &) override
Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree.
virtual const Champ_Don_base & diffusivite_pour_transport() const
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
void associer_milieu_base(const Milieu_base &) override
Associe un milieu physique a l'equation, le milieu est en fait caste en Solide.
int impr(Sortie &os) const override
Imprime le terme diffusif sur un flot de sortie.
virtual const Champ_base & diffusivite_pour_pas_de_temps() const
const Champ_base & get_champ(const Motcle &nom) const override
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
const Motcle & domaine_application() const override
Renvoie le nom du domaine d'application de l'equation.
const Operateur & operateur(int) const override
Renvoie l'operateur d'index specifie de l'equation.
void discretiser() override
Discretise l'equation.
const Milieu_base & milieu() const override
Renvoie le milieu physique associe a l'equation.
Class Discret_Thermique Cette classe est la classe de base representant une discretisation.
void temperature(const Schema_Temps_base &, Domaine_dis_base &, OWN_PTR(Champ_Inc_base)&, int nb_comp=1) const
virtual void t_paroi(const Domaine_dis_base &z, const Domaine_Cl_dis_base &zcl, const Champ_Inc_base &, OWN_PTR(Champ_Fonc_base)&ch) const
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 void set_param(Param &titi) const override
const Discretisation_base & discretisation() const
Renvoie la discretisation associee a l'equation.
virtual void mettre_a_jour(double temps)
La valeur de l'inconnue sur le pas de temps a ete calculee.
virtual int impr(Sortie &os) const
Imprime les operateurs de l'equation sur un flot de sortie, de facon inconditionnelle.
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
Probleme_base & probleme()
Renvoie le probleme associe a l'equation.
int lire_motcle_non_standard(const Motcle &, Entree &) override
Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree.
void creer_champ(const Motcle &motlu) override
Schema_Temps_base & schema_temps()
Renvoie le schema en temps associe a l'equation.
virtual void discretiser()
Discretise l'equation.
Champs_compris champs_compris_
Domaine_dis_base & domaine_dis()
Renvoie le domaine discretise associe a l'equation.
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.
Une chaine de caractere (Nom) en majuscules.
class Nom Une chaine de caractere pour nommer les objets de TRUST
const std::string & getString() const
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.
classe Operateur Classe generique de la hierarchie des operateurs.
Helper class to factorize the readOn method of Objet_U classes.
void ajouter_condition(const char *condition, const char *message, const char *name=0)
Declare a post-read logical condition that must hold on the parameter values.
void ajouter_non_std(const char *keyword, const Objet_U *value, Param::Nature nat=Param::OPTIONAL)
Register a keyword handled by Objet_U::lire_motcle_non_standard.
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
double temps_init() const
Renvoie le temps initial.
Classe Solide Cette classe represente un milieu solide et ses proprietes.
Classe de base des flux de sortie.