The fluid system for the oil, gas and water phases of the SPE5 problem. More...

#include <Spe5FluidSystem.hpp>

Inheritance diagram for Opm::FluidSystems::Spe5< Scalar >:
Inheritance graph

Public Types

typedef
Opm::Spe5ParameterCache
< Scalar, ThisType
ParameterCache
 The type of the fluid system's parameter cache. More...
 
typedef Opm::H2O< Scalar > H2O
 The component for pure water to be used. More...
 

Static Public Member Functions

static const char * phaseName (unsigned phaseIdx)
 Return the human readable name of a fluid phase. More...
 
static bool isLiquid (unsigned phaseIdx)
 Return whether a phase is liquid. More...
 
static bool isCompressible (unsigned)
 Returns true if and only if a fluid phase is assumed to be compressible. More...
 
static bool isIdealGas (unsigned)
 Returns true if and only if a fluid phase is assumed to be an ideal gas. More...
 
static bool isIdealMixture (unsigned phaseIdx)
 Returns true if and only if a fluid phase is assumed to be an ideal mixture. More...
 
static const char * componentName (unsigned compIdx)
 Return the human readable name of a component. More...
 
static Scalar molarMass (unsigned compIdx)
 Return the molar mass of a component in [kg/mol]. More...
 
static Scalar criticalTemperature (unsigned compIdx)
 Critical temperature of a component [K]. More...
 
static Scalar criticalPressure (unsigned compIdx)
 Critical pressure of a component [Pa]. More...
 
static Scalar criticalMolarVolume (unsigned compIdx)
 Molar volume of a component at the critical point [m^3/mol]. More...
 
static Scalar acentricFactor (unsigned compIdx)
 The acentric factor of a component []. More...
 
static Scalar interactionCoefficient (unsigned comp1Idx, unsigned comp2Idx)
 Returns the interaction coefficient for two components. More...
 
static void init (Scalar minT=273.15, Scalar maxT=373.15, Scalar minP=1e4, Scalar maxP=100e6)
 Initialize the fluid system's static parameters. More...
 
template<class FluidState , class Evaluation = Scalar>
static Scalar density (const FluidState &fluidState, const ParameterCache &paramCache, unsigned phaseIdx)
 Calculate the density [kg/m^3] of a fluid phase. More...
 
template<class FluidState , class Evaluation = Scalar>
static Scalar viscosity (const FluidState &, const ParameterCache &, unsigned phaseIdx)
 Calculate the dynamic viscosity of a fluid phase [Pa*s]. More...
 
template<class FluidState , class Evaluation = Scalar>
static Scalar fugacityCoefficient (const FluidState &fluidState, const ParameterCache &paramCache, unsigned phaseIdx, unsigned compIdx)
 Calculate the fugacity coefficient [Pa] of an individual component in a fluid phase. More...
 
static void init ()
 Initialize the fluid system's static parameters. More...
 
static LhsEval density (const FluidState &, const ParameterCache &, unsigned)
 Calculate the density [kg/m^3] of a fluid phase. More...
 
static LhsEval fugacityCoefficient (const FluidState &, const ParameterCache &, unsigned, unsigned)
 Calculate the fugacity coefficient [Pa] of an individual component in a fluid phase. More...
 
static LhsEval viscosity (const FluidState &, const ParameterCache &, unsigned)
 Calculate the dynamic viscosity of a fluid phase [Pa*s]. More...
 
static LhsEval diffusionCoefficient (const FluidState &, const ParameterCache &, unsigned, unsigned)
 Calculate the binary molecular diffusion coefficient for a component in a fluid phase [mol^2 * s / (kg*m^3)]. More...
 
static LhsEval enthalpy (const FluidState &, const ParameterCache &, unsigned)
 Given a phase's composition, temperature, pressure and density, calculate its specific enthalpy [J/kg]. More...
 
static LhsEval thermalConductivity (const FluidState &, const ParameterCache &, unsigned)
 Thermal conductivity of a fluid phase [W/(m K)]. More...
 
static LhsEval heatCapacity (const FluidState &, const ParameterCache &, unsigned)
 Specific isobaric heat capacity of a fluid phase [J/kg]. More...
 

