16#include <Convection_Diffusion_Chaleur_QC.h>
17#include <Fluide_Quasi_Compressible.h>
18#include <Op_Conv_negligeable.h>
19#include <Frontiere_dis_base.h>
20#include <Navier_Stokes_std.h>
21#include <Probleme_base.h>
22#include <Discret_Thyd.h>
42 Cerr<<
"Reading of data for a "<<
que_suis_je()<<
" equation"<<finl;
48 if (std::isfinite(
TMIN_) && std::isfinite(
TMAX_))
50 Cerr <<
"TMIN and TMAX are specified in the " <<
que_suis_je() <<
" equation." << finl;
52 else if (std::isfinite(
TMIN_) || std::isfinite(
TMAX_))
54 Cerr <<
"Error: You have defined only TMIN or TMAX in your datafile (equation " <<
que_suis_je() <<
")"<< finl;
55 Cerr <<
" You should specify both!!" << finl;
62void Convection_Diffusion_Chaleur_QC ::mettre_a_jour(
double temps)
66 if (std::isfinite(
TMIN_) && std::isfinite(
TMAX_))
69 const int n = T.size_array();
70 const double eps = std::numeric_limits<double>::epsilon();
72 for (
int i = 0; i < n; i++)
75 if (std::abs(T(i)) < eps)
92 if (mot==
"convection")
97 Cerr <<
"Source term creation of the energy equation :"<< finl;
100 Nom type_so =
"Source_QC_Chaleur_";
102 if (disc==
"VEFPreP1B") disc =
"VEF";
105 so->associer_eqn(*
this);
106 Cerr<<so->que_suis_je()<<finl;
107 Cerr <<
"Typing of the convection operator : ";
110 else if (mot==
"mode_calcul_convection")
114 Cerr<<
" The option "<<mot<<
" must be indicated before the convection operator."<<finl;
115 Cerr<<
" Please modify your data set."<<finl;
120 modes[1]=
"divuT_moins_Tdivu";
121 modes[2]=
"divrhouT_moins_Tdivrhou";
127 Cerr <<
"WARNING! This mode is not supported anymore." << finl;
131 Cerr<<
" Allowed keywords for option mode_calcul_convection are :"<<finl;
171 DoubleTab Div_on_pressure_nodes(pression);
178 DoubleTab Div_on_temperature_nodes(
inconnue().valeurs());
180 ref_cast_non_const(
Fluide_Quasi_Compressible,le_fluide.valeur()).divu_discvit(Div_on_pressure_nodes,Div_on_temperature_nodes);
182 for (
int i=0 ; i<nsom ; i++) Div(i)=Div_on_temperature_nodes(i);
185 Div = Div_on_pressure_nodes;
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
classe Champ_base Cette classe est la base de la hierarchie des champs.
classe Convection_Diffusion_Chaleur_Fluide_Dilatable_base Cas particulier de Convection_Diffusion_std...
const Champ_base & vitesse_pour_transport() const override
int preparer_calcul() override
Tout ce qui ne depend pas des autres problemes eventuels.
int remplir_cl_modifiee()
remplissage du domaine cl modifiee avec 1 partout au bord.
classe Convection_Diffusion_Chaleur_QC Cas particulier de Convection_Diffusion_Chaleur_Fluide_Dilatab...
int preparer_calcul() override
Tout ce qui ne depend pas des autres problemes eventuels.
void set_param(Param &titi) const override
Convection_Diffusion_Chaleur_QC()
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.
const Champ_base & vitesse_pour_transport() const override
void calculer_div_u_ou_div_rhou(DoubleTab &res) const override
void calculer_div_rho_u_impl(DoubleTab &res, const Convection_Diffusion_Fluide_Dilatable_base &eqn) const
const Champ_Inc_base & inconnue() const override
const Operateur & operateur(int) const override
Renvoie l'operateur specifie par son index: renvoie terme_diffusif si i = 0.
Operateur_Conv terme_convectif
Class defining operators and methods for all reading operation in an input flow (file,...
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.
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.
classe Fluide_Quasi_Compressible Cette classe represente un d'un fluide quasi compressible
Une chaine de caractere (Nom) en majuscules.
Un tableau d'objets de la classe Motcle.
int search(const Motcle &t) const
classe Navier_Stokes_std Cette classe porte les termes de l'equation de la dynamique
const Champ_Inc_base & inconnue() const override
Renvoie la vitesse (champ inconnue de l'equation) (version const).
Operateur_Div & operateur_divergence()
Renvoie l'operateur de calcul de la divergence associe a l'equation.
Champ_Inc_base & pression()
class Nom Une chaine de caractere pour nommer les objets de TRUST
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 Op_Conv_negligeable Cette classe represente un opperateur de convection negligeable.
DoubleTab & calculer(const DoubleTab &, DoubleTab &) const override
Initialise le tableau passe en parametre avec la contribution de l'operateur.
Helper class to factorize the readOn method of Objet_U classes.
void ajouter(const char *keyword, const int *value, Param::Nature nat=Param::OPTIONAL)
Register an integer parameter.
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.
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
virtual const Equation_base & equation(int) const =0
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.
classe Source Classe generique de la hierarchie des sources, un objet Source peut
void typer_direct(const Nom &)
_SIZE_ dimension_tot(int) const override
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")