CoDiPack  3.0.0
A Code Differentiation Package
SciComp TU Kaiserslautern
Loading...
Searching...
No Matches
codi::LhsExpressionInterface< T_Real, T_Gradient, T_Tape, T_Impl > Struct Template Reference

Base class for all CoDiPack lvalue expression. More...

#include <lhsExpressionInterface.hpp>

Inheritance diagram for codi::LhsExpressionInterface< T_Real, T_Gradient, T_Tape, T_Impl >:

Public Types

using Base = ExpressionInterface<T_Real, T_Impl>
 Base class abbreviation.
 
using Gradient = T_Gradient
 See LhsExpressionInterface.
 
using Identifier = typename Tape::Identifier
 See GradientAccessTapeInterface.
 
using Impl = T_Impl
 See LhsExpressionInterface.
 
using PassiveReal = RealTraits::PassiveReal<Real>
 Basic computation type.
 
using Real = T_Real
 See LhsExpressionInterface.
 
using Tape = T_Tape
 See LhsExpressionInterface.
 
- Public Types inherited from codi::ExpressionInterface< T_Real, T_Impl >
using ADLogic = char
 AD logic that governs the expression. Needs to be the same for all inputs of the expression.
 
using Impl = T_Impl
 See ExpressionInterface.
 
using Real = T_Real
 See ExpressionInterface.
 
using StoreAs = ExpressionInterface
 Defines how this expression is stored in an expression tree.
 
- Public Types inherited from codi::NodeInterface< T_Impl >
using Impl = T_Impl
 See NodeInterface.
 
- Public Types inherited from codi::ExpressionMemberOperations< T_Real, T_Impl, typename >
using Impl = T_Impl
 See ExpressionMemberOperations.
 
using Real = T_Real
 See ExpressionMemberOperations.
 

Public Member Functions

 LhsExpressionInterface ()=default
 Constructor.
 
 LhsExpressionInterface (LhsExpressionInterface const &other)=default
 Constructor.
 
General implementation
inlineImpl & cast ()
 Cast to the implementation.
 
inlineGradient & gradient ()
 Get the gradient of this lvalue from the tape.
 
inlineGradient const & gradient () const
 Get the gradient of this lvalue from the tape.
 
inlineGradient getGradient () const
 Get the gradient of this lvalue from the tape.
 
inlinevoid setGradient (Gradient const &g)
 Set the gradient of this lvalue in the tape.
 
inlineReal const & getValue () const
 Get the primal value of this lvalue.
 
inlinevoid setValue (Real const &v)
 Set the primal value of this lvalue.
 
inlineImpl & operator= (Real const &rhs)
 Assignment operator for passive values. Calls store on the InternalStatementRecordingTapeInterface.
 
template<typename U = Real, typename = RealTraits::EnableIfNotPassiveReal<U>>
inlineImpl & operator= (PassiveReal const &rhs)
 Assignment operator for passive values. Calls store on the InternalStatementRecordingTapeInterface.
 
template<typename Rhs>
inlineImpl & operator= (ExpressionInterface< Real, Rhs > const &rhs)
 Assignment operator for expressions. Calls store on the InternalStatementRecordingTapeInterface.
 
template<typename Rhs, typename U = Real, typename = RealTraits::EnableIfNotPassiveReal<U>>
inlineImpl & operator= (ExpressionInterface< typename U::Real, Rhs > const &rhs)
 Assignment operator for expressions. Calls store on the InternalStatementRecordingTapeInterface.
 
inlineImpl & operator= (LhsExpressionInterface const &rhs)
 Assignment operator for lhs expressions. Calls store on the InternalStatementRecordingTapeInterface.
 
template<typename Rhs>
inlineImpl & operator= (LhsExpressionInterface< Real, Gradient, Tape, Rhs > const &rhs)
 Assignment operator for lhs expressions. Calls store on the InternalStatementRecordingTapeInterface.
 
inlineImpl const & cast () const
 Cast to the implementation.
 
