16#include <Convection_Diffusion_Chaleur_Fluide_Dilatable_base.h>
17#include <EcritureLectureSpecial.h>
18#include <Fluide_Dilatable_base.h>
19#include <Neumann_sortie_libre.h>
20#include <Navier_Stokes_std.h>
21#include <Probleme_base.h>
22#include <Discret_Thyd.h>
23#include <TRUST_2_PDI.h>
38 terme_convectif.set_description((Nom)
"Convective heat transfer rate=Integral(-rho*cp*T*u*ndS) [W] if SI units used");
40 terme_diffusif.set_description((Nom)
"Conduction heat transfer rate=Integral(lambda*grad(T)*ndS) [W] if SI units used");
42 if (le_fluide->type_fluide()==
"Gaz_Reel") l_inco_ch->nommer(
"enthalpie");
56 return vitessetransportante;
62 Cerr <<
"Energy equation discretization " << finl;
64 if (le_fluide->type_fluide()==
"Gaz_Reel") l_inco_ch->add_synonymous(
"enthalpie");
67 Cerr <<
"Convection_Diffusion_Chaleur_Fluide_Dilatable_base::discretiser() ok" << finl;
83 statistics().begin_count(STD_COUNTERS::ajouter_blocs,statistics().get_last_opened_counter_level()+1);
89 Matrice_Morse *mat = matrices.count(nom_inco) ? matrices.at(nom_inco) :
nullptr;
92 statistics().end_count(STD_COUNTERS::ajouter_blocs);
101 Nom pth(
"pression_thermo");
117 Nom ident_Pth(
"pression_thermo");
122 ident_Pth +=
Nom(temps,
"%e");
123 os << ident_Pth<<finl;
124 os <<
"constante"<<finl;
125 os << le_fluide->pression_th();
127 Cerr <<
"Saving thermodynamic pressure at time : " <<
Nom(temps,
"%e") << finl;
149 if (le_fluide->type_fluide() !=
"Gaz_Parfait") l_inco_ch->
nommer(
"enthalpie");
151 Nom ident_Pth(
"pression_thermo");
162 ident_Pth +=
Nom(temps,
probleme().reprise_format_temps());
166 avancer_fichier_with_syno(is,ident_Pth,field_tag_syno);
170 avancer_fichier(is, ident_Pth);
173 le_fluide->set_pression_th(pth);
191 Conds_lim& condlims=zcl_modif_->les_conditions_limites();
192 int nb=condlims.size();
195 for (
int i=0; i<nb; i++)
197 DoubleTab& T=condlims[i]->champ_front().valeurs();
214 static Motcle domaine =
"Thermique_H";
215 if (le_fluide->type_fluide()==
"Gaz_Parfait") domaine =
"Thermique";
classe Champ_base Cette classe est la base de la hierarchie des champs.
double temps() const
Renvoie le temps du champ.
classe Conds_lim Cette classe represente un vecteur de conditions aux limites.
void set_modifier_val_imp(int)
Positionnement du drapeau modifier_val_imp de toutes les conditions aux limites du vecteur.
classe Convection_Diffusion_Chaleur_Fluide_Dilatable_base Cas particulier de Convection_Diffusion_std...
void discretiser() override
Discretise l'equation.
const Champ_base & diffusivite_pour_pas_de_temps() const override
int reprendre(Entree &) override
Effectue une reprise a partir d'un flot d'entree.
void assembler(Matrice_Morse &mat_morse, const DoubleTab &present, DoubleTab &resu) override
std::vector< YAML_data > data_a_sauvegarder() const override
for PDI IO: retrieve name and type and dimensions of the thermo pressure
DoubleTab & derivee_en_temps_inco(DoubleTab &) override
Returns the time derivative of the unknown I of the equation: dI/dt = M-1*(sum(operators(I) + sources...
int sauvegarder(Sortie &) const override
Sauvegarde d'un Objet_U sur un flot de sortie Methode a surcharger.
const Champ_base & vitesse_pour_transport() const override
const Motcle & domaine_application() const override
Renvoie le nom du domaine d'application de l'equation.
int preparer_calcul() override
Tout ce qui ne depend pas des autres problemes eventuels.
void assembler_blocs_avec_inertie(matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl) override
int remplir_cl_modifiee()
remplissage du domaine cl modifiee avec 1 partout au bord.
DoubleTab & derivee_en_temps_inco_sans_solveur_masse_impl(Convection_Diffusion_Fluide_Dilatable_base &eqn, DoubleTab &derivee, const bool is_expl)
Renvoie la derivee en temps de l'inconnue de l'equation.
public_for_cuda void assembler_impl(Convection_Diffusion_Fluide_Dilatable_base &eqn, Matrice_Morse &mat_morse, const DoubleTab &present, DoubleTab &secmem)
void assembler_blocs(Convection_Diffusion_Fluide_Dilatable_base &eqn, matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl)
classe Convection_Diffusion_Fluide_Dilatable_base pour un fluide dilatable
const Milieu_base & milieu() const override
const Champ_Inc_base & inconnue() const override
Operateur_Diff terme_diffusif
Operateur_Conv terme_convectif
void temperature(const Schema_Temps_base &, Domaine_dis_base &, OWN_PTR(Champ_Inc_base)&, int nb_comp=1) const
classe Discret_Thyd Cette classe est la classe de base representant une discretisation
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
static int is_ecriture_special(int &special, int &a_faire)
indique si le format special a ete demande en lecture active par sauvegarde xyz .
Class defining operators and methods for all reading operation in an input flow (file,...
int reprendre(Entree &) override
On reprend l'inconnue a partir d'un flot d'entree.
virtual std::vector< YAML_data > data_a_sauvegarder() const
for PDI IO: retrieve name, type and dimensions of the data to save/restore. This has to be overrode f...
const Discretisation_base & discretisation() const
Renvoie la discretisation associee a l'equation.
Nom create_polymacfamily_syno(const Nom &field_tag) const
Create a synonym of a field name in order to ensure backward compatibility with old names of the Poly...
virtual int preparer_calcul()
Tout ce qui ne depend pas des autres problemes eventuels.
virtual void modifier_pour_Cl(Matrice_Morse &mat_morse, DoubleTab &secmem) const
int sauvegarder(Sortie &) const override
On sauvegarde l'inconnue, puis les sources sur un flot de sortie.
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.
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.
const Nom & le_nom() const override
Renvoie le nom du champ.
Classe Matrice_Morse Represente une matrice M (creuse), non necessairement carree.
virtual const Champ_Don_base & diffusivite() const
Renvoie la diffusivite du milieu.
Une chaine de caractere (Nom) en majuscules.
classe Navier_Stokes_std Cette classe porte les termes de l'equation de la dynamique
virtual const Champ_Inc_base & rho_la_vitesse() const
classe Neumann_sortie_libre Cette classe represente une frontiere ouverte sans vitesse imposee
class Nom Une chaine de caractere pour nommer les objets de TRUST
const std::string & getString() const
virtual void nommer(const Nom &)
Donne un nom a l'Objet_U Methode virtuelle a surcharger.
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 Probleme_base C'est un Probleme_U qui n'est pas un couplage.
const Domaine & domaine() const
Renvoie le domaine associe au probleme.
virtual const Equation_base & equation(int) const =0
double temps_courant() const
Renvoie le temps courant.
virtual void ajouter_blocs(matrices_t matrices, DoubleTab &secmem, const Equation_base &eqn, const tabs_t &semi_impl={}) const
Classe de base des flux de sortie.
classe TRUST_2_PDI Encapsulation of PDI methods (library used for IO operations). See the website pdi...
void read(const std::string &name, void *data)
static int is_PDI_checkpoint()
static int is_PDI_restart()
void TRUST_start_sharing(const std::string &name, const void *data)
classe YAML_data : collection of all needed information for data to save/restore in order to write th...