38#include "../../expressions/lhsExpressionInterface.hpp"
40#include "../../tapes/interfaces/fullTapeInterface.hpp"
41#include "../../tapes/misc/adjointVectorAccess.hpp"
42#include "../../tapes/misc/vectorAccessInterface.hpp"
43#include "../../traits/tapeTraits.hpp"
60 template<
typename T_Type>
67 using Real =
typename Type::Real;
71 using Tape =
typename Type::Tape;
151 template<
typename T_Type,
typename T_Gradient>
161 using Real =
typename Type::Real;
209 checkAdjointVectorSize();
217 checkAdjointVectorSize();
229 checkAdjointVectorSize();
256 checkAdjointVectorSize();
277 gradient(identifier) = gradientValue;
284 void checkAdjointVectorSize() {
#define CODI_DD(Type, Default)
Abbreviation for CODI_DECLARE_DEFAULT.
Definition macros.hpp:94
CoDiPack - Code Differentiation Package.
Definition codi.hpp:91
@ LargestIdentifier
[A: R] Largest identifier distributed by the index manger.
Implementation of VectorAccessInterface for adjoint vectors.
Definition adjointVectorAccess.hpp:61
Allows for an arbitrary adjoint evaluation of a recorded tape.
Definition customAdjointVectorHelper.hpp:152
void clearAdjoints()
Set all adjoints to zero.
Definition customAdjointVectorHelper.hpp:195
Gradient const & gradient(Identifier const &identifier) const
Get a constant reference to the gradient. Checked access.
Definition customAdjointVectorHelper.hpp:267
Gradient & gradientUnchecked(Identifier const &identifier)
Get a reference to the gradient. Unchecked access.
Definition customAdjointVectorHelper.hpp:245
VectorAccessInterface< Real, Identifier > * getVectorInterface()
Get a new general interface to the adjoint vector.
Definition customAdjointVectorHelper.hpp:224
Gradient & gradient(Identifier const &identifier)
Get a reference to the gradient. Checked access.
Definition customAdjointVectorHelper.hpp:255
~CustomAdjointVectorHelper()
Destructor.
Definition customAdjointVectorHelper.hpp:184
typename Tape::Position Position
See PositionalEvaluationTapeInterface.
Definition customAdjointVectorHelper.hpp:166
T_Type Type
< See CustomAdjointVectorHelper.
Definition customAdjointVectorHelper.hpp:156
Gradient const & gradientUnchecked(Identifier const &identifier) const
Get a constant reference to the gradient. Unchecked access.
Definition customAdjointVectorHelper.hpp:250
void evaluateForward(Position const &start, Position const &end)
Perform a forward evaluation of a part of the tape. It has to hold start <= end.
Definition customAdjointVectorHelper.hpp:216
Gradient const & getGradient(Identifier const &identifier) const
Get a constant reference to the gradient.
Definition customAdjointVectorHelper.hpp:240
typename Type::Real Real
See LhsExpressionInterface.
Definition customAdjointVectorHelper.hpp:161
T_Gradient Gradient
See CustomAdjointVectorHelper.
Definition customAdjointVectorHelper.hpp:157
AdjointVectorAccess< Real, Identifier, Gradient * > * adjointInterface
Last created adjoint interface.
Definition customAdjointVectorHelper.hpp:175
void deleteAdjointVector()
Delete the adjoint vector.
Definition customAdjointVectorHelper.hpp:202
Gradient zeroValue
Temporary zero value.
Definition customAdjointVectorHelper.hpp:171
std::vector< Gradient > adjointVector
Custom adjoint vector.
Definition customAdjointVectorHelper.hpp:169
typename Type::Tape Tape
See LhsExpressionInterface.
Definition customAdjointVectorHelper.hpp:165
Gradient const constZeroValue
Temporary constant zero value.
Definition customAdjointVectorHelper.hpp:172
CustomAdjointVectorHelper()
Constructor.
Definition customAdjointVectorHelper.hpp:180
typename Type::Identifier Identifier
See LhsExpressionInterface.
Definition customAdjointVectorHelper.hpp:162
void setGradient(Identifier &identifier, Gradient const &gradientValue)
Set the gradient. Checked access.
Definition customAdjointVectorHelper.hpp:276
void evaluate(Position const &start, Position const &end)
Perform a full reverse evaluation of the tape.
Definition customAdjointVectorHelper.hpp:208
General interface for an arbitrary adjoint evaluation.
Definition customAdjointVectorHelper.hpp:61
void evaluateForward()
Perform a forward evaluation of a part of the tape. It has to hold start <= end.
Definition customAdjointVectorHelper.hpp:118
CustomAdjointVectorInterface()
Constructor.
Definition customAdjointVectorHelper.hpp:81
void evaluate()
Perform a full reverse evaluation of the tape.
Definition customAdjointVectorHelper.hpp:113
typename Type::Identifier Identifier
See LhsExpressionInterface.
Definition customAdjointVectorHelper.hpp:68
virtual VectorAccessInterface< Real, Identifier > * getVectorInterface()=0
Get a new general interface to the adjoint vector.
T_Type Type
See CustomAdjointVectorInterface.
Definition customAdjointVectorHelper.hpp:65
typename Tape::Position Position
See PositionalEvaluationTapeInterface.
Definition customAdjointVectorHelper.hpp:72
void setTape(Tape &tape)
Set the tape for the evaluations.
Definition customAdjointVectorHelper.hpp:123
virtual ~CustomAdjointVectorInterface()
Destructor.
Definition customAdjointVectorHelper.hpp:84
virtual void deleteAdjointVector()=0
Delete the adjoint vector.
virtual void clearAdjoints()=0
Set all adjoints to zero.
typename Type::Real Real
See LhsExpressionInterface.
Definition customAdjointVectorHelper.hpp:67
virtual void evaluateForward(Position const &start, Position const &end)=0
Perform a forward evaluation of a part of the tape. It has to hold start <= end.
virtual void evaluate(Position const &start, Position const &end)=0
Perform a reverse evaluation for a part of the tape. It hast to hold start >= end.
Tape & tape
Current tape for evaluations. Default: the Type's current tape.
Definition customAdjointVectorHelper.hpp:76
typename Type::Tape Tape
See LhsExpressionInterface.
Definition customAdjointVectorHelper.hpp:71
Unified access to the adjoint vector and primal vector in a tape evaluation.
Definition vectorAccessInterface.hpp:91