- Main Page
- Namespaces
- Classes
- Files
- Related Pages

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# OSnLNode Class Reference

The OSnLNode Class. More...

`#include <OSnLNode.h>`

Inheritance diagram for OSnLNode:

[legend]
Collaboration diagram for OSnLNode:

[legend]
List of all members.

## Public Member Functions
virtual std::string | getTokenNumber ()
virtual std::string | getTokenName ()=0
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 double | constructADTape (std::map< int, int > *ADIdx, std::vector< double > *XAD)=0
virtual OSnLNode * | cloneOSnLNode ()=0
| OSnLNode ()
| default constructor.
virtual | ~OSnLNode ()
| default destructor.
bool | IsEqual (OSnLNode *that)
| A function to check for the equality of two objects.
## Public Attributes
unsigned int | inumberOfChildren
| numberOfChildren is the number of OSnLNode child elements set to -1 if the number is not fixed, e.g., for a sum node
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 priori, e.g., a sum node
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.
ADdouble | m_ADTape
| m_ADTape stores the espression tree for the this OSnLNode as an ADdouble.

## Detailed Description

The OSnLNode Class.

Author:
  Horand Gassmann, Jun Ma, Kipp Martin,

Version:
  1.0, 10/05/2005

Since:
  OS1.0

Remarks:
  in this file we define an OSnL node for a subset of the nodes defined in the OSnL schema

Definition at line 53 of file OSnLNode.h.

## Constructor & Destructor Documentation

OSnLNode::OSnLNode | ( |  | ) |

default constructor.

Definition at line 167 of file OSnLNode.cpp.

OSnLNode::~OSnLNode | ( |  | ) | `[virtual]`

default destructor.

Definition at line 174 of file OSnLNode.cpp.

## Member Function Documentation

std::string OSnLNode::getTokenNumber | ( |  | ) | `[virtual]`

Returns:
  the value of inodeInt

Reimplemented in OSnLNodeNumber, OSnLNodeE, OSnLNodePI, and OSnLNodeVariable.

Definition at line 247 of file OSnLNode.cpp.

References inodeInt, and inumberOfChildren.

virtual std::string OSnLNode::getTokenName | ( |  | ) | `[pure virtual]`

Returns:
  the value of operator name

Implemented in OSnLNodePlus, OSnLNodeSum, OSnLNodeMax, OSnLNodeMin, OSnLNodeMinus, OSnLNodeNegate, OSnLNodeTimes, OSnLNodeDivide, OSnLNodePower, OSnLNodeProduct, OSnLNodeLn, OSnLNodeSqrt, OSnLNodeSquare, OSnLNodeCos, OSnLNodeSin, OSnLNodeExp, OSnLNodeAbs, OSnLNodeErf, OSnLNodeIf, OSnLNodeNumber, OSnLNodeE, OSnLNodePI, OSnLNodeVariable, and OSnLNodeAllDiff.

Referenced by getNonlinearExpressionInXML(), and OSInstance::getNonlinearExpressionTreeInInfix().

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

Returns:
  the OSnLNode and its children as an OSiL string.

Reimplemented in OSnLNodeNumber, OSnLNodeE, OSnLNodePI, and OSnLNodeVariable.

Definition at line 375 of file OSnLNode.cpp.

References getTokenName(), inumberOfChildren, and m_mChildren.

OSnLNode * OSnLNode::createExpressionTreeFromPostfix | ( | std::vector< OSnLNode * > | nlNodeVec | ) |

Take a vector of OSnLNodes in postfix format and create an create an OSExpressionTree root node

Parameters:

  | nlNodeVec | holds a vector of pointers to OSnLNodes in postfix format

Returns:
  a pointer to an OSnLNode which is the root of and OSExpressionTree.

Definition at line 181 of file OSnLNode.cpp.

References inumberOfChildren, and m_mChildren.

Referenced by main(), and OSInstance::setQuadraticTermsInNonlinearExpressions().

OSnLNode * OSnLNode::createExpressionTreeFromPrefix | ( | std::vector< OSnLNode * > | nlNodeVec | ) |

Take a vector of OSnLNodes in prefix format and create an create an OSExpressionTree root node

Parameters:

  | nlNodeVec | holds a vector of pointers to OSnLNodes in prefix format

Returns:
  a pointer to an OSnLNode which is the root of and OSExpressionTree.

Definition at line 214 of file OSnLNode.cpp.

References inumberOfChildren, and m_mChildren.

std::vector< OSnLNode * > OSnLNode::getPrefixFromExpressionTree | ( |  | ) |

Get a vector of pointers to OSnLNodes that correspond to the OSExpressionTree in prefix format

Returns:
  the expression tree as a vector of OSnLNodes in prefix.

Definition at line 232 of file OSnLNode.cpp.

References preOrderOSnLNodeTraversal().

Referenced by OSInstance::getNonlinearExpressionTreeInPrefix(), OSInstance::getNonlinearExpressionTreeModInPrefix(), and OSExpressionTree::getPrefixFromExpressionTree().

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

Parameters:

  | a | pointer prefixVector to a vector of pointers of OSnLNodes

Returns:
  a vector of pointers to OSnLNodes in prefix.

Definition at line 237 of file OSnLNode.cpp.

References inumberOfChildren, and m_mChildren.

Referenced by getPrefixFromExpressionTree().

std::vector< OSnLNode * > OSnLNode::getPostfixFromExpressionTree | ( |  | ) |

Get a vector of pointers to OSnLNodes that correspond to the OSExpressionTree in postfix format

Returns:
  the expression tree as a vector of OSnLNodes in postfix.

Definition at line 199 of file OSnLNode.cpp.

References postOrderOSnLNodeTraversal().

Referenced by OSInstance::getNonlinearExpressionTreeInPostfix(), OSInstance::getNonlinearExpressionTreeModInPostfix(), OSExpressionTree::getPostfixFromExpressionTree(), and main().

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

Parameters:

  | a | pointer postfixVector to a vector of pointers of OSnLNodes

Returns:
  a vector of pointers to OSnLNodes in postfix.

Definition at line 204 of file OSnLNode.cpp.

References inumberOfChildren, and m_mChildren.

Referenced by getPostfixFromExpressionTree().

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

Parameters:

  | a | pointer to a map of the variables in the OSnLNode and its children

Reimplemented in OSnLNodeVariable.

Definition at line 404 of file OSnLNode.cpp.

References inodeInt, inumberOfChildren, m_mChildren, and OS_VARIABLE.

Referenced by OSExpressionTree::getVariableIndiciesMap().

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.

Parameters:

  | x | holds the values of the variables in a double array.

Returns:
  the function value given the current variable values.

Implemented in OSnLNodePlus, OSnLNodeSum, OSnLNodeMax, OSnLNodeMin, OSnLNodeMinus, OSnLNodeNegate, OSnLNodeTimes, OSnLNodeDivide, OSnLNodePower, OSnLNodeProduct, OSnLNodeLn, OSnLNodeSqrt, OSnLNodeSquare, OSnLNodeCos, OSnLNodeSin, OSnLNodeExp, OSnLNodeAbs, OSnLNodeErf, OSnLNodeIf, OSnLNodeNumber, OSnLNodeE, OSnLNodePI, OSnLNodeVariable, and OSnLNodeAllDiff.

Referenced by OSnLNodeIf::calculateFunction(), OSnLNodeDivide::calculateFunction(), OSnLNodeTimes::calculateFunction(), OSnLNodeNegate::calculateFunction(), OSnLNodeMinus::calculateFunction(), OSnLNodeMin::calculateFunction(), OSnLNodeMax::calculateFunction(), OSnLNodePlus::calculateFunction(), OSExpressionTree::calculateFunction(), and main().

virtual double OSnLNode::constructADTape | ( | std::map< int, int > * | ADIdx,
|  | std::vector< double > * | XAD |
| ) |  |  | `[pure virtual]`

Create the AD tape to be evaluated by AD. This is an abstract method which is required to be implemented by the concrete operator nodes that derive or extend from this OSnLNode class.

Returns:
  the expression tree.

Implemented in OSnLNodePlus, OSnLNodeSum, OSnLNodeMax, OSnLNodeMin, OSnLNodeMinus, OSnLNodeNegate, OSnLNodeTimes, OSnLNodeDivide, OSnLNodePower, OSnLNodeProduct, OSnLNodeLn, OSnLNodeSqrt, OSnLNodeSquare, OSnLNodeCos, OSnLNodeSin, OSnLNodeExp, OSnLNodeAbs, OSnLNodeErf, 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.

Parameters:

  | x | holds the values of the variables in a double array.

Returns:
  the function value given the current variable values.

Implemented in OSnLNodePlus, OSnLNodeSum, OSnLNodeMax, OSnLNodeMin, OSnLNodeMinus, OSnLNodeNegate, OSnLNodeTimes, OSnLNodeDivide, OSnLNodePower, OSnLNodeProduct, OSnLNodeLn, OSnLNodeSqrt, OSnLNodeSquare, OSnLNodeCos, OSnLNodeSin, OSnLNodeExp, OSnLNodeAbs, OSnLNodeErf, OSnLNodeIf, OSnLNodeNumber, OSnLNodeE, OSnLNodePI, OSnLNodeVariable, and OSnLNodeAllDiff.

bool OSnLNode::IsEqual | ( | OSnLNode * | that | ) |

A function to check for the equality of two objects.

Definition at line 413 of file OSnLNode.cpp.

References inodeInt, inodeType, inumberOfChildren, and m_mChildren.

## Member Data Documentation

unsigned int OSnLNode::inumberOfChildren

numberOfChildren is the number of OSnLNode child elements set to -1 if the number is not fixed, e.g., for a sum node

Definition at line 62 of file OSnLNode.h.

Referenced by OSnLNodeSum::calculateFunction(), CouenneSolver::createCouenneExpression(), createExpressionTreeFromPostfix(), createExpressionTreeFromPrefix(), OSInstance::getLagrangianExpTree(), getNonlinearExpressionInXML(), OSInstance::getNonlinearExpressionTreeInInfix(), getTokenNumber(), getVariableIndexMap(), IsEqual(), main(), OSnLNodePlus::OSnLNodePlus(), OSnLNodeSum::OSnLNodeSum(), postOrderOSnLNodeTraversal(), preOrderOSnLNodeTraversal(), OSnl2osil::walkTree(), OSnLNodePlus::~OSnLNodePlus(), and OSnLNodeSum::~OSnLNodeSum().

int OSnLNode::inodeInt

ssymbolInt is the unique integer assigned to the OSnLNode

Definition at line 65 of file OSnLNode.h.

Referenced by CouenneSolver::createCouenneExpression(), OSInstance::getNonlinearExpressionTreeInInfix(), OSnLNodeVariable::getTokenNumber(), OSnLNodePI::getTokenNumber(), OSnLNodeE::getTokenNumber(), OSnLNodeNumber::getTokenNumber(), getTokenNumber(), getVariableIndexMap(), IsEqual(), OSnLNodeAbs::OSnLNodeAbs(), OSnLNodeAllDiff::OSnLNodeAllDiff(), OSnLNodeCos::OSnLNodeCos(), OSnLNodeDivide::OSnLNodeDivide(), OSnLNodeE::OSnLNodeE(), OSnLNodeErf::OSnLNodeErf(), OSnLNodeExp::OSnLNodeExp(), OSnLNodeIf::OSnLNodeIf(), OSnLNodeLn::OSnLNodeLn(), OSnLNodeMax::OSnLNodeMax(), OSnLNodeMin::OSnLNodeMin(), OSnLNodeMinus::OSnLNodeMinus(), OSnLNodeNegate::OSnLNodeNegate(), OSnLNodeNumber::OSnLNodeNumber(), OSnLNodePI::OSnLNodePI(), OSnLNodePlus::OSnLNodePlus(), OSnLNodePower::OSnLNodePower(), OSnLNodeProduct::OSnLNodeProduct(), OSnLNodeSin::OSnLNodeSin(), OSnLNodeSqrt::OSnLNodeSqrt(), OSnLNodeSquare::OSnLNodeSquare(), OSnLNodeSum::OSnLNodeSum(), OSnLNodeTimes::OSnLNodeTimes(), and OSnLNodeVariable::OSnLNodeVariable().

int OSnLNode::inodeType

inodeType is the number of children the node has, it is set to -1 if the number is not known a priori, e.g., a sum node

Definition at line 70 of file OSnLNode.h.

Referenced by IsEqual(), OSnLNodeAbs::OSnLNodeAbs(), OSnLNodeAllDiff::OSnLNodeAllDiff(), OSnLNodeCos::OSnLNodeCos(), OSnLNodeDivide::OSnLNodeDivide(), OSnLNodeE::OSnLNodeE(), OSnLNodeErf::OSnLNodeErf(), OSnLNodeExp::OSnLNodeExp(), OSnLNodeIf::OSnLNodeIf(), OSnLNodeLn::OSnLNodeLn(), OSnLNodeMax::OSnLNodeMax(), OSnLNodeMin::OSnLNodeMin(), OSnLNodeMinus::OSnLNodeMinus(), OSnLNodeNegate::OSnLNodeNegate(), OSnLNodeNumber::OSnLNodeNumber(), OSnLNodePI::OSnLNodePI(), OSnLNodePlus::OSnLNodePlus(), OSnLNodePower::OSnLNodePower(), OSnLNodeProduct::OSnLNodeProduct(), OSnLNodeSin::OSnLNodeSin(), OSnLNodeSqrt::OSnLNodeSqrt(), OSnLNodeSquare::OSnLNodeSquare(), OSnLNodeSum::OSnLNodeSum(), OSnLNodeTimes::OSnLNodeTimes(), and OSnLNodeVariable::OSnLNodeVariable().

OSnLNode** OSnLNode::m_mChildren

m_mChildren holds all the operands, that is, nodes that the current node operate on.

Definition at line 75 of file OSnLNode.h.

