version 3.11-dev
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
Two-point flux approximation (Tpfa)

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

Description

We continue from the introduction to Cell-centered Finite Volume Methods using as an example the following scalar elliptic problem for the unknown u,

(Λu)=qinΩ(Λu)n=vNonΓNu=uDonΓD,

and recall that after integration of the governing equation over a control volume K and application of the divergence theorem, we replace exact fluxes by numerical approximations FK,σσ(ΛKu)ndΓ.

Two neighboring control volumes, K, L, sharing the face σ

The linear two-point flux approximation is a simple but robust cell-centered finite-volume scheme, which is commonly used in commercial software. The scheme can be derived by using the co-normal decomposition, which reads

ΛKnK,σ=tK,σdK,σ+dK,σ,tK,σ=nK,σTΛKdK,σdK,σTdK,σ,dK,σ=ΛKnK,σtK,σdK,σ,

with the tensor ΛK associated with control volume K, the distance vector dK,σ:=xσxK and dK,σTdK,σ=0 (orthogonality). The same can be done for the conormal ΛLnL,σ. The tK,σ and tL,σ are the transmissibilities associated with the face σ. These transmissibilities are calculated in DuMux with the free function Dumux::computeTpfaTransmissibility.

With the introduced notation, it follows that for each cell K and face σ

uΛKnK,σ=tK,σudK,σ+udK,σ.

For the Tpfa scheme, the second part in the above equation is neglected. By using the fact that udK,σuσuK, the discrete fluxes for face σ are given by

FK,σ=|σ|tK,σ(uσuK),FL,σ=|σ|tL,σ(uσuL).

Enforcing local flux conservation, i.e. FK,σ+FL,σ=0, results in

uσ=tK,σuK+tL,σuLtK,σ+tL,σ.

With this, the fluxes FK,σ are rewritten as

FK,σ=|σ|tK,σtL,σtK,σ+tL,σ(uKuL),FL,σ=|σ|tK,σtL,σtK,σ+tL,σ(uLuK).

By neglecting the orthogonal term, the consistency of the scheme is lost for general grids, where udK,σ0. The consistency is achieved only for so-called K-orthogonal grids for which dK,σ=0. For such grids we deduce that

tK,σtL,σtK,σ+tL,σ=τK,στL,στK,σdL,σ+τL,σdK,σ,

with τK,σ:=nK,σΛKnK,σ,τL,σ:=nL,σΛLnL,σ, dK,σ:=nK,σdK,σ, and dL,σ:=nL,σdL,σ. This reduces, for the case of scalar permeability, to a distance weighted harmonic averaging of permeabilities.


🛠 Edit above doc on GitLab

Files

file  tpfa/computetransmissibility.hh
 Free functions to evaluate the transmissibilities associated with flux evaluations across sub-control volume faces in the context of the cell-centered TPFA scheme.
 
file  discretization/cellcentered/tpfa/elementfluxvariablescache.hh
 The flux variables caches for an element.
 
file  cellcentered/tpfa/elementvolumevariables.hh
 The local (stencil) volume variables class for cell centered tpfa models.
 
file  discretization/cellcentered/tpfa/fvelementgeometry.hh
 Stencil-local finite volume geometry (scvs and scvfs) for cell-centered TPFA 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/tpfa/fvgridgeometry.hh
 The finite volume geometry (scvs and scvfs) for cell-centered TPFA 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  discretization/cellcentered/tpfa/gridfluxvariablescache.hh
 Flux variable caches on a gridview.
 
file  cellcentered/tpfa/gridvolumevariables.hh
 The grid volume variables class for cell centered tpfa models.
 
file  discretization/cellcentered/tpfa/subcontrolvolumeface.hh
 The sub control volume face.
 

Classes

class  Dumux::CCTpfaElementFluxVariablesCache< GFVC, cachingEnabled >
 The flux variables caches for an element. More...
 
class  Dumux::CCTpfaElementFluxVariablesCache< GFVC, true >
 The flux variables caches for an element with caching enabled. More...
 
class  Dumux::CCTpfaElementFluxVariablesCache< GFVC, false >
 The flux variables caches for an element with caching disabled. More...
 
class  Dumux::CCTpfaElementVolumeVariables< GVV, cachingEnabled >
 The local (stencil) volume variables class for cell centered tpfa models. More...
 
class  Dumux::CCTpfaElementVolumeVariables< GVV, true >
 The local (stencil) volume variables class for cell centered tpfa models with caching. More...
 
class  Dumux::CCTpfaElementVolumeVariables< GVV, false >
 The local (stencil) volume variables class for cell centered tpfa models with caching. More...
 
class  Dumux::CCTpfaFVElementGeometry< GG, enableGridGeometryCache >
 Stencil-local finite volume geometry (scvs and scvfs) for cell-centered TPFA 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::CCTpfaFVElementGeometry< GG, true >
 Stencil-local finite volume geometry (scvs and scvfs) for cell-centered TPFA models Specialization for grid caching enabled. More...
 
