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;
125 evaluate(tape->getPosition(), tape->getZeroPosition());
130 evaluate(tape->getPosition(), tape->getZeroPosition());
167 template<
typename T_Type,
typename T_Gradient>
177 using Real =
typename Type::Real;
243 checkAdjointVectorSize();
248 checkAdjointVectorSize();
256 checkAdjointVectorSize();
268 checkAdjointVectorSize();
295 checkAdjointVectorSize();
316 gradient(identifier) = gradientValue;
323 void checkAdjointVectorSize() {
#define CODI_DD(Type, Default)
Abbreviation for CODI_DECLARE_DEFAULT.
Definition macros.hpp:97
CoDiPack - Code Differentiation Package.
Definition codi.hpp:97
@ LargestIdentifier
[A: R] Largest identifier distributed by the index manger.
Definition tapeParameters.hpp:60
Implementation of VectorAccessInterface for adjoint vectors.
Definition adjointVectorAccess.hpp:61
void clearAdjoints()
Set all adjoints to zero.
Definition customAdjointVectorHelper.hpp:216
Gradient const & gradient(Identifier const &identifier) const
Get a constant reference to the gradient. Checked access.
Definition customAdjointVectorHelper.hpp:306
Gradient & gradientUnchecked(Identifier const &identifier)
Get a reference to the gradient. Unchecked access.
Definition customAdjointVectorHelper.hpp:284
VectorAccessInterface< Real, Identifier > * getVectorInterface()
Get a new general interface to the adjoint vector.
Definition customAdjointVectorHelper.hpp:263
CustomAdjointVectorInterface< Type > Base
Abbreviation for the base class.
Definition customAdjointVectorHelper.hpp:175
Gradient & gradient(Identifier const &identifier)
Get a reference to the gradient. Checked access.
Definition customAdjointVectorHelper.hpp:294
~CustomAdjointVectorHelper()
Destructor.
Definition customAdjointVectorHelper.hpp:205
typename Tape::Position Position
See PositionalEvaluationTapeInterface.
Definition customAdjointVectorHelper.hpp:182
T_Type Type
< See CustomAdjointVectorHelper.
Definition customAdjointVectorHelper.hpp:172
bool isAdjointSizeFixed()
Definition customAdjointVectorHelper.hpp:229
Gradient const & gradientUnchecked(Identifier const &identifier) const
Get a constant reference to the gradient. Unchecked access.
Definition customAdjointVectorHelper.hpp:289
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:255
Gradient const & getGradient(Identifier const &identifier) const
Get a constant reference to the gradient.
Definition customAdjointVectorHelper.hpp:279
typename Type::Real Real
See LhsExpressionInterface.
Definition customAdjointVectorHelper.hpp:177
size_t fixedAdjointSize
Definition customAdjointVectorHelper.hpp:196
void resizeAdjointToTapeSize()
Resize the adjoint vector to the largest identifier of the tape. This will remove any fixed size that...
Definition customAdjointVectorHelper.hpp:241
void resizeAdjointToFixedSize(size_t size)
Definition customAdjointVectorHelper.hpp:234
T_Gradient Gradient
See CustomAdjointVectorHelper.
Definition customAdjointVectorHelper.hpp:173
AdjointVectorAccess< Real, Identifier, Gradient * > * adjointInterface
Last created adjoint interface.
Definition customAdjointVectorHelper.hpp:191
void deleteAdjointVector()
Delete the adjoint vector.
Definition customAdjointVectorHelper.hpp:223
Gradient zeroValue
Temporary zero value.
Definition customAdjointVectorHelper.hpp:187
std::vector< Gradient > adjointVector
Custom adjoint vector.
Definition customAdjointVectorHelper.hpp:185
typename Type::Tape Tape
See LhsExpressionInterface.
Definition customAdjointVectorHelper.hpp:181
Gradient const constZeroValue
Temporary constant zero value.
Definition customAdjointVectorHelper.hpp:188
CustomAdjointVectorHelper()
Constructor.
Definition customAdjointVectorHelper.hpp:201
typename Type::Identifier Identifier
See LhsExpressionInterface.
Definition customAdjointVectorHelper.hpp:178
void setGradient(Identifier &identifier, Gradient const &gradientValue)
Set the gradient. Checked access.
Definition customAdjointVectorHelper.hpp:315
void evaluate(Position const &start, Position const &end)
Perform a full reverse evaluation of the tape.
Definition customAdjointVectorHelper.hpp:247
void evaluateForward()
Perform a forward evaluation of a part of the tape. It has to hold start <= end.
Definition customAdjointVectorHelper.hpp:129
CustomAdjointVectorInterface()
Constructor.
Definition customAdjointVectorHelper.hpp:81
void evaluate()
Perform a full reverse evaluation of the tape.
Definition customAdjointVectorHelper.hpp:124
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:134
virtual void resizeAdjointToFixedSize(size_t size)=0
virtual ~CustomAdjointVectorInterface()
Destructor.
Definition customAdjointVectorHelper.hpp:84
virtual void resizeAdjointToTapeSize()=0
Resize the adjoint vector to the largest identifier of the tape. This will remove any fixed size that...
virtual void deleteAdjointVector()=0
Delete the adjoint vector.
virtual bool isAdjointSizeFixed()=0
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 & getTape()
Definition customAdjointVectorHelper.hpp:139
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:94