version 3.11-dev
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
Dumux::ImmiscibleFluidState< ScalarType, FluidSystem > Class Template Reference

Represents all relevant thermodynamic quantities of a multi-phase fluid system assuming immiscibility and thermodynamic equilibrium.

#include <dumux/material/fluidstates/immiscible.hh>

Public Types

using Scalar = ScalarType
 export the scalar type More...
 

Public Member Functions

 ImmiscibleFluidState ()=default
 default constructor More...
 
template<class FluidState , typename std::enable_if_t<!std::is_same< FluidState, ImmiscibleFluidState >::value, int > = 0>
 ImmiscibleFluidState (const FluidState &fs)
 copy constructor from arbitrary fluid state More...
 
 ImmiscibleFluidState (const ImmiscibleFluidState &fs)=default
 
 ImmiscibleFluidState (ImmiscibleFluidState &&fs)=default
 
ImmiscibleFluidStateoperator= (const ImmiscibleFluidState &fs)=default
 
ImmiscibleFluidStateoperator= (ImmiscibleFluidState &&fs)=default
 
int wettingPhase () const
 Returns the index of the most wetting phase in the fluid-solid configuration (for porous medium systems). More...
 
Scalar saturation (int phaseIdx) const
 Returns the saturation Sα of a fluid phase α in []. More...
 
Scalar moleFraction (int phaseIdx, int compIdx) const
 Returns the molar fraction xακ of the component κ in fluid phase α in []. More...
 
Scalar massFraction (int phaseIdx, int compIdx) const
 Returns the mass fraction Xακ of component κ in fluid phase α in []. More...
 
Scalar averageMolarMass (int phaseIdx) const
 The average molar mass Mα of phase α in [kg/mol]. More...
 
Scalar molarity (int phaseIdx, int compIdx) const
 The molar concentration cακ of component κ in fluid phase α in [mol/m3]. More...
 
Scalar fugacity (int phaseIdx, int compIdx) const
 The fugacity fακ of component κ in fluid phase α in [Pa]. More...
 
Scalar fugacityCoefficient (int phaseIdx, int compIdx) const
 The fugacity coefficient Φακ of component κ in fluid phase α in []. More...
 
Scalar partialPressure (int phaseIdx, int compIdx) const
 The partial pressure of a component in a phase [Pa]. More...
 
Scalar molarVolume (int phaseIdx) const
 The molar volume vmol,α of a fluid phase α in [m3/mol]. More...
 
Scalar density (int phaseIdx) const
 The mass density ρα of the fluid phase α in [kg/m3]. More...
 
Scalar molarDensity (int phaseIdx) const
 The molar density ρmol,α of a fluid phase α in [mol/m3]. More...
 
Scalar temperature (int phaseIdx) const
 The absolute temperature Tα of a fluid phase α in [K]. More...
 
Scalar pressure (int phaseIdx) const
 The pressure pα of a fluid phase α in [Pa]. More...
 
Scalar enthalpy (int phaseIdx) const
 The specific enthalpy hα of a fluid phase α in [J/kg]. More...
 
Scalar internalEnergy (int phaseIdx) const
 The specific internal energy uα of a fluid phase α in [J/kg]. More...
 
Scalar viscosity (int phaseIdx) const
 The dynamic viscosity μα of fluid phase α in [Pas]. More...
 
Scalar temperature () const
 The temperature within the domain [K]. More...
 
Scalar fugacity (int compIdx) const
 The fugacity of a component [Pa]. More...
 
template<class FluidState >
void assign (const FluidState &fs)
 Retrieve all parameters from an arbitrary fluid state. More...
 
void setTemperature (int phaseIdx, Scalar value)
 Set the temperature [K] of a fluid phase. More...
 
void setTemperature (Scalar value)
 Set the temperature [K] of a fluid phase. More...
 
void setPressure (int phaseIdx, Scalar value)
 Set the fluid pressure of a phase [Pa]. More...
 
void setSaturation (int phaseIdx, Scalar value)
 Set the saturation of a phase []. More...
 
void setDensity (int phaseIdx, Scalar value)
 Set the density of a phase [kg/m3]. More...
 
void setMolarDensity (int phaseIdx, Scalar value)
 Set the molar density of a phase [kg/m3]. More...
 
void setEnthalpy (int phaseIdx, Scalar value)
 Set the specific enthalpy of a phase [J/kg]. More...
 
void setViscosity (int phaseIdx, Scalar value)
 Set the dynamic viscosity of a phase [Pas]. More...
 
