version 3.8
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages

The box method is a collocated finite volume scheme with control volumes centered at grid nodes. More...

Description

The so called box method is a control volume finite element method (uniting the advantages of the finite-volume (FV) and finite-element (FE) methods) based on linear nodal basis functions for the trial space.

First, the model domain Ω is discretized (primary grid, see figure). Then, a secondary control volume mesh is constructed by connecting the face barycenters and element barycenters, thus creating a control volume Bv, also called box, with node v in the center. When referring to faces, we mean entities of codimension 1 with respect to the element dimension.

Control volume partitioning for the box method.

Control volumes Bv are partitioned into sub-control volumes (scvs) such that each sub-control volume is the intersection of the control volume with a different primal grid element, Mv=BvM. The faces of Bv are partitioned into sub-control volume faces σk (scvfs) analogously and |σk| denotes the measure of sub-control volume face k. Finally, the integration points xk which lie on the scvfs and the outer normal vectors nσk also need to be defined.

The advantage of the FE method is that unstructured grids can be used, while the FV method is mass conservative. The idea is to apply the FV method (balance of fluxes across the interfaces) to each control volume and to get the fluxes across the scvfs at the integration points xk from the FE approach. Consequently, at each scvf the following expression results:

f(u~(xk))nσk|σk|withu~(xk)=iNi(xk)u^i,

where Ni represents the basis function of the finite element ansatz at node i. The basis functions are defined such that Ni(xj)=δij with δij being the Kronecker delta. In the following, the discretization of the balance equation is going to be derived. From the Reynolds transport theorem follows the general balance equation:

Ωtudx1+Ω(vu+w)ndΓ2=Ωqdx3

f(u)=Ωutdx+Ω[vu+w(u)]F(u)dxΩqdx=0

where the first term describes the changes of entity u within a control volume over time, the second term the advective, diffusive and dispersive fluxes over the interfaces of the control volume, and the third term is a source or sink. Ω denotes the model domain and F(u)=F(v,p)=F(v(x,t),p(x,t)).

Like the finite element method, the box method follows the principle of weighted residuals. In the function f(u) the unknown u is approximated by discrete values at the nodes of the primary grid u^i and linear basis functions Ni yielding an approximate function f(u~). For instance, an unknown vector u{v,p,xκ} (velocity, pressure, mole fraction) is approximated as

p~=iNip^i,v~=iNiv^i,x~κ=iNix^iκ,

p~=iNip^i,v~=iNiv^i,x~κ=iNix^iκ.

Due to the approximation in a discrete function space with linear basis functions, the differential equations are not exactly fulfilled anymore but a residual ε is produced.

f(u)=0f(u~)=ε

Application of the principle of weighted residuals, meaning the multiplication of the residual ε with a weighting function Wj and claiming that this product has to vanish within the whole domain,

ΩεWjdx=!0withjWj=1

yields the following equation:

Ωu~tWjdx+Ω[F(u~)]WjdxΩqWjdx=ΩεWjdx=!0.

For Galerkin schemes (standard finite element method), the weighting functions Wj are chosen the same as the ansatz functions Nj. However, this does not yield a locally mass-conservative discretization scheme. Instead, for the Box method, the weighting functions Wj are chosen as the piece-wise constant functions over a control volume box Bj,

Wj(x)={1xBj0xBj.

Thus, the Box method is a Petrov-Galerkin scheme with weighting functions not belonging to the same function space as the ansatz functions.

Inserting the introduced weighting functions and using the divergence theorem results in

Bju~tdx+BjF(u~)ndΓBjBjqdx=!0,

which has to hold for every control volume Bj.

The first term in previous equation can be written as

Bju~tdx=ddtBjiu^iNidx=iu^itBjNidx.

A technique called mass lumping is applied by assuming that the storage capacity is reduced to the nodes. This means that the integrals Mi,j=BjNidx are replaced by some mass lumped terms Mi,jlump which are defined as

Mi,jlump={|Bj|j=i0ji,

where |Bj| is the volume of the control volume Bj associated with node j. Mass lumping yields

|Bj|u^jt+BjF(u~)ndΓBjQj=0,

where Qj is an approximation (using some quadrature rule) of the integrated source/sink term Bjqdx.

Using an implicit Euler time discretization finally leads to the discrete form

|Bj|u^jn+1u^jnΔt+BjF(u~n+1)ndΓBjQjn+1=0,

which is to be fulfilled for each box Bj.

Files

file  boxgeometryhelper.hh
 Helper class constructing the dual grid finite volume geometries for the box discretizazion method.
 
file  discretization/box/fvelementgeometry.hh
 Base class for the local finite volume geometry for box models This builds up the sub control volumes and sub control volume faces for an element.
 
file  discretization/box/fvgridgeometry.hh
 Base class for the finite volume geometry vector for box models This builds up the sub control volumes and sub control volume faces for each element of the grid partition.
 
file  scvftoscvboundarytypes.hh
 Convert intersection boundary types to vertex boundary types.
 
file  discretization/box/subcontrolvolume.hh
 the sub control volume for the box scheme
 
file  discretization/box/subcontrolvolumeface.hh
 Base class for a sub control volume face.
 

Classes

class  Dumux::BoxFVElementGeometry< GG, enableGridGeometryCache >
 Base class for the finite volume geometry vector for box models This builds up the sub control volumes and sub control volume faces for each element. More...
 
struct  Dumux::BoxDefaultGridGeometryTraits< GridView, MapperTraits >
 The default traits for the box finite volume grid geometry Defines the scv and scvf types and the mapper types. More...
 
class  Dumux::BoxFVGridGeometry< Scalar, GridView, enableGridGeometryCache, Traits >
 Base class for the finite volume geometry vector for box schemes This builds up the sub control volumes and sub control volume faces. More...
 
class  Dumux::BoxFVGridGeometry< Scalar, GV, true, Traits >
 Base class for the finite volume geometry vector for box schemes This builds up the sub control volumes and sub control volume faces. More...
 
class  Dumux::BoxFVGridGeometry< Scalar, GV, false, Traits >
 Base class for the finite volume geometry vector for box schemes This builds up the sub control volumes and sub control volume faces. More...
 
class  Dumux::ScvfToScvBoundaryTypes< BoundaryTypes, DiscretizationMethod >
 Convert intersection boundary types to vertex boundary types. More...
 
struct  Dumux::BoxDefaultScvGeometryTraits< GridView >
 Default traits class to be used for the sub-control volumes for the box scheme. More...
 
class  Dumux::BoxSubControlVolume< GV, T >
 the sub control volume for the box scheme More...
 
struct  Dumux::BoxDefaultScvfGeometryTraits< GridView >
 Default traits class to be used for the sub-control volume faces for the box scheme. More...
 
class  Dumux::BoxSubControlVolumeFace< GV, T >
 Class for a sub control volume face in the box method, i.e a part of the boundary of a sub control volume we compute fluxes on. We simply use the base class here. More...