Ewoms::CuvetteProblem< TypeTag > Class Template Reference

Non-isothermal three-phase gas injection problem where a hot gas is injected into a unsaturated porous medium with a residually trapped NAPL contamination. More...

#include <cuvetteproblem.hh>

Inheritance diagram for Ewoms::CuvetteProblem< TypeTag >:

Public Member Functions

 CuvetteProblem (Simulator &simulator)
 
void finishInit ()
 Called by the Ewoms::Simulator in order to initialize the problem. More...
 
Auxiliary methods
bool shouldWriteRestartFile () const
 Returns true if a restart file should be written to disk. More...
 
std::string name () const
 The problem name. More...
 
void endTimeStep ()
 Called by the simulator after each time integration. More...
 
Soil parameters
template<class Context >
Scalar temperature (const Context &context OPM_UNUSED, unsigned spaceIdx OPM_UNUSED, unsigned timeIdx OPM_UNUSED) const
 
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 HeatConductionLawParams & heatConductionParams (const Context &context OPM_UNUSED, unsigned spaceIdx OPM_UNUSED, unsigned timeIdx OPM_UNUSED) const
 
template<class Context >
Scalar heatCapacitySolid (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, unsigned spaceIdx, unsigned timeIdx) const
 Evaluate the boundary conditions for a boundary segment. More...
 
Volumetric terms
template<class Context >
void initial (PrimaryVariables &values, const Context &context, unsigned spaceIdx, unsigned timeIdx) const
 Evaluate the initial value 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...
 

Detailed Description

template<class TypeTag>
class Ewoms::CuvetteProblem< TypeTag >

Non-isothermal three-phase gas injection problem where a hot gas is injected into a unsaturated porous medium with a residually trapped NAPL contamination.

The domain is a quasi-two-dimensional container (cuvette). Its dimensions are 1.5 m x 0.74 m. The top and bottom boundaries are closed, the right boundary is a free-flow boundary allowing fluids to escape. From the left, an injection of a hot water-air mixture is injected. The set-up is aimed at remediating an initial NAPL (Non-Aquoeus Phase Liquid) contamination in the domain. The contamination is initially placed partly into the ambient coarse sand and partly into a fine sand lens.

This simulation can be varied through assigning different boundary conditions at the left boundary as described in Class (2001): Theorie und numerische Modellierung nichtisothermer Mehrphasenprozesse in NAPL-kontaminierten poroesen Medien, Dissertation, Eigenverlag des Instituts fuer Wasserbau

To see the basic effect and the differences to scenarios with pure steam or pure air injection, it is sufficient to simulate this problem to about 2-3 hours simulation time. Complete remediation of the domain requires much longer (about 10 days simulated time).

Constructor & Destructor Documentation

◆ CuvetteProblem()

template<class TypeTag >
Ewoms::CuvetteProblem< TypeTag >::CuvetteProblem ( Simulator simulator)
inline

Member Function Documentation

◆ boundary()

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

Evaluate the boundary conditions for a boundary segment.

Parameters
valuesStores the fluxes over the boundary segment.
contextThe object representing the execution context from which this method is called.
spaceIdxThe local index of the spatial entity which represents the boundary segment.
timeIdxThe index used for the time discretization

◆ endTimeStep()

template<class TypeTag >
void Ewoms::CuvetteProblem< TypeTag >::endTimeStep ( )
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)

◆ finishInit()

template<class TypeTag >
void Ewoms::CuvetteProblem< TypeTag >::finishInit ( )
inline

Called by the Ewoms::Simulator in order to initialize the problem.

If you overload this method don't forget to call ParentType::finishInit()

◆ heatCapacitySolid()

template<class TypeTag >
template<class Context >
Scalar Ewoms::CuvetteProblem< TypeTag >::heatCapacitySolid ( const Context &context  OPM_UNUSED,
unsigned spaceIdx  OPM_UNUSED,
unsigned timeIdx  OPM_UNUSED 
) const
inline

◆ heatConductionParams()

template<class TypeTag >
template<class Context >
const HeatConductionLawParams& Ewoms::CuvetteProblem< TypeTag >::heatConductionParams ( const Context &context  OPM_UNUSED,
unsigned spaceIdx  OPM_UNUSED,
unsigned timeIdx  OPM_UNUSED 
) const
inline

◆ initial()

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

Evaluate the initial value for a control volume.

Parameters
valuesStores the primary variables.
contextThe object representing the execution context from which this method is called.
spaceIdxThe local index of the spatial entity which represents the boundary segment.
timeIdxThe index used for the time discretization

◆ intrinsicPermeability()

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

◆ materialLawParams()

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

◆ name()

template<class TypeTag >
std::string Ewoms::CuvetteProblem< TypeTag >::name ( ) const
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.

◆ porosity()

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

◆ shouldWriteRestartFile()

template<class TypeTag >
bool Ewoms::CuvetteProblem< TypeTag >::shouldWriteRestartFile ( ) const
inline

Returns true if a restart file should be written to disk.

The default behavior is to write one restart file every 10 time steps. This method should be overwritten by the implementation if the default behavior is deemed insufficient.

This problem writes a restart file after every time step.

◆ source()

template<class TypeTag >
template<class Context >
void Ewoms::CuvetteProblem< TypeTag >::source ( RateVector &  rate,
const Context &context  OPM_UNUSED,
unsigned spaceIdx  OPM_UNUSED,
unsigned timeIdx  OPM_UNUSED 
) const
inline

Evaluate the source term for all phases within a given sub-control-volume.

Parameters
rateStores the values of the volumetric creation/anihilition rates of the conserved quantities.
contextThe object representing the execution context from which this method is called.
spaceIdxThe local index of the spatial entity which represents the boundary segment.
timeIdxThe index used for the time discretization

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

◆ temperature()

template<class TypeTag >
template<class Context >
Scalar Ewoms::CuvetteProblem< TypeTag >::temperature ( const Context &context  OPM_UNUSED,
unsigned spaceIdx  OPM_UNUSED,
unsigned timeIdx  OPM_UNUSED 
) const
inline


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