3.2-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag > Class Template Reference

Interactionvolume container for 3-d MPFA L-method. More...

#include <dumux/porousmediumflow/2p/sequential/diffusion/mpfa/lmethod/3dinteractionvolumecontainer.hh>

Inheritance diagram for Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >:
Inheritance graph

Description

template<class TypeTag>
class Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >

Interactionvolume container for 3-d MPFA L-method.

Container class which stores MPFA-interaction-volume information for each vertex of a DUNE grid. Each InteractionVolume object stores the information which is necessary to calculate MPFA transmissibility matrices:

Public Types

using InteractionVolume = GetPropType< TypeTag, Properties::MPFAInteractionVolume >
 Type for storing an MPFA-interaction-volume. (Usually of type FvMpfaL3dInteractionVolume or FvMpfaL3dInteractionVolumeAdaptive) More...
 

Public Member Functions

void update ()
 Updates the interaction volume container. More...
 
void initialize (bool solveTwice=true)
 Initializes the interaction volume container. More...
 
InteractionVolumeinteractionVolume (int vertexIdx)
 Returns an interaction volume. More...
 
InteractionVolumeinteractionVolume (int vertexIdx) const
 Returns an interaction volume. More...
 
GlobalInteractionVolumeVector & interactionVolumesGlobal ()
 Returns the interaction volumes container. More...
 
GlobalInteractionVolumeVector & interactionVolumesGlobal () const
 Returns the interaction volumes container. More...
 
Scalar faceAreaFactor (InteractionVolume &interactionVolume, int elemGlobalIdx, int elemLocalIdx, int localFaceIdx)
 Returns the area weighting factor for the fluxes. More...
 
Scalar faceAreaFactor (int elemGlobalIdx, int indexInInside)
 Returns the area weighting factor for the fluxes. More...
 
Scalar getRealFluxFaceArea (InteractionVolume &interactionVolume, int elemGlobalIdx, int elemLocalIdx, int localFaceIdx)
 Returns the area trough which fluxes are calculated by the MPFA. More...
 
Scalar getRealFluxFaceArea (int elemGlobalIdx, int indexInInside)
 Returns the area trough which fluxes are calculated by the MPFA. More...
 
Scalar getRealFaceArea (InteractionVolume &interactionVolume, int elemGlobalIdx, int elemLocalIdx, int localFaceIdx)
 Returns the face area of the element. More...
 
Scalar getRealFaceArea (int elemGlobalIdx, int indexInInside)
 Returns the face area of the element. More...
 
 FvMpfaL3dInteractionVolumeContainer (Problem &problem)
 Constructs a FvMpfaL3dInteractionVolumeContainer object. More...
 

Protected Member Functions

void storeSubVolumeElements (const Element &element, std::vector< std::vector< int > > &elemVertMap)
 Function for storing the elements of an interaction volume and constructing a map from a vertex to its surrounding elements. More...
 
void storeIntersectionInfo (const Element &element, std::vector< std::vector< int > > &elemVertMap)
 Stores information with respect to DUNE intersections in the interaction volumes. More...
 
void storeInnerInteractionVolume (InteractionVolume &interactionVolume, const Vertex &vertex, bool sameLevel=true)
 Stores additional information which can be constructed for interaction volumes of non-boundary vertices. More...
 
void storeBoundaryInteractionVolume (InteractionVolume &interactionVolume, const Vertex &vertex)
 Stores additional information for interaction volumes of boundary vertices. More...
 
void addRealFluxFaceArea_ (Scalar faceArea, int eIdxGlobal, int fIdx)
 
void addRealFaceArea_ (Scalar faceArea, int eIdxGlobal, int fIdx)
 

Protected Attributes

Problem & problem_
 
GlobalInteractionVolumeVector interactionVolumes_
 
FaceAreaVector realFluxFaceArea_
 

Member Typedef Documentation

◆ InteractionVolume

template<class TypeTag >
using Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::InteractionVolume = GetPropType<TypeTag, Properties::MPFAInteractionVolume>

Type for storing an MPFA-interaction-volume. (Usually of type FvMpfaL3dInteractionVolume or FvMpfaL3dInteractionVolumeAdaptive)

Constructor & Destructor Documentation

◆ FvMpfaL3dInteractionVolumeContainer()

template<class TypeTag >
Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::FvMpfaL3dInteractionVolumeContainer ( Problem &  problem)
inline

