CoDiPack  3.0.0
A Code Differentiation Package
SciComp TU Kaiserslautern
Loading...
Searching...
No Matches
codi::JacobianComputationLogic< T_Impl > Struct Template Reference

#include <jacobianComputationLogic.hpp>

Inheritance diagram for codi::JacobianComputationLogic< T_Impl >:

Public Types

using Impl = T_Impl
 See JacobianComputationLogic.
 
- Public Types inherited from codi::TraversalLogic< T_Impl >
using Impl = T_Impl
 See TraversalLogic.
 

Public Member Functions

Interface definition
template<typename Node, typename Jacobian, typename... Args>
void handleJacobianOnActive (Node const &node, Jacobian jacobian, Args &&... args)
 Called for leaf nodes which implement LhsExpressionInterface.
 
Overwrites from TraversalLogic
template<typename Node, typename Jacobian, typename... Args>
inlineExpressionTraits::EnableIfLhsExpression< Node > leaf (Node const &node, Jacobian jacobian, Args &&... args)
 Called for all leaf nodes in the expression.
 
template<size_t ChildNumber, typename Child, typename Root, typename Jacobian, typename... Args>
inlinevoid link (Child const &child, Root const &root, Jacobian const &jacobian, Args &&... args)
 
template<size_t ChildNumber, typename Real, template< typename > class ConvOp, typename Root, typename Jacobian, typename... Args>
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.
 
- Public Member Functions inherited from codi::TraversalLogic< T_Impl >
inlineImpl & cast ()
 Cast to the implementation.
 
template<typename Node, typename... Args>
inlinevoid eval (NodeInterface< Node > const &node, Args &&... args)
 Start the evaluation of the logic on the given expression.
 
template<typename Node, typename... Args>
inlinevoid node (Node const &node, Args &&... args)
 Called for each node in the expression.
 
template<typename Node, typename... Args>
inlinevoid leaf (Node const &node, Args &&... args)
 Called for all leaf nodes in the expression.
 
template<size_t ChildNumber, typename Child, typename Root, typename... Args>
inlinevoid link (Child const &child, Root const &root, Args &&... args)
 Called for all links in the expression.
 

Additional Inherited Members

- Protected Member Functions inherited from codi::TraversalLogic< T_Impl >
template<typename Node, typename... Args>
inlinevoid toLinks (Node const &node, Args &&... args)
 Helper method which calls link for each child.
 
template<typename Node, typename... Args>
inlinevoid toNode (Node const &node, Args &&... args)
 Helper method to distinguish between leaf nodes and normal nodes.
 

Detailed Description

template<typename T_Impl>
struct codi::JacobianComputationLogic< T_Impl >
Template Parameters
T_ImplClass implementing this interface.

Member Function Documentation

◆ leaf()

template<typename T_Impl>
template<typename Node, typename Jacobian, typename... Args>
inlineExpressionTraits::EnableIfLhsExpression< Node > codi::JacobianComputationLogic< T_Impl >::leaf ( Node const & node,
Jacobian jacobian,
Args &&... args )
inline

Called for all leaf nodes in the expression.

Default: Does nothing.

◆ link()

template<typename T_Impl>
template<size_t ChildNumber, typename Child, typename Root, typename Jacobian, typename... Args>
inlinevoid codi::JacobianComputationLogic< T_Impl >::link ( Child const & child,
Root const & root,
Jacobian const & jacobian,
Args &&... args )
inline

Computes the reverse AD equation for this link.

The Jacobian is multiplied with the Jacobian of the link. The result is forwarded to the child.


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