void setWettingPhase (int phaseIdx)
 Set the index of the most wetting phase. More...
 

Static Public Attributes

static constexpr int numPhases = FluidSystem::numPhases
 
static constexpr int numComponents = FluidSystem::numComponents
 

Protected Attributes

Scalar pressure_ [numPhases] = {}
 zero-initialize all data members with braces syntax More...
 
Scalar saturation_ [numPhases] = {}
 
Scalar density_ [numPhases] = {}
 
Scalar molarDensity_ [numPhases] = {}
 
Scalar enthalpy_ [numPhases] = {}
 
Scalar viscosity_ [numPhases] = {}
 
Scalar temperature_ [numPhases] = {}
 
int wPhaseIdx_ {0}
 

Member Typedef Documentation

◆ Scalar

template<class ScalarType , class FluidSystem >
using Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::Scalar = ScalarType

Constructor & Destructor Documentation

◆ ImmiscibleFluidState() [1/4]

template<class ScalarType , class FluidSystem >
Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::ImmiscibleFluidState ( )
default

◆ ImmiscibleFluidState() [2/4]

template<class ScalarType , class FluidSystem >
template<class FluidState , typename std::enable_if_t<!std::is_same< FluidState, ImmiscibleFluidState >::value, int > = 0>
Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::ImmiscibleFluidState ( const FluidState &  fs)
inlineexplicit

◆ ImmiscibleFluidState() [3/4]

template<class ScalarType , class FluidSystem >
Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::ImmiscibleFluidState ( const ImmiscibleFluidState< ScalarType, FluidSystem > &  fs)
default

◆ ImmiscibleFluidState() [4/4]

template<class ScalarType , class FluidSystem >
Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::ImmiscibleFluidState ( ImmiscibleFluidState< ScalarType, FluidSystem > &&  fs)
default

Member Function Documentation

◆ assign()

template<class ScalarType , class FluidSystem >
template<class FluidState >
void Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::assign ( const FluidState &  fs)
inline
Parameters
fsFluidstate
Note
If the other fluid state object is inconsistent with the thermodynamic equilibrium, the result of this method is undefined.

◆ averageMolarMass()

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::averageMolarMass ( int  phaseIdx) const
inline

The average molar mass is the mean mass of a mole of the fluid at current composition. It is defined as the sum of the component's molar masses weighted by the current mole fraction:

Mα=κMκxακ

Since this is an immiscible fluidstate we simply consider the molarMass of the pure component/phase.

◆ density()

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::density ( int  phaseIdx) const
inline

◆ enthalpy()

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::enthalpy ( int  phaseIdx) const
inline

◆ fugacity() [1/2]

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::fugacity ( int  compIdx) const
inline

This assumes chemical equilibrium.

◆ fugacity() [2/2]

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::fugacity ( int  phaseIdx,
int  compIdx 
) const
inline

The fugacity is defined as: fακ:=Φακxακpα, where Φακ is the fugacity coefficient [76] . The physical meaning of fugacity becomes clear from the equation:

fακ=pαexp{ζακRTα},

where ζακ represents the κ's chemical potential in phase α, R stands for the ideal gas constant, and Tα for the absolute temperature of phase α. Assuming thermal equilibrium, there is a one-to-one mapping between a component's chemical potential ζακ and its fugacity fακ. In this case chemical equilibrium can thus be expressed by:

fκ:=fακ=fβκα,β

To avoid numerical issues with code that assumes miscibility, we return a fugacity of 0 for components which do not mix with the specified phase. (Actually it is undefined, but for finite fugacity coefficients, the only way to get components completely out of a phase is 0 to feed it zero fugacity.)

◆ fugacityCoefficient()

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::fugacityCoefficient ( int  phaseIdx,
int  compIdx 
) const
inline

Since we assume immiscibility, the fugacity coefficients for the components which are not miscible with the phase is infinite. Beware that this will very likely break your code if you don't keep that in mind.

◆ internalEnergy()

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::internalEnergy ( int  phaseIdx) const
inline

The specific internal energy is defined by the relation:

uα=hαpαρα

◆ massFraction()

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::massFraction ( int  phaseIdx,
int  compIdx 
) const
inline

They are set either 1 or 0 in a phase since this is an immiscible fluidstate.

Parameters
phaseIdxthe index of the phase
compIdxthe index of the component

◆ molarDensity()

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::molarDensity ( int  phaseIdx) const
inline

The molar density is defined by the mass density ρα and the mean molar mass Mα:

ρmol,α=ραMα.

