16#include <Navier_Stokes_Fluide_Dilatable_base.h>
17#include <Fluide_Dilatable_base.h>
18#include <Loi_Etat_Multi_GP_WC.h>
19#include <Schema_Temps_base.h>
20#include <Probleme_base.h>
21#include <Discret_Thyd.h>
33 divergence.set_description((Nom)
"Mass flow rate=Integral(rho*u*ndS) [kg.s-1]");
51 if (mot ==
"mass_source")
54 if (typ ==
"VEFPreP1B") typ =
"VEF";
56 typ =
Nom(
"Source_Masse_Fluide_Dilatable_") + typ;
57 Cerr <<
"Typage de la source de masse : " << typ << finl;
58 source_masse_.typer(typ);
59 Cerr <<
"Lecture de la source de masse ... " << finl;
60 is >> source_masse_.valeur();
90 Cerr <<
"Navier_Stokes_Fluide_Dilatable_base::completer" << finl;
96 Cerr <<
"Error in Navier_Stokes_Fluide_Dilatable_base::completer() !! " << finl;
97 Cerr <<
"Switch to a WC problem if you want to use the mass source term ! This source term is not available for a QC problem !" << finl;
101 source_masse_->completer();
105 const int ncomp = source_masse_->nb_comp();
109 Cerr <<
"Error in Navier_Stokes_Fluide_Dilatable_base::completer() !! " << finl;
110 Cerr <<
"You can not define a mass source with " << ncomp <<
" components while using a problem of type " <<
probleme().
que_suis_je() << finl;
111 Cerr <<
"Please define a mass source with 2 components !" << finl;
118 assert(fd.loi_etat()->
que_suis_je() ==
"Loi_Etat_Multi_Gaz_Parfait_WC");
123 Cerr <<
"Error in Navier_Stokes_Fluide_Dilatable_base::completer() !! " << finl;
124 Cerr <<
"You should define " << nb_esp <<
" components for your mass source and not " << ncomp <<
" (because you have " << nb_esp <<
" species) !!!" << finl;
130 Cerr <<
"Navier_Stokes_std::completer" << finl;
139 return le_fluide->viscosite_dynamique();
144 return le_fluide->viscosite_cinematique();
196 throw std::runtime_error(std::string(
"Field ") + nom.
getString() + std::string(
" not found !"));
203 const DoubleTab& tab_rho = fluide_dil.
rho_discvit();
204 DoubleTab& rhovitesse = rho_la_vitesse_->valeurs();
216 source_masse_->changer_temps_futur(tps, i);
231 rho_la_vitesse_->nommer(
"rho_u");
classe Champ_Don_base classe de base des Champs donnes (non calcules)
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
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 Discret_Thyd Cette classe est la classe de base representant une discretisation
void vitesse(const Schema_Temps_base &, Domaine_dis_base &, OWN_PTR(Champ_Inc_base)&, int nb_comp=1) const
Class defining operators and methods for all reading operation in an input flow (file,...
const Discretisation_base & discretisation() const
Renvoie la discretisation associee a l'equation.
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.
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 Fluide_Dilatable_base Cette classe represente un d'un fluide dilatable,
const DoubleTab & rho_discvit() const
classe Loi_Etat_Multi_GP_WC Cette classe represente la loi d'etat pour un melange de gaz parfaits.
const Champ_Don_base & masse_molaire_especes() const
Classe Matrice_Morse Represente une matrice M (creuse), non necessairement carree.
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
Une chaine de caractere (Nom) en majuscules.
void assembler_avec_inertie_impl(const Navier_Stokes_std &eqn, Matrice_Morse &mat_morse, const DoubleTab &present, DoubleTab &secmem)
DoubleTab & rho_vitesse_impl(const DoubleTab &tab_rho, const DoubleTab &vit, DoubleTab &rhovitesse) const
int impr_impl(const Navier_Stokes_std &eqn, Sortie &os) const
DoubleTab & derivee_en_temps_inco_impl(Navier_Stokes_std &, DoubleTab &res)
Calcule la derivee en temps de l'inconnue vitesse, i.
void assembler_blocs_avec_inertie(const Navier_Stokes_std &eqn, matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl)
void assembler_impl(Matrice_Morse &mat_morse, const DoubleTab &present, DoubleTab &secmem)
classe Navier_Stokes_Fluide_Dilatable_base Cette classe basse porte les termes de l'equation de la dy...
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
void assembler_avec_inertie(Matrice_Morse &mat_morse, const DoubleTab &present, DoubleTab &secmem) override
const Champ_Inc_base & rho_la_vitesse() const override
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 lire_motcle_non_standard(const Motcle &mot, Entree &is) override
Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree.
const Champ_base & diffusivite_pour_pas_de_temps() const override
void completer() override
Complete l'equation base, associe la pression a l'equation,.
void discretiser() override
Discretise l'equation.
const Champ_Don_base & diffusivite_pour_transport() const override
const Champ_base & vitesse_pour_transport() const override
void assembler(Matrice_Morse &mat_morse, const DoubleTab &present, DoubleTab &secmem) override
int preparer_calcul() override
Appel Equation_base::preparer_calcul() Assemblage du solveur pression et.
void set_param(Param ¶m) const override
const Champ_base & get_champ(const Motcle &nom) const override
int impr(Sortie &os) const override
Imprime les operateurs de l'equation sur un flot de sortie, de facon inconditionnelle.
void assembler_blocs_avec_inertie(matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl) override
bool initTimeStep(double dt) override
Allocation et initialisation de l'inconnue et des CLs jusqu'a present+dt.
bool has_source_masse() const
classe Navier_Stokes_std Cette classe porte les termes de l'equation de la dynamique
const Milieu_base & milieu() const override
Renvoie le milieu physique de l'equation (le Fluide_base upcaste en Milieu_base).
const Champ_Inc_base & inconnue() const override
Renvoie la vitesse (champ inconnue de l'equation) (version const).
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 completer() override
Complete l'equation base, associe la pression a l'equation,.
bool initTimeStep(double dt) override
Allocation et initialisation de l'inconnue et des CLs jusqu'a present+dt.
int impr(Sortie &os) const override
Effectue quelques impressions sur un flot de sortie: - maximum de div U.
void set_param(Param &titi) const override
void discretiser() override
Dicretise l'equation.
int preparer_calcul() override
cf Equation_base::preparer_calcul() Assemblage du solveur pression et
OBS_PTR(Fluide_base) le_fluide
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
class Nom Une chaine de caractere pour nommer les objets de TRUST
const std::string & getString() const
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.
Helper class to factorize the readOn method of Objet_U classes.
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.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
double temps_courant() const
Renvoie le temps courant.
virtual double temps_futur(int i) const =0
virtual int nb_valeurs_futures() const =0
virtual double temps_defaut() const =0
Classe de base des flux de sortie.