CoDiPack  2.2.0
A Code Differentiation Package
SciComp TU Kaiserslautern
Loading...
Searching...
No Matches
Tape Interface Design

The full tape interface of CoDiPack is broken down into several smaller interfaces. This has the advantages that

  • related functions are clustered together,
  • documentation can be provided in more concise format,
  • other classes can specify more clearly which functionality is required,
  • new tape implementations can start with the basic interfaces

A disadvantage is that functionality is spread over more files, but the advantages should outweigh this.

The four basic CoDiPack tapes codi::JacobianLinearTape, codi::JacobianReuseTape, codi::PrimalValueLinearTape and codi::PrimalValueReuseTape implement the codi::FullTapeInterface. This interface consists of all interfaces defined in codi/tapes/interfaces and defines all functionality that is required for a tape implementation in order to work with all helper structures of CoDiPack.

An implementation of the full tape interface requires significant effort for a new tape development. It is most of the time enough to just implement a subset of the interfaces for a working tape implementation. For reverse tapes the minimum required functionality is defined in the codi::ReverseTapeInterface. A development tutorial on how to implement a simple reverse tape with the functionality available in CoDiPack is provided in Example tape implementation with CoDiPack.

Here is the list of all interfaces currently defined in CoDiPack.

For a detailed explanation of the functionality, see the respective interface documentation.