version 3.10-dev
Dumux::PengRobinson< Scalar > Class Template Reference

Implements the Peng-Robinson equation of state for liquids and gases. More...

#include <dumux/material/eos/pengrobinson.hh>

Description

template<class Scalar>
class Dumux::PengRobinson< Scalar >

See:

D.-Y. Peng, D.B. Robinson (1976, pp. 59–64) [68]

R. Reid, et al. (1987, pp. 42-44, 82) [72]

Static Public Member Functions

static void init (Scalar aMin, Scalar aMax, int na, Scalar bMin, Scalar bMax, int nb)
 
template<class Params >
static Scalar computeVaporPressure (const Params &params, Scalar T)
 Predicts the vapor pressure \(\mathrm{[Pa]}\) for the temperature given in setTP(). More...
 
template<class FluidState , class Params >
static Scalar computeMolarVolume (const FluidState &fs, Params &params, int phaseIdx, bool isGasPhase, bool handleUnphysicalPhase=true)
 Computes molar volumes \(\mathrm{[m^3 / mol]}\) where the Peng-Robinson EOS is true. More...
 
template<class Params >
static Scalar criticalTemperature (const Params &params)
 Returns the critical temperature for a given mix. More...
 
template<class Params >
static Scalar computeFugacityCoeffient (const Params &params)
 Returns the fugacity coefficient \(\mathrm{[-]}\) for a given pressure and molar volume. More...
 
template<class Params >
static Scalar computeFugacity (const Params &params)
 Returns the fugacity coefficient \(\mathrm{[-]}\) for a given pressure and molar volume. More...
 

Static Protected Member Functions

template<class FluidState , class Params >
static Scalar handleSingleRoot_ (Scalar Vm, const FluidState &fs, const Params &params, int phaseIdx, bool isGasPhase)
 
template<class FluidState , class Params >
static Scalar handleCriticalFluid_ (Scalar Vm, const FluidState &fs, const Params &params, int phaseIdx, bool isGasPhase)
 
static void findCriticalPoint_ (Scalar &Tcrit, Scalar &pcrit, Scalar &Vcrit, Scalar a, Scalar b)
 
static bool findExtrema_ (Scalar &Vmin, Scalar &Vmax, Scalar &pMin, Scalar &pMax, Scalar a, Scalar b, Scalar T)
 
template<class Params >
static Scalar ambroseWalton_ (const Params &params, Scalar T)
 The Ambrose-Walton method to estimate the vapor pressure. More...
 
template<class Params >
static Scalar fugacityDifference_ (const Params &params, Scalar T, Scalar p, Scalar VmLiquid, Scalar VmGas)
 Returns the difference between the liquid and the gas phase fugacities in [bar]. More...
 

Static Protected Attributes

static Tabulated2DFunction< Scalar > criticalTemperature_
 
static Tabulated2DFunction< Scalar > criticalPressure_
 
static Tabulated2DFunction< Scalar > criticalMolarVolume_
 

Member Function Documentation

◆ ambroseWalton_()

template<class Scalar >
template<class Params >
static Scalar Dumux::PengRobinson< Scalar >::ambroseWalton_ ( const Params &  params,
Scalar  T 
)
inlinestaticprotected
Returns
Vapor pressure estimate in bar

See:

D. Ambrose, J. Walton (1989, pp. 1395-1403) [8]

◆ computeFugacity()

template<class Scalar >
template<class Params >
static Scalar Dumux::PengRobinson< Scalar >::computeFugacity ( const Params &  params)
inlinestatic

This is the fugacity coefficient times the pressure. The mole fraction of a component in a pure fluid is obviously always 100%, so it is not required.

Parameters
paramsParameters

◆ computeFugacityCoeffient()

template<class Scalar >
template<class Params >
static Scalar Dumux::PengRobinson< Scalar >::computeFugacityCoeffient ( const Params &  params)
inlinestatic

This is the same value as computeFugacity() because the mole fraction of a component in a pure fluid is obviously always 100%.

Parameters
paramsParameters

◆ computeMolarVolume()

