37#include "../Maths/Coord.h"
39#include "../Relaxations/Relaxation.h"
55 Model(
const std::string& name,
const int& numbTransports);
143 virtual void solveRiemannInletTank(
Cell& ,
const double& ,
double& ,
const double* ,
const double* ,
const double& ,
const double& , std::vector<double>& )
const {
Errors::errorMessage(
"solveRiemannInletTank not available for required model"); };
static std::vector< double > DEFAULT_VEC_INTERFACE_DATA(VarBoundary::SIZE, 0.)
Base class for a mesh cell.
Definition Cell.h:59
Class for a coordinate system object such as coordinates of the vertex or a vector.
Definition Coord.h:43
static Coord defaultCoordNonConst
Default Coord object (non-const version)
Definition Coord.h:58
static const Coord defaultCoord
Default Coord object (const version)
Definition Coord.h:55
static const std::string defaultString
Definition Errors.h:94
static void errorMessage(const std::string &message)
Definition Errors.cpp:56
static constexpr double defaultDouble
Definition Errors.h:93
Abstract class for conservative variables and fluxes.
Definition Flux.h:43
Mixture variable gradients. Stored for 2nd-order computation on unstructured mesh (O2 NS)
Definition GradMixture.h:45
Phase variable gradients. Stored for 2nd-order computation on unstructured mesh (O2 NS)
Definition GradPhase.h:44
Abstract class for mixture variables.
Definition Mixture.h:43
Abstract class for mathematical flow models.
Definition Model.h:50
void relaxations(Cell *cell, const double &dt, Prim type=vecPhases) const
Definition Model.cpp:70
virtual void allocateMixtureGradient(GradMixture **)
Instanciate gradient mixture variable.
Definition Model.h:78
virtual double selectScalar(Phase **, Mixture *, Transport *, Variable, int=0) const
Select a specific scalar variable.
Definition Model.h:321
virtual void solveRiemannTransportIntern(Cell &, Cell &)
Cell to cell Riemann solver for transport equations.
Definition Model.h:185
virtual void allocatePhaseSolid(Phase **)
Instanciate solid phase variable.
Definition Model.h:66
virtual void setSmoothCrossSection1d(const bool &)
Definition Model.h:339
virtual void solveRiemannTransportPiston(Cell &, double)
Piston half Riemann solver for transport equations.
Definition Model.h:191
virtual const bool & isSmoothCrossSection1d() const
Definition Model.h:340
virtual void solveRiemannInletInjTemp(Cell &, const double &, double &, const double, const double *, const double *, std::vector< double > &) const
Inlet injection using temperature half Riemann solver.
Definition Model.h:162
virtual double computeDerivativeCompactionFunctionF(const int &, const double &, const double &) const
Compute the derivative of the compaction function f with respect to xi.
Definition Model.h:261
virtual double computeSquareLongitudinalWaveSpeed(const int &, const Phase &)
Compute the square longitudinal wave speed of the solid.
Definition Model.h:311
virtual void computeElasticEnergyAndStressTensor(const int &, const Tensor &, const double &, const double &, double &, Tensor &) const
Compute the elastic energy and stress tensor of the solid.
Definition Model.h:304
virtual const double * getElasticParameterA() const
Return the elastic parameter a of the one-parameter model for each phase.
Definition Model.h:284
virtual const Coord & getVectorP(const Cell *) const
Definition Model.h:331
virtual void setMachRefMin(const double &)
Definition Model.h:343
std::vector< Relaxation * > * getRelaxations()
Definition Model.h:334
virtual double computeCompactionPlasticity(const int &, const double &, const double &, const double &, const double &) const
Compute the compaction plasticity term of the fluid/solid for relaxation.
Definition Model.h:270
virtual Coord & getVelocity(Cell *)
Definition Model.h:329
double m_machRefMin
Minimum Mach number limit for L-M preconditionning used when local Mach number is below this value (d...
Definition Model.h:350
std::string m_name
Name of the required model.
Definition Model.h:346
void allocateEos(Cell &cell) const
Associate equations of state.
Definition Model.cpp:54
virtual void solveRiemannInletInjStagState(Cell &, const double &, double &, const double, const double *, const double *, const double *, std::vector< double > &) const
Inlet injection using stagnation state half Riemann solver.
Definition Model.h:153
virtual void allocatePhaseGradient(GradPhase **)
Instanciate gradient phase variable.
Definition Model.h:69
virtual void solveRiemannIntern(Cell &, Cell &, const double &, const double &, double &, std::vector< double > &=DEFAULT_VEC_INTERFACE_DATA) const
Cell to cell Riemann solver.
Definition Model.h:109
virtual void allocateMixture(Mixture **)
Instanciate mixture variable.
Definition Model.h:75
virtual void solveRiemannNullFlux() const
No flux half Riemann solver (return null flux to use with 1D geometry with smooth varying cross secti...
Definition Model.h:178
virtual void fulfillState(Phase **, Mixture *)
Complete a thermodynamics state frome minimum variables depending on the model.
Definition Model.h:89
virtual void solveRiemannTransportOutletPressure(Cell &, double *)
Outlet at imposed pressure half Riemann solver for transport equations.
Definition Model.h:203
virtual void solveRiemannTransportInletInjStagState(Cell &, double *)
Inlet injection using stagnation state half Riemann solver for transport equations.
Definition Model.h:195
void printInfo() const
Definition Model.cpp:79
virtual void allocateCons(Flux **)
Allocate conservative variable arrays.
Definition Model.h:60
virtual void setLowMach(const bool &)
Definition Model.h:342
virtual void addNonConsMrfFlux(Phase **)
Definition Model.h:221
virtual void solveRiemannTransportWall()
Wall half Riemann solver for transport equations.
Definition Model.h:187
virtual void solveRiemannPiston(Cell &, const double &, double &, std::vector< double > &, const double &) const
Piston half Riemann solver.
Definition Model.h:134
virtual void lowMachSoundSpeed(double &, const double &, double &, const double &=Errors::defaultDouble, double &=Tools::uselessDouble) const
Definition Model.h:217
bool m_smoothCrossSection1d
1D geometry with smooth cross section variation (default: false)
Definition Model.h:351
virtual const double * getDensityReference() const
Return the reference density for each phase.
Definition Model.h:281
virtual double computeEnergyCompaction(const int &, const double &, const double &, const double &) const
Return the compaction energy of the fluid/solid.
Definition Model.h:246
virtual void solveRiemannOutletMassflow(Cell &, const double &, double &, const double, std::vector< double > &) const
Outlet at imposed massflow half Riemann solver.
Definition Model.h:176
virtual double computeCompactionPressure(const int &, const double &, const double &, const double &) const
Compute the compaction pressure of the fluid/solid for relaxation.
Definition Model.h:254
virtual void allocatePhaseSolidGradient(GradPhase **)
Instanciate gradient solid-phase variable.
Definition Model.h:72
virtual const double & getDensityReference(const int &) const
Return the compaction reference density of phase k.
Definition Model.h:238
virtual const double * getShearModulus() const
Return the shear modulus for each phase.
Definition Model.h:287
void initializeRelaxation(Cell *cell) const
Initialize the theoritical critical pressure of the fluid (only required for PTMu relax)
Definition Model.cpp:61
virtual void allocatePhase(Phase **)
Instanciate fluid phase variable.
Definition Model.h:63
virtual void reverseProjectionMrfFlux(const Coord, const Coord, const Coord) const
Definition Model.h:222
virtual const Coord & getVelocity(const Cell *) const
Return the fluid velocity of the corresponding cell.
Definition Model.h:328
virtual void readSolidParameters(tinyxml2::XMLElement *, std::string, const int &)
Read solid parameters.
Definition Model.h:278
virtual Coord & getVectorP(Cell *)
Definition Model.h:332
virtual void readCompactionParameters(tinyxml2::XMLElement *, std::string, const int &)
Read compaction parameters.
Definition Model.h:230
std::vector< Relaxation * > m_relaxations
Vector of relaxation procedure.
Definition Model.h:347
virtual void solveRiemannInletTank(Cell &, const double &, double &, const double *, const double *, const double &, const double &, std::vector< double > &) const
Inlet tank half Riemann solver.
Definition Model.h:143
virtual bool compaction(const int &) const
Return if compaction is activated or not.
Definition Model.h:234
virtual const std::string & whoAmI() const
Definition Model.h:337
virtual double computeElasticEnergy(const int &, const Tensor &) const
Compute the elastic energy of the solid.
Definition Model.h:295
virtual void reverseProjection(const Coord, const Coord, const Coord) const
Flux reverse projection in the absolute Cartesian coordinate system.
Definition Model.h:209
virtual const double & getSM()
Return the local fluid velocity.
Definition Model.h:324
virtual ~Model()
Definition Model.cpp:44
virtual void solveRiemannOutletPressure(Cell &, const double &, double &, const double, std::vector< double > &) const
Outlet at imposed pressure half Riemann solver.
Definition Model.h:169
bool m_lowMach
Low-Mach preconditioning (default: false)
Definition Model.h:349
virtual void solveRiemannWall(Cell &, const double &, double &, std::vector< double > &) const
Wall half Riemann solver.
Definition Model.h:127
virtual const double * getElasticityLimit() const
Return the limit of elasticity for each phase.
Definition Model.h:290
virtual void solveRiemannInternMRF(Cell &, Cell &, const double &, const double &, double &, const Coord &, const Coord &, const Coord &, const Coord &, const Coord &) const
Cell to cell Riemann solver + compute fluxBuffMRF for MRF interface.
Definition Model.h:121
virtual void solveRiemannTransportInletTank(Cell &, double *)
Inlet tank half Riemann solver for transport equations.
Definition Model.h:199
virtual void fulfillStateRestart(Phase **, Mixture *)
Complete some variables if necessary when restarting a simulation.
Definition Model.h:94
virtual void initializeAugmentedVariables(Cell *)
Complete the augmented variables (such as the ones of Euler-Korteweg model)
Definition Model.h:98
Abstract class for a phase.
Definition Phase.h:47
Class for a matrix 3x3 system object.
Definition Tensor.h:46
Class for additional transport equations.
Definition Transport.h:41
Definition tinyxml2.h:1149