3.1-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Files | Classes | Typedefs | Enumerations | Functions
Multi-point flux approximation (Mpfa)

A cell-centered finite volume scheme with multi-point flux approximation. More...

Description

A cell-centered finite volume scheme with multi-point flux approximation.

Files

file  mpfa/computetransmissibility.hh
 This file contains free functions to evaluate the transmissibilities associated with flux evaluations across sub-control volume faces in the context of cell-centered Mpfa schemes.
 
file  cellcentered/mpfa/connectivitymap.hh
 Stores the face indices corresponding to the neighbors of an element that contribute to the derivative calculation. Depending on if an mpfa scheme leads to a symmetric/unsymmetric sparsity pattern, the adequate implementation of the connectiviy map is chosen.
 
file  dualgridindexset.hh
 Class for the index sets of the dual grid in mpfa schemes.
 
file  cellcentered/mpfa/elementfluxvariablescache.hh
 The element-local object of flux variables caches.
 
file  cellcentered/mpfa/elementvolumevariables.hh
 The local (stencil) volume variables class for cell centered mpfa models.
 
file  discretization/cellcentered/mpfa/fluxvariablescachefiller.hh
 A helper class to fill the flux variable caches used in the flux constitutive laws.
 
file  discretization/cellcentered/mpfa/fvelementgeometry.hh
 Stencil-local finite volume geometry (scvs and scvfs) for cell-centered mpfa models This builds up the sub control volumes and sub control volume faces for each element in the local scope we are restricting to, e.g. stencil or element.
 
file  discretization/cellcentered/mpfa/fvgridgeometry.hh
 The finite volume geometry (scvs and scvfs) for cell-centered mpfa models on a grid view This builds up the sub control volumes and sub control volume faces for each element of the grid partition.
 
file  cellcentered/mpfa/fvgridgeometrytraits.hh
 Traits class to be used in conjunction with the CCMpfaFVGridGeometry.
 
file  cellcentered/mpfa/gridfluxvariablescache.hh
 Flux variable caches on a gridview.
 
file  gridinteractionvolumeindexsets.hh
 Class for the grid interaction volume index sets of mpfa schemes.
 
file  cellcentered/mpfa/gridvolumevariables.hh
 The grid volume variables class for cell centered mpfa models.
 
file  helper.hh
 Helper class to get data required for mpfa scheme.
 
file  interactionvolumebase.hh
 Base class for interaction volumes of mpfa methods.
 
file  interactionvolumedatahandle.hh
 Data handle class for interaction volumes of mpfa methods. This class is passed to interaction volumes to store the necessary data in it.
 
file  localassemblerbase.hh
 Defines the general interface of classes used for the assembly of the local systems of equations involved in the transmissibility computation in mpfa schemes.
 
file  localassemblerhelper.hh
 A class that contains helper functions as well as functionality which is common to different mpfa schemes and which solely operate on the interaction volume.
 
file  localfacedata.hh
 Data structure holding interaction volume-local information for a grid subb-control volume face embedded in it.
 
file  methods.hh
 The available mpfa schemes in Dumux.
 
file  discretization/cellcentered/mpfa/omethod/interactionvolume.hh
 Class for the interaction volume of the mpfa-o scheme.
 
file  interactionvolumeindexset.hh
 Class for the index set within an interaction volume of the mpfa-o scheme.
 
file  discretization/cellcentered/mpfa/omethod/localassembler.hh
 Class for the assembly of the local systems of equations involved in the transmissibility computaion in an mpfa-o type manner.
 
file  discretization/cellcentered/mpfa/omethod/localsubcontrolentities.hh
 Classes for sub control entities of the mpfa-o method.
 
file  scvgeometryhelper.hh
 Helper class providing functionality to compute the geometry of the interaction-volume local sub-control volumes involved in the mpfa-o scheme.
 
file  staticinteractionvolume.hh
 Class for the interaction volume of the mpfa-o scheme to be used when the sizes are known at compile time, e.g. for non-boundary interaction volumes on structured grids.
 
file  scvgradients.hh
 Class roviding functionality for the reconstruction of the gradients in the sub-control volumes involved in mpfa schemes.
 
file  discretization/cellcentered/mpfa/subcontrolvolumeface.hh
 The sub control volume face.
 
