This class calculates gradients of arbitrary quantities at flux integration points using first order finite elements ansatz functions.
More...
|
| template<bool prepareValues = true, bool prepareGradients = true> |
| void | prepare (const ElementContext &elemCtx, unsigned timeIdx) |
| | Precomputes the common values to calculate gradients and values of quantities at any flux approximation point.
|
| template<class QuantityCallback> |
| auto | calculateScalarValue (const ElementContext &elemCtx, unsigned fapIdx, const QuantityCallback &quantityCallback) const -> std::remove_reference_t< typename QuantityCallback::ResultType > |
| | Calculates the value of an arbitrary quantity at any interior flux approximation point.
|
| template<class QuantityCallback> |
| auto | calculateVectorValue (const ElementContext &elemCtx, unsigned fapIdx, const QuantityCallback &quantityCallback) const -> std::remove_reference_t< typename QuantityCallback::ResultType > |
| | Calculates the value of an arbitrary quantity at any interior flux approximation point.
|
| template<class QuantityCallback, class EvalDimVector> |
| void | calculateGradient (EvalDimVector &quantityGrad, const ElementContext &elemCtx, unsigned fapIdx, const QuantityCallback &quantityCallback) const |
| | Calculates the gradient of an arbitrary quantity at any flux approximation point.
|
| template<class QuantityCallback> |
| auto | calculateBoundaryValue (const ElementContext &elemCtx, unsigned 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.
|
| template<class QuantityCallback, class EvalDimVector> |
| void | calculateBoundaryGradient (EvalDimVector &quantityGrad, const ElementContext &elemCtx, unsigned fapIdx, const QuantityCallback &quantityCallback) const |
| | Calculates the gradient of an arbitrary quantity at any flux approximation point on the boundary.
|
| template<bool prepareValues = true, bool prepareGradients = true> |
| void | prepare (const ElementContext &, unsigned) |
| | Precomputes the common values to calculate gradients and values of quantities at every interior flux approximation point.
|
| template<class QuantityCallback> |
| auto | calculateScalarValue (const ElementContext &elemCtx, unsigned fapIdx, const QuantityCallback &quantityCallback) const -> std::remove_reference_t< decltype(quantityCallback.operator()(0))> |
| | Calculates the value of an arbitrary scalar quantity at any interior flux approximation point.
|
| template<class QuantityCallback> |
| auto | calculateVectorValue (const ElementContext &elemCtx, unsigned fapIdx, const QuantityCallback &quantityCallback) const -> std::remove_reference_t< decltype(quantityCallback.operator()(0))> |
| | Calculates the value of an arbitrary vectorial quantity at any interior flux approximation point.
|
| template<class QuantityCallback> |
| void | calculateGradient (EvalDimVector &quantityGrad, const ElementContext &elemCtx, unsigned fapIdx, const QuantityCallback &quantityCallback) const |
| | Calculates the gradient of an arbitrary quantity at any flux approximation point.
|
| template<class QuantityCallback> |
| auto | calculateBoundaryValue (const ElementContext &, unsigned, const QuantityCallback &quantityCallback) -> decltype(quantityCallback.boundaryValue()) |
| | Calculates the value of an arbitrary quantity at any flux approximation point on the grid boundary.
|
| template<class QuantityCallback> |
| void | calculateBoundaryGradient (EvalDimVector &quantityGrad, const ElementContext &elemCtx, unsigned faceIdx, const QuantityCallback &quantityCallback) const |
| | Calculates the gradient of an arbitrary quantity at any flux approximation point on the boundary.
|
template<class TypeTag>
class Opm::P1FeGradientCalculator< TypeTag >
This class calculates gradients of arbitrary quantities at flux integration points using first order finite elements ansatz functions.
This approach can also be used for the vertex-centered finite volume (VCFV) discretization.