This class calculates gradients of arbitrary quantities at flux integration points for the vertex centered finite volume (VCFV) discretization. More...

#include <vcfvgradientcalculator.hh>

Inheritance diagram for Ewoms::VcfvGradientCalculator< TypeTag >:
Inheritance graph

Public Member Functions

template<bool prepareValues = true, bool prepareGradients = true>
void prepare (const ElementContext &elemCtx, int timeIdx)
 Precomputes the common values to calculate gradients and values of quantities at any flux approximation point. More...
 
template<class QuantityCallback , class Dummy = int>
auto calculateValue (const ElementContext &elemCtx, typename std::enable_if<!GET_PROP_VALUE(TypeTag, UseTwoPointGradients), Dummy >::type fapIdx, const QuantityCallback &quantityCallback) const -> typename std::remove_reference< typename QuantityCallback::ResultType >::type
 Calculates the value of an arbitrary quantity at any interior flux approximation point. More...
 
template<class QuantityCallback , class Dummy = int>
auto calculateValue (const ElementContext &elemCtx, typename std::enable_if< GET_PROP_VALUE(TypeTag, UseTwoPointGradients), Dummy >::type fapIdx, const QuantityCallback &quantityCallback) const -> decltype(ParentType::calculateValue(elemCtx, fapIdx, quantityCallback))
 
template<class QuantityCallback , class EvalDimVector , class Dummy = int>
void calculateGradient (EvalDimVector &quantityGrad, const ElementContext &elemCtx, typename std::enable_if<!GET_PROP_VALUE(TypeTag, UseTwoPointGradients), Dummy >::type fapIdx, const QuantityCallback &quantityCallback) const
 Calculates the gradient of an arbitrary quantity at any flux approximation point. More...
 
template<class QuantityCallback , class EvalDimVector , class Dummy = int>
void calculateGradient (EvalDimVector &quantityGrad, const ElementContext &elemCtx, typename std::enable_if< GET_PROP_VALUE(TypeTag, UseTwoPointGradients), Dummy >::type fapIdx, const QuantityCallback &quantityCallback) const
 
template<class QuantityCallback >
auto calculateBoundaryValue (const ElementContext &elemCtx, int fapIdx, const QuantityCallback &quantityCallback) -> decltype(ParentType::calculateBoundaryValue(elemCtx, fapIdx, quantityCallback))
 Calculates the value of an arbitrary quantity at any flux approximation point on the grid boundary. More...
 
template<class QuantityCallback , class EvalDimVector >
void calculateBoundaryGradient (EvalDimVector &quantityGrad, const ElementContext &elemCtx, int fapIdx, const QuantityCallback &quantityCallback) const
 Calculates the gradient of an arbitrary quantity at any flux approximation point on the boundary. More...
 

Static Public Member Functions

static LocalFiniteElementCache & localFiniteElementCache ()
 

Detailed Description

template<class TypeTag>
class Ewoms::VcfvGradientCalculator< TypeTag >

This class calculates gradients of arbitrary quantities at flux integration points for the vertex centered finite volume (VCFV) discretization.

Member Function Documentation

template<class TypeTag >
template<class QuantityCallback , class EvalDimVector >
void Ewoms::VcfvGradientCalculator< TypeTag >::calculateBoundaryGradient ( EvalDimVector &  quantityGrad,
const ElementContext &  elemCtx,
int  fapIdx,
const QuantityCallback &  quantityCallback 
) const
inline

Calculates the gradient of an arbitrary quantity at any flux approximation point on the boundary.

Boundary gradients are always calculated using the two-point approximation.

Parameters
elemCtxThe current execution context
fapIdxThe local index of the flux approximation point in the current element's stencil.
quantityCallbackA callable object returning the value of the quantity at an index of a degree of freedom
template<class TypeTag >
template<class QuantityCallback >
auto Ewoms::VcfvGradientCalculator< TypeTag >::calculateBoundaryValue ( const ElementContext &  elemCtx,
int  fapIdx,
const QuantityCallback &  quantityCallback 
) -> decltype(ParentType::calculateBoundaryValue(elemCtx, fapIdx, quantityCallback))
inline

Calculates the value of an arbitrary quantity at any flux approximation point on the grid boundary.

Boundary values are always calculated using the two-point approximation.

Parameters
elemCtxThe current execution context
fapIdxThe local index of the flux approximation point in the current element's stencil.
quantityCallbackA callable object returning the value of the quantity at an index of a degree of freedom
template<class TypeTag >
template<class QuantityCallback , class EvalDimVector , class Dummy = int>
void Ewoms::VcfvGradientCalculator< TypeTag >::calculateGradient ( EvalDimVector &  quantityGrad,
const ElementContext &  elemCtx,
typename std::enable_if<!GET_PROP_VALUE(TypeTag, UseTwoPointGradients), Dummy >::type  fapIdx,
const QuantityCallback &  quantityCallback 
) const
inline

Calculates the gradient of an arbitrary quantity at any flux approximation point.

Parameters
elemCtxThe current execution context
fapIdxThe local index of the flux approximation point in the current element's stencil.
quantityCallbackA callable object returning the value of the quantity at an index of a degree of freedom
template<class TypeTag >
template<class QuantityCallback , class EvalDimVector , class Dummy = int>
void Ewoms::VcfvGradientCalculator< TypeTag >::calculateGradient ( EvalDimVector &  quantityGrad,
const ElementContext &  elemCtx,
typename std::enable_if< GET_PROP_VALUE(TypeTag, UseTwoPointGradients), Dummy >::type  fapIdx,
const QuantityCallback &  quantityCallback 
) const
inline
template<class TypeTag >
template<class QuantityCallback , class Dummy = int>
auto Ewoms::VcfvGradientCalculator< TypeTag >::calculateValue ( const ElementContext &  elemCtx,
typename std::enable_if<!GET_PROP_VALUE(TypeTag, UseTwoPointGradients), Dummy >::type  fapIdx,
const QuantityCallback &  quantityCallback 
) const -> typename std::remove_reference<typename QuantityCallback::ResultType>::type
inline

Calculates the value of an arbitrary quantity at any interior flux approximation point.

Parameters
elemCtxThe current execution context
fapIdxThe local index of the flux approximation point in the current element's stencil.
quantityCallbackA callable object returning the value of the quantity at an index of a degree of freedom
template<class TypeTag >
template<class QuantityCallback , class Dummy = int>
auto Ewoms::VcfvGradientCalculator< TypeTag >::calculateValue ( const ElementContext &  elemCtx,
typename std::enable_if< GET_PROP_VALUE(TypeTag, UseTwoPointGradients), Dummy >::type  fapIdx,
const QuantityCallback &  quantityCallback 
) const -> decltype(ParentType::calculateValue(elemCtx, fapIdx, quantityCallback))
inline
template<class TypeTag >
static LocalFiniteElementCache& Ewoms::VcfvGradientCalculator< TypeTag >::localFiniteElementCache ( )
inlinestatic
template<class TypeTag >
template<bool prepareValues = true, bool prepareGradients = true>
void Ewoms::VcfvGradientCalculator< TypeTag >::prepare ( const ElementContext &  elemCtx,
int  timeIdx 
)
inline

Precomputes the common values to calculate gradients and values of quantities at any flux approximation point.

Parameters
elemCtxThe current execution context

References GET_PROP_VALUE.


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