file  tensorlambdafactory.hh
 Helper class to be used to obtain lambda functions for the tensors involved in the laws that describe the different kind of fluxes that occur in DuMuX models (i.e. advective, diffusive and heat conduction fluxes). The local systems appearing in Mpfa methods have to be solved subject to the different tensors. This class returns lambda expressions to be used in the local systems. The specialization for other discretization methods allows compatibility with the TPFA scheme, which could be used for one or more of the tensors.
 

Classes

struct  Dumux::NodalIndexSetDefaultTraits< GV >
 Default traits to be used in conjuntion with the dual grid nodal index set. More...
 
class  Dumux::CCMpfaDualGridNodalIndexSet< T >
 Nodal index set for mpfa schemes, constructed around grid vertices. More...
 
class  Dumux::CCMpfaDualGridIndexSet< NI >
 Class for the index sets of the dual grid in mpfa schemes. More...
 
struct  Dumux::InteractionVolumeDataStorage< PrimaryIV, PrimaryIVDataHandle, SecondaryIV, SecondaryIVDataHandle >
 Structure to store interaction volumes and data handles. More...
 
class  Dumux::CCMpfaElementFluxVariablesCache< GFVC, cachingEnabled >
 The flux variables caches for an element. More...
 
class  Dumux::CCMpfaElementFluxVariablesCache< GFVC, true >
 The flux variables caches for an element with caching enabled. More...
 
class  Dumux::CCMpfaElementFluxVariablesCache< GFVC, false >
 The flux variables caches for an element with caching disabled. More...
 
class  Dumux::CCMpfaElementVolumeVariables< GVV, cachingEnabled >
 The local (stencil) volume variables class for cell centered mpfa models. More...
 
class  Dumux::CCMpfaElementVolumeVariables< GVV, true >
 The local (stencil) volume variables class for cell centered mpfa models with caching. More...
 
class  Dumux::CCMpfaElementVolumeVariables< GVV, false >
 The local (stencil) volume variables class for cell centered tpfa models with caching. More...
 
class  Dumux::CCMpfaFVElementGeometry< GG, enableGridGeometryCache >
 Stencil-local finite volume geometry (scvs and scvfs) for cell-centered mpfa models This builds up the sub control volumes and sub control volume faces for each element in the local scope we are restricting to, e.g. stencil or element. More...
 
class  Dumux::CCMpfaFVElementGeometry< GG, true >
 Stencil-local finite volume geometry (scvs and scvfs) for cell-centered mpfa models Specialization for grid caching enabled. More...
 
class  Dumux::CCMpfaFVElementGeometry< GG, false >
 Stencil-local finite volume geometry (scvs and scvfs) for cell-centered TPFA models Specialization for grid caching disabled. More...
 
class  Dumux::CCMpfaFVGridGeometry< GridView, Traits, enableCache >
 The finite volume geometry (scvs and scvfs) for cell-centered mpfa models on a grid view This builds up the sub control volumes and sub control volume faces. More...
 
class  Dumux::CCMpfaFVGridGeometry< GV, Traits, true >
 The finite volume geometry (scvs and scvfs) for cell-centered mpfa models on a grid view This builds up the sub control volumes and sub control volume faces. More...
 
class  Dumux::CCMpfaFVGridGeometry< GV, Traits, false >
 The finite volume geometry (scvs and scvfs) for cell-centered mpfa models on a grid view This builds up the sub control volumes and sub control volume faces. More...
 
struct  Dumux::CCMpfaFVGridGeometryTraits< GV, NI, PIV, SIV >
 Traits class to be used for the CCMpfaFVGridGeometry. More...
 
struct  Dumux::IvDataHandlePhysicsTraits< ModelTraits >
 Data handle physics traits. More...
 
struct  Dumux::CCMpfaDefaultGridFluxVariablesCacheTraits< P, FVC, FVCF, PIV, SIV, PDH, SDH >
 Data handle physics traits. More...
 
class  Dumux::CCMpfaGridFluxVariablesCache< Traits, cachingEnabled >
 Flux variable caches on a gridview. More...
 
class  Dumux::CCMpfaGridFluxVariablesCache< TheTraits, true >
 Flux variable caches on a gridview with grid caching enabled. More...
 
class  Dumux::CCMpfaGridFluxVariablesCache< TheTraits, false >
 Flux variable caches on a gridview with grid caching disabled. More...
 
class  Dumux::CCMpfaGridInteractionVolumeIndexSets< FVG, NI, PI, SI >
 Class that holds all interaction volume index sets on a grid view. More...
 
