Generates a graphical .dot file for a primal value tape. The writer adds the math representation of statements into the node labels. More...
#include <graphWriters.hpp>
Public Types | |
using | Base = CommonTextTapeWriter<T_Type> |
See CommonTextTapeWriter. | |
using | EvalHandle = typename Tape::EvalHandle |
See TapeWriterInterface. | |
using | Identifier = typename Type::Identifier |
See TapeWriterInterface. | |
using | Real = typename Type::Real |
See TapeWriterInterface. | |
using | Tape = typename Type::Tape |
See TapeWriterInterface. | |
using | Type = T_Type |
See TapeWriterInterface. | |
Public Types inherited from codi::CommonTextTapeWriter< T_Type > | |
using | Base = CommonBaseTapeWriter<T_Type> |
See CommonBaseTapeWriter. | |
using | Identifier = typename Type::Identifier |
See TapeWriterInterface. | |
using | Real = typename Type::Real |
See TapeWriterInterface. | |
using | Tape = typename Type::Tape |
See TapeWriterInterface. | |
using | Type = T_Type |
See TapeWriterInterface. | |
Public Types inherited from codi::CommonBaseTapeWriter< T_Type > | |
using | Identifier = typename Type::Identifier |
See TapeWriterInterface. | |
using | Tape = typename Type::Tape |
See TapeWriterInterface. | |
using | Type = T_Type |
See TapeWriterInterface. | |
Public Types inherited from codi::TapeWriterInterface< T_Type > | |
using | EvalHandle = typename Tape::EvalHandle |
Evaluation handle used for primal value tapes. | |
using | Identifier = typename Type::Identifier |
Identifier for the internal management, e.g. int. | |
using | Real = typename Type::Real |
Primal computation type, e.g. double. | |
using | Tape = typename Type::Tape |
The tape type that is to be written out. | |
using | Type = T_Type |
The evaluation type. | |
Public Member Functions | |
PrimalGraphTapeWriter (std::string const &name, std::vector< Identifier > const &in, std::vector< Identifier > const &out) | |
Constructor. | |
void | writeStatement (WriteInfo const &info, Identifier const &curLhsIdentifier, Real const &primalValue, Config::ArgumentSize const &nPassiveValues, size_t const &curRhsIdentifiersPos, Identifier const *const rhsIdentifiers, size_t const &curPassiveValuePos, Real const *const passiveValues, size_t &curConstantPos, Real const *const constantValues, EvalHandle stmtEvalHandle) |
Called for each statement. The method writes the current statement to the file. This overload is used for the primal value writers and contains additional arguments, such as the WriteInfo. | |
Public Member Functions inherited from codi::CommonTextTapeWriter< T_Type > | |
CommonTextTapeWriter (bool writeDotHeaderFooter, std::string const &name, std::vector< Identifier > const &in, std::vector< Identifier > const &out) | |
Constructor. | |
void | finish () |
After all the statements have been written, the finish method finalizes the writing process. | |
void | start (Tape &tape) |
Destructor. | |
Public Member Functions inherited from codi::CommonBaseTapeWriter< T_Type > | |
CommonBaseTapeWriter (std::string const &name, std::vector< Identifier > const &in, std::vector< Identifier > const &out) | |
Constructor. | |
Public Member Functions inherited from codi::TapeWriterInterface< T_Type > | |
virtual void | writeLowLevelFunction (size_t &curLLFByteDataPos, char *dataPtr, size_t &curLLFInfoDataPos, Config::LowLevelFunctionToken *const tokenPtr, Config::LowLevelFunctionDataSize *const dataSizePtr) |
Used for statements that contain a low level function. | |
virtual void | writeStatement (Identifier const &curLhsIdentifier, size_t &curJacobianPos, Real const *const rhsJacobians, Identifier const *const rhsIdentifiers, Config::ArgumentSize const &nJacobians) |
Called for each statement. The method writes the current statement to the file. This overload is used for the Jacobian writers. | |
Public Member Functions inherited from codi::CommonReaderWriterMethods | |
CommonReaderWriterMethods () | |
Constructor. | |
CommonReaderWriterMethods (std::string const &name) | |
Constructor. | |
std::string | modifyFileName (std::string const &suffix) |
Remove the file extension and replace it with a new suffix. | |
void | openFile (FILE *&fileHandle, std::string const &name, std::string const &mode) |
Additional Inherited Members | |
Public Attributes inherited from codi::CommonTextTapeWriter< T_Type > | |
FILE * | fileHandleGraph = nullptr |
The handle for the writer. | |
std::vector< Identifier > | identifierExtensions |
std::vector< IdentifierType > | identifierType |
bool | writeDotHeaderFooter |
This flag sets toggles the heading and color index. | |
Public Attributes inherited from codi::CommonBaseTapeWriter< T_Type > | |
std::vector< Identifier > | inputVariables |
The identifiers which have been registered as inputs. | |
std::vector< Identifier > | outputVariables |
The identifiers which have been registered as outputs. | |
Public Attributes inherited from codi::CommonReaderWriterMethods | |
std::string | fileName |
The base file name provided by the user. | |
Protected Member Functions inherited from codi::CommonTextTapeWriter< T_Type > | |
void | createEdge (Identifier const &from, Identifier const &to, std::string const &label="") |
Return a string that creates an edge between two nodes in the .dot language. | |
void | createNode (Identifier const &identifier, std::string const &label) |
Creates a new node for a given Identifier and label. | |
std::string | formatNodeLabel (Identifier const &identifier) |
Return a string with the current identifier type and the identifier value. | |
std::string | formatNodeName (Identifier const &identifier, int extensionOffset=0) |
Add the identifier extension of the identifier to the node name. | |
std::string | modifyMathRep (std::string const &mathRep, Identifier const &lhsIdentifier, Identifier const *const rhsIdentifiers, size_t const &nActiveValues) |
Replaces all general identifiers in the math representation with the input, output or temporary annotation. E.g. x42 -> Y42 for a variable tagged as output. | |
std::string | nodeColorProperties (Identifier const &identifier) |
Returns the color for a given identifier. | |
void | placeUnusedRhsNodes (Identifier const *const rhsIdentifiers, Config::ArgumentSize const &nArguments) |
Ensure that all the nodes on the rhs have been placed in the .dot file before creating edges to them. | |
void | replaceAll (std::string &str, const std::string &search, const std::string &replace) |
Replaces all substrings of search with replace in str . | |
Protected Member Functions inherited from codi::CommonBaseTapeWriter< T_Type > | |
void | printIoBinary (Tape &tape) |
Generate the IO file in a binary format. | |
void | printIoText (Tape &tape) |
Generate the IO file in a text format. | |
Generates a graphical .dot file for a primal value tape. The writer adds the math representation of statements into the node labels.
An example of how Nodes and Edges are produced in the .dot file:
Nodes: A35_1 [label = <T33 = X37*X6>]];
The label contains the math rep of the current statement.
Edges: A35_1 -> A56_2;
The extension is used to record multiple unique nodes for a identifier.
See codi::CommonTextTapeWriter for the methods that are used in this class. See codi::TapeWriterInterface for a general description on how to use tape writers.
T_Type | The CoDiPack type of the tape that is to be written out. |
|
inlinevirtual |
Called for each statement. The method writes the current statement to the file. This overload is used for the primal value writers and contains additional arguments, such as the WriteInfo.
Reimplemented from codi::TapeWriterInterface< T_Type >.