COPASI API  4.40.278
CDerive Class Reference

#include <CDerive.h>

Public Member Functions

CEvaluationNode * add (CEvaluationNode *n1, CEvaluationNode *n2)
 
 CDerive ()
 
 CDerive (std::vector< const CEvaluationNode * > &env, const CEvaluationTree *pTree, bool simplify)
 
void compileTree (CEvaluationNode *node)
 
CEvaluationNode * deriveBranch (const CEvaluationNode *node, const CDataObject *pObject)
 
CEvaluationNode * divide (CEvaluationNode *n1, CEvaluationNode *n2)
 
CEvaluationNode * multiply (CEvaluationNode *n1, CEvaluationNode *n2)
 
CEvaluationNode * power (CEvaluationNode *n1, CEvaluationNode *n2)
 
CEvaluationNode * subtract (CEvaluationNode *n1, CEvaluationNode *n2)
 

Static Public Member Functions

static CEvaluationNode * copyBranch_var2obj (const CEvaluationNode *node, std::vector< const CEvaluationNode * > &env)
 
static void deleteBranch (CEvaluationNode *node)
 delete a branch starting from the given node More...
 
static bool isOne (const CEvaluationNode *node)
 tests whether the node is numerically 1 More...
 
static bool isZero (const CEvaluationNode *node)
 tests whether the node is numerically 0 More...
 

Private Attributes

std::vector< const CEvaluationNode * > mEnv
 
const CEvaluationTree * mpTree
 
bool mSimplify
 

Constructor & Destructor Documentation

◆ CDerive() [1/2]

CDerive::CDerive ( )

◆ CDerive() [2/2]

CDerive::CDerive ( std::vector< const CEvaluationNode * > &  env,
const CEvaluationTree *  pTree,
bool  simplify 
)

Member Function Documentation

◆ add()

◆ compileTree()

◆ copyBranch_var2obj()

◆ deleteBranch()

void CDerive::deleteBranch ( CEvaluationNode *  node)
static

delete a branch starting from the given node

References CCopasiNode< _Data >::getParent().

Referenced by add(), divide(), multiply(), power(), CModel::prepareElasticity(), and subtract().

◆ deriveBranch()

CEvaluationNode * CDerive::deriveBranch ( const CEvaluationNode *  node,
const CDataObject *  pObject 
)

create a derivative of a mathematical expression with root at *node with respect to the variable *pObject. in env we pass the vector of trees that will be substituted for variable nodes The treatment of object nodes in env[] is specific:

  • It is assumed that the value of all the objects is updated before the derivative will be evaluated (the evaluation of objects is not expanded)
  • However, the derivation of objects is expanded, for entities with assignments, concentrations, dependent species, reactions.
Parameters
node
pObjectthe variable to derive
envvector of trees to be substituted for variable nodes
pTree,thetree to differentiate
simplifyif true the expression will be simplified

References add(), CCopasiNode< _Data >::addChild(), CEvaluationNode::CN, CEvaluationNode::compile(), CEvaluationNodeObject::compile(), compileTree(), copyBranch_var2obj(), CObjectInterface::DataObject(), divide(), CEvaluationNode::DIVIDE, CEvaluationNodeCall::getCalledTree(), CDataObject::getCN(), CEvaluationNodeVariable::getIndex(), CEvaluationNodeOperator::getLeft(), CEvaluationNodeCall::getListOfChildNodes(), CDataObject::getObjectAncestor(), CEvaluationNodeObject::getObjectCN(), CEvaluationNodeObject::getObjectInterfacePtr(), CDataObject::getObjectName(), CDataObject::getObjectParent(), CEvaluationNodeOperator::getRight(), CEvaluationTree::getRoot(), CEvaluationNode::INTEGER, CEvaluationNode::LOG, mEnv, CEvaluationNode::MINUS, multiply(), CEvaluationNode::MULTIPLY, CEvaluationNode::PLUS, power(), CEvaluationNode::POWER, subtract(), and CEvaluationNode::subType().

Referenced by CMathDerive::initOneVar(), and CModel::prepareElasticity().

◆ divide()

◆ isOne()

bool CDerive::isOne ( const CEvaluationNode *  node)
static

tests whether the node is numerically 1

References CEvaluationNode::getValuePointer().

Referenced by divide(), multiply(), and power().

◆ isZero()

bool CDerive::isZero ( const CEvaluationNode *  node)
static

tests whether the node is numerically 0

References CEvaluationNode::getValuePointer().

Referenced by add(), divide(), multiply(), power(), and subtract().

◆ multiply()

CEvaluationNode * CDerive::multiply ( CEvaluationNode *  n1,
CEvaluationNode *  n2 
)

These methods create a node for a basic mathematical operation. In addition they check for basic simplifications

References CCopasiNode< _Data >::addChild(), deleteBranch(), CEvaluationNode::INTEGER, isOne(), isZero(), mSimplify, and CEvaluationNode::MULTIPLY.

Referenced by deriveBranch(), and CModel::prepareElasticity().

◆ power()

◆ subtract()

Member Data Documentation

◆ mEnv

std::vector<const CEvaluationNode*> CDerive::mEnv
private

Referenced by deriveBranch().

◆ mpTree

const CEvaluationTree* CDerive::mpTree
private

◆ mSimplify

bool CDerive::mSimplify
private

Referenced by add(), divide(), multiply(), power(), and subtract().


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