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;
151 return 3 + eq_opt_.size();
170 else if (i < 3 + eq_opt_.size())
171 return eq_opt_[i - 3].valeur();
174 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;
233 return tester_compatibilite_hydr_thermique(domaine_Cl_hydr, domaine_Cl_th);
247 else if (ref_cast(
SETS, ref_cast(
Schema_Euler_Implicite, le_schema_en_temps_.valeur()).solveur().valeur()).facsec_diffusion_for_sets() < 0.)
258 for (
int j = 0; j < nb_op; j++)
264 if (le_schema_en_temps_->limpr())
269 Cout <<
"Printing of the next provisional time steps for the equation: " <<
equation(i).
que_suis_je() << finl;
272 Cout <<
" convective";
274 Cout <<
" diffusive";
276 Cout <<
" operator ";
277 Cout <<
" time step : " << dt_op << finl;
280 dt_op *= ref_cast(
SETS, ref_cast(
Schema_Euler_Implicite, le_schema_en_temps_.valeur()).solveur().valeur()).facsec_diffusion_for_sets();
281 dt = std::min(dt, dt_op);
class Domaine_Cl_dis_base Domaine_Cl_dis_base objects represent discretized boundary conditions
Class defining operators and methods for all reading operation in an input flow (file,...
class Equation_base The role of an equation is the calculation of one or more fields....
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()
Returns the discretized boundary condition domain associated with the equation.
virtual const Operateur & operateur(int) const =0
ICE scheme (semi-implicit ICE, CATHARE 3D style).
Milieu_base This class is the base of the (physical) medium hierarchy.
virtual void discretiser(const Probleme_base &pb, const Discretisation_base &dis)
Composite medium representing a multiphase fluid and its properties:
A character string (Nom) in uppercase.
const Nom & que_suis_je() const
Returns the string identifying the class.
virtual Entree & readOn(Entree &)
Reads an Objet_U from an input stream. Virtual method to override.
virtual Sortie & printOn(Sortie &) const
Writes the object to an output stream. Virtual method to override.
Operateur_Conv_base This class is the base of the hierarchy of operators representing.
Operateur_Diff_base This class is the base of the hierarchy of operators representing.
class Operateur_base This class is the base of the hierarchy of objects representing an
virtual Operateur_base & l_op_base()=0
double calculer_pas_de_temps() const
Computes the next time step.
Pb_Fluide_base This class provides a base class for.
Multiphase thermohydraulics problem of type "3*N equations":
void preparer_calcul() override
Prepares the computation: initializes the medium parameters and prepares the computation of each equa...
double calculer_pas_de_temps() const override
Computes the value of the next time step for the problem.
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
Reading of the equations of the problem.
int nombre_d_equations() const override
Returns the number of equations.
const Equation_base & equation(int) const override
Returns the equation at index i (const version).
void typer_lire_milieu(Entree &is) override
int verifier() override
Checks the compatibility of the thermal and hydraulic equations.
void associer_milieu_base(const Milieu_base &) override
Associates the medium with the problem.
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()
Prepares the computation: initializes the medium parameters and prepares the computation of each equa...
const Discretisation_base & discretisation() const
Returns the discretization associated with the problem.
virtual double calculer_pas_de_temps() const
Computes the value of the next time step for the problem.
virtual void mettre_a_jour(double temps)
Performs a time update of the problem.
std::vector< OWN_PTR(Milieu_base)> le_milieu_
const Schema_Temps_base & schema_temps() const
Returns the time scheme associated with the problem.
virtual Equation_base & getset_equation_by_name(const Nom &)
(B. Math): Virtual method added for problems having several equations of the same type (Probleme_FT_D...
static void exit(int exit_code=-1)
Exit routine for TRUST within a Kokkos region.
SETS scheme (semi-implicit + stabilisation steps, TRACE-style).
double temps_courant() const
Returns the current time.
double pas_temps_max() const
Returns the maximum time step.
Base class for output streams.