template<class Scalar >
template<class FluidState , class Params >
static Scalar Dumux::PengRobinson< Scalar >::computeMolarVolume ( const FluidState &  fs,
Params &  params,
int  phaseIdx,
bool  isGasPhase,
bool  handleUnphysicalPhase = true 
)
inlinestatic
Parameters
fsThermodynamic state of the fluids
paramsParameters
phaseIdxThe phase index
isGasPhaseSpecifies the phase state
handleUnphysicalPhaseSpecial handling of the case when the EOS has only one intersection with the pressure, and the intersection does not correspond to the given phase (the phase is thus considered unphysical). If it happens in the case of critical fluid, the critical molar volume is returned for the unphysical phase. If the fluid is not critical, a proper extremum of the EOS is returned for the unphysical phase. If the parameter is false and the EOS has only one intersection with the pressure, the molar volume is computed from that single intersection, not depending of the given phase (gas or fluid). If the EOS has three intersections with the pressure, this parameter is ignored.

◆ computeVaporPressure()

template<class Scalar >
template<class Params >
static Scalar Dumux::PengRobinson< Scalar >::computeVaporPressure ( const Params &  params,
Scalar  T 
)
inlinestatic
Parameters
Ttemperature in \(\mathrm{[K]}\)
paramsParameters

Initially, the vapor pressure is roughly estimated by using the Ambrose-Walton method, then the Newton method is used to make difference between the gas and liquid phase fugacity zero.

◆ criticalTemperature()

template<class Scalar >
template<class Params >
static Scalar Dumux::PengRobinson< Scalar >::criticalTemperature ( const Params &  params)
inlinestatic
Parameters
paramsEOS (equation of state) parameters of a single-component fluid \ (usually PengRobinsonParms) or a mixture (usually PengRobinsonMixtureParams)

◆ findCriticalPoint_()

template<class Scalar >
static void Dumux::PengRobinson< Scalar >::findCriticalPoint_ ( Scalar &  Tcrit,
Scalar &  pcrit,
Scalar &  Vcrit,
Scalar  a,
Scalar  b 
)
inlinestaticprotected

◆ findExtrema_()

template<class Scalar >
static bool Dumux::PengRobinson< Scalar >::findExtrema_ ( Scalar &  Vmin,
Scalar &  Vmax,
Scalar &  pMin,
Scalar &  pMax,
Scalar  a,
Scalar  b,
Scalar  T 
)
inlinestaticprotected

◆ fugacityDifference_()

template<class Scalar >
template<class Params >
static Scalar Dumux::PengRobinson< Scalar >::fugacityDifference_ ( const Params &  params,
Scalar  T,
Scalar  p,
Scalar  VmLiquid,
Scalar  VmGas 
)
inlinestaticprotected
Parameters
paramsParameters
TTemperature [K]
pPressure [bar]
VmLiquidMolar volume of the liquid phase [cm^3/mol]
VmGasMolar volume of the gas phase [cm^3/mol]

◆ handleCriticalFluid_()

template<class Scalar >
template<class FluidState , class Params >
static Scalar Dumux::PengRobinson< Scalar >::handleCriticalFluid_ ( Scalar  Vm,
const FluidState &  fs,
const Params &  params,
int  phaseIdx,
bool  isGasPhase 
)
inlinestaticprotected

◆ handleSingleRoot_()

template<class Scalar >
template<class FluidState , class Params >
static Scalar Dumux::PengRobinson< Scalar >::handleSingleRoot_ ( Scalar  Vm,
const FluidState &  fs,
const Params &  params,
int  phaseIdx,
bool  isGasPhase 
)
inlinestaticprotected

◆ init()

template<class Scalar >
static void Dumux::PengRobinson< Scalar >::init ( Scalar  aMin,
Scalar  aMax,
int  na,
Scalar  bMin,
Scalar  bMax,
int  nb 
)
inlinestatic

Member Data Documentation

◆ criticalMolarVolume_

template<class Scalar >
Tabulated2DFunction< Scalar > Dumux::PengRobinson< Scalar >::criticalMolarVolume_
staticprotected

◆ criticalPressure_

template<class Scalar >
Tabulated2DFunction< Scalar > Dumux::PengRobinson< Scalar >::criticalPressure_
staticprotected

◆ criticalTemperature_

template<class Scalar >
Tabulated2DFunction< Scalar > Dumux::PengRobinson< Scalar >::criticalTemperature_
staticprotected

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