OSnLNode Class Reference

The OSnLNode Class for nonlinear expressions. More...

#include <OSnLNode.h>

Inheritance diagram for OSnLNode:
Inheritance graph
[legend]
Collaboration diagram for OSnLNode:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 OSnLNode ()
 default constructor.
virtual ~OSnLNode ()
 default destructor.
virtual void getVariableIndexMap (std::map< int, int > *varIdx)
 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.
virtual double calculateFunction (double *x)=0
 Calculate the function value given the current variable values.
virtual ADdouble constructADTape (std::map< int, int > *ADIdx, ADvector *XAD)=0
 Create the AD tape to be evaluated by AD.
OSnLNodecreateExpressionTreeFromPrefix (std::vector< ExprNode * > nlNodeVec)
 Take a vector of ExprNodes (OSnLNodes and OSnLMNodes) in prefix format and create a scalar-valued OSExpressionTree root node.
virtual std::vector< ExprNode * > getPrefixFromExpressionTree ()
 Get a vector of pointers to OSnLNodes and OSnLMNodes that correspond to the (scalar-valued or matrix-valued) expression tree in prefix format.
virtual std::vector< ExprNode * > preOrderOSnLNodeTraversal (std::vector< ExprNode * > *prefixVector)
 Called by getPrefixFromExpressionTree().
OSnLNodecreateExpressionTreeFromPostfix (std::vector< ExprNode * > nlNodeVec)
 Take a vector of ExprNodes (OSnLNodes and OSnLMNodes) in postfix format and create a scalar-valued OSExpressionTree root node.
virtual std::vector< ExprNode * > getPostfixFromExpressionTree ()
 Get a vector of pointers to ExprNodes that correspond to the expression tree in postfix format.
virtual std::vector< ExprNode * > postOrderOSnLNodeTraversal (std::vector< ExprNode * > *postfixVector)
 Called by getPostfixFromExpressionTree().
virtual OSnLNodecopyNodeAndDescendants ()
 make a copy of this node and all its descendants
bool IsEqual (OSnLNode *that)
 A function to check for the equality of two objects.

Public Attributes

double m_dFunctionValue
 m_dFunctionValue holds the function value given the current variable values.
ADdouble m_ADTape
 m_ADTape stores the expression tree for the this OSnLNode as an ADdouble.

Detailed Description

The OSnLNode Class for nonlinear expressions.

Author:
Horand Gassmann, Jun Ma, Kipp Martin
Version:
1.0, 10/05/2005
Since:
OS1.0

Definition at line 179 of file OSnLNode.h.


Constructor & Destructor Documentation

OSnLNode::OSnLNode (  ) 

default constructor.

Definition at line 365 of file OSnLNode.cpp.

OSnLNode::~OSnLNode (  )  [virtual]

default destructor.

Definition at line 374 of file OSnLNode.cpp.


Member Function Documentation

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 493 of file OSnLNode.cpp.

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, OSnLNodeAllDiff, OSnLNodeMatrixDeterminant, OSnLNodeMatrixTrace, and OSnLNodeMatrixToScalar.

virtual ADdouble OSnLNode::constructADTape ( std::map< int, int > *  ADIdx,
ADvector 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, OSnLNodeAllDiff, OSnLNodeMatrixDeterminant, OSnLNodeMatrixTrace, and OSnLNodeMatrixToScalar.

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

Take a vector of ExprNodes (OSnLNodes and OSnLMNodes) in prefix format and create a scalar-valued OSExpressionTree root node.

Parameters:
nlNodeVec holds a vector of pointers to OSnLNodes and OSnLMNodes in prefix format
Returns:
a pointer to an OSnLNode which is the root of an OSExpressionTree.

Definition at line 381 of file OSnLNode.cpp.

std::vector< ExprNode * > OSnLNode::getPrefixFromExpressionTree (  )  [virtual]

Get a vector of pointers to OSnLNodes and OSnLMNodes that correspond to the (scalar-valued or matrix-valued) expression tree in prefix format.

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

Reimplemented from ExprNode.

Definition at line 446 of file OSnLNode.cpp.

std::vector< ExprNode * > OSnLNode::preOrderOSnLNodeTraversal ( std::vector< ExprNode * > *  prefixVector  )  [virtual]

Called by getPrefixFromExpressionTree().

This method calls itself recursively and generates a vector of pointers to ExprNode in prefix

Parameters:
a pointer prefixVector to a vector of pointers of ExprNodes
Returns:
a vector of pointers to ExprNode in prefix.

Definition at line 452 of file OSnLNode.cpp.

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

Take a vector of ExprNodes (OSnLNodes and OSnLMNodes) in postfix format and create a scalar-valued 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 an OSExpressionTree.

Definition at line 413 of file OSnLNode.cpp.

std::vector< ExprNode * > OSnLNode::getPostfixFromExpressionTree (  )  [virtual]

Get a vector of pointers to ExprNodes that correspond to the expression tree in postfix format.

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

Reimplemented from ExprNode.

Definition at line 468 of file OSnLNode.cpp.

std::vector< ExprNode * > OSnLNode::postOrderOSnLNodeTraversal ( std::vector< ExprNode * > *  postfixVector  )  [virtual]

Called by getPostfixFromExpressionTree().

This method calls itself recursively and generates a vector of pointers to ExprNodes in postfix.

Parameters:
a pointer postfixVector to a vector of pointers of ExprNodes
Returns:
a vector of pointers to ExprNodes in postfix.

Definition at line 475 of file OSnLNode.cpp.

OSnLNode * OSnLNode::copyNodeAndDescendants (  )  [virtual]

make a copy of this node and all its descendants

Returns:
a pointer to the duplicate node

Reimplemented in OSnLNodeNumber, and OSnLNodeVariable.

Definition at line 505 of file OSnLNode.cpp.

bool OSnLNode::IsEqual ( OSnLNode that  )  [virtual]

A function to check for the equality of two objects.

Reimplemented from ExprNode.

Reimplemented in OSnLNodeNumber, and OSnLNodeVariable.

Definition at line 541 of file OSnLNode.cpp.


Member Data Documentation

m_dFunctionValue holds the function value given the current variable values.

Definition at line 185 of file OSnLNode.h.

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

Definition at line 190 of file OSnLNode.h.


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

Generated on 5 Jul 2015 by  doxygen 1.6.1