version 3.10-dev
Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy > Class Template Reference

A compositional two-phase fluid system with a liquid and a gaseous phase and \(H_2O\), \(Air\) and \(S\) (dissolved minerals) as components. More...

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

Inheritance diagram for Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >:

Description

template<class Scalar, class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
class Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >
Note
This fluidsystem is applied by default with the tabulated version of water of the IAPWS-formulation.

Public Types

using H2O = H2Otype
 export the involved components More...
 
using Air = Components::Air< Scalar >
 
using NaCl = Components::NaCl< Scalar >
 
using Brine = Dumux::FluidSystems::Brine< Scalar, H2Otype >
 export the underlying brine fluid system for the liquid phase More...
 
using H2O_Air = BinaryCoeff::H2O_Air
 export the binary coefficients between air and water More...
 
using ParameterCache = NullParameterCache
 the type of parameter cache objects More...
 

Static Public Member Functions

static std::string phaseName (int phaseIdx)
 Return the human readable name of a fluid phase. More...
 
static constexpr bool isMiscible ()
 Returns whether the fluids are miscible. More...
 
static constexpr bool isGas (int phaseIdx)
 Return whether a phase is gaseous. More...
 
static bool isIdealMixture (int phaseIdx)
 Returns true if and only if a fluid phase is assumed to be an ideal mixture. More...
 
static constexpr bool isCompressible (int phaseIdx)
 Returns true if and only if a fluid phase is assumed to be compressible. More...
 
static bool isIdealGas (int phaseIdx)
 Returns true if and only if a fluid phase is assumed to be an ideal gas. More...
 
static constexpr int getMainComponent (int phaseIdx)
 Get the main component of a given phase if possible. More...
 
static std::string componentName (int compIdx)
 Return the human readable name of a component. More...
 
static Scalar molarMass (int compIdx)
 Return the molar mass of a component in \(\mathrm{[kg/mol]}\). More...
 
template<class FluidState >
static Scalar vaporPressure (const FluidState &fluidState, int compIdx)
 Vapor pressure of a component \(\mathrm{[Pa]}\). More...
 
static void init ()
 Initialize the fluid system's static parameters generically. More...
 
static void init (Scalar tempMin, Scalar tempMax, unsigned nTemp, Scalar pressMin, Scalar pressMax, unsigned nPress)
 Initialize the fluid system's static parameters using problem specific temperature and pressure ranges. More...
 
template<class FluidState >
static Scalar density (const FluidState &fluidState, int phaseIdx)
 Given a phase's composition, temperature, pressure, and the partial pressures of all components, return its density \(\mathrm{[kg/m^3]}\). 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 viscosity (const FluidState &fluidState, int phaseIdx)
 Calculate the dynamic viscosity of a fluid phase \(\mathrm{[Pa*s]}\). More...
 
template<class FluidState >
static Scalar fugacityCoefficient (const FluidState &fluidState, int phaseIdx, int compIdx)
 Returns the fugacity coefficient \(\mathrm{[-]}\) of a component in a phase. 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 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 enthalpy (const FluidState &fluidState, int phaseIdx)
 Given a phase's composition, temperature and pressure, return its specific enthalpy \(\mathrm{[J/kg]}\). More...
 
template<class FluidState >
static Scalar componentEnthalpy (const FluidState &fluidState, int phaseIdx, int componentIdx)
 Returns the specific enthalpy \(\mathrm{[J/kg]}\) of a component in a specific phase. More...
 
template<class FluidState >
static Scalar thermalConductivity (const FluidState &fluidState, int phaseIdx)
 Thermal conductivity of a fluid phase \(\mathrm{[W/(m K)]}\). More...
 
