TransFlow  0.1.0
A transient pipeline flow simulation library
equationofstatebase.hpp
1 #pragma once
2 
3 #include <armadillo>
4 
5 #include "composition.hpp"
6 
21 {
22 public:
25  virtual ~EquationOfStateBase();
26 
31  explicit EquationOfStateBase(const arma::vec& composition = Composition::defaultComposition);
32 
45  virtual arma::vec evaluate(const double pressure, const double temperature) const = 0;
46 
66  virtual arma::vec evaluate(const double pressure, const double temperature, const arma::vec& composition);
67 
74  virtual double calculateCompressibility(const double pressure, const double temperature) const = 0;
75 
76  virtual double calculateStandardDensity() const;
77 
84  virtual bool setComposition(const arma::vec& composition, const bool force = true);
85 
86  double getMolarMassOfMixture() const;
87  const arma::vec& getComposition() const;
88 
89 protected:
90  // components C1, C2, C3, iC4, nC4, iC5, nC5, C6 N2, CO2
92  arma::vec m_molarMass = { 16.04, 30.07, 44.1, 58.12, 58.12, 72.15, 72.15, 86.18, 28.13, 44.01}; // molar weight of components [g/mol]
94  arma::vec::fixed<10> m_composition = arma::vec(10);
95 
98 
100  mutable double m_density = 0;
101 };
EquationOfStateBase::m_composition
arma::vec::fixed< 10 > m_composition
The composition of the gas as fractions, in order C1, C2, C3, iC4, nC4, iC5, nC5, C6,...
Definition: equationofstatebase.hpp:94
EquationOfStateBase::evaluate
virtual arma::vec evaluate(const double pressure, const double temperature) const =0
Pure virtual function for evaluation the EOS at constant composition.
Composition::defaultComposition
static const Composition defaultComposition
Default composition.
Definition: composition.hpp:81
EquationOfStateBase::~EquationOfStateBase
virtual ~EquationOfStateBase()
EquationOfStateBase::setComposition
virtual bool setComposition(const arma::vec &composition, const bool force=true)
Set a new composition for the equation of state.
EquationOfStateBase
The EquationOfStateBase is an abstract class, the base class for different equations of state.
Definition: equationofstatebase.hpp:20
EquationOfStateBase::EquationOfStateBase
EquationOfStateBase(const arma::vec &composition=Composition::defaultComposition)
EquationOfStateBase constructor.
EquationOfStateBase::getComposition
const arma::vec & getComposition() const
Get the current composition stored in the EOS instance.
EquationOfStateBase::m_molarMass
arma::vec m_molarMass
The molar mass [g/mol] of the different gas components, in order C1, C2, C3, iC4, nC4,...
Definition: equationofstatebase.hpp:92
EquationOfStateBase::getMolarMassOfMixture
double getMolarMassOfMixture() const
Get the molar mass of the gas.
EquationOfStateBase::m_molarMassOfMixture
double m_molarMassOfMixture
The molar mass of the gas mixture [g/mol].
Definition: equationofstatebase.hpp:97
EquationOfStateBase::m_density
double m_density
Cache density for optimization [kg/m3].
Definition: equationofstatebase.hpp:100
EquationOfStateBase::calculateCompressibility
virtual double calculateCompressibility(const double pressure, const double temperature) const =0
Method for calculating just the compressibility factor Z at a given pressure and temperature.