OS  2.9.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Public Attributes | List of all members
OSnLNode Class Referenceabstract

The OSnLNode Class for nonlinear expressions. More...

#include <OSnLNode.h>

+ Inheritance diagram for OSnLNode:
+ Collaboration diagram for OSnLNode:

Public Member Functions

 OSnLNode ()
 default constructor. More...
 
virtual ~OSnLNode ()
 default destructor. More...
 
virtual void getVariableIndexMap (std::map< int, int > *varIdx)
 
virtual double calculateFunction (double *x)=0
 
virtual ADdouble constructADTape (std::map< int, int > *ADIdx, ADvector *XAD)=0
 
OSnLNodecreateExpressionTreeFromPrefix (std::vector< ExprNode * > nlNodeVec)
 
virtual std::vector< ExprNode * > getPrefixFromExpressionTree ()
 
virtual std::vector< ExprNode * > preOrderOSnLNodeTraversal (std::vector< ExprNode * > *prefixVector)
 
OSnLNodecreateExpressionTreeFromPostfix (std::vector< ExprNode * > nlNodeVec)
 
virtual std::vector< ExprNode * > getPostfixFromExpressionTree ()
 
virtual std::vector< ExprNode * > postOrderOSnLNodeTraversal (std::vector< ExprNode * > *postfixVector)
 
OSnLNodecopyNodeAndDescendants ()
 make a copy of this node and all its descendants More...
 
bool IsEqual (OSnLNode *that)
 A function to check for the equality of two objects. More...
 
- Public Member Functions inherited from ExprNode
 ExprNode ()
 default constructor. More...
 
virtual ~ExprNode ()
 default destructor. More...
 
virtual std::string getTokenNumber ()
 
virtual std::string getTokenName ()=0
 
virtual std::string getNonlinearExpressionInXML ()
 
virtual ExprNodecloneExprNode ()=0
 
virtual bool IsEqual (ExprNode *that)
 A function to check for the equality of two objects. More...
 

Public Attributes

double m_dFunctionValue
 m_dFunctionValue holds the function value given the current variable values. More...
 
ADdouble m_ADTape
 m_ADTape stores the expression tree for the this OSnLNode as an ADdouble. More...
 
- Public Attributes inherited from ExprNode
int inodeInt
 inodeInt is the unique integer assigned to the OSnLNode or OSnLMNode in OSParameters.h. More...
 
int inodeType
 inodeType essentially tracks whether the number of children are known or not. More...
 
unsigned int inumberOfChildren
 inumberOfChildren is the number of OSnLNode child elements If this number is not fixed, e.g., for a sum node, it is temporarily set to 0 More...
 
unsigned int inumberOfMatrixChildren
 inumberOfMatrixChildren is the number of OSnLMNode child elements If this number is not fixed, e.g., for a matrixProduct node, it is temporarily set to 0 More...
 
OSnLNode ** m_mChildren
 m_mChildren holds all the operands, that is, nodes that the current node operates on. More...
 
OSnLMNode ** m_mMatrixChildren
 m_mMatrixChildren holds all the matrix-valued operands, if any. More...
 

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 192 of file OSnLNode.h.

Constructor & Destructor Documentation

OSnLNode::OSnLNode ( )

default constructor.

virtual OSnLNode::~OSnLNode ( )
virtual

default destructor.

Member Function Documentation

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

Parameters
apointer 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.

Parameters
xholds the values of the variables in a double array.
Returns
the function value given the current variable values.

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

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 OSnLNodeMatrixToScalar, OSnLNodeMatrixTrace, OSnLNodeMatrixDeterminant, OSnLNodeAllDiff, OSnLNodeVariable, OSnLNodePI, OSnLNodeE, OSnLNodeNumber, OSnLNodeIf, OSnLNodeErf, OSnLNodeAbs, OSnLNodeExp, OSnLNodeSin, OSnLNodeCos, OSnLNodeSquare, OSnLNodeSqrt, OSnLNodeLn, OSnLNodeProduct, OSnLNodePower, OSnLNodeDivide, OSnLNodeTimes, OSnLNodeNegate, OSnLNodeMinus, OSnLNodeMin, OSnLNodeMax, OSnLNodeSum, and OSnLNodePlus.

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
nlNodeVecholds a vector of pointers to OSnLNodes and OSnLMNodes in prefix format
Returns
a pointer to an OSnLNode which is the root of an OSExpressionTree.
virtual 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.

virtual 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
apointer prefixVector to a vector of pointers of ExprNodes
Returns
a vector of pointers to ExprNode in prefix.

Reimplemented from ExprNode.

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
nlNodeVecholds a vector of pointers to OSnLNodes in postfix format
Returns
a pointer to an OSnLNode which is the root of an OSExpressionTree.
virtual 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.

virtual 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
apointer postfixVector to a vector of pointers of ExprNodes
Returns
a vector of pointers to ExprNodes in postfix.

Reimplemented from ExprNode.

OSnLNode* OSnLNode::copyNodeAndDescendants ( )

make a copy of this node and all its descendants

Returns
a pointer to the duplicate node
bool OSnLNode::IsEqual ( OSnLNode that)

A function to check for the equality of two objects.

Member Data Documentation

double OSnLNode::m_dFunctionValue

m_dFunctionValue holds the function value given the current variable values.

Definition at line 198 of file OSnLNode.h.

ADdouble OSnLNode::m_ADTape

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

Definition at line 203 of file OSnLNode.h.


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