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

Some simple test problem for the black-oil VCVF discretization inspired by an oil reservoir. More...

#include <reservoirproblem.hh>

Inheritance diagram for Opm::ReservoirProblem< TypeTag >:

Public Member Functions

 ReservoirProblem (Simulator &simulator)
 
void finishInit ()
 
std::string name () const
 
void endEpisode ()
 
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
 
const MaterialLawParams & materialLawParams (unsigned globalIdx) const
 
Problem parameters
template<class Context >
Scalar temperature (const Context &, unsigned, unsigned) const
 
Boundary conditions
template<class Context >
void boundary (BoundaryRateVector &values, const Context &, unsigned, unsigned) const
 
Volumetric terms
template<class Context >
void initial (PrimaryVariables &values, const Context &, unsigned, unsigned) const
 
template<class Context >
void constraints (Constraints &constraintValues, const Context &context, unsigned spaceIdx, unsigned timeIdx) const
 
template<class Context >
void source (RateVector &rate, const Context &, unsigned, unsigned) const
 

Static Public Member Functions

static void registerParameters ()
 

Detailed Description

template<class TypeTag>
class Opm::ReservoirProblem< TypeTag >

Some simple test problem for the black-oil VCVF discretization inspired by an oil reservoir.

The domain is two-dimensional and exhibits a size of 6000m times 60m. Initially, the reservoir is assumed by oil with a bubble point pressure of 20 MPa, which also the initial pressure in the domain. No-flow boundaries are used for all boundaries. The permeability of the lower 10 m is reduced compared to the upper 10 m of the domain witch capillary pressure always being neglected. Three wells are approximated using constraints: Two water-injector wells, one at the lower-left boundary one at the lower-right boundary and one producer well in the upper part of the center of the domain. The pressure for the producer is assumed to be 2/3 of the reservoir pressure, the injector wells use a pressure which is 50% above the reservoir pressure.

Constructor & Destructor Documentation

◆ ReservoirProblem()

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

Member Function Documentation

◆ boundary()

template<class TypeTag >
template<class Context >
void Opm::ReservoirProblem< TypeTag >::boundary ( BoundaryRateVector &  values,
const Context &  ,
unsigned  ,
unsigned   
) const
inline

The reservoir problem uses constraints to approximate extraction and production wells, so all boundaries are no-flow.

◆ constraints()

template<class TypeTag >
template<class Context >
void Opm::ReservoirProblem< TypeTag >::constraints ( Constraints &  constraintValues,
const Context &  context,
unsigned  spaceIdx,
unsigned  timeIdx 
) const
inline

The reservoir problem places two water-injection wells on the lower-left and lower-right of the domain and a production well in the middle. The injection wells are fully water saturated with a higher pressure, the producer is fully oil saturated with a lower pressure than the remaining reservoir.

◆ endEpisode()

template<class TypeTag >
void Opm::ReservoirProblem< TypeTag >::endEpisode ( )
inline

◆ endTimeStep()

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

◆ finishInit()

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

◆ initial()

template<class TypeTag >
template<class Context >
void Opm::ReservoirProblem< TypeTag >::initial ( PrimaryVariables &  values,
const Context &  ,
unsigned  ,
unsigned   
) const
inline

The reservoir problem uses a constant boundary condition for the whole domain.

◆ intrinsicPermeability()

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

For this problem, a layer with high permability is located above one with low permeability.

◆ materialLawParams()

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

◆ name()

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

◆ porosity()

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

◆ registerParameters()

template<class TypeTag >
static void Opm::ReservoirProblem< TypeTag >::registerParameters ( )
inlinestatic

◆ source()

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

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

◆ temperature()

template<class TypeTag >
template<class Context >
Scalar Opm::ReservoirProblem< TypeTag >::temperature ( const Context &  ,
unsigned  ,
unsigned   
) const
inline

The black-oil model assumes constant temperature to define its parameters. Although temperature is thus not really used by the model, it gets written to the VTK output. Who nows, maybe we will need it one day?


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