Static Public Attributes

static const int numPhases = 3
 Number of fluid phases in the fluid system. More...
 
static const int gasPhaseIdx = 0
 Index of the gas phase. More...
 
static const int waterPhaseIdx = 1
 Index of the water phase. More...
 
static const int oilPhaseIdx = 2
 Index of the oil phase. More...
 
static const int numComponents = 7
 Number of chemical species in the fluid system. More...
 
static const int H2OIdx = 0
 Index of the water component. More...
 
static const int C1Idx = 1
 Index of the C1 component. More...
 
static const int C3Idx = 2
 Index of the C3 component. More...
 
static const int C6Idx = 3
 Index of the C6 component. More...
 
static const int C10Idx = 4
 Index of the C10 component. More...
 
static const int C15Idx = 5
 Index of the C15 component. More...
 
static const int C20Idx = 6
 Index of the C20 component. More...
 

Static Protected Member Functions

static Scalar henryCoeffWater_ (unsigned compIdx, Scalar temperature)
 

Detailed Description

template<class Scalar>
class Opm::FluidSystems::Spe5< Scalar >

The fluid system for the oil, gas and water phases of the SPE5 problem.

This problem comprises $H_2O$, $C_1$, $C_3$, $C_6$, $C_10$, $C_15$ and $C_20$ as components.

See:

J.E. Killough, et al.: Fifth Comparative Solution Project: Evaluation of Miscible Flood Simulators, Ninth SPE Symposium on Reservoir Simulation, 1987

Member Typedef Documentation

template<class Scalar >
typedef Opm::H2O<Scalar> Opm::FluidSystems::Spe5< Scalar >::H2O

The component for pure water to be used.

template<class Scalar >
typedef Opm::Spe5ParameterCache<Scalar, ThisType> Opm::FluidSystems::Spe5< Scalar >::ParameterCache

The type of the fluid system's parameter cache.

The parameter cache can be used to avoid re-calculating expensive parameters for multiple quantities. Be aware that what the parameter cache actually does is specific for each fluid system and that it is opaque outside the fluid system.

Member Function Documentation

template<class Scalar >
static Scalar Opm::FluidSystems::Spe5< Scalar >::acentricFactor ( unsigned  compIdx)
inlinestatic
template<class Scalar >
static const char* Opm::FluidSystems::Spe5< Scalar >::componentName ( unsigned  compIdx)
inlinestatic

Return the human readable name of a component.

References Opm::H2O< Scalar >::name().

template<class Scalar >
static Scalar Opm::FluidSystems::Spe5< Scalar >::criticalPressure ( unsigned  compIdx)
inlinestatic
template<class Scalar >
static Scalar Opm::FluidSystems::Spe5< Scalar >::criticalTemperature ( unsigned  compIdx)
inlinestatic
static LhsEval Opm::BaseFluidSystem< Scalar, Spe5< Scalar > >::density ( const FluidState &  ,
const ParameterCache ,
unsigned   
)
inlinestaticinherited

Calculate the density [kg/m^3] of a fluid phase.

template<class Scalar >
template<class FluidState , class Evaluation = Scalar>
static Scalar Opm::FluidSystems::Spe5< Scalar >::density ( const FluidState &  fluidState,
const ParameterCache paramCache,
unsigned  phaseIdx 
)
inlinestatic

Calculate the density [kg/m^3] of a fluid phase.

References Opm::Spe5ParameterCache< Scalar, FluidSystem >::molarVolume().

static LhsEval Opm::BaseFluidSystem< Scalar, Spe5< Scalar > >::diffusionCoefficient ( const FluidState &  ,
const ParameterCache ,
unsigned  ,
unsigned   
)
inlinestaticinherited

Calculate the binary molecular diffusion coefficient for a component in a fluid phase [mol^2 * s / (kg*m^3)].

Molecular diffusion of a compoent $\kappa$ is caused by a gradient of the mole fraction and follows the law

\[ J = - D \mathbf{grad} x^\kappa_\alpha \]

where $x_\alpha^\kappa$ is the component's mole fraction in phase $\alpha$, $D$ is the diffusion coefficient and $J$ is the diffusive flux.

