DUNE-ACFEM (2.5.1)
operatorpartsexpression.hh
465 : public OperatorPartsExpression<BinaryOperatorPartsExpression<BinOp, LeftOperand, RightOperand> >
531 return "(" + leftOperand_().name() + " " + BinOpType::name() + " " + rightOperand_().name() + ")";
555 OperationType::linearizedFlux(leftOperand_(), rightOperand_(), uBar, DuBar, entity, x, value, jacobian, flux);
579 OperationType::linearizedSource(leftOperand_(), rightOperand_(), uBar, DuBar, entity, x, value, jacobian, result);
590 OperationType::robinFlux(leftOperand_(), rightOperand_(), intersection, x, unitOuterNormal, value, result);
602 OperationType::linearizedRobinFlux(leftOperand_(), rightOperand_(), uBar, intersection, x, unitOuterNormal, value, result);
614 OperationType::fluxDivergence(leftOperand_(), rightOperand_(), entity, x, value, jacobian, hessian, result);
643 isSemiDefinite = LeftOperandType::isSemiDefinite && RightOperandType::isSemiDefinite // this is not true
687 typedef BinaryOperatorPartsExpression<MinusOperation, LeftOperand, RightOperand> ExpressionType;
709 : public OperatorPartsExpression<BinaryOperatorPartsExpression<SMultiplyOperation, Factor, OperandType> >
766 return "(" + std::to_string(parameterValue(scalar_())) + " " + BinOpType::name() + " " + operand_().name() + ")";
903 typedef typename OperandType::FunctionSpaceType::ScalarFunctionSpaceType ScalarFunctionSpaceType;
908 isSemiDefinite = OperandType::isSemiDefinite // this is not true when multiplying by negative factors ...
923 BinaryOperatorPartsExpression<SMultiplyOperation, typename OperandType::RangeFieldType, OperandType>
930 typedef BinaryOperatorPartsExpression<SMultiplyOperation, RangeFieldType, OperandType> ExpressionType;
955 typedef BinaryOperatorPartsExpression<SMultiplyOperation, ParameterType, OperandType> ExpressionType;
973 BinaryOperatorPartsExpression<SMultiplyOperation, typename OperandType::RangeFieldType, OperandType>
979 typedef BinaryOperatorPartsExpression<SMultiplyOperation, RangeFieldType, OperandType> ExpressionType;
1005 : public OperatorPartsExpression<BinaryOperatorPartsExpression<MultiplyOperation, FactorFunction, OperandType> >
1258 struct OperatorPartsTraits<BinaryOperatorPartsExpression<MultiplyOperation, FactorFunction, Operand> >
1288 operator*(const Fem::Function<typename FactorFunction::FunctionSpaceType::ScalarFunctionSpaceType, FactorFunction>& f_,
1294 typedef BinaryOperatorPartsExpression<MultiplyOperation, FactorFunction, OperandType> ExpressionType;
1303 const Fem::Function<typename FactorFunction::FunctionSpaceType::ScalarFunctionSpaceType, FactorFunction>& f_)
1367 const BinaryOperatorPartsExpression<SMultiplyOperation, typename Operand::RangeFieldType, Operand>& op_)
1388 const OperatorPartsInterface<BinaryOperatorPartsExpression<SMultiplyOperation, typename Operand::RangeFieldType, Operand> >& op_)
1547 static_assert(std::is_same<ScalarSpace, typename FunctionSpace::ScalarFunctionSpaceType>::value,
1559 static_assert(std::is_same<ScalarSpace, typename FunctionSpace::ScalarFunctionSpaceType>::value,
BinaryGridFunctionExpression implements point-wise vector-space operations for GridFunction-types.
Definition: gridfunctionexpression.hh:423
Multiplication with grid-functions.
Definition: operatorpartsexpression.hh:1006
InterfaceType::DomainType DomainType
domain type (from function space)
Definition: operatorpartsexpression.hh:1026
void linearizedRobinFlux(const RangeType &uBar, const Intersection &intersection, const Point &x, const DomainType &unitOuterNormal, const RangeType &value, RangeType &result) const
Definition: operatorpartsexpression.hh:1198
InterfaceType::JacobianRangeType JacobianRangeType
jacobian type (from function space)
Definition: operatorpartsexpression.hh:1030
void fluxDivergence(const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, const HessianRangeType &hessian, RangeType &result) const
fluxDivergence for estimator
Definition: operatorpartsexpression.hh:1220
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
Definition: operatorpartsexpression.hh:1152
InterfaceType::DomainFieldType DomainFieldType
domain type (from function space)
Definition: operatorpartsexpression.hh:1022
void linearizedFlux(const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &result) const
linearizedflux
Definition: operatorpartsexpression.hh:1104
void setEntity(const Entity &entity) const
Definition: operatorpartsexpression.hh:1054
bool setIntersection(const Intersection &intersection) const
Definition: operatorpartsexpression.hh:1062
void flux(const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &result) const
flux on local coordinate local
Definition: operatorpartsexpression.hh:1082
InterfaceType::RangeFieldType RangeFieldType
range type (from function space)
Definition: operatorpartsexpression.hh:1024
InterfaceType::HessianRangeType HessianRangeType
hessian type (from function space)
Definition: operatorpartsexpression.hh:1032
std::string name() const
Definition: operatorpartsexpression.hh:1075
Dune::ACFem::BinaryOperatorPartsExpression< MultiplyOperation, FactorFunction, OperandType >::source
void source(const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, RangeType &result) const
source term
Definition: operatorpartsexpression.hh:1129
void robinFlux(const Intersection &intersection, const Point &x, const DomainType &unitOuterNormal, const RangeType &value, RangeType &result) const
Definition: operatorpartsexpression.hh:1177
InterfaceType::RangeType RangeType
range type (from function space)
Definition: operatorpartsexpression.hh:1028
InterfaceType::FunctionSpaceType FunctionSpaceType
type of discrete function space
Definition: operatorpartsexpression.hh:1019
void fluxDivergence(const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, const HessianRangeType &hessian, RangeType &result) const
fluxDivergence for estimator
Definition: operatorpartsexpression.hh:872
void source(const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, RangeType &result) const
source term
Definition: operatorpartsexpression.hh:805
InterfaceType::HessianRangeType HessianRangeType
hessian type (from function space)
Definition: operatorpartsexpression.hh:733
void linearizedFlux(const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const
linearizedflux
Definition: operatorpartsexpression.hh:787
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
Definition: operatorpartsexpression.hh:821
InterfaceType::DomainType DomainType
domain type (from function space)
Definition: operatorpartsexpression.hh:727
InterfaceType::DomainFieldType DomainFieldType
domain type (from function space)
Definition: operatorpartsexpression.hh:723
void setEntity(const Entity &entity) const
Definition: operatorpartsexpression.hh:751
void linearizedRobinFlux(const RangeType &uBar, const Intersection &intersection, const Point &x, const DomainType &unitOuterNormal, const RangeType &value, RangeType &result) const
Definition: operatorpartsexpression.hh:855
void robinFlux(const Intersection &intersection, const Point &x, const DomainType &unitOuterNormal, const RangeType &value, RangeType &result) const
Definition: operatorpartsexpression.hh:839
void flux(const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const
flux on local coordinate local
Definition: operatorpartsexpression.hh:771
InterfaceType::JacobianRangeType JacobianRangeType
jacobian type (from function space)
Definition: operatorpartsexpression.hh:731
bool setIntersection(const Intersection &intersection) const
Definition: operatorpartsexpression.hh:758
InterfaceType::RangeType RangeType
range type (from function space)
Definition: operatorpartsexpression.hh:729
InterfaceType::FunctionSpaceType FunctionSpaceType
type of discrete function space
Definition: operatorpartsexpression.hh:720
InterfaceType::RangeFieldType RangeFieldType
range type (from function space)
Definition: operatorpartsexpression.hh:725
std::string name() const
Definition: operatorpartsexpression.hh:764
Template for binary operations.
Definition: operatorpartsexpression.hh:466
void setEntity(const Entity &entity) const
Definition: operatorpartsexpression.hh:508
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
Definition: operatorpartsexpression.hh:571
void robinFlux(const Intersection &intersection, const Point &x, const DomainType &unitOuterNormal, const RangeType &value, RangeType &result) const
Definition: operatorpartsexpression.hh:584
void flux(const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const
flux on local coordinate local
Definition: operatorpartsexpression.hh:536
InterfaceType::RangeFieldType RangeFieldType
range type (from function space)
Definition: operatorpartsexpression.hh:480
InterfaceType::JacobianRangeType JacobianRangeType
jacobian type (from function space)
Definition: operatorpartsexpression.hh:486
void linearizedRobinFlux(const RangeType &uBar, const Intersection &intersection, const Point &x, const DomainType &unitOuterNormal, const RangeType &value, RangeType &result) const
Definition: operatorpartsexpression.hh:595
InterfaceType::DomainFieldType DomainFieldType
domain type (from function space)
Definition: operatorpartsexpression.hh:478
InterfaceType::DomainType DomainType
domain type (from function space)
Definition: operatorpartsexpression.hh:482
void source(const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, RangeType &result) const
source term
Definition: operatorpartsexpression.hh:560
void linearizedFlux(const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const
linearizedflux
Definition: operatorpartsexpression.hh:547
InterfaceType::HessianRangeType HessianRangeType
hessian type (from function space)
Definition: operatorpartsexpression.hh:488
bool setIntersection(const Intersection &intersection) const
Definition: operatorpartsexpression.hh:516
void fluxDivergence(const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, const HessianRangeType &hessian, RangeType &result) const
fluxDivergence for estimator
Definition: operatorpartsexpression.hh:607
std::string name() const
Definition: operatorpartsexpression.hh:529
InterfaceType::FunctionSpaceType FunctionSpaceType
type of discrete function space
Definition: operatorpartsexpression.hh:475
InterfaceType::RangeType RangeType
range type (from function space)
Definition: operatorpartsexpression.hh:484
@ isSemiDefinite
Definition: operatorparts.hh:416
@ isSymmetric
Definition: operatorparts.hh:415
Interface class for second order elliptic models.
Definition: operatorparts.hh:92
Parameters are quasi-constant quantities, like the time-step size in one time-step when solving trans...
Definition: parameterinterface.hh:80
Unary identity operation which simply wraps the underlying stuff.
Definition: operatorpartsexpression.hh:39
OperandType ContainedExpressionType
type of the contained expression
Definition: operatorpartsexpression.hh:48
InterfaceType::RangeType RangeType
range type (from function space)
Definition: operatorpartsexpression.hh:60
InterfaceType::HessianRangeType HessianRangeType
hessian type (from function space)
Definition: operatorpartsexpression.hh:64
std::string name() const
Definition: operatorpartsexpression.hh:95
void setEntity(const Entity &entity) const
Definition: operatorpartsexpression.hh:82
InterfaceType::JacobianRangeType JacobianRangeType
jacobian type (from function space)
Definition: operatorpartsexpression.hh:62
InterfaceType::FunctionSpaceType FunctionSpaceType
type of discrete function space
Definition: operatorpartsexpression.hh:51
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
Definition: operatorpartsexpression.hh:149
bool setIntersection(const Intersection &intersection) const
Definition: operatorpartsexpression.hh:89
void robinFlux(const Intersection &intersection, const Point &x, const DomainType &unitOuterNormal, const RangeType &value, RangeType &result) const
Definition: operatorpartsexpression.hh:166
void flux(const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const
flux on local coordinate local
Definition: operatorpartsexpression.hh:102
void source(const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, RangeType &result) const
source term
Definition: operatorpartsexpression.hh:134
void fluxDivergence(const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, const HessianRangeType &hessian, RangeType &result) const
fluxDivergence for estimator
Definition: operatorpartsexpression.hh:197
InterfaceType::RangeFieldType RangeFieldType
range type (from function space)
Definition: operatorpartsexpression.hh:56
void linearizedRobinFlux(const RangeType &uBar, const Intersection &intersection, const Point &x, const DomainType &unitOuterNormal, const RangeType &value, RangeType &result) const
Definition: operatorpartsexpression.hh:181
InterfaceType::DomainType DomainType
domain type (from function space)
Definition: operatorpartsexpression.hh:58
void linearizedFlux(const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const
linearizedflux
Definition: operatorpartsexpression.hh:117
InterfaceType::DomainFieldType DomainFieldType
domain type (from function space)
Definition: operatorpartsexpression.hh:54
Unary minus.
Definition: operatorpartsexpression.hh:245
void flux(const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const
flux on local coordinate local
Definition: operatorpartsexpression.hh:309
OperandType ContainedExpressionType
type of the contained expression
Definition: operatorpartsexpression.hh:254
bool setIntersection(const Intersection &intersection) const
Definition: operatorpartsexpression.hh:296
InterfaceType::FunctionSpaceType FunctionSpaceType
type of discrete function space
Definition: operatorpartsexpression.hh:257
void fluxDivergence(const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, const HessianRangeType &hessian, RangeType &result) const
fluxDivergence for estimator
Definition: operatorpartsexpression.hh:410
InterfaceType::RangeFieldType RangeFieldType
range type (from function space)
Definition: operatorpartsexpression.hh:262
std::string name() const
Definition: operatorpartsexpression.hh:302
InterfaceType::DomainFieldType DomainFieldType
domain type (from function space)
Definition: operatorpartsexpression.hh:260
void linearizedFlux(const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const
linearizedflux
Definition: operatorpartsexpression.hh:325
void linearizedRobinFlux(const RangeType &uBar, const Intersection &intersection, const Point &x, const DomainType &unitOuterNormal, const RangeType &value, RangeType &result) const
Definition: operatorpartsexpression.hh:393
InterfaceType::RangeType RangeType
range type (from function space)
Definition: operatorpartsexpression.hh:266
InterfaceType::HessianRangeType HessianRangeType
hessian type (from function space)
Definition: operatorpartsexpression.hh:270
void source(const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, RangeType &result) const
source term
Definition: operatorpartsexpression.hh:343
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
Definition: operatorpartsexpression.hh:359
InterfaceType::DomainType DomainType
domain type (from function space)
Definition: operatorpartsexpression.hh:264
void setEntity(const Entity &entity) const
Definition: operatorpartsexpression.hh:289
void robinFlux(const Intersection &intersection, const Point &x, const DomainType &unitOuterNormal, const RangeType &value, RangeType &result) const
Definition: operatorpartsexpression.hh:377
InterfaceType::JacobianRangeType JacobianRangeType
jacobian type (from function space)
Definition: operatorpartsexpression.hh:268
Template for unary operations.
Definition: operatorpartsexpression.hh:33
Define a simple zero model to optimize expression templates.
Definition: zerooperatorparts.hh:31
const Implementation & asImp(const Fem::BartonNackmanInterface< Interface, Implementation > &arg)
Up-cast to the implementation for any Fem::BartonNackmanInterface.
Definition: expressionoperations.hh:71
ParameterValue< Value >::ResultType parameterValue(const Value &value)
Return the unaltered argument for non-parameters and otherwise the parameter value.
Definition: parameterinterface.hh:263
auto operator+(const ZeroOperatorParts< FunctionSpace > &z1, const ZeroOperatorParts< FunctionSpace > &z2) -> decltype(*z1)
Zero + Zero = Zero.
Definition: operatorpartsexpression.hh:1463
auto operator-(const ZeroOperatorParts< FunctionSpace > &z1, const ZeroOperatorParts< FunctionSpace > &z2) -> decltype(*z1)
Zero - Zero = Zero.
Definition: operatorpartsexpression.hh:1493
BinaryParameterExpression< MultiplyOperation, Left, Right > operator*(const ParameterInterface< Left > &left, const ParameterInterface< Right > &right)
Scalar product between parameters.
Definition: parameterexpression.hh:321
A structure defining some trivial default values for the template structure OperatorPartsTraits<Parts...
Definition: operatorparts.hh:45
Identity, i.e. just wrap the object.
Definition: expressionoperations.hh:284
Subtraction of two objects and unary minus.
Definition: expressionoperations.hh:239
Traits-template which has to be specialized for each individual model.
Definition: operatorparts.hh:36
Multiplication by scalars from the left.
Definition: expressionoperations.hh:257
![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/80x15.png)