42#include "../../../traits/expressionTraits.hpp"
43#include "../../constantExpression.hpp"
44#include "../traversalLogic.hpp"
53 template<
typename T_Impl>
64 template<
typename Node,
typename Jacobian,
typename... Args>
73 template<
typename Node,
typename Jacobian,
typename... Args>
76 cast().handleJacobianOnActive(
node, jacobian, std::forward<Args>(args)...);
84 template<
size_t ChildNumber,
typename Child,
typename Root,
typename Jacobian,
typename... Args>
86 auto curJacobian = root.template applyAdjoint<ChildNumber>(jacobian);
87 cast().toNode(child, curJacobian, std::forward<Args>(args)...);
91 template<
size_t ChildNumber,
typename Real,
template<
typename>
class ConvOp,
typename Root,
typename Jacobian,
105 return static_cast<Impl&
>(*this);
#define CODI_INLINE
See codi::Config::ForcedInlines.
Definition config.h:469
#define CODI_DD(Type, Default)
Abbreviation for CODI_DECLARE_DEFAULT.
Definition macros.hpp:96
#define CODI_T(...)
Abbreviation for CODI_TEMPLATE.
Definition macros.hpp:116
typename std::enable_if< IsLhsExpression< Expr >::value, T >::type EnableIfLhsExpression
Enable if wrapper for IsLhsExpression.
Definition expressionTraits.hpp:183
CoDiPack - Code Differentiation Package.
Definition codi.hpp:94
inlinevoid CODI_UNUSED(Args const &...)
Disable unused warnings for an arbitrary number of arguments.
Definition macros.hpp:54
Represents constant values in the expression tree.
Definition constantExpression.hpp:78
Definition jacobianComputationLogic.hpp:54
inlinevoid link(ConstantExpression< Real, ConvOp > const &child, Root const &root, Jacobian const &jacobian, Args &&... args)
Specialization for ConstantExpressions. Will not compute Jacobians for these links.
Definition jacobianComputationLogic.hpp:93
void handleJacobianOnActive(Node const &node, Jacobian jacobian, Args &&... args)
Called for leaf nodes which implement LhsExpressionInterface.
inlinevoid link(Child const &child, Root const &root, Jacobian const &jacobian, Args &&... args)
Definition jacobianComputationLogic.hpp:85
T_Impl Impl
See JacobianComputationLogic.
Definition jacobianComputationLogic.hpp:57
inlineExpressionTraits::EnableIfLhsExpression< Node > leaf(Node const &node, Jacobian jacobian, Args &&... args)
Called for all leaf nodes in the expression.
Definition jacobianComputationLogic.hpp:74
Default implementation of the Jacobian interface.
Definition jacobian.hpp:60
Traversal of CoDiPack expressions.
Definition traversalLogic.hpp:57
inlinevoid node(Node const &node, Args &&... args)
Called for each node in the expression.
Definition traversalLogic.hpp:87