My Project
Opm::WaterAirProblem< TypeTag > Class Template Reference

Non-isothermal gas injection problem where a air is injected into a fully water saturated medium. More...

#include <waterairproblem.hh>

Inheritance diagram for Opm::WaterAirProblem< TypeTag >:

Public Member Functions

 WaterAirProblem (Simulator &simulator)
 
void finishInit ()
 
Problem parameters
std::string name () const
 
void endTimeStep ()
 
template<class Context >
const DimMatrix & intrinsicPermeability (const Context &context, unsigned spaceIdx, unsigned timeIdx) const
 
template<class Context >
Scalar porosity (const Context &context, unsigned spaceIdx, unsigned timeIdx) const
 
template<class Context >
const MaterialLawParams & materialLawParams (const Context &context, unsigned spaceIdx, unsigned timeIdx) const
 
template<class Context >
const SolidEnergyLawParams & solidEnergyLawParams (const Context &, unsigned, unsigned) const
 Return the parameters for the energy storage law of the rock. More...
 
template<class Context >
const ThermalConductionLawParams & thermalConductionLawParams (const Context &context, unsigned spaceIdx, unsigned timeIdx) const
 
Boundary conditions
template<class Context >
void boundary (BoundaryRateVector &values, const Context &context, unsigned spaceIdx, unsigned timeIdx) const
 
Volumetric terms
template<class Context >
void initial (PrimaryVariables &values, const Context &context, unsigned spaceIdx, unsigned timeIdx) const
 
template<class Context >
void source (RateVector &rate, const Context &, unsigned, unsigned) const
 

Detailed Description

template<class TypeTag>
class Opm::WaterAirProblem< TypeTag >

Non-isothermal gas injection problem where a air is injected into a fully water saturated medium.

During buoyancy driven upward migration, the gas passes a rectangular high temperature area. This decreases the temperature of the high-temperature area and accelerates gas infiltration due to the lower viscosity of the gas. (Be aware that the pressure of the gas is approximately constant within the lens, so the density of the gas is reduced. This more than off-sets the viscosity increase of the gas at constant density.)

The domain is sized 40 m times 40 m. The rectangular area with increased temperature (380 K) starts at (20 m, 5 m) and ends at (30 m, 35 m).

For the mass conservation equation, no-flow boundary conditions are used on the top and on the bottom of the domain, while free-flow conditions apply on the left and the right boundary. Gas is injected at bottom from 15 m to 25 m at a rate of 0.001 kg/(s m^2) by means if a forced inflow boundary condition.

At the free-flow boundaries, the initial condition for the bulk part of the domain is assumed, i. e. hydrostatic pressure, a gas saturation of zero and a geothermal temperature gradient of 0.03 K/m.

Constructor & Destructor Documentation

◆ WaterAirProblem()

template<class TypeTag >
Opm::WaterAirProblem< TypeTag >::WaterAirProblem ( Simulator &  simulator)
inline

Member Function Documentation

◆ boundary()

template<class TypeTag >
template<class Context >
void Opm::WaterAirProblem< TypeTag >::boundary ( BoundaryRateVector &  values,
const Context &  context,
unsigned  spaceIdx,
unsigned  timeIdx 
) const
inline

For this problem, we inject air at the inlet on the center of the lower domain boundary and use a no-flow condition on the top boundary and a and a free-flow condition on the left and right boundaries of the domain.

◆ endTimeStep()

template<class TypeTag >
void Opm::WaterAirProblem< TypeTag >::endTimeStep ( )
inline

◆ finishInit()

template<class TypeTag >
void Opm::WaterAirProblem< TypeTag >::finishInit ( )
inline

◆ initial()

template<class TypeTag >
template<class Context >
void Opm::WaterAirProblem< TypeTag >::initial ( PrimaryVariables &  values,
const Context &  context,
unsigned  spaceIdx,
unsigned  timeIdx 
) const
inline

For this problem, we set the medium to be fully saturated by liquid water and assume hydrostatic pressure.

◆ intrinsicPermeability()

template<class TypeTag >
template<class Context >
const DimMatrix& Opm::WaterAirProblem< TypeTag >::intrinsicPermeability ( const Context &  context,
unsigned  spaceIdx,
unsigned  timeIdx 
) const
inline

In this problem, the upper part of the domain is sightly less permeable than the lower one.

◆ materialLawParams()

template<class TypeTag >
template<class Context >
const MaterialLawParams& Opm::WaterAirProblem< TypeTag >::materialLawParams ( const Context &  context,
unsigned  spaceIdx,
unsigned  timeIdx 
) const
inline

◆ name()

template<class TypeTag >
std::string Opm::WaterAirProblem< TypeTag >::name ( ) const
inline

◆ porosity()

template<class TypeTag >
template<class Context >
Scalar Opm::WaterAirProblem< TypeTag >::porosity ( const Context &  context,
unsigned  spaceIdx,
unsigned  timeIdx 
) const
inline

◆ solidEnergyLawParams()

template<class TypeTag >
template<class Context >
const SolidEnergyLawParams& Opm::WaterAirProblem< TypeTag >::solidEnergyLawParams ( const Context &  ,
unsigned  ,
unsigned   
) const
inline

Return the parameters for the energy storage law of the rock.

In this case, we assume the rock-matrix to be granite.

◆ source()

template<class TypeTag >
template<class Context >
void Opm::WaterAirProblem< TypeTag >::source ( RateVector &  rate,
const Context &  ,
unsigned  ,
unsigned   
) const
inline

For this problem, the source term of all components is 0 everywhere.

◆ thermalConductionLawParams()

template<class TypeTag >
template<class Context >
const ThermalConductionLawParams& Opm::WaterAirProblem< TypeTag >::thermalConductionLawParams ( const Context &  context,
unsigned  spaceIdx,
unsigned  timeIdx 
) const
inline


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