CoDiPack  2.2.0
A Code Differentiation Package
SciComp TU Kaiserslautern
Loading...
Searching...
No Matches
codi::PrimalAdjointVectorAccess< T_Real, T_Identifier, T_Gradient > Struct Template Reference

Implementation of VectorAccessInterface for adjoint and primal vectors. More...

#include <primalAdjointVectorAccess.hpp>

Inheritance diagram for codi::PrimalAdjointVectorAccess< T_Real, T_Identifier, T_Gradient >:

Public Types

using Base = AdjointVectorAccess< Real, Identifier, Gradient >
 Base class abbreviation.
 
using Gradient = T_Gradient
 See PrimalAdjointVectorAccess.
 
using Identifier = T_Identifier
 See PrimalAdjointVectorAccess.
 
using Real = T_Real
 See PrimalAdjointVectorAccess.
 
- Public Types inherited from codi::AdjointVectorAccess< T_Real, T_Identifier, T_Gradient >
using Gradient = T_Gradient
 See AdjointVectorAccess.
 
using Identifier = T_Identifier
 See AdjointVectorAccess.
 
using Real = T_Real
 See AdjointVectorAccess.
 
- Public Types inherited from codi::VectorAccessInterface< T_Real, T_Identifier >
using Identifier = CODI_DD(T_Identifier, int)
 See VectorAccessInterface.
 
using Real = CODI_DD(T_Real, double)
 See VectorAccessInterface.
 

Public Member Functions

 PrimalAdjointVectorAccess (Gradient *adjointVector, Real *primalVector)
 Constructor. See interface documentation for details about the vectors.
 
Misc
VectorAccessInterface< Real, Identifier > * clone () const
 
Primal access
void setPrimal (Identifier const &index, Real const &primal)
 Set the primal value.
 
Real getPrimal (Identifier const &index)
 Get the primal value.
 
bool hasPrimals ()
 True if the tape/vector interface has primal values.

 
- Public Member Functions inherited from codi::AdjointVectorAccess< T_Real, T_Identifier, T_Gradient >
 AdjointVectorAccess (Gradient *adjointVector)
 Constructor. See interface documentation for details about the adjoint vector.
 
size_t getVectorSize () const
 Vector size in the current tape evaluation.
 
bool isLhsZero ()
 True if the adjoint set with setLhsAdjoint is zero.
 
void setLhsAdjoint (Identifier const &index)
 
void updateAdjointWithLhs (Identifier const &index, Real const &jacobian)
 
void setLhsTangent (Identifier const &index)
 
void updateTangentWithLhs (Identifier const &index, Real const &jacobian)
 
void resetAdjoint (Identifier const &index, size_t dim)
 Set the adjoint component to zero.
 
void resetAdjointVec (Identifier const &index)
 Set the adjoint entry to zero.
 
Real getAdjoint (Identifier const &index, size_t dim)
 Get the adjoint component.
 
void getAdjointVec (Identifier const &index, Real *const vec)
 Get the adjoint entry.
 
Real const * getAdjointVec (Identifier const &index)
 Get the adjoint entry.
 
void updateAdjoint (Identifier const &index, size_t dim, Real const &adjoint)
 Update the adjoint component.
 
void updateAdjointVec (Identifier const &index, Real const *const vec)
 Update the adjoint entry.
 
void setPrimal (Identifier const &index, Real const &primal)
 Set the primal value.


 
Real getPrimal (Identifier const &index)
 Get the primal value.


 
- Public Member Functions inherited from codi::VectorAccessInterface< T_Real, T_Identifier >
virtual ~VectorAccessInterface ()
 Destructor.
 
virtual void setLhsAdjoint (Identifier const &index)=0
 
virtual void updateAdjointWithLhs (Identifier const &index, Real const &jacobian)=0
 
virtual void setLhsTangent (Identifier const &index)=0
 
virtual void updateTangentWithLhs (Identifier const &index, Real const &jacobian)=0
 
virtual void resetAdjoint (Identifier const &index, size_t dim)=0
 Set the adjoint component to zero.
 
virtual void resetAdjointVec (Identifier const &index)=0
 Set the adjoint entry to zero.
 
virtual Real getAdjoint (Identifier const &index, size_t dim)=0
 Get the adjoint component.
 
virtual void getAdjointVec (Identifier const &index, Real *const vec)=0
 Get the adjoint entry.
 
virtual Real const * getAdjointVec (Identifier const &index)=0
 Get the adjoint entry.
 
virtual void updateAdjoint (Identifier const &index, size_t dim, Real const &adjoint)=0
 Update the adjoint component.
 
virtual void updateAdjointVec (Identifier const &index, Real const *const vec)=0
 Update the adjoint entry.
 
virtual void setPrimal (Identifier const &index, Real const &primal)=0
 Set the primal value.
 
virtual Real getPrimal (Identifier const &index)=0
 Get the primal value.
 

Additional Inherited Members

- Protected Attributes inherited from codi::AdjointVectorAccess< T_Real, T_Identifier, T_Gradient >
GradientadjointVector
 Pointer to the gradient vector.
 

Detailed Description

template<typename T_Real, typename T_Identifier, typename T_Gradient>
struct codi::PrimalAdjointVectorAccess< T_Real, T_Identifier, T_Gradient >

Implementation of VectorAccessInterface for adjoint and primal vectors.

Both vectors are used as is, they are assumed to have correct sizes. No bounds checking is performed.

Inherits from AdjointVectorAccess and overwrites all methods specific to the primals.

Template Parameters
T_RealThe computation type of a tape, usually chosen as ActiveType::Real.
T_IdentifierThe adjoint/tangent identification of a tape, usually chosen as ActiveType::Identifier.
T_GradientThe gradient type of a tape, usually chosen as ActiveType::Gradient.

Member Function Documentation

◆ clone()

template<typename T_Real , typename T_Identifier , typename T_Gradient >
VectorAccessInterface< Real, Identifier > * codi::PrimalAdjointVectorAccess< T_Real, T_Identifier, T_Gradient >::clone ( ) const
inlinevirtual

Obtain a heap-allocated copy of the vector access inter- face. The user is responsible for deleting the pointer.

Reimplemented from codi::AdjointVectorAccess< T_Real, T_Identifier, T_Gradient >.

◆ getPrimal()

template<typename T_Real , typename T_Identifier , typename T_Gradient >
Real codi::PrimalAdjointVectorAccess< T_Real, T_Identifier, T_Gradient >::getPrimal ( Identifier const &  index)
inline

Get the primal value.

◆ hasPrimals()

template<typename T_Real , typename T_Identifier , typename T_Gradient >
bool codi::PrimalAdjointVectorAccess< T_Real, T_Identifier, T_Gradient >::hasPrimals ( )
inlinevirtual

True if the tape/vector interface has primal values.


Implementation: Always returns true.

Reimplemented from codi::AdjointVectorAccess< T_Real, T_Identifier, T_Gradient >.

◆ setPrimal()

template<typename T_Real , typename T_Identifier , typename T_Gradient >
void codi::PrimalAdjointVectorAccess< T_Real, T_Identifier, T_Gradient >::setPrimal ( Identifier const &  index,
Real const &  primal 
)
inline

Set the primal value.


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