static LhsEval Opm::BaseFluidSystem< Scalar, Spe5< Scalar > >::enthalpy ( const FluidState &  ,
const ParameterCache ,
unsigned   
)
inlinestaticinherited

Given a phase's composition, temperature, pressure and density, calculate its specific enthalpy [J/kg].

static LhsEval Opm::BaseFluidSystem< Scalar, Spe5< Scalar > >::fugacityCoefficient ( const FluidState &  ,
const ParameterCache ,
unsigned  ,
unsigned   
)
inlinestaticinherited

Calculate the fugacity coefficient [Pa] of an individual component in a fluid phase.

The fugacity coefficient $\phi_\kappa$ is connected to the fugacity $f_\kappa$ and the component's molarity $x_\kappa$ by means of the relation

\[ f_\kappa = \phi_\kappa\,x_{\kappa} \]

template<class Scalar >
template<class FluidState , class Evaluation = Scalar>
static Scalar Opm::FluidSystems::Spe5< Scalar >::fugacityCoefficient ( const FluidState &  fluidState,
const ParameterCache paramCache,
unsigned  phaseIdx,
unsigned  compIdx 
)
inlinestatic

Calculate the fugacity coefficient [Pa] of an individual component in a fluid phase.

The fugacity coefficient $\phi_\kappa$ is connected to the fugacity $f_\kappa$ and the component's molarity $x_\kappa$ by means of the relation

\[ f_\kappa = \phi_\kappa\,x_{\kappa} \]

References Opm::PengRobinsonMixture< Scalar, StaticParameters >::computeFugacityCoefficient(), and Opm::FluidSystems::Spe5< Scalar >::henryCoeffWater_().

static LhsEval Opm::BaseFluidSystem< Scalar, Spe5< Scalar > >::heatCapacity ( const FluidState &  ,
const ParameterCache ,
unsigned   
)
inlinestaticinherited

Specific isobaric heat capacity of a fluid phase [J/kg].

template<class Scalar >
static Scalar Opm::FluidSystems::Spe5< Scalar >::henryCoeffWater_ ( unsigned  compIdx,
Scalar  temperature 
)
inlinestaticprotected
static void Opm::BaseFluidSystem< Scalar, Spe5< Scalar > >::init ( )
inlinestaticinherited

Initialize the fluid system's static parameters.

template<class Scalar >
static void Opm::FluidSystems::Spe5< Scalar >::init ( Scalar  minT = 273.15,
Scalar  maxT = 373.15,
Scalar  minP = 1e4,
Scalar  maxP = 100e6 
)
inlinestatic

Initialize the fluid system's static parameters.

Parameters
minTThe minimum temperature possibly encountered during the simulation
maxTThe maximum temperature possibly encountered during the simulation
minPThe minimum pressure possibly encountered during the simulation
maxPThe maximum pressure possibly encountered during the simulation

References Opm::PengRobinsonParams< Scalar >::a(), Opm::PengRobinsonParams< Scalar >::b(), Opm::FluidSystems::Spe5< Scalar >::gasPhaseIdx, Opm::PengRobinson< Scalar >::init(), Opm::LocalAd::max(), Opm::LocalAd::min(), Opm::FluidSystems::Spe5< Scalar >::numComponents, Opm::PengRobinsonParamsMixture< Scalar, FluidSystem, phaseIdx, useSpe5Relations >::pureParams(), and Opm::PengRobinsonParamsMixture< Scalar, FluidSystem, phaseIdx, useSpe5Relations >::updatePure().

template<class Scalar >
static Scalar Opm::FluidSystems::Spe5< Scalar >::interactionCoefficient ( unsigned  comp1Idx,
unsigned  comp2Idx 
)
inlinestatic

Returns the interaction coefficient for two components.

The values are given by the SPE5 paper.

References Opm::LocalAd::max(), and Opm::LocalAd::min().

template<class Scalar >
static bool Opm::FluidSystems::Spe5< Scalar >::isCompressible ( unsigned  )
inlinestatic

Returns true if and only if a fluid phase is assumed to be compressible.