class  Dumux::CCTpfaFVElementGeometry< GG, false >
 Stencil-local finite volume geometry (scvs and scvfs) for cell-centered TPFA models Specialization for grid caching disabled. More...
 
struct  Dumux::CCTpfaDefaultGridGeometryTraits< GridView, MapperTraits >
 The default traits for the tpfa finite volume grid geometry Defines the scv and scvf types and the mapper types. More...
 
class  Dumux::CCTpfaFVGridGeometry< GridView, enableGridGeometryCache, Traits >
 The finite volume geometry (scvs and scvfs) for cell-centered TPFA models on a grid view This builds up the sub control volumes and sub control volume faces. More...
 
class  Dumux::CCTpfaFVGridGeometry< GV, true, Traits >
 The finite volume geometry (scvs and scvfs) for cell-centered TPFA models on a grid view This builds up the sub control volumes and sub control volume faces. More...
 
class  Dumux::CCTpfaFVGridGeometry< GV, false, Traits >
 The finite volume geometry (scvs and scvfs) for cell-centered TPFA models on a grid view This builds up the sub control volumes and sub control volume faces. More...
 
struct  Dumux::CCTpfaDefaultGridFVCTraits< P, FVC, FVCF >
 Flux variable caches traits. More...
 
class  Dumux::CCTpfaGridFluxVariablesCache< Problem, FluxVariablesCache, FluxVariablesCacheFiller, EnableGridFluxVariablesCache, Traits >
 Flux variable caches on a gridview. More...
 
class  Dumux::CCTpfaGridFluxVariablesCache< P, FVC, FVCF, true, TheTraits >
 Flux variable caches on a gridview with grid caching enabled. More...
 
class  Dumux::CCTpfaGridFluxVariablesCache< P, FVC, FVCF, false, TheTraits >
 Flux variable caches on a gridview with grid caching disabled. More...
 
class  Dumux::CCTpfaGridVolumeVariables< Problem, VolumeVariables, cachingEnabled, Traits >
 Base class for the grid volume variables. More...
 
struct  Dumux::CCTpfaDefaultScvfGeometryTraits< GridView >
 Default traits class to be used for the sub-control volume faces for the cell-centered finite volume scheme using TPFA. More...
 
class  Dumux::CCTpfaSubControlVolumeFace< GV, T >
 The sub control volume face. More...
 

Functions

template<class FVElementGeometry , class Tensor >
Tensor::field_type Dumux::computeTpfaTransmissibility (const FVElementGeometry &fvGeometry, const typename FVElementGeometry::SubControlVolumeFace &scvf, const typename FVElementGeometry::SubControlVolume &scv, const Tensor &T, typename FVElementGeometry::SubControlVolume::Traits::Scalar extrusionFactor)
 Free function to evaluate the Tpfa 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 FVElementGeometry , class Tensor , typename std::enable_if_t< Dune::IsNumber< Tensor >::value, int > = 0>
Tensor Dumux::computeTpfaTransmissibility (const FVElementGeometry &fvGeometry, const typename FVElementGeometry::SubControlVolumeFace &scvf, const typename FVElementGeometry::SubControlVolume &scv, Tensor t, typename FVElementGeometry::SubControlVolumeFace::Traits::Scalar extrusionFactor)
 Free function to evaluate the Tpfa 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 for the case where T is just a scalar. More...
 

Function Documentation

◆ computeTpfaTransmissibility() [1/2]

template<class FVElementGeometry , class Tensor >
Tensor::field_type Dumux::computeTpfaTransmissibility ( const FVElementGeometry &  fvGeometry,
const typename FVElementGeometry::SubControlVolumeFace &  scvf,
const typename FVElementGeometry::SubControlVolume &  scv,
const Tensor &  T,
typename FVElementGeometry::SubControlVolume::Traits::Scalar  extrusionFactor 
)
Parameters
fvGeometryThe element-centered control volume geometry
scvfThe sub-control volume face
scvThe neighboring sub-control volume
TThe tensor living in the neighboring scv
extrusionFactorThe extrusion factor of the scv

◆ computeTpfaTransmissibility() [2/2]

template<class FVElementGeometry , class Tensor , typename std::enable_if_t< Dune::IsNumber< Tensor >::value, int > = 0>
Tensor Dumux::computeTpfaTransmissibility ( const FVElementGeometry &  fvGeometry,
const typename FVElementGeometry::SubControlVolumeFace &  scvf,
const typename FVElementGeometry::SubControlVolume &  scv,
Tensor  t,
typename FVElementGeometry::SubControlVolumeFace::Traits::Scalar  extrusionFactor 
)
Parameters
fvGeometryThe element-centered control volume geometry
scvfThe sub-control volume face
scvThe neighboring sub-control volume
tThe scalar quantity living in the neighboring scv
extrusionFactorThe extrusion factor of the scv