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

Isothermal NAPL infiltration problem where LNAPL contaminates the unsaturated and the saturated groundwater zone. More...

#include <infiltrationproblem.hh>

Inheritance diagram for Opm::InfiltrationProblem< TypeTag >:

Public Member Functions

 InfiltrationProblem (Simulator &simulator)
 
void finishInit ()
 
Problem parameters
bool shouldWriteRestartFile () const
 
std::string name () const
 
void endTimeStep ()
 
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 OPM_UNUSED, unsigned spaceIdx OPM_UNUSED, unsigned timeIdx OPM_UNUSED) const
 
template<class Context >
const MaterialLawParams & materialLawParams (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
 
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 &context OPM_UNUSED, unsigned spaceIdx OPM_UNUSED, unsigned timeIdx OPM_UNUSED) const
 

Detailed Description

template<class TypeTag>
class Opm::InfiltrationProblem< TypeTag >

Isothermal NAPL infiltration problem where LNAPL contaminates the unsaturated and the saturated groundwater zone.

The 2D domain of this test problem is 500 m long and 10 m deep, where the lower part represents a slightly inclined groundwater table, and the upper part is the vadose zone. A LNAPL (Non-Aqueous Phase Liquid which is lighter than water) infiltrates (modelled with a Neumann boundary condition) into the vadose zone. Upon reaching the water table, it spreads (since lighter than water) and migrates on top of the water table in the direction of the slope. On its way through the vadose zone, it leaves a trace of residually trapped immobile NAPL, which can in the following dissolve and evaporate slowly, and eventually be transported by advection and diffusion.

Left and right boundaries are constant hydraulic head boundaries (Dirichlet), Top and bottom are Neumann boundaries, all no-flow except for the small infiltration zone in the upper left part.

Constructor & Destructor Documentation

◆ InfiltrationProblem()

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

Member Function Documentation

◆ boundary()

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

◆ endTimeStep()

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

◆ finishInit()

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

◆ initial()

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

◆ intrinsicPermeability()

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

◆ materialLawParams()

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

◆ name()

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

◆ porosity()

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

◆ shouldWriteRestartFile()

template<class TypeTag >
bool Opm::InfiltrationProblem< TypeTag >::shouldWriteRestartFile ( ) const
inline

This problem writes a restart file after every time step.

◆ source()

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

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

◆ temperature()

template<class TypeTag >
template<class Context >
Scalar Opm::InfiltrationProblem< 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: