#include <OSnLNode.h>
Public Member Functions | |
virtual std::string | getTokenNumber () |
virtual std::string | getTokenName () |
virtual std::string | getNonlinearExpressionInXML () |
OSnLNode * | createExpressionTreeFromPostfix (std::vector< OSnLNode * > nlNodeVec) |
OSnLNode * | createExpressionTreeFromPrefix (std::vector< OSnLNode * > nlNodeVec) |
std::vector< OSnLNode * > | getPrefixFromExpressionTree () |
std::vector< OSnLNode * > | preOrderOSnLNodeTraversal (std::vector< OSnLNode * > *prefixVector) |
std::vector< OSnLNode * > | getPostfixFromExpressionTree () |
std::vector< OSnLNode * > | postOrderOSnLNodeTraversal (std::vector< OSnLNode * > *postfixVector) |
virtual void | getVariableIndexMap (std::map< int, int > *varIdx) |
virtual double | calculateFunction (double *x)=0 |
virtual AD< double > | constructCppADTape (std::map< int, int > *cppADIdx, CppAD::vector< AD< double > > *XAD)=0 |
virtual OSnLNode * | cloneOSnLNode ()=0 |
OSnLNode () | |
default constructor. | |
virtual | ~OSnLNode () |
default destructor. | |
Public Attributes | |
std::string | snodeName |
nodeName holds the OSnLNode name | |
int | inumberOfChildren |
numberOfChildren is the number of OSnLNode child elements | |
int | inodeInt |
ssymbolInt is the unique integer assigned to the OSnLNode | |
int | inodeType |
inodeType is the number of children the node has, it is set to -1 if the number is not known a prior, e.g. | |
OSnLNode ** | m_mChildren |
m_mChildren holds all the operands, that is nodes that the current node operate on. | |
double | m_dFunctionValue |
m_dFunctionValue holds the function value given the current variable values. | |
AD< double > | m_CppADTape |
m_CppADTape stores the espression tree for the this OSnLNode as an AD<double>. |
The OSnLNode Class.
Definition at line 69 of file OSnLNode.h.
OSnLNode::OSnLNode | ( | ) |
default constructor.
virtual OSnLNode::~OSnLNode | ( | ) | [virtual] |
default destructor.
virtual std::string OSnLNode::getTokenNumber | ( | ) | [virtual] |
Reimplemented in OSnLNodeNumber, OSnLNodeE, OSnLNodePI, and OSnLNodeVariable.
virtual std::string OSnLNode::getTokenName | ( | ) | [virtual] |
Reimplemented in OSnLNodeNumber, OSnLNodeE, OSnLNodePI, and OSnLNodeVariable.
virtual std::string OSnLNode::getNonlinearExpressionInXML | ( | ) | [virtual] |
the following method writes an OSnLNode in OSiL format, it is used by OSiLWriter to take an OSInstance and write the corresponding OSiL
Reimplemented in OSnLNodeNumber, OSnLNodeE, OSnLNodePI, and OSnLNodeVariable.
Take a vector of OSnLNodes in postfix format and create an create an OSExpressionTree root node
nlNodeVec | holds a vector of pointers to OSnLNodes in postfix format |
Take a vector of OSnLNodes in prefix format and create an create an OSExpressionTree root node
nlNodeVec | holds a vector of pointers to OSnLNodes in prefix format |
std::vector<OSnLNode*> OSnLNode::getPrefixFromExpressionTree | ( | ) |
Get a vector of pointers to OSnLNodes that correspond to the OSExpressionTree in prefix format
std::vector<OSnLNode*> OSnLNode::preOrderOSnLNodeTraversal | ( | std::vector< OSnLNode * > * | prefixVector | ) |
Called by getPrefixFromExpressionTree(). This method calls itself recursively and generates a vector of pointers to OSnLNodes in prefix
a | pointer prefixVector to a vector of pointers of OSnLNodes |
std::vector<OSnLNode*> OSnLNode::getPostfixFromExpressionTree | ( | ) |
Get a vector of pointers to OSnLNodes that correspond to the OSExpressionTree in postfix format
std::vector<OSnLNode*> OSnLNode::postOrderOSnLNodeTraversal | ( | std::vector< OSnLNode * > * | postfixVector | ) |
Called by getPostfixFromExpressionTree(). This method calls itself recursively and generates a vector of pointers to OSnLNodes in postfix
a | pointer postfixVector to a vector of pointers of OSnLNodes |
virtual void OSnLNode::getVariableIndexMap | ( | std::map< int, int > * | varIdx | ) | [virtual] |
varIdx is a map where the key is the index of an OSnLNodeVariable and (*varIdx)[ idx] is the kth variable in the map, e.g. (*varIdx)[ 5] = 2 means that variable indexed by 5 is the second variable in the OSnLNode and all of its children
a | pointer to a map of the variables in the OSnLNode and its children |
Reimplemented in OSnLNodeVariable.
virtual double OSnLNode::calculateFunction | ( | double * | x | ) | [pure virtual] |
Calculate the function value given the current variable values. This is an abstract method which is required to be implemented by the concrete operator nodes that derive or extend from this OSnLNode class.
x | holds the values of the variables in a double array. |
Implemented in OSnLNodePlus, OSnLNodeSum, OSnLNodeMax, OSnLNodeMin, OSnLNodeMinus, OSnLNodeNegate, OSnLNodeTimes, OSnLNodeDivide, OSnLNodePower, OSnLNodeProduct, OSnLNodeLn, OSnLNodeSqrt, OSnLNodeSquare, OSnLNodeCos, OSnLNodeSin, OSnLNodeExp, OSnLNodeAbs, OSnLNodeIf, OSnLNodeNumber, OSnLNodeE, OSnLNodePI, OSnLNodeVariable, and OSnLNodeAllDiff.
virtual AD<double> OSnLNode::constructCppADTape | ( | std::map< int, int > * | cppADIdx, | |
CppAD::vector< AD< double > > * | XAD | |||
) | [pure virtual] |
Create the AD tape to be evaluated by CppAD. This is an abstract method which is required to be implemented by the concrete operator nodes that derive or extend from this OSnLNode class.
Implemented in OSnLNodePlus, OSnLNodeSum, OSnLNodeMax, OSnLNodeMin, OSnLNodeMinus, OSnLNodeNegate, OSnLNodeTimes, OSnLNodeDivide, OSnLNodePower, OSnLNodeProduct, OSnLNodeLn, OSnLNodeSqrt, OSnLNodeSquare, OSnLNodeCos, OSnLNodeSin, OSnLNodeExp, OSnLNodeAbs, OSnLNodeIf, OSnLNodeNumber, OSnLNodeE, OSnLNodePI, OSnLNodeVariable, and OSnLNodeAllDiff.
virtual OSnLNode* OSnLNode::cloneOSnLNode | ( | ) | [pure virtual] |
Create or clone a node of this type. This is an abstract method which is required to be implemented by the concrete operator nodes that derive or extend from this OSnLNode class.
x | holds the values of the variables in a double array. |
Implemented in OSnLNodePlus, OSnLNodeSum, OSnLNodeMax, OSnLNodeMin, OSnLNodeMinus, OSnLNodeNegate, OSnLNodeTimes, OSnLNodeDivide, OSnLNodePower, OSnLNodeProduct, OSnLNodeLn, OSnLNodeSqrt, OSnLNodeSquare, OSnLNodeCos, OSnLNodeSin, OSnLNodeExp, OSnLNodeAbs, OSnLNodeIf, OSnLNodeNumber, OSnLNodeE, OSnLNodePI, OSnLNodeVariable, and OSnLNodeAllDiff.
std::string OSnLNode::snodeName |
nodeName holds the OSnLNode name
Definition at line 75 of file OSnLNode.h.
numberOfChildren is the number of OSnLNode child elements
Definition at line 78 of file OSnLNode.h.
ssymbolInt is the unique integer assigned to the OSnLNode
Definition at line 81 of file OSnLNode.h.
inodeType is the number of children the node has, it is set to -1 if the number is not known a prior, e.g.
a sum node
Definition at line 86 of file OSnLNode.h.
m_mChildren holds all the operands, that is nodes that the current node operate on.
Definition at line 91 of file OSnLNode.h.
double OSnLNode::m_dFunctionValue |
m_dFunctionValue holds the function value given the current variable values.
Definition at line 96 of file OSnLNode.h.
AD<double> OSnLNode::m_CppADTape |
m_CppADTape stores the espression tree for the this OSnLNode as an AD<double>.
Definition at line 102 of file OSnLNode.h.