Some simple test problem for the black-oil VCVF discretization inspired by an oil reservoir. More...
#include <reservoirproblem.hh>
Public Member Functions | |
ReservoirProblem (Simulator &simulator) | |
void | finishInit () |
Called by the Ewoms::Simulator in order to initialize the problem. More... | |
std::string | name () const |
The problem name. More... | |
void | endEpisode () |
Called when the end of an simulation episode is reached. More... | |
void | endTimeStep () |
Called by the simulator after each time integration. More... | |
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 &context OPM_UNUSED, unsigned spaceIdx OPM_UNUSED, unsigned timeIdx OPM_UNUSED) const |
Boundary conditions | |
template<class Context > | |
void | boundary (BoundaryRateVector &values, const Context &context OPM_UNUSED, unsigned spaceIdx OPM_UNUSED, unsigned timeIdx OPM_UNUSED) const |
Evaluate the boundary conditions for a boundary segment. More... | |
Volumetric terms | |
template<class Context > | |
void | initial (PrimaryVariables &values, const Context &context OPM_UNUSED, unsigned spaceIdx OPM_UNUSED, unsigned timeIdx OPM_UNUSED) const |
Evaluate the initial value for a control volume. More... | |
template<class Context > | |
void | constraints (Constraints &constraints, const Context &context, unsigned spaceIdx, unsigned timeIdx) const |
Evaluate the constraints for a control volume. More... | |
template<class Context > | |
void | source (RateVector &rate, const Context &context OPM_UNUSED, unsigned spaceIdx OPM_UNUSED, unsigned timeIdx OPM_UNUSED) const |
Evaluate the source term for all phases within a given sub-control-volume. More... | |
Static Public Member Functions | |
static void | registerParameters () |
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.
|
inline |
|
inline |
Evaluate the boundary conditions for a boundary segment.
values | Stores the fluxes over the boundary segment. |
context | The object representing the execution context from which this method is called. |
spaceIdx | The local index of the spatial entity which represents the boundary segment. |
timeIdx | The index used for the time discretization |
The reservoir problem uses constraints to approximate extraction and production wells, so all boundaries are no-flow.
|
inline |
Evaluate the constraints for a control volume.
constraints | Stores the values of the primary variables at a given spatial and temporal location. |
context | The object representing the execution context from which this method is called. |
spaceIdx | The local index of the spatial entity which represents the boundary segment. |
timeIdx | The index used for the time discretization |
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.
|
inline |
Called when the end of an simulation episode is reached.
Typically, a new episode is started in this method.
|
inline |
Called by the simulator after each time integration.
This method is intended to do some post processing of the solution. (e.g., some additional output)
|
inline |
Called by the Ewoms::Simulator in order to initialize the problem.
If you overload this method don't forget to call ParentType::finishInit()
|
inline |
Evaluate the initial value for a control volume.
values | Stores the primary variables. |
context | The object representing the execution context from which this method is called. |
spaceIdx | The local index of the spatial entity which represents the boundary segment. |
timeIdx | The index used for the time discretization |
The reservoir problem uses a constant boundary condition for the whole domain.
|
inline |
For this problem, a layer with high permability is located above one with low permeability.
|
inline |
|
inline |
The problem name.
This is used as a prefix for files generated by the simulation. It is highly recommend to overwrite this method in the concrete problem which is simulated.
|
inline |
|
inlinestatic |
|
inline |
Evaluate the source term for all phases within a given sub-control-volume.
rate | Stores the values of the volumetric creation/anihilition rates of the conserved quantities. |
context | The object representing the execution context from which this method is called. |
spaceIdx | The local index of the spatial entity which represents the boundary segment. |
timeIdx | The index used for the time discretization |
For this problem, the source term of all components is 0 everywhere.
|
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?