TransFlow  0.1.0
A transient pipeline flow simulation library
EquationOfStateBase Class Referenceabstract

The EquationOfStateBase is an abstract class, the base class for different equations of state. More...

#include <equationofstatebase.hpp>

Inheritance diagram for EquationOfStateBase:
BWRS DummyGas GERG04 IdealGas

Public Member Functions

virtual ~EquationOfStateBase ()
 
 EquationOfStateBase (const arma::vec &composition=Composition::defaultComposition)
 EquationOfStateBase constructor. More...
 
virtual arma::vec evaluate (const double pressure, const double temperature) const =0
 Pure virtual function for evaluation the EOS at constant composition. More...
 
virtual arma::vec evaluate (const double pressure, const double temperature, const arma::vec &composition)
 Virtual function for evaluating the EOS at a new composition. More...
 
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. More...
 
virtual double calculateStandardDensity () const
 
virtual bool setComposition (const arma::vec &composition, const bool force=true)
 Set a new composition for the equation of state. More...
 
double getMolarMassOfMixture () const
 Get the molar mass of the gas.
 
const arma::vec & getComposition () const
 Get the current composition stored in the EOS instance.
 

Protected Attributes

arma::vec m_molarMass = { 16.04, 30.07, 44.1, 58.12, 58.12, 72.15, 72.15, 86.18, 28.13, 44.01}
 The molar mass [g/mol] of the different gas components, in order C1, C2, C3, iC4, nC4, iC5, nC5, C6, N2, CO2.
 
arma::vec::fixed< 10 > m_composition = arma::vec(10)
 The composition of the gas as fractions, in order C1, C2, C3, iC4, nC4, iC5, nC5, C6, N2, CO2.
 
double m_molarMassOfMixture
 The molar mass of the gas mixture [g/mol].
 
double m_density = 0
 Cache density for optimization [kg/m3].
 

Detailed Description

The EquationOfStateBase is an abstract class, the base class for different equations of state.

The equation of state is used to determine the compressibility factor Z, partial derivatives of Z ( \(Z\), \(\frac{\partial Z}{\partial T}|_p\), \(\frac{\partial Z}{\partial p}|_T\), and \(\frac{\partial Z}{\partial T}|_\rho\) ), as well as the heat capacity at constant pressure ( \(c_p\)) and the heat capacity at constant volume ( \(c_v\)), from the gas composition, pressure and temperature.

Constructor & Destructor Documentation

◆ ~EquationOfStateBase()

virtual EquationOfStateBase::~EquationOfStateBase ( )
virtual

Have to declare virtual destructor to avoid compiler warnings. Only declared here, to avoid the inline compiler-generated default destructor.

◆ EquationOfStateBase()

EquationOfStateBase::EquationOfStateBase ( const arma::vec &  composition = Composition::defaultComposition)
explicit

EquationOfStateBase constructor.

Parameters
compositionGas composition (fraction).

Member Function Documentation

◆ calculateCompressibility()

virtual double EquationOfStateBase::calculateCompressibility ( const double  pressure,
const double  temperature 
) const
pure virtual

Method for calculating just the compressibility factor Z at a given pressure and temperature.

Parameters
pressureGas pressure [Pa].
temperatureGas temperature [K].
Returns
Gas compressibility at the given pressure and temperature.

Implemented in DummyGas, IdealGas, BWRS, and GERG04.

◆ evaluate() [1/2]

virtual arma::vec EquationOfStateBase::evaluate ( const double  pressure,
const double  temperature 
) const
pure virtual

Pure virtual function for evaluation the EOS at constant composition.

This function is a stencil for a method for calculating the compressibility factor Z, three partial derivatives, and the heat capacity at constant pressure and constant volume.

Parameters
pressureGas pressure [Pa].
temperatureGas temperature [K].
Returns
arma::vec containing \(Z\), \(\frac{\partial Z}{\partial T}|_p\), \(\frac{\partial Z}{\partial p}|_T\), \(\frac{\partial Z}{\partial T}|_\rho\), \(c_p\) and \(c_v\)

Implemented in DummyGas, IdealGas, BWRS, and GERG04.

◆ evaluate() [2/2]

virtual arma::vec EquationOfStateBase::evaluate ( const double  pressure,
const double  temperature,
const arma::vec &  composition 
)
virtual

Virtual function for evaluating the EOS at a new composition.

This function is a stencil for the method that calculates the compressibility factor Z, three partial derivatives, and the heat capacity at constant pressure and constant volume.

This function only calls setComposition() before calling EquationOfStateBase::evaluate(), so it can be overriden if more efficient ways of evaluating the equation of state at a new composition is known.

Parameters
pressureGas pressure [Pa].
temperatureGas temperature [K].
compositionGas composition fractions [-].
Returns
arma::vec containing \(Z\), \(\frac{\partial Z}{\partial T}|_p\), \(\frac{\partial Z}{\partial p}|_T\), \(\frac{\partial Z}{\partial T}|_\rho\), \(c_p\) and \(c_v\)

◆ setComposition()

virtual bool EquationOfStateBase::setComposition ( const arma::vec &  composition,
const bool  force = true 
)
virtual

Set a new composition for the equation of state.

Parameters
compositionThe new composition, fractions in order C1, C2, C3, iC4, nC4, iC5, nC5, C6, N2, CO2.
forceIf the composition should be changed even if it's within machine precision of the previous composition.
Returns
True if composition was changed, else false.

Reimplemented in BWRS, and GERG04.


The documentation for this class was generated from the following file: