3.1-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Public Types | Static Public Member Functions | List of all members
Dumux::FluidSystems::Base< ScalarType, Implementation > Class Template Reference

Fluid system base class. More...

#include <dumux/material/fluidsystems/base.hh>

Inheritance diagram for Dumux::FluidSystems::Base< ScalarType, Implementation >:
Inheritance graph

Description

template<class ScalarType, class Implementation>
class Dumux::FluidSystems::Base< ScalarType, Implementation >

Fluid system base class.

Note
Always derive your fluid system from this class to be sure that all basic functionality is available!

Public Types

using Scalar = ScalarType
 export the scalar type More...
 
using ParameterCache = NullParameterCache
 The type of parameter cache objects. More...
 

Static Public Member Functions

static constexpr bool isTracerFluidSystem ()
 Some properties of the fluid system. More...
 
static constexpr int getMainComponent (int phaseIdx)
 Get the main component of a given phase if possible. More...
 
template<class T = Implementation>
static constexpr bool isCompressible (int phaseIdx)
 Returns true if and only if a fluid phase is assumed to be compressible. More...
 
template<class T = Implementation>
static constexpr bool isMiscible ()
 Returns whether the fluids are miscible. More...
 
static constexpr bool viscosityIsConstant (int phaseIdx)
 Returns true if and only if a fluid phase is assumed to have a constant viscosity. More...
 
static std::string phaseName (int phaseIdx)
 Return the human readable name of a fluid phase. More...
 
static std::string componentName (int phaseIdx)
 Return the human readable name of a fluid phase. More...
 
template<class FluidState >
static Scalar density (const FluidState &fluidState, int phaseIdx)
 Calculate the density \(\mathrm{[kg/m^3]}\) of a fluid phase. More...
 
template<class FluidState >
static Scalar density (const FluidState &fluidState, const ParameterCache &paramCache, int phaseIdx)
 Calculate the density \(\mathrm{[kg/m^3]}\) of a fluid phase. More...
 
template<class FluidState >
static Scalar molarDensity (const FluidState &fluidState, int phaseIdx)
 Calculate the molar density \(\mathrm{[mol/m^3]}\) of a fluid phase. More...
 
template<class FluidState >
static Scalar molarDensity (const FluidState &fluidState, const ParameterCache &paramCache, int phaseIdx)
 Calculate the molar density \(\mathrm{[mol/m^3]}\) of a fluid phase. More...
 
template<class FluidState >
static Scalar fugacityCoefficient (const FluidState &fluidState, int phaseIdx, int compIdx)
 Calculate the fugacity coefficient \(\mathrm{[Pa]}\) of an individual component in a fluid phase. More...
 
template<class FluidState >
static Scalar fugacityCoefficient (const FluidState &fluidState, const ParameterCache &paramCache, int phaseIdx, int compIdx)
 Calculate the fugacity coefficient \(\mathrm{[Pa]}\) of an individual component in a fluid phase. More...
 
template<class FluidState >
static Scalar viscosity (const FluidState &fluidState, int phaseIdx)
 Calculate the dynamic viscosity of a fluid phase \(\mathrm{[Pa*s]}\). More...
 
template<class FluidState >
static Scalar viscosity (const FluidState &fluidState, const ParameterCache &paramCache, int phaseIdx)
 Calculate the dynamic viscosity of a fluid phase \(\mathrm{[Pa*s]}\). More...
 
template<class FluidState >
static Scalar diffusionCoefficient (const FluidState &fluidState, int phaseIdx, int compIdx)
 Calculate the binary molecular diffusion coefficient for a component in a fluid phase \(\mathrm{[mol^2 * s / (kg*m^3)]}\). More...
 
template<class FluidState >
static Scalar diffusionCoefficient (const FluidState &fluidState, const ParameterCache &paramCache, int phaseIdx, int compIdx)
 Calculate the binary molecular diffusion coefficient for a component in a fluid phase \(\mathrm{[mol^2 * s / (kg*m^3)]}\). More...
 
template<class FluidState >
static Scalar binaryDiffusionCoefficient (const FluidState &fluidState, int phaseIdx, int compIIdx, int compJIdx)
 Given a phase's composition, temperature and pressure, return the binary diffusion coefficient \(\mathrm{[m^2/s]}\) for components \(\mathrm{i}\) and \(\mathrm{j}\) in this phase. More...
 
template<class FluidState >
static Scalar binaryDiffusionCoefficient (const FluidState &fluidState, const ParameterCache &paramCache, int phaseIdx, int compIIdx, int compJIdx)
 Given a phase's composition, temperature and pressure, return the binary diffusion coefficient \(\mathrm{[m^2/s]}\) for components \(\mathrm{i}\) and \(\mathrm{j}\) in this phase. More...
 
template<class FluidState >
static Scalar enthalpy (const FluidState &fluidState, int phaseIdx)
 Given a phase's composition, temperature, pressure and density, calculate its specific enthalpy \(\mathrm{[J/kg]}\). More...
 
template<class FluidState >
static Scalar enthalpy (const FluidState &fluidState, const ParameterCache &paramCache, int phaseIdx)
 Given a phase's composition, temperature, pressure and density, calculate its specific enthalpy \(\mathrm{[J/kg]}\). More...
 
template<class FluidState >
static Scalar thermalConductivity (const FluidState &fluidState, int phaseIdx)
 Thermal conductivity \(\lambda_\alpha \) of a fluid phase \(\mathrm{[W/(m K)]}\). More...
 
template<class FluidState >
static Scalar thermalConductivity (const FluidState &fluidState, const ParameterCache &paramCache, int phaseIdx)
 Thermal conductivity \(\lambda_\alpha \) of a fluid phase \(\mathrm{[W/(m K)]}\). More...
 
template<class FluidState >
static Scalar heatCapacity (const FluidState &fluidState, int phaseIdx)
 Specific isobaric heat capacity \(c_{p,\alpha}\) of a fluid phase \(\mathrm{[J/(kg*K)]}\). More...
 
template<class FluidState >
static Scalar heatCapacity (const FluidState &fluidState, const ParameterCache &paramCache, int phaseIdx)
 Specific isobaric heat capacity \(c_{p,\alpha}\) of a fluid phase \(\mathrm{[J/(kg*K)]}\). More...
 

Member Typedef Documentation

◆ ParameterCache

template<class ScalarType , class Implementation >
using Dumux::FluidSystems::Base< ScalarType, Implementation >::ParameterCache = NullParameterCache

The type of parameter cache objects.

◆ Scalar

template<class ScalarType , class Implementation >
using Dumux::FluidSystems::Base< ScalarType, Implementation >::Scalar = ScalarType

export the scalar type

Member Function Documentation

