16#include <Schema_Euler_Implicite.h>
17#include <Discretisation_base.h>
18#include <Loi_Fermeture_base.h>
19#include <Milieu_composite.h>
20#include <Interprete_bloc.h>
21#include <Pb_Multiphase.h>
73 Cerr <<
"Error: Problem of type " <<
que_suis_je() <<
" is not available for VEF discretization" << finl;
74 Cerr <<
"It is only available for VDF, PolyMAC_HFV and PolyMAC_MPFA discretizations." << finl;
85 Cerr <<
"Error: for Pb_Multiphase, you can only use Scheme_euler_implicit time scheme with sets/ice solver" << finl;
91 if (!sub_type(
SETS, schm_imp.solveur().valeur()))
93 Cerr <<
"Error: for Pb_Multiphase, you can only use Scheme_euler_implicit time scheme with sets/ice solver" << finl;
98 bool already_read =
true;
101 if (mot ==
"correlations" || mot ==
"models")
106 Cerr <<
"Reading of the equations" << finl;
124 Cerr <<
"Error: Fluid of type " <<
le_milieu_[0]->le_type() <<
" is not compatible with " <<
que_suis_je() <<
" problem which accepts only Milieu_composite medium" << finl;
125 Cerr <<
"Check your datafile!" << finl;
152 return 3 + eq_opt_.size();
171 else if (i < 3 + eq_opt_.size())
172 return eq_opt_[i - 3].valeur();
175 Cerr <<
"Pb_Multiphase::equation() : Wrong equation number" << i <<
"!" << finl;
196 else if (i < 3 + eq_opt_.size())
197 return eq_opt_[i - 3].valeur();
200 Cerr <<
"Pb_Multiphase::equation() : Wrong equation number" << i <<
"!" << finl;
232 return tester_compatibilite_hydr_thermique(domaine_Cl_hydr, domaine_Cl_th);
246 else if (ref_cast(
SETS, ref_cast(
Schema_Euler_Implicite, le_schema_en_temps_.valeur()).solveur().valeur()).facsec_diffusion_for_sets() < 0.)
257 for (
int j = 0; j < nb_op; j++)
263 if (le_schema_en_temps_->limpr())
268 Cout <<
"Printing of the next provisional time steps for the equation: " <<
equation(i).
que_suis_je() << finl;
271 Cout <<
" convective";
273 Cout <<
" diffusive";
275 Cout <<
" operator ";
276 Cout <<
" time step : " << dt_op << finl;
279 dt_op *= ref_cast(
SETS, ref_cast(
Schema_Euler_Implicite, le_schema_en_temps_.valeur()).solveur().valeur()).facsec_diffusion_for_sets();
280 dt = std::min(dt, dt_op);
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
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 associer_milieu_equation()
virtual void associer_milieu_base(const Milieu_base &)=0
virtual const Milieu_base & milieu() const =0
virtual int nombre_d_operateurs() const =0
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
virtual const Operateur & operateur(int) const =0
classe ICE (semi-implicte ICE, a la CATHARE 3D)
classe Milieu_base Cette classe est la base de la hierarchie des milieux (physiques)
virtual void discretiser(const Probleme_base &pb, const Discretisation_base &dis)
Classe Milieu_composite Cette classe represente un fluide reel ainsi que.
Une chaine de caractere (Nom) en majuscules.
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_Conv_base Cette classe est la base de la hierarchie des operateurs representant
classe Operateur_Diff_base Cette classe est la base de la hierarchie des operateurs representant
classe Operateur_base Classe est la base de la hierarchie des objets representant un
virtual Operateur_base & l_op_base()=0
double calculer_pas_de_temps() const
Calcule le prochain pas de temps.
classe Pb_Fluide_base Cette classe a pour but de disposer d une classe amont pour
classe Pb_Multiphase Cette classe represente un probleme de thermohydraulique multiphase de type "3*N...
void preparer_calcul() override
Prepare le calcul: initialise les parametres du milieu et prepare le calcul de chacune des equations.
double calculer_pas_de_temps() const override
Calcul la valeur du prochain pas de temps du probleme.
Masse_Multiphase eq_masse_
virtual Equation_base & equation_qdm()
DoubleVect alpha_inf_phases_
virtual void typer_lire_correlation_hem()
Energie_Multiphase eq_energie_
virtual Equation_base & equation_energie()
Entree & lire_equations(Entree &is, Motcle &dernier_mot) override
Lecture des equations du probleme.
int nombre_d_equations() const override
Renvoie le nombre d'equation, Renvoie 2 car il y a 2 equations a un probleme de.
const Equation_base & equation(int) const override
Renvoie l'equation d'hydraulique de type Navier_Stokes_std si i=0 Renvoie l'equation de la thermique ...
void typer_lire_milieu(Entree &is) override
int verifier() override
Teste la compatibilite des equations de la thermique et de l'hydraulique.
void associer_milieu_base(const Milieu_base &) override
Associe le milieu au probleme Le milieu doit etre de type fluide incompressible.
virtual Equation_base & equation_masse()
virtual void discretiser_equations()
virtual Entree & lire_correlations(Entree &is)
Entree & read_optional_equations(Entree &is, Motcle &mot)
virtual void preparer_calcul()
Prepare le calcul: initialise les parametres du milieu et prepare le calcul de chacune des equations.
const Discretisation_base & discretisation() const
Renvoie la discretisation associee au probleme.
virtual double calculer_pas_de_temps() const
Calcul la valeur du prochain pas de temps du probleme.
virtual void mettre_a_jour(double temps)
Effectue une mise a jour en temps du probleme.
std::vector< OWN_PTR(Milieu_base)> le_milieu_
const Schema_Temps_base & schema_temps() const
Renvoie le schema en temps associe au probleme.
virtual Equation_base & getset_equation_by_name(const Nom &)
(B. Math): Methode virtuelle ajoutee pour les problemes ayant plusieurs equations de meme type (Probl...
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
classe SETS (semi-implicite + etapes de stabilisation, a la TRACE)
double temps_courant() const
Renvoie le temps courant.
double pas_temps_max() const
Renvoie le pas de temps maximum.
Classe de base des flux de sortie.