- Public Member Functions inherited from codi::ExpressionInterface< T_Real, T_Impl >
inlineImpl const & cast () const
 Cast to the implementation.
 
 ExpressionInterface ()=default
 Constructor.
 
 ExpressionInterface (ExpressionInterface const &)=default
 Constructor.
 
inlineReal const getValue () const
 Compute the primal value that is usually evaluated by the statement/expression.
 
template<size_t argNumber, typename Tangent>
inlineauto applyTangent (Tangent const &tangent) const
 
template<size_t argNumber, typename Adjoint>
inlineauto applyAdjoint (Adjoint const &adjoint) const
 
- Public Member Functions inherited from codi::NodeInterface< T_Impl >
inlineImpl const & cast () const
 Cast to the implementation.
 
template<size_t argNumber>
char const & getLink () const
 an expression.
 

Implementation of NodeInterface

static size_t constexpr LinkCount = 0
 handle the expression as a leaf node.
 
inlinevoid init (Real const &newValue, EventHints::Statement statementType)
 
inlinevoid destroy ()
 

Interface definition

Real const & value () const
 Get a constant reference to the lvalue represented by the expression.
 
Realvalue ()
 Get a reference to the lvalue represented by the expression.
 
Identifier const & getIdentifier () const
 
IdentifiergetIdentifier ()
 
static TapegetTape ()
 Get a reference to the tape which manages this expression.
 

Additional Inherited Members

static size_t constexpr LinkCount = false
 handle the expression as a leaf node.
 
- Protected Member Functions inherited from codi::ExpressionMemberOperations< T_Real, T_Impl, typename >
inlineImpl const & cast () const
 Cast to implementation.
 

Detailed Description

template<typename T_Real, typename T_Gradient, typename T_Tape, typename T_Impl>
struct codi::LhsExpressionInterface< T_Real, T_Gradient, T_Tape, T_Impl >

Base class for all CoDiPack lvalue expression.

See Expression design documentation for details about the expression system in CoDiPack.

This interface resembles an lvalue in C++.

Template Parameters
T_RealOriginal primal value of the statement/expression.
T_GradientGradient values computed by the tape implementation.
T_TapeThe tape that manages the lvalues of the expression. Minimal interface: InternalStatementRecordingTapeInterface, GradientAccessTapeInterface
T_ImplClass implementing this interface.

Member Function Documentation

◆ destroy()

template<typename T_Real, typename T_Gradient, typename T_Tape, typename T_Impl>
inlinevoid codi::LhsExpressionInterface< T_Real, T_Gradient, T_Tape, T_Impl >::destroy ( )
inlineprotected

Helper function to deconstruct the primal value and the identifier by the tape.

To be called in the destructor of the implementing class.

◆ getIdentifier() [1/2]

template<typename T_Real, typename T_Gradient, typename T_Tape, typename T_Impl>
Identifier & codi::LhsExpressionInterface< T_Real, T_Gradient, T_Tape, T_Impl >::getIdentifier ( )

Get a reference to the identifier of the tape for this expression. See also Direct data access (Identifier management)

◆ getIdentifier() [2/2]

template<typename T_Real, typename T_Gradient, typename T_Tape, typename T_Impl>
Identifier const & codi::LhsExpressionInterface< T_Real, T_Gradient, T_Tape, T_Impl >::getIdentifier ( ) const

Get a constant reference to the identifier of the tape for this expression. See also Direct data access (Identifier management)

◆ init()

template<typename T_Real, typename T_Gradient, typename T_Tape, typename T_Impl>
inlinevoid codi::LhsExpressionInterface< T_Real, T_Gradient, T_Tape, T_Impl >::init ( Real const & newValue,
EventHints::Statement statementType )
inlineprotected

Helper function to initialize the primal value and the identifier by the tape.

To be called in constructors of the implementing class.

Member Data Documentation

◆ LinkCount

template<typename T_Real, typename T_Gradient, typename T_Tape, typename T_Impl>
size_t constexpr codi::LhsExpressionInterface< T_Real, T_Gradient, T_Tape, T_Impl >::LinkCount = 0
staticconstexpr

handle the expression as a leaf node.

Number of links the expression has. Zero will


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