21 mpQuantity2NumberFactor(NULL),
23 mInitialExtensiveValues(),
24 mInitialIntensiveValues(),
25 mInitialExtensiveRates(),
26 mInitialIntensiveRates(),
27 mInitialParticleFluxes(),
29 mInitialTotalMasses(),
30 mInitialEventTriggers(),
56 mInitialDependencies(),
57 mTransientDependencies(),
58 mSynchronizeInitialValuesSequenceExtensive(),
59 mSynchronizeInitialValuesSequenceIntensive(),
60 mApplyInitialValuesSequence(),
61 mSimulationValuesSequence(),
62 mSimulationValuesSequenceReduced(),
63 mInitialStateValueExtensive(),
64 mInitialStateValueIntensive(),
66 mReducedStateValues(),
67 mSimulationRequiredValues(),
71 mCreateDiscontinuousPointer(),
72 mDataObject2MathObject(),
73 mDataValue2MathObject(),
74 mDiscontinuityEvents(
"Discontinuities", this),
75 mDiscontinuityInfix2Object(),
83 mpQuantity2NumberFactor(NULL),
85 mInitialExtensiveValues(),
86 mInitialIntensiveValues(),
87 mInitialExtensiveRates(),
88 mInitialIntensiveRates(),
89 mInitialParticleFluxes(),
91 mInitialTotalMasses(),
92 mInitialEventTriggers(),
110 mEventTargetCount(0),
112 mIndependentCount(0),
118 mInitialDependencies(),
119 mTransientDependencies(),
120 mSynchronizeInitialValuesSequenceExtensive(),
121 mSynchronizeInitialValuesSequenceIntensive(),
122 mApplyInitialValuesSequence(),
123 mSimulationValuesSequence(),
124 mSimulationValuesSequenceReduced(),
125 mInitialStateValueExtensive(),
126 mInitialStateValueIntensive(),
128 mReducedStateValues(),
129 mSimulationRequiredValues(),
133 mDataObject2MathObject(),
134 mDataValue2MathObject(),
135 mDiscontinuityEvents(
"Discontinuities", this),
136 mDiscontinuityInfix2Object(),
137 mTriggerInfix2Event()
151 mpModel(src.mpModel),
152 mpAvogadro(src.mpAvogadro),
153 mpQuantity2NumberFactor(src.mpQuantity2NumberFactor),
154 mValues(src.mValues),
155 mInitialExtensiveValues(),
156 mInitialIntensiveValues(),
157 mInitialExtensiveRates(),
158 mInitialIntensiveRates(),
159 mInitialParticleFluxes(),
161 mInitialTotalMasses(),
162 mInitialEventTriggers(),
179 mFixedCount(src.mFixedCount),
180 mEventTargetCount(src.mEventTargetCount),
181 mODECount(src.mODECount),
182 mIndependentCount(src.mIndependentCount),
183 mDependentCount(src.mDependentCount),
184 mAssignmentCount(src.mAssignmentCount),
188 mInitialDependencies(),
189 mTransientDependencies(),
190 mSynchronizeInitialValuesSequenceExtensive(),
191 mSynchronizeInitialValuesSequenceIntensive(),
192 mApplyInitialValuesSequence(),
193 mSimulationValuesSequence(),
194 mSimulationValuesSequenceReduced(),
195 mInitialStateValueExtensive(),
196 mInitialStateValueIntensive(),
198 mReducedStateValues(),
199 mSimulationRequiredValues(),
200 mObjects(src.mObjects.size()),
201 mEvents(src.mEvents.size()),
202 mReactions(src.mReactions.size()),
203 mDataObject2MathObject(),
204 mDataValue2MathObject(),
205 mDiscontinuityEvents(
"Discontinuities", this),
206 mDiscontinuityInfix2Object(),
207 mTriggerInfix2Event()
280 for (; itData != endData; ++itData)
288 for (; itValue != endValue; ++itValue)
298 for (; pObject != pObjectEnd; ++pObject, ++pObjectSrc)
300 pObject->
copy(*pObjectSrc, *
this, ValueOffset, ObjectOffset);
307 for (; pEvent != pEventEnd; ++pEvent, ++pEventSrc)
309 pEvent->
copy(*pEventSrc, *
this, ValueOffset, ObjectOffset);
316 for (; pReaction != pReactionEnd; ++pReaction, ++pReactionSrc)
318 pReaction->
copy(*pReactionSrc, *
this, ValueOffset, ObjectOffset);
414 memcpy(pTransient, pInitial, (pTransient - pInitial) *
sizeof(
C_FLOAT64));
433 UpdateSequence::const_iterator it = updateSequence.begin();
434 UpdateSequence::const_iterator end = updateSequence.end();
436 for (; it != end; ++it)
448 for (; pValue != pValueEnd; ++pValue, ++pObject)
452 if (pDataObject != NULL)
467 for (; pValue != pValueEnd; ++pValue, ++pObject)
471 if (pDataObject != NULL)
486 for (; pValue != pValueEnd; ++pValue, ++pObject)
490 if (pDataObject != NULL)
505 for (; pValue != pValueEnd; ++pValue, ++pObject)
509 if (pDataObject != NULL)
527 std::vector< CCopasiContainer * > ListOfContainer;
528 ListOfContainer.push_back(
mpModel);
544 if (pMathObject != NULL)
549 std::cout <<
"Data Object " << cn <<
" (0x" << pObject <<
") has no corresponding Math Object." << std::endl;
559 std::map< CCopasiObject *, CMathObject * >::const_iterator found =
564 return found->second;
572 if (pDataValue == NULL)
578 if (pValues <= pDataValue && pDataValue < pValues +
mValues.
size())
583 std::map< C_FLOAT64 *, CMathObject * >::const_iterator found =
588 return found->second;
606 printPointers(Pointers);
632 for (; pReaction != pReactionEnd; ++itReaction, ++pReaction)
643 for (; pObject != pObjectEnd; ++pObject)
645 std::cout << *pObject;
648 std::cout << std::endl;
649 #endif // COPASI_DEBUG
658 const bool & replaceDiscontinuousNodes)
662 return copyBranch(pSrc, Variables, replaceDiscontinuousNodes);
667 const bool & replaceDiscontinuousNodes)
672 while (itNode.
next() != itNode.
end())
680 switch ((
int) itNode->
getType())
687 getObject(static_cast< const CEvaluationNodeObject *>(*itNode)->getObjectCN());
698 getMathObject(static_cast< const CEvaluationNodeObject *>(*itNode)->getObjectValuePtr());
712 Index < variables.size())
714 pCopy = variables[Index]->copyBranch();
733 std::vector< CEvaluationNode * >::iterator it = itNode.
context().begin();
734 std::vector< CEvaluationNode * >::iterator end = itNode.
context().end();
736 for (; it != end; ++it)
749 if (replaceDiscontinuousNodes)
781 const std::vector< CEvaluationNode * > & children)
786 std::string DiscontinuityInfix = pNode->
buildInfix();
816 success &=
static_cast< CEvaluationTree *
>(pExpression)->setRoot(pNode);
823 std::map< std::string, CMathEventN * >::iterator itEvent =
mTriggerInfix2Event.find(TriggerInfix);
838 pEvent = itEvent->second;
852 size_t nLocalReactionParameters =
860 size_t nDiscontinuities = 0;
862 size_t nEventAssignments = 0;
863 size_t nEventRoots = 0;
870 nEvents += nDiscontinuities;
877 nEvents += Events.
size();
882 for (; itEvent != endEvent; ++itEvent, ++pEvent)
893 for (; itEvent != endEvent; ++itEvent, ++pEvent)
906 4 * nEvents + nEventAssignments + 2 * nEventRoots);
907 mValues = std::numeric_limits< C_FLOAT64 >::quiet_NaN();
912 pArray += nExtensiveValues;
914 pArray += nIntensiveValues;
916 pArray += nExtensiveValues;
918 pArray += nIntensiveValues;
920 pArray += nReactions;
922 pArray += nReactions;
929 pArray += nExtensiveValues;
931 pArray += nIntensiveValues;
933 pArray += nExtensiveValues;
935 pArray += nIntensiveValues;
937 pArray += nReactions;
939 pArray += nReactions;
950 pArray += nEventAssignments;
952 pArray += nEventRoots;
954 pArray += nEventRoots;
956 pArray += nReactions;
960 pArray += nDiscontinuities;
978 std::vector< const CModelEntity * > FixedEntities;
979 std::vector< const CModelEntity * > FixedEventTargetEntities;
987 for (; ppEntities != ppEntitiesEnd; ++ppEntities)
992 if (EventTargets.find(*ppEntities) == EventTargets.end())
994 FixedEntities.push_back(*ppEntities);
998 FixedEventTargetEntities.push_back(*ppEntities);
1007 std::vector<const CCopasiObject*> LocalReactionParameter =
1040 std::vector< const CModelEntity * > ODEEntities;
1047 ODEEntities.push_back(*ppEntities);
1054 std::vector< const CModelEntity * > IndependentSpecies;
1059 for (; ppEntities != ppEntitiesEnd; ++ppEntities)
1064 IndependentSpecies.push_back(*ppEntities);
1071 std::vector< const CModelEntity * > DependentSpecies;
1078 DependentSpecies.push_back(*ppEntities);
1085 std::vector< const CModelEntity * > AssignmentEntities;
1088 ppEntitiesEnd = StateTemplate.
endFixed();
1092 AssignmentEntities.push_back(*ppEntities);
1107 for (n = 0; n != nDiscontinuous; ++n)
1111 false,
false, NULL);
1121 for (; pEvent != pEventEnd; ++pEvent)
1131 bool success =
true;
1136 for (; pObject != pObjectEnd; ++pObject)
1138 success &= pObject->
compile(*
this);
1146 bool success =
true;
1152 for (; itEvent != endEvent; ++pItEvent, ++itEvent)
1154 success &= pItEvent->
compile(*itEvent, *
this);
1166 if (pObject == NULL)
1189 if (pDataValue != NULL)
1193 if (pMathObject != NULL)
1217 for (; pObject != pObjectEnd; ++pObject)
1224 for (; pObject != pObjectEnd; ++pObject)
1229 #ifdef COPASI_DEBUG_TRACE
1230 std::ofstream InitialDependencies(
"InitialDependencies.dot");
1233 std::ofstream TransientDependencies(
"TransientDependencies.dot");
1235 #endif // COPASI_DEBUG_TRACE
1255 for (; pObject != pObjectEnd; ++pObject)
1277 for (; pObject != pObjectEnd; ++pObject)
1285 RequestedExtensive.insert(pObject);
1289 RequestedIntensive.insert(pObject);
1295 for (; pObject != pObjectEnd; ++pObject)
1297 RequestedExtensive.insert(pObject);
1298 RequestedIntensive.insert(pObject);
1319 for (; pObject != pObjectEnd; ++pObject)
1321 Changed.insert(pObject);
1328 for (; pObject != pObjectEnd; ++pObject)
1330 Requested.insert(pObject);
1349 for (; pObject != pObjectEnd; ++pObject)
1375 for (; pObject != pObjectEnd; ++pObject)
1383 for (; pObject != pObjectEnd; ++pObject)
1457 std::cout <<
"Values:" << std::endl;
1459 std::cout <<
" mInitialExtensiveValues:[" << Index <<
"]" << ((
mInitialExtensiveValues.
size() <= Index) ?
" Error" :
"") << std::endl;
1461 std::cout <<
" mInitialIntensiveValues:[" << Index <<
"]" << ((
mInitialIntensiveValues.
size() <= Index) ?
" Error" :
"") << std::endl;
1463 std::cout <<
" mInitialExtensiveRates:[" << Index <<
"]" << ((
mInitialExtensiveRates.
size() <= Index) ?
" Error" :
"") << std::endl;
1465 std::cout <<
" mInitialIntensiveRates:[" << Index <<
"]" << ((
mInitialIntensiveRates.
size() <= Index) ?
" Error" :
"") << std::endl;
1467 std::cout <<
" mInitialParticleFluxes:[" << Index <<
"]" << ((
mInitialParticleFluxes.
size() <= Index) ?
" Error" :
"") << std::endl;
1469 std::cout <<
" mInitialFluxes:[" << Index <<
"]" << ((
mInitialFluxes.
size() <= Index) ?
" Error" :
"") << std::endl;
1471 std::cout <<
" mInitialTotalMasses:[" << Index <<
"]" << ((
mInitialTotalMasses.
size() <= Index) ?
" Error" :
"") << std::endl;
1473 std::cout <<
" mInitialEventTriggers:[" << Index <<
"]" << ((
mInitialEventTriggers.
size() <= Index) ?
" Error" :
"") << std::endl;
1476 std::cout <<
" mExtensiveValues:[" << Index <<
"]" << ((
mExtensiveValues.
size() <= Index) ?
" Error" :
"") << std::endl;
1478 std::cout <<
" mIntensiveValues:[" << Index <<
"]" << ((
mIntensiveValues.
size() <= Index) ?
" Error" :
"") << std::endl;
1480 std::cout <<
" mExtensiveRates:[" << Index <<
"]" << ((
mExtensiveRates.
size() <= Index) ?
" Error" :
"") << std::endl;
1482 std::cout <<
" mIntensiveRates:[" << Index <<
"]" << ((
mIntensiveRates.
size() <= Index) ?
" Error" :
"") << std::endl;
1484 std::cout <<
" mParticleFluxes:[" << Index <<
"]" << ((
mParticleFluxes.
size() <= Index) ?
" Error" :
"") << std::endl;
1486 std::cout <<
" mFluxes:[" << Index <<
"]" << ((
mFluxes.
size() <= Index) ?
" Error" :
"") << std::endl;
1488 std::cout <<
" mTotalMasses:[" << Index <<
"]" << ((
mTotalMasses.
size() <= Index) ?
" Error" :
"") << std::endl;
1490 std::cout <<
" mEventTriggers:[" << Index <<
"]" << ((
mEventTriggers.
size() <= Index) ?
" Error" :
"") << std::endl;
1493 std::cout <<
" mEventDelays:[" << Index <<
"]" << ((
mEventDelays.
size() <= Index) ?
" Error" :
"") << std::endl;
1495 std::cout <<
" mEventPriorities:[" << Index <<
"]" << ((
mEventPriorities.
size() <= Index) ?
" Error" :
"") << std::endl;
1497 std::cout <<
" mEventAssignments:[" << Index <<
"]" << ((
mEventAssignments.
size() <= Index) ?
" Error" :
"") << std::endl;
1499 std::cout <<
" mEventRoots:[" << Index <<
"]" << ((
mEventRoots.
size() <= Index) ?
" Error" :
"") << std::endl;
1501 std::cout <<
" mEventRootStates:[" << Index <<
"]" << ((
mEventRootStates.
size() <= Index) ?
" Error" :
"") << std::endl;
1503 std::cout <<
" mPropensities:[" << Index <<
"]" << ((
mPropensities.
size() <= Index) ?
" Error" :
"") << std::endl;
1505 std::cout <<
" mDependentMasses:[" << Index <<
"]" << ((
mDependentMasses.
size() <= Index) ?
" Error" :
"") << std::endl;
1507 std::cout <<
" mDiscontinuous:[" << Index <<
"]" << ((
mDiscontinuous.
size() <= Index) ?
" Error" :
"") << std::endl;
1508 std::cout << std::endl;
1510 #endif // COAPSI_DEBUG
1535 const CMetab * pSpecies =
dynamic_cast< const CMetab *
>(pEntity);
1537 if (pSpecies != NULL)
1541 else if (dynamic_cast< const CCompartment * >(pEntity) != NULL)
1545 else if (dynamic_cast< const CModelValue * >(pEntity) != NULL)
1558 std::vector<const CModelEntity*>::const_iterator it = entities.begin();
1559 std::vector<const CModelEntity*>::const_iterator end = entities.end();
1563 for (; it != end; ++it)
1574 CCopasiObject * pObject = (*it)->getInitialValueReference();
1580 else if ((simulationType ==
CMath::Assignment && (*it)->getExpression() !=
"") ||
1581 (*it)->getInitialExpression() !=
"")
1592 SimulationType = simulationType;
1603 CMath::Value, EntityType, SimulationType,
false,
false,
1604 (*it)->getValueReference());
1607 SimulationType = simulationType;
1615 CMath::Rate, EntityType, SimulationType,
false,
true,
1616 (*it)->getRateReference());
1621 CMath::Rate, EntityType, SimulationType,
false,
false,
1622 (*it)->getRateReference());
1627 const CMetab *pSpecies =
static_cast<const CMetab*
>(*it);
1651 SimulationType = simulationType;
1677 std::vector<const CCopasiObject *>::const_iterator it = parameters.begin();
1678 std::vector<const CCopasiObject *>::const_iterator end = parameters.end();
1680 for (; it != end; ++it)
1712 for (; it != end; ++it)
1717 (*it)->getParticleFluxReference());
1723 (*it)->getParticleFluxReference());
1728 (*it)->getFluxReference());
1734 (*it)->getFluxReference());
1740 (*it)->getPropensityReference());
1751 for (; it != end; ++it)
1756 (*it)->getTotalNumberReference());
1762 (*it)->getTotalNumberReference());
1768 (*it)->getDependentNumberReference());
1777 if (Dependencies.find(pObject->
getObjectParent()) != Dependencies.end())
1779 return Dependencies.size() > 1;
1782 return Dependencies.size() > 0;
1787 if (pDataObject != NULL)
1798 const C_FLOAT64 * pInitialValue = pValue;
1805 return const_cast< C_FLOAT64 *
>(pInitialValue);
1818 std::vector< const CEvaluationTree * >::const_iterator it = TreesWithDiscontinuities.begin();
1819 std::vector< const CEvaluationTree * >::const_iterator end = TreesWithDiscontinuities.end();
1821 for (; it != end; ++it)
1832 while (itNode.next() != itNode.end())
1834 if (*itNode == NULL)
1839 switch ((
int) itNode->getType())
1876 std::string TriggerInfix;
1879 switch ((
int) pNode->
getType())
1887 TriggerInfix =
"sin(PI*(" +
static_cast< const CEvaluationNode *
>(pNode->
getChild())->buildInfix() +
")) > 0";
1892 TriggerInfix +=
")) > 0 || sin(PI*(" +
static_cast< const CEvaluationNode *
>(pNode->
getChild()->getSibling())->buildInfix() +
")) > 0";
1900 return TriggerInfix;
CVector< CMathObject > mObjects
CCopasiDataModel * getObjectDataModel()
virtual bool setObjectParent(const CCopasiContainer *pParent)
CVectorCore< C_FLOAT64 > mEventAssignments
C_FLOAT64 * pDiscontinuous
std::map< CCopasiObject *, CMathObject * > mDataObject2MathObject
void setStateReduced(const CVectorCore< C_FLOAT64 > &stateReduced)
CMathObject * pInitialTotalMassesObject
CMathObject * pEventRootsObject
C_FLOAT64 * pPropensities
CVectorCore< C_FLOAT64 > mParticleFluxes
CMathObject * pDiscontinuousObject
CVector< C_FLOAT64 > mValues
std::string createDiscontinuityTriggerInfix(const CEvaluationNode *pNode)
CMathObject * pIntensiveValuesObject
const CEvaluationTree * getCalledTree() const
const CMath::EntityType & getEntityType() const
C_FLOAT64 * pInitialExtensiveRates
Header file of class CModelEntity and CModelValue.
bool compile(CEvent *pDataEvent, CMathContainer &container)
CCopasiVectorN< CEvent > & getEvents()
static std::vector< const CCopasiObject * > getListOfConstObjects(ListType t, const CModel *model)
CObjectInterface::ObjectSet mInitialStateValueExtensive
const CVector< CRoot > & getRoots() const
virtual CCopasiObjectName getCN() const
CMathObject * getMathObject(const CObjectInterface *pObject) const
void copy(const CMathEventN &src, CMathContainer &container, const size_t &valueOffset, const size_t &objectOffset)
void setTriggerExpression(const std::string &infix, CMathContainer &container)
CMathObject * pDiscontinuous
CEvaluationNode * copyNode(CEvaluationNode *child1, CEvaluationNode *child2) const
virtual size_t size() const
C_FLOAT64 * pEventRootStates
sDiscontinuous mCreateDiscontinuousPointer
void copy(const CMathObject &src, CMathContainer &container, const size_t &valueOffset, const size_t &objectOffset)
CMathObject * pExtensiveValuesObject
size_t getNumMetabs() const
CCopasiObject * getInitialValueReference() const
const CObjectInterface * mpQuantity2NumberFactor
const CMath::SimulationType & getSimulationType() const
void updateSimulatedValues(const bool &useMoieties)
CMathObject * pInitialExtensiveValuesObject
const Type & getType() const
CObjectInterface::UpdateSequence mSimulationValuesSequence
CObjectInterface * ObjectFromCN(const std::vector< CCopasiContainer * > &listOfContainer, const CCopasiObjectName &objName) const
CVectorCore< C_FLOAT64 > mExtensiveValues
void initializePointers(CMath::sPointers &pointers)
std::string buildInfix() const
std::map< C_FLOAT64 *, CMathObject * > mDataValue2MathObject
void resize(size_t size, const bool ©=false)
CVectorCore< C_FLOAT64 > mInitialIntensiveValues
void setInitialState(const CVectorCore< C_FLOAT64 > &initialState)
CMathObject * pEventRootStatesObject
C_FLOAT64 * pInitialFluxes
CEvaluationNode * copyBranch(const CEvaluationNode *pSrc, const bool &replaceDiscontinuousNodes)
CVectorCore< C_FLOAT64 > mTotalMasses
C_FLOAT64 * pParticleFluxes
CModelEntity ** endDependent()
C_FLOAT64 * getInitialValuePointer(const C_FLOAT64 *pValue) const
void updateInitialValues(const CModelParameter::Framework &framework)
bool compile(CMathContainer &container)
const CNodeIteratorMode::State & next()
const size_t & size() const
CObjectInterface::ObjectSet mInitialStateValueIntensive
CMathDependencyGraph mTransientDependencies
CMathObject * pExtensiveRatesObject
virtual void * getValuePointer() const
void applyInitialValues()
CModelEntity ** beginDependent()
const CCopasiVector< CMoiety > & getMoieties() const
CVectorCore< C_FLOAT64 > mPropensities
void addAssignment(CMathObject *pTarget, CMathObject *pExpression)
C_FLOAT64 * pIntensiveRates
CMathObject * pFluxesObject
std::map< std::string, CMathObject * > mDiscontinuityInfix2Object
CCopasiObjectName getPrimary() const
CObjectInterface::ObjectSet mReducedStateValues
C_FLOAT64 * pInitialEventTriggers
const CObjectInterface * mpAvogadro
CObjectInterface::UpdateSequence mSynchronizeInitialValuesSequenceIntensive
CVectorCore< C_FLOAT64 > mStateReduced
CObjectInterface::UpdateSequence mSimulationValuesSequenceReduced
std::map< std::string, CMathEventN * > mTriggerInfix2Event
C_FLOAT64 * pIntensiveValues
std::vector< CType * >::const_iterator const_iterator
void initializeMathObjects(const std::vector< const CModelEntity * > &entities, const CMath::SimulationType &simulationType, CMath::sPointers &pointers)
CObjectInterface::UpdateSequence mSynchronizeInitialValuesSequenceExtensive
CObjectInterface::ObjectSet mStateValues
void initializeObjects(CMath::sPointers &pointers)
void createSynchronizeInitialValuesSequence()
C_FLOAT64 * pInitialIntensiveRates
CModelEntity ** endFixed()
void createApplyInitialValuesSequence()
CMathObject * pParticleFluxesObject
CMathObject * pInitialIntensiveValuesObject
CMathObject * pInitialIntensiveRatesObject
C_FLOAT64 * pInitialParticleFluxes
C_FLOAT64 * pEventPriorities
CObjectInterface::UpdateSequence mApplyInitialValuesSequence
C_FLOAT64 * pExtensiveRates
bool setTriggerExpression(const std::string &expression)
CVectorCore< C_FLOAT64 > mEventTriggers
void initialize(CMath::sPointers &pointers)
virtual bool add(const CType &src)
CVectorCore< C_FLOAT64 > mEventRoots
C_FLOAT64 * pExtensiveValues
void applyUpdateSequence(const CObjectInterface::UpdateSequence &updateSequence)
bool getUpdateSequence(const CMath::SimulationContextFlag &context, const CObjectInterface::ObjectSet &changedObjects, const CObjectInterface::ObjectSet &requestedObjects, CObjectInterface::UpdateSequence &updateSequence)
void exportDOTFormat(std::ostream &os, const std::string &name) const
void initializeDiscontinuousCreationPointer()
Context * parentContextPtr()
CModelEntity ** beginFixed()
void createDiscontinuityEvents()
void copy(const CMathReaction &src, CMathContainer &container, const size_t &valueOffset, const size_t &objectOffset)
void initializeEvents(CMath::sPointers &pointers)
C_FLOAT64 * pEventAssignments
CVectorCore< C_FLOAT64 > mDiscontinuous
CModelEntity ** beginIndependent()
std::vector< const CEvaluationTree * > getTreesWithDiscontinuities() const
CVectorCore< C_FLOAT64 > mInitialEventTriggers
const CVectorCore< C_FLOAT64 > & getState() const
CMathObject * pEventTriggersObject
C_FLOAT64 * pInitialExtensiveValues
CVectorCore< C_FLOAT64 > mEventRootStates
CMathObject * pInitialEventTriggersObject
const CVector< CAssignment > & getAssignments() const
CEvaluationNode * replaceDiscontinuousNode(const CEvaluationNode *pSrc, const std::vector< CEvaluationNode * > &children)
CVectorCore< C_FLOAT64 > mEventDelays
CMathObject * pEventAssignmentsObject
CVectorCore< C_FLOAT64 > mDependentMasses
std::set< const CObjectInterface * > ObjectSet
virtual const DataObjectSet & getDirectDependencies(const DataObjectSet &context=DataObjectSet()) const
CVectorCore< C_FLOAT64 > mState
iterator addObject(const CObjectInterface *pObject)
CVectorCore< C_FLOAT64 > mInitialState
CObjectInterface::ObjectSet mSimulationRequiredValues
static CMath::EntityType getEntityType(const CModelEntity *pEntity)
const CVectorCore< C_FLOAT64 > & getValues() const
CMathObject * pEventDelaysObject
static bool hasDependencies(const CCopasiObject *pObject)
static void initialize(CMathObject *&pObject, C_FLOAT64 *&pValue, const CMath::ValueType &valueType, const CMath::EntityType &entityType, const CMath::SimulationType &simulationType, const bool &isIntensiveProperty, const bool &isInitialValue, const CCopasiObject *pDataObject)
CEvaluationNode * createNodeFromObject(const CObjectInterface *pMathObject)
const CModel & getModel() const
CVectorCore< C_FLOAT64 > mExtensiveRates
const CStateTemplate & getStateTemplate() const
CCopasiVector< CEvent > mDiscontinuityEvents
const bool & isIntensiveProperty() const
CVectorCore< C_FLOAT64 > mInitialTotalMasses
void setType(const Type &type)
void createDependencyGraphs()
CVectorCore< C_FLOAT64 > mIntensiveValues
CVectorCore< C_FLOAT64 > mIntensiveRates
CCopasiVectorNS< CReaction > & getReactions()
CMathObject * pInitialExtensiveRatesObject
static void allocate(CMathEventN *pEvent, const CEvent *pDataEvent, const CMathContainer &container)
CVectorCore< C_FLOAT64 > mInitialExtensiveValues
CVectorCore< C_FLOAT64 > mInitialFluxes
virtual const CObjectInterface * getObject(const CCopasiObjectName &cn) const
virtual void * getValuePointer() const
const CTrigger & getTrigger() const
const CVectorCore< C_FLOAT64 > & getInitialState() const
CVector< CMathReaction > mReactions
CMathObject * pEventPrioritiesObject
C_FLOAT64 * pEventTriggers
CEvaluationNode * createNodeFromValue(const C_FLOAT64 *pDataValue)
virtual ~CMathContainer()
virtual const CObjectInterface * getObject(const CCopasiObjectName &cn) const
virtual void * getValuePointer() const =0
CVectorCore< C_FLOAT64 > mInitialIntensiveRates
virtual const Data & getData() const
const CModelEntity::Status & getStatus() const
CMathDependencyGraph mInitialDependencies
CMathObject * pInitialFluxesObject
CMathObject * pPropensitiesObject
CNodeIteratorMode::State end() const
void createUpdateSimulationValuesSequence()
CMathObject * pDependentMassesObject
C_FLOAT64 * pInitialTotalMasses
const CVectorCore< C_FLOAT64 > & getStateReduced() const
void createDiscontinuityDataEvent(const CEvaluationNode *pNode)
C_FLOAT64 * pInitialIntensiveValues
CCopasiNode< Data > * getChild()
C_FLOAT64 * pDependentMasses
CCopasiObject * getRateReference() const
std::set< const CCopasiObject * > DataObjectSet
void setValues(const CVectorCore< C_FLOAT64 > &values)
CVectorCore< C_FLOAT64 > mFluxes
CVectorCore< C_FLOAT64 > mInitialParticleFluxes
CVectorCore< C_FLOAT64 > mEventPriorities
void map(CCopasiObject *pDataObject, CMathObject *pMathObject)
CModelEntity ** endIndependent()
CEvaluationNode * getRoot()
CVectorCore< C_FLOAT64 > mInitialExtensiveRates
virtual CCopasiObjectName getCN() const
static std::set< const CModelEntity * > getEventTargets(const CModel *pModel)
CCopasiContainer * getObjectParent() const
std::vector< CObjectInterface * > UpdateSequence
CVector< CMathEventN > mEvents
void setState(const CVectorCore< C_FLOAT64 > &state)
CMathObject * pIntensiveRatesObject
bool setExpressionPtr(CMathExpression *pMathExpression)
void initialize(const CReaction *pReaction, CMathContainer &container)
const CCopasiObject * getDataObject() const
CMathObject * pInitialParticleFluxesObject
CMathObject * pTotalMassesObject
CCopasiObject * getValueReference() const