DUNE-ACFEM (2.5.1)

Dune::ACFem::BinaryOperatorPartsExpression< MultiplyOperation, FactorFunction, OperandType > Class Template Reference

Multiplication with grid-functions. More...

#include <dune/acfem/models/operatorparts/operatorpartsexpression.hh>

+ Collaboration diagram for Dune::ACFem::BinaryOperatorPartsExpression< MultiplyOperation, FactorFunction, OperandType >:

Public Types

typedef InterfaceType::FunctionSpaceType FunctionSpaceType
 type of discrete function space
 
typedef InterfaceType::DomainFieldType DomainFieldType
 domain type (from function space)
 
typedef InterfaceType::RangeFieldType RangeFieldType
 range type (from function space)
 
typedef InterfaceType::DomainType DomainType
 domain type (from function space)
 
typedef InterfaceType::RangeType RangeType
 range type (from function space)
 
typedef InterfaceType::JacobianRangeType JacobianRangeType
 jacobian type (from function space)
 
typedef InterfaceType::HessianRangeType HessianRangeType
 hessian type (from function space)
 
enum  StructureFlags
 
enum  ConstituentFlags
 
typedef Expression ExpressionType
 The type of the underlying expression.
 

Public Member Functions

template<class Entity >
void setEntity (const Entity &entity) const
 
template<class Intersection >
bool setIntersection (const Intersection &intersection) const
 
std::string name () const
 
template<class Entity , class Point >
void flux (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &result) const
 flux on local coordinate local
 
template<class Entity , class Point >
void linearizedFlux (const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &result) const
 linearizedflux
 
template<class Entity , class Point >
void source (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, RangeType &result) const
 source term
 
template<class Entity , class Point >
void linearizedSource (const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, RangeType &result) const
 linearized source term
 
template<class Intersection , class Point >
void robinFlux (const Intersection &intersection, const Point &x, const DomainType &unitOuterNormal, const RangeType &value, RangeType &result) const
 
template<class Intersection , class Point >
void linearizedRobinFlux (const RangeType &uBar, const Intersection &intersection, const Point &x, const DomainType &unitOuterNormal, const RangeType &value, RangeType &result) const
 
template<class Entity , class Point >
void fluxDivergence (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, const HessianRangeType &hessian, RangeType &result) const
 fluxDivergence for estimator
 
const ExpressionTypeexpression () const
 Return a const reference to the underlying expression.
 
ExpressionTypeexpression ()
 Return a mutable reference to the underlying expression.
 
ExpressionType operator* () const
 Return a copy from of the underlying expression.
 

Detailed Description

template<class FactorFunction, class OperandType>
class Dune::ACFem::BinaryOperatorPartsExpression< MultiplyOperation, FactorFunction, OperandType >

Multiplication with grid-functions.

The implementation makes sure that the fluxDivergence() method correctly takes the derivatives of the factor functions into account.

Note
We specialize the expression-class explicitly because the recurse to the static methods of the expression-operations class just does not make this stuff less complicated. Instead we define the s-multiplication expression explicitly here.
We only define the class for multiplication with scalars from the left and define multiplication and division from the right via the operator functions (given that multiplication is commutative, which is not correct for complicated expressions when taking round-off errors into account.
Bug:
Due to a bug in the OperatorParts the localFactor_ has to be tagged as "mutable".

Member Enumeration Documentation

◆ ConstituentFlags

◆ StructureFlags

Member Function Documentation

◆ linearizedRobinFlux()

template<class FactorFunction , class OperandType >
template<class Intersection , class Point >
void Dune::ACFem::BinaryOperatorPartsExpression< MultiplyOperation, FactorFunction, OperandType >::linearizedRobinFlux ( const RangeType uBar,
const Intersection &  intersection,
const Point &  x,
const DomainType unitOuterNormal,
const RangeType value,
RangeType result 
) const
inline

◆ name()

template<class FactorFunction , class OperandType >
std::string Dune::ACFem::BinaryOperatorPartsExpression< MultiplyOperation, FactorFunction, OperandType >::name ( ) const
inline

◆ robinFlux()

template<class FactorFunction , class OperandType >
template<class Intersection , class Point >
void Dune::ACFem::BinaryOperatorPartsExpression< MultiplyOperation, FactorFunction, OperandType >::robinFlux ( const Intersection &  intersection,
const Point &  x,
const DomainType unitOuterNormal,
const RangeType value,
RangeType result 
) const
inline

◆ setEntity()

template<class FactorFunction , class OperandType >
template<class Entity >
void Dune::ACFem::BinaryOperatorPartsExpression< MultiplyOperation, FactorFunction, OperandType >::setEntity ( const Entity &  entity) const
inline

◆ setIntersection()

template<class FactorFunction , class OperandType >
template<class Intersection >
bool Dune::ACFem::BinaryOperatorPartsExpression< MultiplyOperation, FactorFunction, OperandType >::setIntersection ( const Intersection &  intersection) const
inline


The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (May 3, 22:32, 2024)