Referenced by OSInstance::addQTermsToExressionTree(), OSnLNodeIf::calculateFunction(), OSnLNodeErf::calculateFunction(), OSnLNodeAbs::calculateFunction(), OSnLNodeExp::calculateFunction(), OSnLNodeCos::calculateFunction(), OSnLNodeSin::calculateFunction(), OSnLNodeSquare::calculateFunction(), OSnLNodeSqrt::calculateFunction(), OSnLNodeLn::calculateFunction(), OSnLNodeProduct::calculateFunction(), OSnLNodePower::calculateFunction(), OSnLNodeDivide::calculateFunction(), OSnLNodeTimes::calculateFunction(), OSnLNodeNegate::calculateFunction(), OSnLNodeMinus::calculateFunction(), OSnLNodeMin::calculateFunction(), OSnLNodeMax::calculateFunction(), OSnLNodeAllDiff::calculateFunction(), OSnLNodeSum::calculateFunction(), OSnLNodePlus::calculateFunction(), CouenneSolver::createCouenneExpression(), createExpressionTreeFromPostfix(), createExpressionTreeFromPrefix(), OSgams2osil::createOSInstance(), OSInstance::getAllNonlinearExpressionTrees(), OSInstance::getLagrangianExpTree(), OSnLNodeVariable::getNonlinearExpressionInXML(), getNonlinearExpressionInXML(), OSInstance::getSparseJacobianFromColumnMajor(), OSInstance::getSparseJacobianFromRowMajor(), getVariableIndexMap(), IsEqual(), main(), OSnLNodeAbs::OSnLNodeAbs(), OSnLNodeCos::OSnLNodeCos(), OSnLNodeDivide::OSnLNodeDivide(), OSnLNodeE::OSnLNodeE(), OSnLNodeErf::OSnLNodeErf(), OSnLNodeExp::OSnLNodeExp(), OSnLNodeIf::OSnLNodeIf(), OSnLNodeLn::OSnLNodeLn(), OSnLNodeMinus::OSnLNodeMinus(), OSnLNodeNegate::OSnLNodeNegate(), OSnLNodeNumber::OSnLNodeNumber(), OSnLNodePI::OSnLNodePI(), OSnLNodePlus::OSnLNodePlus(), OSnLNodePower::OSnLNodePower(), OSnLNodeSin::OSnLNodeSin(), OSnLNodeSqrt::OSnLNodeSqrt(), OSnLNodeSquare::OSnLNodeSquare(), OSnLNodeTimes::OSnLNodeTimes(), OSnLNodeVariable::OSnLNodeVariable(), postOrderOSnLNodeTraversal(), preOrderOSnLNodeTraversal(), OSnl2osil::walkTree(), OSnLNodeAbs::~OSnLNodeAbs(), OSnLNodeAllDiff::~OSnLNodeAllDiff(), OSnLNodeCos::~OSnLNodeCos(), OSnLNodeDivide::~OSnLNodeDivide(), OSnLNodeE::~OSnLNodeE(), OSnLNodeErf::~OSnLNodeErf(), OSnLNodeExp::~OSnLNodeExp(), OSnLNodeIf::~OSnLNodeIf(), OSnLNodeLn::~OSnLNodeLn(), OSnLNodeMax::~OSnLNodeMax(), OSnLNodeMin::~OSnLNodeMin(), OSnLNodeMinus::~OSnLNodeMinus(), OSnLNodeNegate::~OSnLNodeNegate(), OSnLNodeNumber::~OSnLNodeNumber(), OSnLNodePI::~OSnLNodePI(), OSnLNodePlus::~OSnLNodePlus(), OSnLNodePower::~OSnLNodePower(), OSnLNodeProduct::~OSnLNodeProduct(), OSnLNodeSin::~OSnLNodeSin(), OSnLNodeSqrt::~OSnLNodeSqrt(), OSnLNodeSquare::~OSnLNodeSquare(), OSnLNodeSum::~OSnLNodeSum(), OSnLNodeTimes::~OSnLNodeTimes(), and OSnLNodeVariable::~OSnLNodeVariable().

double OSnLNode::m_dFunctionValue

m_dFunctionValue holds the function value given the current variable values.

Definition at line 80 of file OSnLNode.h.

Referenced by OSnLNodeVariable::calculateFunction(), OSnLNodePI::calculateFunction(), OSnLNodeE::calculateFunction(), OSnLNodeNumber::calculateFunction(), OSnLNodeIf::calculateFunction(), OSnLNodeErf::calculateFunction(), OSnLNodeAbs::calculateFunction(), OSnLNodeExp::calculateFunction(), OSnLNodeCos::calculateFunction(), OSnLNodeSin::calculateFunction(), OSnLNodeSquare::calculateFunction(), OSnLNodeSqrt::calculateFunction(), OSnLNodeLn::calculateFunction(), OSnLNodeProduct::calculateFunction(), OSnLNodePower::calculateFunction(), OSnLNodeDivide::calculateFunction(), OSnLNodeTimes::calculateFunction(), OSnLNodeNegate::calculateFunction(), OSnLNodeMinus::calculateFunction(), OSnLNodeMin::calculateFunction(), OSnLNodeMax::calculateFunction(), OSnLNodeAllDiff::calculateFunction(), OSnLNodeSum::calculateFunction(), and OSnLNodePlus::calculateFunction().

ADdouble OSnLNode::m_ADTape

m_ADTape stores the espression tree for the this OSnLNode as an ADdouble.

Definition at line 86 of file OSnLNode.h.

The documentation for this class was generated from the following files:

- /home/coin/SVN-release/OS-2.3.5/OS/src/OSCommonInterfaces/OSnLNode.h
- /home/coin/SVN-release/OS-2.3.5/OS/src/OSCommonInterfaces/OSnLNode.cpp