Constructs a FvMpfaL3dInteractionVolumeContainer object.

Parameters
problemA problem class object

Member Function Documentation

◆ addRealFaceArea_()

template<class TypeTag >
void Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::addRealFaceArea_ ( Scalar  faceArea,
int  eIdxGlobal,
int  fIdx 
)
inlineprotected

◆ addRealFluxFaceArea_()

template<class TypeTag >
void Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::addRealFluxFaceArea_ ( Scalar  faceArea,
int  eIdxGlobal,
int  fIdx 
)
inlineprotected

◆ faceAreaFactor() [1/2]

template<class TypeTag >
Scalar Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::faceAreaFactor ( int  elemGlobalIdx,
int  indexInInside 
)
inline

Returns the area weighting factor for the fluxes.

Parameters
elemGlobalIdxGlobal index of an element in the DUNE grid
indexInInsideLocal index of the face in the DUNE reference element
Returns
Ratio of the element face area and the flux face area through which fluxes are calculated by the MPFA method (1 if an element does not touches the domain boundary!)

◆ faceAreaFactor() [2/2]

template<class TypeTag >
Scalar Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::faceAreaFactor ( InteractionVolume interactionVolume,
int  elemGlobalIdx,
int  elemLocalIdx,
int  localFaceIdx 
)
inline

Returns the area weighting factor for the fluxes.

Parameters
interactionVolumeAn interaction volume object
elemGlobalIdxGlobal index of an element in the DUNE grid
elemLocalIdxLocal index of an element in the interaction volume
localFaceIdxLocal index of a flux face with respect to an element of the interaction volume
Returns
Ratio of the element face area and the flux face area through which fluxes are calculated by the MPFA method (1 if an element does not touches the domain boundary!)

◆ getRealFaceArea() [1/2]

template<class TypeTag >
Scalar Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::getRealFaceArea ( int  elemGlobalIdx,
int  indexInInside 
)
inline

Returns the face area of the element.

Parameters
elemGlobalIdxGlobal index of an element in the DUNE grid
indexInInsideLocal index of the face in the DUNE reference element
Returns
the face area of the element

◆ getRealFaceArea() [2/2]

template<class TypeTag >
Scalar Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::getRealFaceArea ( InteractionVolume interactionVolume,
int  elemGlobalIdx,
int  elemLocalIdx,
int  localFaceIdx 
)
inline

Returns the face area of the element.

Parameters
interactionVolumeAn interaction volume object
elemGlobalIdxGlobal index of an element in the DUNE grid
elemLocalIdxLocal index of an element in the interaction volume
localFaceIdxLocal index of a flux face with respect to an element of the interaction volume
Returns
the face area of the element

◆ getRealFluxFaceArea() [1/2]

template<class TypeTag >
Scalar Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::getRealFluxFaceArea ( int  elemGlobalIdx,
int  indexInInside 
)
inline

Returns the area trough which fluxes are calculated by the MPFA.

Parameters
elemGlobalIdxGlobal index of an element in the DUNE grid
indexInInsideLocal index of the face in the DUNE reference element
Returns
flux face area (equal to the element face area if an element does not touches the domain boundary!)

◆ getRealFluxFaceArea() [2/2]

template<class TypeTag >
Scalar Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::getRealFluxFaceArea ( InteractionVolume interactionVolume,
int  elemGlobalIdx,
int  elemLocalIdx,
int  localFaceIdx 
)
inline

Returns the area trough which fluxes are calculated by the MPFA.

Parameters
interactionVolumeAn interaction volume object
elemGlobalIdxGlobal index of an element in the DUNE grid
elemLocalIdxLocal index of an element in the interaction volume
localFaceIdxLocal index of a flux face with respect to an element of the interaction volume
Returns
flux face area (equal to the element face area if an element does not touches the domain boundary!)

◆ initialize()

template<class TypeTag >
void Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::initialize ( bool  solveTwice = true)
inline

Initializes the interaction volume container.

Builds and stores the interaction volumes for the entire grid

◆ interactionVolume() [1/2]

template<class TypeTag >
InteractionVolume & Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::interactionVolume ( int  vertexIdx)
inline

Returns an interaction volume.

Parameters
vertexIdxGlobal index of a vertex in the DUNE grid

◆ interactionVolume() [2/2]

template<class TypeTag >
InteractionVolume & Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::interactionVolume ( int  vertexIdx) const
inline