class  Dumux::CCMpfaGridVolumeVariables< Problem, VolumeVariables, cachingEnabled, Traits >
 Base class for the grid volume variables. More...
 
class  Dumux::MpfaDimensionHelper< GridGeometry, dim, dimWorld >
 Dimension-specific helper class to get data required for mpfa scheme. More...
 
class  Dumux::MpfaDimensionHelper< GridGeometry, 2, 2 >
 Dimension-specific mpfa helper class for dim == 2 & dimWorld == 2. More...
 
class  Dumux::MpfaDimensionHelper< GridGeometry, 2, 3 >
 Dimension-specific mpfa helper class for dim == 2 & dimWorld == 2. Reuses some functionality of the specialization for dim = dimWorld = 2. More...
 
class  Dumux::MpfaDimensionHelper< GridGeometry, 3, 3 >
 Dimension-specific mpfa helper class for dim == 3 & dimWorld == 3. More...
 
class  Dumux::CCMpfaHelper< GridGeometry >
 Helper class to get the required information on an interaction volume. More...
 
class  Dumux::CCMpfaInteractionVolumeBase< T >
 Base class for the interaction volumes of mpfa methods. It defines the interface and actual implementations should derive from this class. More...
 
class  Dumux::CCMpfaDataHandleBases::SystemMatricesHandle< MVT, size1, size2 >
 Common base class to all handles. Stores arrays of the matrices involved in the interaction volume-local systems of equations. Apart from the transmissibility matrix we store those matrices that are needed e.g. for later face pressure reconstruction. The fluxes as well as the local systems of equations can be expressed as functions of the intermediate unknown face face values \(\bar{\mathbf{u}}\) and the known cell/Dirichlet values \(\mathbf{u}\) using the matrices \(\mathbf{A}\), \(\mathbf{B}\), \(\mathbf{C}\), \(\mathbf{D}\) and the vector of Neumann fluxes \(\mathbf{N}\) as follows: More...
 
class  Dumux::CCMpfaDataHandleBases::SystemVectorsHandle< MVT, size1, size2 >
 Common base class to all handles. Stores arrays of the vectors involved in the interaction volume-local systems of equations. More...
 
class  Dumux::InteractionVolumeDataHandle< MVT, PT >
 Class for the interaction volume data handle. More...
 
class  Dumux::InteractionVolumeAssemblerBase< P, EG, EV >
 Defines the general interface of the local assembler classes for the assembly of the interaction volume-local transmissibility matrix. Specializations have to be provided for the available interaction volume implementations. these should derive from this base class. More...
 
class  Dumux::InteractionVolumeAssemblerHelper
 A class that contains helper functions as well as functionality which is common to different mpfa schemes and which solely operate on the interaction volume. More...
 
class  Dumux::InteractionVolumeLocalFaceData< GridIndexType, LocalIndexType >
 General implementation of a data structure holding interaction volume-local information for a grid sub-control volume face embedded in it. More...
 
struct  Dumux::CCMpfaODefaultInteractionVolumeTraits< NodalIndexSet, Scalar >
 The default interaction volume traits class for the mpfa-o method. This uses dynamic types types for matrices/vectors in order to work on general grids. For interaction volumes known at compile time use the static interaction volume implementation. More...
 
class  Dumux::CCMpfaOInteractionVolume< Traits >
 Forward declaration of the o-method's interaction volume. More...
 
class  Dumux::CCMpfaOInteractionVolumeIndexSet< DualGridNodalIndexSet >
 The interaction volume index set class for the mpfa-o scheme. More...
 
class  Dumux::MpfaOInteractionVolumeAssembler< P, EG, EV >
 Specialization of the interaction volume-local assembler class for the schemes using an mpfa-o type assembly. More...
 
class  Dumux::CCMpfaOInteractionVolumeLocalScv< IvIndexSet, Scalar, dim, dimWorld >
 Class for the interaction volume-local sub-control volume used in the mpfa-o scheme. More...
 
struct  Dumux::CCMpfaOInteractionVolumeLocalScvf< IvIndexSet >
 Class for the interaction volume-local sub-control volume face used in the mpfa-o scheme. More...
 
class  Dumux::CCMpfaOScvGeometryHelper< LocalScvType >
 Helper class providing functionality to compute the geometry of the interaction-volume local sub-control volumes of mpfa-o type. More...
 