Compressible means that the partial derivative of the density to the fluid pressure is always larger than zero.

In the SPE-5 problems all fluids are compressible...

template<class Scalar >
static bool Opm::FluidSystems::Spe5< Scalar >::isIdealGas ( unsigned  )
inlinestatic

Returns true if and only if a fluid phase is assumed to be an ideal gas.

template<class Scalar >
static bool Opm::FluidSystems::Spe5< Scalar >::isIdealMixture ( unsigned  phaseIdx)
inlinestatic

Returns true if and only if a fluid phase is assumed to be an ideal mixture.

We define an ideal mixture as a fluid phase where the fugacity coefficients of all components times the pressure of the phase are independent on the fluid composition. This assumption is true if Henry's law and Rault's law apply. If you are unsure what this function should return, it is safe to return false. The only damage done will be (slightly) increased computation times in some cases.

References Opm::FluidSystems::Spe5< Scalar >::waterPhaseIdx.

template<class Scalar >
static bool Opm::FluidSystems::Spe5< Scalar >::isLiquid ( unsigned  phaseIdx)
inlinestatic

Return whether a phase is liquid.

References Opm::FluidSystems::Spe5< Scalar >::gasPhaseIdx.

template<class Scalar >
static Scalar Opm::FluidSystems::Spe5< Scalar >::molarMass ( unsigned  compIdx)
inlinestatic
template<class Scalar >
static const char* Opm::FluidSystems::Spe5< Scalar >::phaseName ( unsigned  phaseIdx)
inlinestatic

Return the human readable name of a fluid phase.

static LhsEval Opm::BaseFluidSystem< Scalar, Spe5< Scalar > >::thermalConductivity ( const FluidState &  ,
const ParameterCache ,
unsigned   
)
inlinestaticinherited

Thermal conductivity of a fluid phase [W/(m K)].

static LhsEval Opm::BaseFluidSystem< Scalar, Spe5< Scalar > >::viscosity ( const FluidState &  ,
const ParameterCache ,
unsigned   
)
inlinestaticinherited

Calculate the dynamic viscosity of a fluid phase [Pa*s].

template<class Scalar >
template<class FluidState , class Evaluation = Scalar>
static Scalar Opm::FluidSystems::Spe5< Scalar >::viscosity ( const FluidState &  ,
const ParameterCache ,
unsigned  phaseIdx 
)
inlinestatic

Calculate the dynamic viscosity of a fluid phase [Pa*s].

Member Data Documentation

template<class Scalar >
const int Opm::FluidSystems::Spe5< Scalar >::C10Idx = 4
static

Index of the C10 component.

Referenced by Opm::FluidSystems::Spe5< Scalar >::criticalMolarVolume().

template<class Scalar >
const int Opm::FluidSystems::Spe5< Scalar >::C20Idx = 6
static

Index of the C20 component.

Referenced by Opm::FluidSystems::Spe5< Scalar >::criticalMolarVolume().

template<class Scalar >
const int Opm::FluidSystems::Spe5< Scalar >::C3Idx = 2
static

Index of the C3 component.

Referenced by Opm::FluidSystems::Spe5< Scalar >::criticalMolarVolume().

template<class Scalar >
const int Opm::FluidSystems::Spe5< Scalar >::gasPhaseIdx = 0
static
template<class Scalar >
const int Opm::FluidSystems::Spe5< Scalar >::H2OIdx = 0
static

Index of the water component.

template<class Scalar >
const int Opm::FluidSystems::Spe5< Scalar >::numComponents = 7
static

Number of chemical species in the fluid system.

Referenced by Opm::FluidSystems::Spe5< Scalar >::init().

template<class Scalar >
const int Opm::FluidSystems::Spe5< Scalar >::numPhases = 3
static

Number of fluid phases in the fluid system.

template<class Scalar >
const int Opm::FluidSystems::Spe5< Scalar >::oilPhaseIdx = 2
static

Index of the oil phase.

template<class Scalar >
const int Opm::FluidSystems::Spe5< Scalar >::waterPhaseIdx = 1
static

Index of the water phase.

Referenced by Opm::FluidSystems::Spe5< Scalar >::isIdealMixture().


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