Returns an interaction volume.

Parameters
vertexIdxGlobal index of a vertex in the DUNE grid

◆ interactionVolumesGlobal() [1/2]

template<class TypeTag >
GlobalInteractionVolumeVector & Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::interactionVolumesGlobal ( )
inline

Returns the interaction volumes container.

◆ interactionVolumesGlobal() [2/2]

template<class TypeTag >
GlobalInteractionVolumeVector & Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::interactionVolumesGlobal ( ) const
inline

Returns the interaction volumes container.

◆ storeBoundaryInteractionVolume()

template<class TypeTag >
void Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::storeBoundaryInteractionVolume ( InteractionVolume interactionVolume,
const Vertex &  vertex 
)
protected

Stores additional information for interaction volumes of boundary vertices.

Stores additional information for interaction volumes of boundary vertices:

  • boundary conditions
  • information for flux weighting along boundary faces (see Wolff 2013: http://elib.uni-stuttgart.de/opus/volltexte/2013/8661/, or M. Wolff, Y. Cao, B. Flemisch, R. Helmig, and B. Wohlmuth (2013a). Multi-point flux approximation L-method in 3D: numerical convergence and application to two-phase flow through porous media. In P. Bastian, J. Kraus, R. Scheichl, and M. Wheeler, editors, Simulation of Flow in Porous Media - Applications in Energy and Environment. De Gruyter.)

Assumes a local storage following the DUNE reference element index, which is performed by the function FvMpfaL3dInteractionVolumeContainer<TypeTag>::storeSubVolumeElements(const Element& element, std::vector < std::vector<int> >& elemVertMap).

Parameters
interactionVolumeAn interaction volume object
vertexThe vertex (level dim entity) for which the interaction volume is stored

◆ storeInnerInteractionVolume()

template<class TypeTag >
void Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::storeInnerInteractionVolume ( InteractionVolume interactionVolume,
const Vertex &  vertex,
bool  sameLevel = true 
)
protected

Stores additional information which can be constructed for interaction volumes of non-boundary vertices.

Stores additional information which can be constructed for interaction volumes of non-boundary vertices:

  • edge coordinates (coordinates of edge-continuity-points)
  • flux face areas

Assumes a local storage following the DUNE reference element index, which is performed by the function FvMpfaL3dInteractionVolumeContainer<TypeTag>::storeSubVolumeElements(const Element& element, std::vector < std::vector<int> >& elemVertMap).

Parameters
interactionVolumeAn interaction volume object
vertexThe vertex (level dim entity) for which the interaction volume is stored
sameLevelLevel indicator: true if all elements of an interaction volume are of the same level

◆ storeIntersectionInfo()

template<class TypeTag >
void Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::storeIntersectionInfo ( const Element &  element,
std::vector< std::vector< int > > &  elemVertMap 
)
protected

Stores information with respect to DUNE intersections in the interaction volumes.

Stores information with respect to DUNE intersections, such as normals, in the interaction volumes. Assumes a local storage following the DUNE reference element index, which is performed by the function FvMpfaL3dInteractionVolumeContainer<TypeTag>::storeSubVolumeElements(const Element& element, std::vector < std::vector<int> >& elemVertMap).

Parameters
elementA level 0 Entity of a DUNE grid
elemVertMapVector containing the global vertex-element map

◆ storeSubVolumeElements()

template<class TypeTag >
void Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::storeSubVolumeElements ( const Element &  element,
std::vector< std::vector< int > > &  elemVertMap 
)
protected

Function for storing the elements of an interaction volume and constructing a map from a vertex to its surrounding elements.

Stores an element in all interaction volumes it belongs to. Additionally, the global index of an element is stored at the position of its local index according to a DUNE reference element for every vertex of the element.

Parameters
elementA level 0 Entity of a DUNE grid
elemVertMapVector containing the global vertex-element map

◆ update()

template<class TypeTag >
void Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::update ( )
inline

Updates the interaction volume container.

Rebuilds and stores the interaction volumes for the entire grid

Member Data Documentation

◆ interactionVolumes_

template<class TypeTag >
GlobalInteractionVolumeVector Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::interactionVolumes_
protected

◆ problem_

template<class TypeTag >
Problem& Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::problem_
protected

◆ realFluxFaceArea_

template<class TypeTag >
FaceAreaVector Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag >::realFluxFaceArea_
protected

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