struct  Dumux::CCMpfaODefaultStaticInteractionVolumeTraits< NI, S, C, F >
 The default interaction volume traits class for the mpfa-o method with known size of the interaction volumes at compile time. It uses statically sized containers for the iv-local data structures and static matrices and vectors. More...
 
class  Dumux::CCMpfaOStaticInteractionVolume< Traits >
 Forward declaration of the o-method's static interaction volume. More...
 
class  Dumux::CCMpfaScvGradients
 Class roviding functionality for the reconstruction of the gradients in the sub-control volumes involved in mpfa schemes. More...
 
struct  Dumux::CCMpfaDefaultScvfGeometryTraits< GridView >
 Default traits class to be used for the sub-control volume faces for the cell-centered finite volume scheme using MPFA. More...
 
class  Dumux::CCMpfaSubControlVolumeFace< GV, T >
 Class for a sub control volume face in mpfa methods, i.e a part of the boundary of a control volume we compute fluxes on. More...
 
class  Dumux::TensorLambdaFactory< discMethod >
 Helper class to be used to obtain lambda functions for the tensors involved in the laws that describe the different kind of fluxes that occur in DuMuX models (i.e. advective, diffusive and heat conduction fluxes). The local systems appearing in Mpfa methods have to be solved subject to the different tensors. This class returns lambda expressions to be used in the local systems. The specialization for discretization methods other than mpfa allows compatibility with the TPFA scheme, which could be used for one or more of the tensors. The interfaces of the lambdas are chosen such that all involved tensors can be extracted with the given arguments. More...
 

Typedefs

template<class TypeTag >
using Dumux::CCMpfaFluxVariablesCacheFiller = PorousMediumFluxVariablesCacheFiller< TypeTag >
 Helper class to fill the flux variables caches within the interaction volume around a given sub-control volume face. More...
 

Enumerations

enum class  Dumux::MpfaMethods : unsigned int { Dumux::MpfaMethods::oMethod }
 The available mpfa schemes in Dumux. More...
 

Functions

template<class Scv , class Scvf , class Tensor >
Dune::FieldVector< typename Tensor::field_type, Scv::myDimension > Dumux::computeMpfaTransmissibility (const Scv &scv, const Scvf &scvf, const Tensor &T, typename Scv::ctype extrusionFactor)
 Free function to evaluate the Mpfa transmissibility associated with the flux (in the form of flux = T*gradU) across a sub-control volume face stemming from a given sub-control volume with corresponding tensor T. More...
 
template<class Scv , class Scvf , class Tensor , std::enable_if_t< Dune::IsNumber< Tensor >::value, int > = 1>
Dune::FieldVector< Tensor, Scv::myDimension > Dumux::computeMpfaTransmissibility (const Scv &scv, const Scvf &scvf, Tensor t, typename Scv::ctype extrusionFactor)
 Free function to evaluate the Mpfa transmissibility associated with the flux (in the form of flux = T*gradU) across a sub-control volume face stemming from a given sub-control volume with corresponding tensor T, where T is a scalar. More...
 
template<class FVElementGeometry >
std::size_t Dumux::CCMpfa::maxNumBoundaryVolVars (const FVElementGeometry &fvGeometry)
 Computes how many boundary vol vars come into play for flux calculations on an element (for a given element finite volume geometry). This number here is probably always higher than the actually needed number of volume variables. However, we want to make sure it is high enough so that enough memory is reserved in the element volume variables below. More...
 
template<class VolumeVariables , class IndexType , class Problem , class FVElemGeom , class NodalIndexSet >
void Dumux::CCMpfa::addBoundaryVolVarsAtNode (std::vector< VolumeVariables > &volVars, std::vector< IndexType > &volVarIndices, const Problem &problem, const typename FVElemGeom::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElemGeom &fvGeometry, const NodalIndexSet &nodalIndexSet)
 Adds the boundary volume variables found within a given nodal index set into the provided containers and stores the indices associated with them. More...
 
template<class VolumeVariables , class IndexType , class Problem , class FVElemGeom >
void Dumux::CCMpfa::addBoundaryVolVars (std::vector< VolumeVariables > &volVars, std::vector< IndexType > &volVarIndices, const Problem &problem, const typename FVElemGeom::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElemGeom &fvGeometry)
 Adds the boundary volume variables found within the stencil to the provided containers and stores the indices associated with them. More...
 

Typedef Documentation

◆ CCMpfaFluxVariablesCacheFiller