◆ molarity()

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::molarity ( int  phaseIdx,
int  compIdx 
) const
inline

This quantity is usually called "molar concentration" or just "concentration", but there are many other (though less common) measures for concentration.

http://en.wikipedia.org/wiki/Concentration

◆ molarVolume()

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::molarVolume ( int  phaseIdx) const
inline

This quantity is the inverse of the molar density.

◆ moleFraction()

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::moleFraction ( int  phaseIdx,
int  compIdx 
) const
inline

The molar fraction xακ is defined as the ratio of the number of molecules of component κ and the total number of molecules of the phase α. They are set either 1 or 0 in a phase since this is an immiscible fluidstate.

Parameters
phaseIdxthe index of the phase
compIdxthe index of the component

◆ operator=() [1/2]

template<class ScalarType , class FluidSystem >
ImmiscibleFluidState & Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::operator= ( const ImmiscibleFluidState< ScalarType, FluidSystem > &  fs)
default

◆ operator=() [2/2]

template<class ScalarType , class FluidSystem >
ImmiscibleFluidState & Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::operator= ( ImmiscibleFluidState< ScalarType, FluidSystem > &&  fs)
default

◆ partialPressure()

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::partialPressure ( int  phaseIdx,
int  compIdx 
) const
inline

To avoid numerical issues with code that assumes miscibility, we return a partial pressure of 0 for components which do not mix with the specified phase. Actually it is undefined.

◆ pressure()

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::pressure ( int  phaseIdx) const
inline

◆ saturation()

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::saturation ( int  phaseIdx) const
inline

The saturation is defined as the pore space occupied by the fluid divided by the total pore space:

Sα:=ϕVαϕV

Parameters
phaseIdxthe index of the phase

◆ setDensity()

template<class ScalarType , class FluidSystem >
void Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::setDensity ( int  phaseIdx,
Scalar  value 
)
inline

◆ setEnthalpy()

template<class ScalarType , class FluidSystem >
void Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::setEnthalpy ( int  phaseIdx,
Scalar  value 
)
inline

◆ setMolarDensity()

template<class ScalarType , class FluidSystem >
void Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::setMolarDensity ( int  phaseIdx,
Scalar  value 
)
inline

◆ setPressure()

template<class ScalarType , class FluidSystem >
void Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::setPressure ( int  phaseIdx,
Scalar  value 
)
inline

◆ setSaturation()

template<class ScalarType , class FluidSystem >
void Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::setSaturation ( int  phaseIdx,
Scalar  value 
)
inline

◆ setTemperature() [1/2]

template<class ScalarType , class FluidSystem >
void Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::setTemperature ( int  phaseIdx,
Scalar  value 
)
inline

◆ setTemperature() [2/2]

template<class ScalarType , class FluidSystem >
void Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::setTemperature ( Scalar  value)
inline

◆ setViscosity()

template<class ScalarType , class FluidSystem >
void Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::setViscosity ( int  phaseIdx,
Scalar  value 
)
inline

◆ setWettingPhase()

template<class ScalarType , class FluidSystem >
void Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::setWettingPhase ( int  phaseIdx)
inline

◆ temperature() [1/2]

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::temperature ( ) const
inline

◆ temperature() [2/2]

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::temperature ( int  phaseIdx) const
inline

◆ viscosity()

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::viscosity ( int  phaseIdx) const
inline

◆ wettingPhase()

template<class ScalarType , class FluidSystem >
int Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::wettingPhase ( ) const
inline

Member Data Documentation

◆ density_

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::density_[numPhases] = {}
protected

◆ enthalpy_

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::enthalpy_[numPhases] = {}
protected

◆ molarDensity_

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::molarDensity_[numPhases] = {}
protected

◆ numComponents

template<class ScalarType , class FluidSystem >
constexpr int Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::numComponents = FluidSystem::numComponents
staticconstexpr

◆ numPhases

template<class ScalarType , class FluidSystem >
constexpr int Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::numPhases = FluidSystem::numPhases
staticconstexpr

◆ pressure_

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::pressure_[numPhases] = {}
protected

◆ saturation_

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::saturation_[numPhases] = {}
protected

◆ temperature_

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::temperature_[numPhases] = {}
protected

◆ viscosity_

template<class ScalarType , class FluidSystem >
Scalar Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::viscosity_[numPhases] = {}
protected

◆ wPhaseIdx_

template<class ScalarType , class FluidSystem >
int Dumux::ImmiscibleFluidState< ScalarType, FluidSystem >::wPhaseIdx_ {0}
protected

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