◆ binaryDiffusionCoefficient() [1/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::binaryDiffusionCoefficient ( const FluidState &  fluidState,
const ParameterCache paramCache,
int  phaseIdx,
int  compIIdx,
int  compJIdx 
)
inlinestatic

Given a phase's composition, temperature and pressure, return the binary diffusion coefficient \(\mathrm{[m^2/s]}\) for components \(\mathrm{i}\) and \(\mathrm{j}\) in this phase.

Parameters
fluidStateThe fluid state
paramCachemutable parameters
phaseIdxIndex of the fluid phase
compIIdxIndex of the component i
compJIdxIndex of the component j

◆ binaryDiffusionCoefficient() [2/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::binaryDiffusionCoefficient ( const FluidState &  fluidState,
int  phaseIdx,
int  compIIdx,
int  compJIdx 
)
inlinestatic

Given a phase's composition, temperature and pressure, return the binary diffusion coefficient \(\mathrm{[m^2/s]}\) for components \(\mathrm{i}\) and \(\mathrm{j}\) in this phase.

Parameters
fluidStateThe fluid state
phaseIdxIndex of the fluid phase
compIIdxIndex of the component i
compJIdxIndex of the component j

◆ componentName()

template<class ScalarType , class Implementation >
static std::string Dumux::FluidSystems::Base< ScalarType, Implementation >::componentName ( int  phaseIdx)
inlinestatic

Return the human readable name of a fluid phase.

Parameters
phaseIdxThe index of the fluid phase to consider

◆ density() [1/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::density ( const FluidState &  fluidState,
const ParameterCache paramCache,
int  phaseIdx 
)
inlinestatic

Calculate the density \(\mathrm{[kg/m^3]}\) of a fluid phase.

Parameters
fluidStateThe fluid state
paramCachemutable parameters
phaseIdxIndex of the fluid phase

◆ density() [2/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::density ( const FluidState &  fluidState,
int  phaseIdx 
)
inlinestatic

Calculate the density \(\mathrm{[kg/m^3]}\) of a fluid phase.

Parameters
fluidStateThe fluid state
phaseIdxIndex of the fluid phase

◆ diffusionCoefficient() [1/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::diffusionCoefficient ( const FluidState &  fluidState,
const ParameterCache paramCache,
int  phaseIdx,
int  compIdx 
)
inlinestatic

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

Parameters
fluidStateThe fluid state
paramCachemutable parameters
phaseIdxIndex of the fluid phase
compIdxIndex of the component Molecular diffusion of a component \(\mathrm{\kappa}\) is caused by a gradient of the chemical potential and follows the law

\[ J = - D \mathbf{grad} \mu_\kappa \]

where \(\mathrm{\mu_\kappa}\) is the component's chemical potential, \(\mathrm{D}\) is the diffusion coefficient and \(\mathrm{J}\) is the diffusive flux. \(\mathrm{\mu_\kappa}\) is connected to the component's fugacity \(\mathrm{f_\kappa}\) by the relation

\[ \mu_\kappa = R T_\alpha \mathrm{ln} \frac{f_\kappa}{p_\alpha} \]

where \(\mathrm{p_\alpha}\) and \(\mathrm{T_\alpha}\) are the fluid phase' pressure and temperature.

◆ diffusionCoefficient() [2/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::diffusionCoefficient ( const FluidState &  fluidState,
int  phaseIdx,
int  compIdx 
)
inlinestatic

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

Parameters
fluidStateThe fluid state
phaseIdxIndex of the fluid phase
compIdxIndex of the component Molecular diffusion of a component \(\mathrm{\kappa}\) is caused by a gradient of the chemical potential and follows the law

\[ J = - D \mathbf{grad} \mu_\kappa \]

where \(\mathrm{\mu_\kappa}\) is the component's chemical potential, \(\mathrm{D}\) is the diffusion coefficient and \(\mathrm{J}\) is the diffusive flux. \(\mathrm{\mu_\kappa}\) is connected to the component's fugacity \(\mathrm{f_\kappa}\) by the relation

\[ \mu_\kappa = R T_\alpha \mathrm{ln} \frac{f_\kappa}{p_\alpha} \]

where \(\mathrm{p_\alpha}\) and \(\mathrm{T_\alpha}\) are the fluid phase' pressure and temperature.

◆ enthalpy() [1/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::enthalpy ( const FluidState &  fluidState,
const ParameterCache paramCache,
int  phaseIdx 
)
inlinestatic

Given a phase's composition, temperature, pressure and density, calculate its specific enthalpy \(\mathrm{[J/kg]}\).

Parameters
fluidStateThe fluid state
paramCachemutable parameters
phaseIdxIndex of the fluid phase

◆ enthalpy() [2/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::enthalpy ( const FluidState &  fluidState,
int  phaseIdx 
)
inlinestatic

Given a phase's composition, temperature, pressure and density, calculate its specific enthalpy \(\mathrm{[J/kg]}\).

Parameters
fluidStateThe fluid state
phaseIdxIndex of the fluid phase

◆ fugacityCoefficient() [1/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::fugacityCoefficient ( const FluidState &  fluidState,
const ParameterCache paramCache,
int  phaseIdx,
int  compIdx 
)
inlinestatic

Calculate the fugacity coefficient \(\mathrm{[Pa]}\) of an individual component in a fluid phase.

The fugacity coefficient \(\mathrm{\phi^\kappa_\alpha}\) is connected to the fugacity \(\mathrm{f^\kappa_\alpha}\) and the component's mole fraction \(\mathrm{x^\kappa_\alpha}\) by means of the relation

\[ f^\kappa_\alpha = \phi^\kappa_\alpha\;x^\kappa_\alpha\;p_\alpha \]

Parameters
fluidStateThe fluid state
paramCachemutable parameters
phaseIdxIndex of the fluid phase
compIdxIndex of the component

◆ fugacityCoefficient() [2/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::fugacityCoefficient ( const FluidState &  fluidState,
int  phaseIdx,
int  compIdx 
)
inlinestatic

Calculate the fugacity coefficient \(\mathrm{[Pa]}\) of an individual component in a fluid phase.

The fugacity coefficient \(\mathrm{\phi^\kappa_\alpha}\) is connected to the fugacity \(\mathrm{f^\kappa_\alpha}\) and the component's mole fraction \(\mathrm{x^\kappa_\alpha}\) by means of the relation

\[ f^\kappa_\alpha = \phi^\kappa_\alpha\;x^\kappa_\alpha\;p_\alpha \]

Parameters
fluidStateThe fluid state
phaseIdxIndex of the fluid phase
compIdxIndex of the component

◆ getMainComponent()

template<class ScalarType , class Implementation >
static constexpr int Dumux::FluidSystems::Base< ScalarType, Implementation >::getMainComponent ( int  phaseIdx)
inlinestaticconstexpr

Get the main component of a given phase if possible.

Parameters
phaseIdxThe index of the fluid phase to consider
Note
This method has to can assert at compile time if the fluid system doesn't assume a main phase. Then using e.g. Fick's law will fail compiling.
Todo:
Unfortunately we currently still have the assumption in some volume variables (e.g. 1pnc, 2pnc) that the main component index of a phase is equal to the phase index of that phase. This means changing this only works if the volume variables are written accordingly.

◆ heatCapacity() [1/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::heatCapacity ( const FluidState &  fluidState,
const ParameterCache paramCache,
int  phaseIdx 
)
inlinestatic

Specific isobaric heat capacity \(c_{p,\alpha}\) of a fluid phase \(\mathrm{[J/(kg*K)]}\).

Parameters
fluidStaterepresents all relevant thermodynamic quantities of a fluid system
paramCachemutable parameters
phaseIdxIndex of the fluid phase

Given a fluid state, an up-to-date parameter cache and a phase index, this method computes the isobaric heat capacity \(c_{p,\alpha}\) of the fluid phase. The isobaric heat capacity is defined as the partial derivative of the specific enthalpy \(h_\alpha\) to the fluid pressure \(p_\alpha\):

\( c_{p,\alpha} = \frac{\partial h_\alpha}{\partial p_\alpha} \)

◆ heatCapacity() [2/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::heatCapacity ( const FluidState &  fluidState,
int  phaseIdx 
)
inlinestatic

Specific isobaric heat capacity \(c_{p,\alpha}\) of a fluid phase \(\mathrm{[J/(kg*K)]}\).

Parameters
fluidStaterepresents all relevant thermodynamic quantities of a fluid system
phaseIdxIndex of the fluid phase

Given a fluid state, an up-to-date parameter cache and a phase index, this method computes the isobaric heat capacity \(c_{p,\alpha}\) of the fluid phase. The isobaric heat capacity is defined as the partial derivative of the specific enthalpy \(h_\alpha\) to the fluid pressure \(p_\alpha\):

\( c_{p,\alpha} = \frac{\partial h_\alpha}{\partial p_\alpha} \)

◆ isCompressible()

template<class ScalarType , class Implementation >
template<class T = Implementation>
static constexpr bool Dumux::FluidSystems::Base< ScalarType, Implementation >::isCompressible ( int  phaseIdx)
inlinestaticconstexpr

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.

Parameters
phaseIdxThe index of the fluid phase to consider

◆ isMiscible()

template<class ScalarType , class Implementation >
template<class T = Implementation>
static constexpr bool Dumux::FluidSystems::Base< ScalarType, Implementation >::isMiscible ( )
inlinestaticconstexpr

Returns whether the fluids are miscible.

◆ isTracerFluidSystem()

template<class ScalarType , class Implementation >
static constexpr bool Dumux::FluidSystems::Base< ScalarType, Implementation >::isTracerFluidSystem ( )
inlinestaticconstexpr

Some properties of the fluid system.

If the fluid system only contains tracer components

◆ molarDensity() [1/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::molarDensity ( const FluidState &  fluidState,
const ParameterCache paramCache,
int  phaseIdx 
)
inlinestatic

Calculate the molar density \(\mathrm{[mol/m^3]}\) of a fluid phase.

Parameters
fluidStateThe fluid state
paramCachemutable parameters
phaseIdxIndex of the fluid phase

◆ molarDensity() [2/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::molarDensity ( const FluidState &  fluidState,
int  phaseIdx 
)
inlinestatic

Calculate the molar density \(\mathrm{[mol/m^3]}\) of a fluid phase.

Parameters
fluidStateThe fluid state
phaseIdxIndex of the fluid phase

◆ phaseName()

template<class ScalarType , class Implementation >
static std::string Dumux::FluidSystems::Base< ScalarType, Implementation >::phaseName ( int  phaseIdx)
inlinestatic

Return the human readable name of a fluid phase.

Parameters
phaseIdxThe index of the fluid phase to consider

◆ thermalConductivity() [1/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::thermalConductivity ( const FluidState &  fluidState,
const ParameterCache paramCache,
int  phaseIdx 
)
inlinestatic

Thermal conductivity \(\lambda_\alpha \) of a fluid phase \(\mathrm{[W/(m K)]}\).

Parameters
fluidStateThe fluid state
paramCachemutable parameters
phaseIdxIndex of the fluid phase

◆ thermalConductivity() [2/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::thermalConductivity ( const FluidState &  fluidState,
int  phaseIdx 
)
inlinestatic

Thermal conductivity \(\lambda_\alpha \) of a fluid phase \(\mathrm{[W/(m K)]}\).

Parameters
fluidStateThe fluid state
phaseIdxIndex of the fluid phase

◆ viscosity() [1/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::viscosity ( const FluidState &  fluidState,
const ParameterCache paramCache,
int  phaseIdx 
)
inlinestatic

Calculate the dynamic viscosity of a fluid phase \(\mathrm{[Pa*s]}\).

Parameters
fluidStateThe fluid state
paramCachemutable parameters
phaseIdxIndex of the fluid phase

◆ viscosity() [2/2]

template<class ScalarType , class Implementation >
template<class FluidState >
static Scalar Dumux::FluidSystems::Base< ScalarType, Implementation >::viscosity ( const FluidState &  fluidState,
int  phaseIdx 
)
inlinestatic

Calculate the dynamic viscosity of a fluid phase \(\mathrm{[Pa*s]}\).

Parameters
fluidStateThe fluid state
phaseIdxIndex of the fluid phase

◆ viscosityIsConstant()

template<class ScalarType , class Implementation >
static constexpr bool Dumux::FluidSystems::Base< ScalarType, Implementation >::viscosityIsConstant ( int  phaseIdx)
inlinestaticconstexpr

Returns true if and only if a fluid phase is assumed to have a constant viscosity.

Parameters
phaseIdxThe index of the fluid phase to consider

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