template<class FluidState >
static Scalar heatCapacity (const FluidState &fluidState, int phaseIdx)
 Specific isobaric heat capacity of a fluid phase. \(\mathrm{[J/(kg*K)}\). More...
 

Static Public Attributes

static constexpr int numPhases = 2
 
static constexpr int numComponents = 3
 
static constexpr int liquidPhaseIdx = 0
 
static constexpr int gasPhaseIdx = 1
 
static constexpr int phase0Idx = liquidPhaseIdx
 
static constexpr int phase1Idx = gasPhaseIdx
 
static constexpr int H2OIdx = 0
 
static constexpr int AirIdx = 1
 
static constexpr int NaClIdx = 2
 
static constexpr int comp0Idx = H2OIdx
 
static constexpr int comp1Idx = AirIdx
 
static constexpr int comp2Idx = NaClIdx
 

Member Typedef Documentation

◆ Air

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
using Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::Air = Components::Air<Scalar>

◆ Brine

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
using Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::Brine = Dumux::FluidSystems::Brine<Scalar, H2Otype>

◆ H2O

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
using Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::H2O = H2Otype

◆ H2O_Air

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
using Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::H2O_Air = BinaryCoeff::H2O_Air

◆ NaCl

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
using Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::NaCl = Components::NaCl<Scalar>

◆ ParameterCache

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
using Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::ParameterCache = NullParameterCache

Member Function Documentation

◆ binaryDiffusionCoefficient()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
template<class FluidState >
static Scalar Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::binaryDiffusionCoefficient ( const FluidState &  fluidState,
int  phaseIdx,
int  compIIdx,
int  compJIdx 
)
inlinestatic
Parameters
fluidStateThe fluid state
phaseIdxIndex of the fluid phase
compIIdxIndex of the component i
compJIdxIndex of the component j

◆ componentEnthalpy()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
template<class FluidState >
static Scalar Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::componentEnthalpy ( const FluidState &  fluidState,
int  phaseIdx,
int  componentIdx 
)
inlinestatic
Parameters
fluidStateThe fluid state
phaseIdxThe index of the phase
componentIdxThe index of the component

◆ componentName()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
static std::string Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::componentName ( int  compIdx)
inlinestatic
Parameters
compIdxThe index of the component to consider

◆ density()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
template<class FluidState >
static Scalar Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::density ( const FluidState &  fluidState,
int  phaseIdx 
)
inlinestatic
Parameters
fluidStatethe fluid state
phaseIdxindex of the phase

Equation given in:

  • Batzle & Wang (1992) [12]
  • cited by: Bachu & Adams (2002) "Equations of State for basin geofluids" [3]

◆ diffusionCoefficient()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
template<class FluidState >
static Scalar Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::diffusionCoefficient ( const FluidState &  fluidState,
int  phaseIdx,
int  compIdx 
)
inlinestatic

Molecular diffusion of a component \(\mathrm{\kappa}\) is caused by a gradient of the chemical potential and follows the law

\[ J = - D \nabla \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.

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

◆ enthalpy()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
template<class FluidState >
static Scalar Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::enthalpy ( const FluidState &  fluidState,
int  phaseIdx 
)
inlinestatic
Parameters
fluidStateThe fluid state
phaseIdxThe index of the phase

See: Class 2000 Theorie und numerische Modellierung nichtisothermer Mehrphasenprozesse in NAPL-kontaminierten porösen Medien Chapter 2.1.13 Innere Energie, Wäremekapazität, Enthalpie [22]

Formula (2.42): the specific enthalpy of a gas phase result from the sum of (enthalpies*mass fraction) of the components For the calculation of enthalpy of brine we refer to (Michaelides 1981)

Note
For the phase enthalpy the contribution of gas-molecules in the liquid phase is neglected. This contribution is probably not big. Somebody would have to find out the enthalpy of solution for this system. ...

◆ fugacityCoefficient()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
template<class FluidState >
static Scalar Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::fugacityCoefficient ( const FluidState &  fluidState,
int  phaseIdx,
int  compIdx 
)
inlinestatic
Parameters
fluidStateThe fluid state
phaseIdxIndex of the phase
compIdxIndex of the component

The fugacity coefficient \(\mathrm{\phi^\kappa_\alpha}\) of component \(\mathrm{\kappa}\) in phase \(\mathrm{\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 \]

where \(\mathrm{p_\alpha}\) is the pressure of the fluid phase.

For liquids with very low miscibility this boils down to the Henry constant for the solutes and the saturated vapor pressure both divided by phase pressure.

◆ getMainComponent()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
static constexpr int Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::getMainComponent ( int  phaseIdx)
inlinestaticconstexpr
Parameters
phaseIdxThe index of the fluid phase to consider

◆ heatCapacity()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
template<class FluidState >
static Scalar Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::heatCapacity ( const FluidState &  fluidState,
int  phaseIdx 
)
inlinestatic
Parameters
fluidStateAn arbitrary fluid state
phaseIdxThe index of the fluid phase to consider
Note
We assume an ideal mixture for the gas-phase specific isobaric heat capacity, as a first approximation. In porous media, gas-phase heat capacities are, due to the usually low densities of gases, negligible anyway. A better implementation might be relevant for free-flow systems.

◆ init() [1/2]

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
static void Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::init ( )
inlinestatic

If a tabulated H2O component is used, we do our best to create tables that always work.

◆ init() [2/2]

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
static void Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::init ( Scalar  tempMin,
Scalar  tempMax,
unsigned  nTemp,
Scalar  pressMin,
Scalar  pressMax,
unsigned  nPress 
)
inlinestatic
Parameters
tempMinThe minimum temperature used for tabulation of water \(\mathrm{[K]}\)
tempMaxThe maximum temperature used for tabulation of water \(\mathrm{[K]}\)
nTempThe number of ticks on the temperature axis of the table of water
pressMinThe minimum pressure used for tabulation of water \(\mathrm{[Pa]}\)
pressMaxThe maximum pressure used for tabulation of water \(\mathrm{[Pa]}\)
nPressThe number of ticks on the pressure axis of the table of water

◆ isCompressible()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
static constexpr bool Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::isCompressible ( int  phaseIdx)
inlinestaticconstexpr

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

◆ isGas()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
static constexpr bool Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::isGas ( int  phaseIdx)
inlinestaticconstexpr
Parameters
phaseIdxThe index of the fluid phase to consider

◆ isIdealGas()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
static bool Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::isIdealGas ( int  phaseIdx)
inlinestatic
Parameters
phaseIdxThe index of the fluid phase to consider

◆ isIdealMixture()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
static bool Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::isIdealMixture ( int  phaseIdx)
inlinestatic

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 Raoult'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.

Parameters
phaseIdxThe index of the fluid phase to consider

◆ isMiscible()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
static constexpr bool Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::isMiscible ( )
inlinestaticconstexpr

◆ molarDensity()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
template<class FluidState >
static Scalar Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::molarDensity ( const FluidState &  fluidState,
int  phaseIdx 
)
inlinestatic
Parameters
fluidStateThe fluid state
phaseIdxIndex of the fluid phase

◆ molarMass()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
static Scalar Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::molarMass ( int  compIdx)
inlinestatic
Parameters
compIdxThe index of the component to consider

◆ phaseName()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
static std::string Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::phaseName ( int  phaseIdx)
inlinestatic
Parameters
phaseIdxindex of the phase

◆ thermalConductivity()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
template<class FluidState >
static Scalar Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::thermalConductivity ( const FluidState &  fluidState,
int  phaseIdx 
)
inlinestatic
Parameters
fluidStateAn arbitrary fluid state
phaseIdxThe index of the fluid phase to consider
Note
We assume an ideal mixture for the gas-phase thermal conductivity, as a first approximation. In porous media, gas-phase thermal conductivities are negligible, as they are orders of magnitude lower than the thermal conductivity in solid and liquids (gas: 0.0x compared to solid: x.). However, moisture can have a significant influce on the thermal conductivity of moist air, see e.g. [14], which could be relevant for free-flow systems.

◆ vaporPressure()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
template<class FluidState >
static Scalar Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::vaporPressure ( const FluidState &  fluidState,
int  compIdx 
)
inlinestatic
Parameters
fluidStateThe fluid state
compIdxThe index of the component to consider

◆ viscosity()

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
template<class FluidState >
static Scalar Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::viscosity ( const FluidState &  fluidState,
int  phaseIdx 
)
inlinestatic
Parameters
fluidStateAn arbitrary fluid state
phaseIdxThe index of the fluid phase to consider
Note
For the viscosity of the phases the contribution of the minor component is neglected. This contribution is probably not big, but somebody would have to find out its influence.

Member Data Documentation

◆ AirIdx

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
constexpr int Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::AirIdx = 1
staticconstexpr

◆ comp0Idx

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
constexpr int Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::comp0Idx = H2OIdx
staticconstexpr

◆ comp1Idx

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
constexpr int Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::comp1Idx = AirIdx
staticconstexpr

◆ comp2Idx

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
constexpr int Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::comp2Idx = NaClIdx
staticconstexpr

◆ gasPhaseIdx

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
constexpr int Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::gasPhaseIdx = 1
staticconstexpr

◆ H2OIdx

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
constexpr int Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::H2OIdx = 0
staticconstexpr

◆ liquidPhaseIdx

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
constexpr int Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::liquidPhaseIdx = 0
staticconstexpr

◆ NaClIdx

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
constexpr int Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::NaClIdx = 2
staticconstexpr

◆ numComponents

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
constexpr int Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::numComponents = 3
staticconstexpr

◆ numPhases

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
constexpr int Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::numPhases = 2
staticconstexpr

◆ phase0Idx

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
constexpr int Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::phase0Idx = liquidPhaseIdx
staticconstexpr

◆ phase1Idx

template<class Scalar , class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>, class Policy = BrineAirDefaultPolicy<>>
constexpr int Dumux::FluidSystems::BrineAir< Scalar, H2Otype, Policy >::phase1Idx = gasPhaseIdx
staticconstexpr

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