template<class TypeTag >
using Dumux::CCMpfaFluxVariablesCacheFiller = typedef PorousMediumFluxVariablesCacheFiller<TypeTag>

Helper class to fill the flux variables caches within the interaction volume around a given sub-control volume face.

Enumeration Type Documentation

◆ MpfaMethods

enum class Dumux::MpfaMethods : unsigned int
strong

The available mpfa schemes in Dumux.

Enumerator
oMethod 

Function Documentation

◆ addBoundaryVolVars()

template<class VolumeVariables , class IndexType , class Problem , class FVElemGeom >
void Dumux::CCMpfa::addBoundaryVolVars ( std::vector< VolumeVariables > &  volVars,
std::vector< IndexType > &  volVarIndices,
const Problem &  problem,
const typename FVElemGeom::GridGeometry::GridView::template Codim< 0 >::Entity &  element,
const FVElemGeom &  fvGeometry 
)

Adds the boundary volume variables found within the stencil to the provided containers and stores the indices associated with them.

Parameters
volVarsThe container where the volume variables are stored
volVarIndicesThe container where the volume variable indices are stored
problemThe problem containing the Dirichlet boundary conditions
elementThe element to which the finite volume geometry was bound
fvGeometryThe element finite volume geometry

◆ addBoundaryVolVarsAtNode()

template<class VolumeVariables , class IndexType , class Problem , class FVElemGeom , class NodalIndexSet >
void Dumux::CCMpfa::addBoundaryVolVarsAtNode ( std::vector< VolumeVariables > &  volVars,
std::vector< IndexType > &  volVarIndices,
const Problem &  problem,
const typename FVElemGeom::GridGeometry::GridView::template Codim< 0 >::Entity &  element,
const FVElemGeom &  fvGeometry,
const NodalIndexSet &  nodalIndexSet 
)

Adds the boundary volume variables found within a given nodal index set into the provided containers and stores the indices associated with them.

Note
It only adds those boundary vol vars that do not live on scvfs that are inside the bound element. These have to be added separately
Parameters
volVarsThe container where the volume variables are stored
volVarIndicesThe container where the volume variable indices are stored
problemThe problem containing the Dirichlet boundary conditions
elementThe element to which the finite volume geometry is bound
fvGeometryThe element finite volume geometry
nodalIndexSetThe dual grid index set around a node

◆ computeMpfaTransmissibility() [1/2]

template<class Scv , class Scvf , class Tensor >
Dune::FieldVector< typename Tensor::field_type, Scv::myDimension > Dumux::computeMpfaTransmissibility ( const Scv &  scv,
const Scvf &  scvf,
const Tensor &  T,
typename Scv::ctype  extrusionFactor 
)

Free function to evaluate the Mpfa transmissibility associated with the flux (in the form of flux = T*gradU) across a sub-control volume face stemming from a given sub-control volume with corresponding tensor T.

Parameters
scvThe iv-local sub-control volume
scvfThe grid sub-control volume face
TThe tensor living in the scv
extrusionFactorThe extrusion factor of the scv

◆ computeMpfaTransmissibility() [2/2]

template<class Scv , class Scvf , class Tensor , std::enable_if_t< Dune::IsNumber< Tensor >::value, int > = 1>
Dune::FieldVector< Tensor, Scv::myDimension > Dumux::computeMpfaTransmissibility ( const Scv &  scv,
const Scvf &  scvf,
Tensor  t,
typename Scv::ctype  extrusionFactor 
)

Free function to evaluate the Mpfa transmissibility associated with the flux (in the form of flux = T*gradU) across a sub-control volume face stemming from a given sub-control volume with corresponding tensor T, where T is a scalar.

Parameters
scvThe iv-local sub-control volume
scvfThe grid sub-control volume face
tthe scalar quantity living in the scv
extrusionFactorThe extrusion factor of the scv

◆ maxNumBoundaryVolVars()

template<class FVElementGeometry >
std::size_t Dumux::CCMpfa::maxNumBoundaryVolVars ( const FVElementGeometry &  fvGeometry)

Computes how many boundary vol vars come into play for flux calculations on an element (for a given element finite volume geometry). This number here is probably always higher than the actually needed number of volume variables. However, we want to make sure it is high enough so that enough memory is reserved in the element volume variables below.

Todo:
TODO What about non-symmetric schemes? Is there a better way for estimating this?
Parameters
fvGeometrythe element finite volume geometry