COPASI API  4.40.278
CHybridMethod Class Referenceabstract

#include <CHybridMethod.h>

Inheritance diagram for CHybridMethod:
[legend]

Public Member Functions

 CHybridMethod (const CDataContainer *pParent, const CTaskEnum::Method &methodType=CTaskEnum::Method::hybrid, const CTaskEnum::Task &taskType=CTaskEnum::Task::timeCourse)
 
 CHybridMethod (const CHybridMethod &src, const CDataContainer *pParent)
 
virtual bool elevateChildren ()
 
virtual bool isValidProblem (const CCopasiProblem *pProblem)
 
virtual void start ()
 
virtual Status step (const double &deltaT, const bool &final=false)
 
 ~CHybridMethod ()
 
- Public Member Functions inherited from CTrajectoryMethod
 CTrajectoryMethod (const CDataContainer *pParent, const CTaskEnum::Method &methodType, const CTaskEnum::Task &taskType=CTaskEnum::Task::timeCourse)
 
 CTrajectoryMethod (const CTrajectoryMethod &src, const CDataContainer *pParent)
 
const CVectorCore< C_INT > & getRoots () const
 
const bool & integrateReducedModel () const
 
void setProblem (CTrajectoryProblem *problem)
 
virtual void stateChange (const CMath::StateChange &change)
 
 ~CTrajectoryMethod ()
 
- Public Member Functions inherited from CCopasiMethod
 CCopasiMethod (const CCopasiMethod &src, const CDataContainer *pParent)
 
virtual void clearCallBack ()
 
const CProcessReportLevelgetCallBack () const
 
CMathContainergetMathContainer () const
 
const CTaskEnum::MethodgetSubType () const
 
const CTaskEnum::TaskgetType () const
 
virtual void load (CReadConfig &configBuffer, CReadConfig::Mode mode=CReadConfig::SEARCH)
 
CCopasiMethodoperator= (const CCopasiMethod &rhs)
 
virtual void print (std::ostream *ostream) const
 
virtual void printResult (std::ostream *ostream) const
 
virtual bool setCallBack (CProcessReportLevel callBack)
 
void setMathContainer (CMathContainer *pContainer)
 
virtual ~CCopasiMethod ()
 
- Public Member Functions inherited from CCopasiParameterGroup
bool addGroup (const std::string &name)
 
void addParameter (CCopasiParameter *pParameter)
 
bool addParameter (const CCopasiParameter &parameter)
 
bool addParameter (const std::string &name, const CCopasiParameter::Type type, const CCopasiParameter::UserInterfaceFlag &flag=CCopasiParameter::UserInterfaceFlag::All)
 
template<class CType >
bool addParameter (const std::string &name, const CCopasiParameter::Type type, const CType &value, const CCopasiParameter::UserInterfaceFlag &flag=CCopasiParameter::UserInterfaceFlag::All)
 
virtual bool applyData (const CData &data, CUndoData::CChangeSet &changes)
 
CCopasiParameterGroupassertGroup (const std::string &name, const CCopasiParameter::UserInterfaceFlag &flag=CCopasiParameter::UserInterfaceFlag::All)
 
template<class CType >
CType * assertParameter (const std::string &name, const CCopasiParameter::Type type, const CType &defaultValue, const CCopasiParameter::UserInterfaceFlag &flag=CCopasiParameter::UserInterfaceFlag::All)
 
index_iterator beginIndex () const
 
const_name_iterator beginName () const
 
 CCopasiParameterGroup (const CCopasiParameterGroup &src, const CDataContainer *pParent=NULL)
 
 CCopasiParameterGroup (const std::string &name, const CDataContainer *pParent=NO_PARENT, const std::string &objectType="ParameterGroup")
 
void clear ()
 
virtual void createUndoData (CUndoData &undoData, const CUndoData::Type &type, const CData &oldData=CData(), const CCore::Framework &framework=CCore::Framework::ParticleNumbers) const
 
index_iterator endIndex () const
 
const_name_iterator endName () const
 
CCopasiParameterGroupgetElementTemplates ()
 
const CCopasiParameterGroupgetElementTemplates () const
 
CCopasiParameterGroupgetGroup (const size_t &index)
 
const CCopasiParameterGroupgetGroup (const size_t &index) const
 
CCopasiParameterGroupgetGroup (const std::string &name)
 
const CCopasiParameterGroupgetGroup (const std::string &name) const
 
virtual size_t getIndex (const CDataObject *pObject) const
 
size_t getIndex (const std::string &name) const
 
std::string getKey (const size_t &index) const
 
std::string getKey (const std::string &name) const
 
virtual const std::string & getName (const size_t &index) const
 
virtual const CObjectInterfacegetObject (const CCommonName &cn) const
 
CCopasiParametergetParameter (const size_t &index)
 
const CCopasiParametergetParameter (const size_t &index) const
 
CCopasiParametergetParameter (std::string name)
 
const CCopasiParametergetParameter (std::string name) const
 
CCopasiParameter::Type getType (const size_t &index) const
 
CCopasiParameter::Type getType (const std::string &name) const
 
std::string getUniqueParameterName (const CCopasiParameter *pParameter) const
 
template<class CType >
CType & getValue (const size_t &index)
 
template<class CType >
const CType & getValue (const size_t &index) const
 
template<class CType >
CType & getValue (const std::string &name)
 
template<class CType >
const CType & getValue (const std::string &name) const
 
bool haveTemplate () const
 
virtual CUndoObjectInterfaceinsert (const CData &data)
 
CCopasiParameterGroupoperator= (const CCopasiParameterGroup &rhs)
 
virtual bool remove (CDataObject *pObject)
 
bool removeParameter (CCopasiParameter *pParameter)
 
bool removeParameter (const size_t &index)
 
bool removeParameter (const std::string &name)
 
virtual void setUserInterfaceFlag (const UserInterfaceFlag &flag)
 
template<class CType >
bool setValue (const size_t &index, const CType &value)
 
template<class CType >
bool setValue (const std::string &name, const CType &value)
 
size_t size (const UserInterfaceFlag &require=UserInterfaceFlag::None, const UserInterfaceFlag &exclude=UserInterfaceFlag::None) const
 
bool swap (const size_t &iFrom, const size_t &iTo)
 
bool swap (index_iterator &from, index_iterator &to)
 
virtual CData toData () const
 
virtual void updateIndex (const size_t &index, const CUndoObjectInterface *pUndoObject)
 
virtual ~CCopasiParameterGroup ()
 
- Public Member Functions inherited from CCopasiParameter
 CCopasiParameter (const CCopasiParameter &src, const CDataContainer *pParent)
 
 CCopasiParameter (const std::string &name, const Type &type, const void *pValue=NULL, const CDataContainer *pParent=NO_PARENT, const std::string &objectType="Parameter")
 
virtual CCommonName getCN () const override
 
template<class CType >
const CType & getDefault () const
 
virtual const std::string & getKey () const override
 
virtual std::string getObjectDisplayName () const override
 
const CCopasiParameter::TypegetType () const
 
const UserInterfaceFlaggetUserInterfaceFlag () const
 
template<class CType >
std::vector< std::pair< CType, CType > > & getValidValues ()
 
template<class CType >
const std::vector< std::pair< CType, CType > > & getValidValues () const
 
void * getValidValuesPointer () const
 
template<class CType >
CType & getValue ()
 
template<class CType >
const CType & getValue () const
 
virtual void * getValuePointer () const override
 
CDataObjectgetValueReference () const
 
bool hasValidValues () const
 
bool isBasic () const
 
bool isDefault () const
 
bool isEditable () const
 
bool isUnsupported () const
 
bool isValidValue (const bool &value) const
 
bool isValidValue (const C_FLOAT64 &value) const
 
bool isValidValue (const C_INT32 &value) const
 
bool isValidValue (const CCommonName &value) const
 
template<class CType >
bool isValidValue (const CType &) const
 
bool isValidValue (const std::string &value) const
 
bool isValidValue (const std::vector< CCopasiParameter * > &value) const
 
bool isValidValue (const unsigned C_INT32 &value) const
 
CCopasiParameteroperator= (const CCopasiParameter &rhs)
 
template<class CType >
bool setDefault (const CType &defaultValue)
 
bool setDefault (const std::vector< CCopasiParameter * > &defaultValue)
 
virtual bool setObjectParent (const CDataContainer *pParent) override
 
template<class CType , class Enum >
bool setValidValues (const CEnumAnnotation< CType, Enum > &validValues)
 
template<class CType >
bool setValidValues (const std::vector< std::pair< CType, CType > > &validValues)
 
template<class CType >
bool setValue (const CType &value)
 
bool setValue (const std::vector< CCopasiParameter * > &value)
 
virtual ~CCopasiParameter ()
 
- Public Member Functions inherited from CDataContainer
virtual bool add (CDataObject *pObject, const bool &adopt=true)
 
virtual bool appendDeletedDependentData (CUndoData &undoData) const
 
 CDataContainer (const CDataContainer &src, const CDataContainer *pParent)
 
 CDataContainer (const std::string &name, const CDataContainer *pParent=NO_PARENT, const std::string &type="CN", const CFlags< Flag > &flag=CFlags< Flag >::None)
 
virtual std::string getChildObjectUnits (const CDataObject *pObject) const
 
void getDescendants (CDataObject::DataObjectSet &descendants, const bool &recursive=false) const
 
virtual objectMapgetObjects ()
 
virtual const objectMapgetObjects () const
 
virtual const std::string getUnits () const override
 
virtual const CDataObjectgetValueObject () const override
 
void objectRenamed (CDataObject *pObject, const std::string &oldName)
 
virtual ~CDataContainer ()
 
- Public Member Functions inherited from CDataObject
void addIssue (const CIssue &issue)
 
void addReference (const CDataContainer *pReference)
 
virtual void calculateValue () override
 
 CDataObject (const CDataObject &src, const CDataContainer *pParent=NULL)
 
virtual void destruct () override
 
virtual const CDataObjectgetDataObject () const override
 
CDataContainergetObjectAncestor (const std::string &type) const
 
CDataModelgetObjectDataModel () const
 
const CObjectInterfacegetObjectFromCN (const CCommonName &cn) const
 
const std::string & getObjectName () const
 
CDataContainergetObjectParent () const
 
const std::string & getObjectType () const
 
virtual const CObjectInterface::ObjectSetgetPrerequisites () const override
 
virtual const CValiditygetValidity () const override
 
bool hasFlag (const Flag &flag) const
 
virtual bool isPrerequisiteForContext (const CObjectInterface *pObject, const CCore::SimulationContextFlag &context, const CObjectInterface::ObjectSet &changedObjects) const override
 
bool prerequisitsContains (const DataObjectSet &objects) const
 
void removeIssue (const CIssue &issue)
 
void removeReference (const CDataContainer *pReference)
 
bool setObjectName (const std::string &name)
 
void validityChanged (const CValidity &changedValidity) override
 
void validityRemoved (const CValidity &changedValidity)
 
virtual ~CDataObject ()
 
- Public Member Functions inherited from CObjectInterface
 CObjectInterface ()
 
 CObjectInterface (const CObjectInterface &src)
 
virtual ~CObjectInterface ()
 
- Public Member Functions inherited from CUndoObjectInterface
 CUndoObjectInterface ()
 
 CUndoObjectInterface (const CUndoObjectInterface &src)
 
bool generateUuid ()
 
const xg::Guid & getUuid () const
 
bool setUuid (const std::string &uuid)
 
bool setUuid (const xg::Guid &uuid)
 
virtual ~CUndoObjectInterface ()
 

Protected Types

enum  metabStatus { LOW = 0 , HIGH }
 

Protected Member Functions

void calculateDerivative (CVectorCore< C_FLOAT64 > &deriv)
 
void cleanup ()
 
C_FLOAT64 doSingleStep (C_FLOAT64 currentTime, C_FLOAT64 endTime)
 
C_FLOAT64 generateReactionTime (size_t rIndex)
 
void getStochTimeAndIndex (C_FLOAT64 &ds, size_t &rIndex)
 
void insertDeterministicReaction (size_t rIndex)
 
virtual void integrateDeterministicPart (C_FLOAT64 ds)=0
 
void partitionSystem ()
 
void removeDeterministicReaction (size_t rIndex)
 
void setupDependencyGraph ()
 
void setupMetab2React ()
 
void setupPartition ()
 
void setupPriorityQueue ()
 
void updatePriorityQueue (size_t rIndex, C_FLOAT64 time)
 
void updateTauMu (size_t rIndex, C_FLOAT64 time)
 
- Protected Member Functions inherited from CTrajectoryMethod
void output (const bool &useMoieties)
 
virtual void signalMathContainerChanged ()
 
- Protected Member Functions inherited from CCopasiMethod
 CCopasiMethod (const CCopasiMethod &src)
 
 CCopasiMethod (const CDataContainer *pParent, const CTaskEnum::Method &methodType, const CTaskEnum::Task &taskType)
 
- Protected Member Functions inherited from CCopasiParameterGroup
 CCopasiParameterGroup ()
 
- Protected Member Functions inherited from CCopasiParameter
 CCopasiParameter (const CCopasiParameter &src)
 
- Protected Member Functions inherited from CDataContainer
template<class CType >
CDataMatrixReference< CType > * addMatrixReference (const std::string &name, CType &reference, const CFlags< Flag > &flag=CFlags< Flag >::None)
 
template<class CType >
CDataObjectReference< CType > * addObjectReference (const std::string &name, CType &reference, const CFlags< Flag > &flag=CFlags< Flag >::None)
 
template<class CType >
CDataVectorReference< CType > * addVectorReference (const std::string &name, CType &reference, const CFlags< Flag > &flag=CFlags< Flag >::None)
 
 CDataContainer (const CDataContainer &src)
 
void initObjects ()
 
- Protected Member Functions inherited from CDataObject
 CDataObject ()
 
 CDataObject (const std::string &name, const CDataContainer *pParent=static_cast< CDataContainer * >((void *) 0), const std::string &type="CN", const CFlags< Flag > &flag=CFlags< Flag >::None)
 

Static Protected Member Functions

static C_INT32 checkModel (CModel *model)
 

Protected Attributes

std::vector< C_FLOAT64mAmu
 
std::vector< C_FLOAT64mAmuOld
 
CVectorCore< C_FLOAT64mCurrentState
 
CDependencyGraph mDG
 
size_t mFirstMetabIndex
 
CHybridStochFlagmFirstReactionFlag
 
C_FLOAT64 mLowerStochLimit
 
size_t mMaxBalance
 
size_t mMaxIntBeforeStep
 
unsigned C_INT32 mMaxSteps
 
bool mMaxStepsReached
 
std::vector< std::set< size_t > > mMetab2React
 
CVector< metabStatusmMetabFlags
 
size_t mNumVariableMetabs
 
unsigned C_INT32 mPartitioningInterval
 
const C_FLOAT64mpFirstMetabValue
 
CIndexedPriorityQueue mPQ
 
CRandommpRandomGenerator
 
unsigned C_INT32 mRandomSeed
 
size_t mRateOffset
 
std::vector< CHybridStochFlagmReactionFlags
 
CVectorCore< CMathReactionmReactions
 
CVectorCore< C_FLOAT64mSpeciesRates
 
size_t mStepsAfterPartitionSystem
 
CVector< CCore::CUpdateSequencemUpdateSequences
 
C_FLOAT64 mUpperStochLimit
 
bool mUseRandomSeed
 
- Protected Attributes inherited from CTrajectoryMethod
CVectorCore< C_FLOAT64mContainerState
 
C_FLOAT64mpContainerStateTime
 
CTrajectoryProblemmpProblem
 
const bool * mpReducedModel
 
CTrajectoryTaskmpTask
 
CVectorCore< C_INTmRootsFound
 
- Protected Attributes inherited from CCopasiMethod
CMathContainermpContainer
 
CProcessReportLevel mProcessReport
 
- Protected Attributes inherited from CCopasiParameter
std::string mKey
 
void * mpDefault
 
void * mpValidValues
 
void * mpValue
 
CDataObjectmpValueReference
 
UserInterfaceFlag mUserInterfaceFlag
 
- Protected Attributes inherited from CDataContainer
objectMap mObjects
 
- Protected Attributes inherited from CDataObject
ObjectSet mPrerequisits
 
std::set< CDataContainer * > mReferences
 
- Protected Attributes inherited from CObjectInterface
CValidity mValidity
 

Private Member Functions

 CHybridMethod ()
 
void initializeParameter ()
 

Additional Inherited Members

- Public Types inherited from CTrajectoryMethod
enum  Status { FAILURE = -1 , NORMAL = 0 , ROOT = 1 }
 
- Public Types inherited from CCopasiParameterGroup
typedef CDataObjectMap::const_type_iterator< CCopasiParameterconst_name_iterator
 
typedef std::vector< CCopasiParameter * > elements
 
typedef elements::iterator index_iterator
 
typedef CDataObjectMap::type_iterator< CCopasiParametername_iterator
 
- Public Types inherited from CCopasiParameter
enum class  eUserInterfaceFlag { editable , basic , unsupported , __SIZE }
 
enum class  Type {
  DOUBLE = 0 , UDOUBLE , INT , UINT ,
  BOOL , GROUP , STRING , CN ,
  KEY , FILE , EXPRESSION , INVALID ,
  __SIZE
}
 
typedef CFlags< eUserInterfaceFlagUserInterfaceFlag
 
- Public Types inherited from CDataContainer
typedef CDataObjectMap objectMap
 
- Public Types inherited from CDataObject
typedef std::set< const CDataObject * > DataObjectSet
 
enum  Flag {
  Container , Vector , Matrix , NameVector ,
  Reference , ValueBool , ValueInt , ValueInt64 ,
  ValueDbl , NonUniqueName , StaticString , ValueString ,
  Separator , DisplayName , ModelEntity , Array ,
  DataModel , Root , Gui , __SIZE
}
 
- Public Types inherited from CObjectInterface
typedef std::vector< const CDataContainer * > ContainerList
 
typedef std::set< const CObjectInterface * > ObjectSet
 
- Static Public Member Functions inherited from CCopasiParameter
static void allocateValidValues (const Type &type, void *&pValidValues)
 
static void allocateValue (const Type &type, void *&pValue)
 
static void assignValue (const Type &type, void *&pValue, const void *pNewValue)
 
static void deleteValidValues (const Type &type, void *&pValidValues)
 
static void deleteValue (const Type &type, void *&pValue)
 
static CCopasiParameterfromData (const CData &data, CUndoObjectInterface *pParent)
 
- Static Public Member Functions inherited from CDataContainer
static CDataContainerfromData (const CData &data, CUndoObjectInterface *pParent)
 
- Static Public Member Functions inherited from CDataObject
static CDataObjectfromData (const CData &data, CUndoObjectInterface *pParent)
 
static void sanitizeObjectName (std::string &name)
 
- Static Public Member Functions inherited from CObjectInterface
static const CDataObjectDataObject (const CObjectInterface *pInterface)
 
static CObjectInterfaceGetObjectFromCN (const ContainerList &listOfContainer, const CCommonName &objName)
 
- Static Public Member Functions inherited from CUndoObjectInterface
template<class CType >
static CType * fromData (const CData &, CUndoObjectInterface *)
 
- Static Public Attributes inherited from CCopasiParameter
static const CEnumAnnotation< std::string, TypeTypeName
 
static const CEnumAnnotation< std::string, TypeXMLType
 
- Static Public Attributes inherited from CDataContainer
static const CObjectInterface::ContainerList EmptyList
 
- Static Protected Attributes inherited from CTrajectoryMethod
static const bool ReducedModel
 

Member Enumeration Documentation

◆ metabStatus

Status of the metabolites. Particle number can be high or low.

Enumerator
LOW 
HIGH 

Constructor & Destructor Documentation

◆ CHybridMethod() [1/3]

CHybridMethod::CHybridMethod ( )
private

Constructor.

◆ CHybridMethod() [2/3]

CHybridMethod::CHybridMethod ( const CDataContainer pParent,
const CTaskEnum::Method methodType = CTaskEnum::Method::hybrid,
const CTaskEnum::Task taskType = CTaskEnum::Task::timeCourse 
)

Specific constructor

Parameters
constCDataContainer * pParent
constCTaskEnum::Method & methodType (default: hybrid)
constCTaskEnum::Task & taskType (default: timeCourse)

CHybridMethod

This class implements an hybrid algorithm for the simulation of a biochemical system over time.

File name: CHybridMethod.cpp Author: Juergen Pahle Email: juerg.nosp@m.en.p.nosp@m.ahle@.nosp@m.eml-.nosp@m.r.vil.nosp@m.la-b.nosp@m.osch..nosp@m.de

Last change: 14, December 2004

(C) European Media Lab 2003. Default constructor.

References initializeParameter().

◆ CHybridMethod() [3/3]

CHybridMethod::CHybridMethod ( const CHybridMethod src,
const CDataContainer pParent 
)

Copy constructor.

Parameters
const CHybridMethod &src
constCDataContainer * pParent

References initializeParameter().

◆ ~CHybridMethod()

CHybridMethod::~CHybridMethod ( )

Destructor.

References cleanup(), and DESTRUCTOR_TRACE.

Member Function Documentation

◆ calculateDerivative()

void CHybridMethod::calculateDerivative ( CVectorCore< C_FLOAT64 > &  deriv)
protected

Calculates the derivative of the system and writes it into the vector deriv. Length of deriv must be mNumVariableMetabs. CAUTION: Only deterministic reactions are taken into account. That is, this is only the derivative of the deterministic part of the system.

Parameters
CVectorCore<C_FLOAT64 > & deriv

Calculates the derivative of the system and writes it into the vector deriv. Length of deriv must be mNumVariableMetabs. CAUTION: Only deterministic reactions are taken into account. That is, this is only the derivative of the deterministic part of the system.

Parameters
derivA vector reference of length mNumVariableMetabs, into which the derivative is written

References CVectorCore< CType >::array(), C_FLOAT64, C_INT32, CMathReaction::getNumberBalance(), CMathReaction::getParticleFluxObject(), CMathObject::getValuePointer(), mFirstReactionFlag, CHybridStochFlag::mIndex, CCopasiMethod::mpContainer, CHybridStochFlag::mpNext, mRateOffset, mReactions, mSpeciesRates, CVectorCore< CType >::size(), and CMathContainer::updateSimulatedValues().

Referenced by CHybridNextReactionLSODAMethod::evalF(), and CHybridNextReactionRKMethod::rungeKutta().

◆ checkModel()

C_INT32 CHybridMethod::checkModel ( CModel model)
staticprotected

Test the model if it is proper to perform stochastic simulations on. Several properties are tested (e.g. integer stoichometry, all reactions take place in one compartment only, irreversibility...).

Parameters
modelThe model to be checked
Returns
1, if hybrid simulation is possible; <0, if an error occured.

Test the model if it is proper to perform stochastic simulations on. Several properties are tested (e.g. integer stoichometry, all reactions take place in one compartment only, irreversibility...).

Returns
0, if everything is ok; <0, if an error occured.

References C_FLOAT64, C_INT32, CModel::getReactions(), CModel::getStoi(), INT_EPSILON, CMatrix< CType >::numRows(), and CDataVector< CType >::size().

◆ cleanup()

void CHybridMethod::cleanup ( )
protected

Cleans up memory, etc.

Referenced by ~CHybridMethod().

◆ doSingleStep()

C_FLOAT64 CHybridMethod::doSingleStep ( C_FLOAT64  currentTime,
C_FLOAT64  endTime 
)
protected

Simulates the system over the next interval of time. The current time and the end time of the current step() are given as arguments.

Parameters
currentTimeA C_FLOAT64 specifying the current time
endTimeA C_FLOAT64 specifying the end time of the step()
Returns
A C_FLOAT giving the new time

Simulates the system over the next interval of time. The new time after this step is returned.

Parameters
currentTimeA C_FLOAT64 specifying the current time
endTimeA C_FLOAT64 specifying the endTime of the current step()
Returns
A C_FLOAT giving the new time

References C_FLOAT64, C_INVALID_INDEX, getStochTimeAndIndex(), integrateDeterministicPart(), mFirstReactionFlag, mPartitioningInterval, CTrajectoryMethod::mpContainerStateTime, mPQ, mReactions, mStepsAfterPartitionSystem, partitionSystem(), CIndexedPriorityQueue::size(), CMath::State, CTrajectoryMethod::stateChange(), and updatePriorityQueue().

Referenced by step().

◆ elevateChildren()

bool CHybridMethod::elevateChildren ( )
virtual

This methods must be called to elevate subgroups to derived objects. The default implementation does nothing.

Returns
bool success

Reimplemented from CCopasiParameterGroup.

References initializeParameter().

◆ generateReactionTime()

C_FLOAT64 CHybridMethod::generateReactionTime ( size_t  rIndex)
protected

Generates a putative reaction time for the given reaction.

Parameters
rIndexA size_t specifying the index of the reaction
Returns
A C_FLOAT64 holding the calculated reaction time

References C_FLOAT64, CRandom::getRandomOO(), mAmu, and mpRandomGenerator.

Referenced by partitionSystem(), setupPriorityQueue(), updatePriorityQueue(), and updateTauMu().

◆ getStochTimeAndIndex()

void CHybridMethod::getStochTimeAndIndex ( C_FLOAT64 ds,
size_t &  rIndex 
)
protected

Find the reaction index and the reaction time of the stochastic (!) reaction with the lowest reaction time.

Parameters
dsA reference to a C_FLOAT64. The putative reaction time for the first stochastic reaction is written into this variable.
rIndexA reference to a size_t. The index of the first stochastic reaction is written into this variable.

References mPQ, CIndexedPriorityQueue::topIndex(), and CIndexedPriorityQueue::topKey().

Referenced by doSingleStep().

◆ initializeParameter()

◆ insertDeterministicReaction()

void CHybridMethod::insertDeterministicReaction ( size_t  rIndex)
protected

Inserts a new deterministic reaction into the linked list in the vector mReactionFlags.

Parameters
rIndexA size_t giving the index of the reaction to be inserted into the list of deterministic reactions.

Inserts a new deterministic reaction into the linked list in the array mReactionFlags.

Parameters
rIndexA size_t giving the index of the reaction to be inserted into the list of deterministic reactions.

References mAmu, mAmuOld, mFirstReactionFlag, CHybridStochFlag::mpPrev, and mReactionFlags.

Referenced by partitionSystem().

◆ integrateDeterministicPart()

virtual void CHybridMethod::integrateDeterministicPart ( C_FLOAT64  ds)
protectedpure virtual

Integrates the deterministic reactions of the system over the specified time interval.

Parameters
dsA C_FLOAT64 specifying the stepsize.

Implemented in CHybridNextReactionRKMethod, and CHybridNextReactionLSODAMethod.

Referenced by doSingleStep().

◆ isValidProblem()

◆ partitionSystem()

◆ removeDeterministicReaction()

void CHybridMethod::removeDeterministicReaction ( size_t  rIndex)
protected

Removes a deterministic reaction from the linked list in the vector mReactionFlags.

Parameters
rIndexA size_t giving the index of the reaction to be removed from the list of deterministic reactions.

Removes a deterministic reaction from the linked list in the array mReactionFlags.

Parameters
rIndexA size_t giving the index of the reaction to be removed from the list of deterministic reactions.

References mFirstReactionFlag, CHybridStochFlag::mpPrev, and mReactionFlags.

Referenced by partitionSystem().

◆ setupDependencyGraph()

◆ setupMetab2React()

void CHybridMethod::setupMetab2React ( )
protected

Creates for each metabolite a set of reaction indices. If the metabolite participates in a reaction as substrate, product or modifier this reaction is added to the corresponding set.

References CVectorCore< CType >::array(), mMetab2React, mpFirstMetabValue, mReactions, and CVectorCore< CType >::size().

Referenced by start().

◆ setupPartition()

void CHybridMethod::setupPartition ( )
protected

Creates an initial partitioning of the system. Deterministic and stochastic reactions are determined. The array mStochReactions is initialized.

Creates an initial partitioning of the system. Deterministic and stochastic reactions are determined. The vector mReactionFlags and the vector mMetabFlags are initialized.

References C_FLOAT64, HIGH, LOW, mCurrentState, mFirstReactionFlag, mLowerStochLimit, mMetab2React, mMetabFlags, mNumVariableMetabs, CHybridStochFlag::mpNext, mReactionFlags, mReactions, mUpperStochLimit, CVector< CType >::resize(), and CVectorCore< CType >::size().

Referenced by start().

◆ setupPriorityQueue()

void CHybridMethod::setupPriorityQueue ( )
protected

◆ start()

◆ step()

CTrajectoryMethod::Status CHybridMethod::step ( const double &  deltaT,
const bool &  final = false 
)
virtual

This instructs the method to calculate a time step of deltaT starting with the current state, i.e., the result of the previous step. The new state (after deltaT) is expected in the current state. The return value is the actual timestep taken.

Parameters
constdouble & deltaT
constbool & final (default: false)
Returns
Status status

Reimplemented from CTrajectoryMethod.

References C_FLOAT64, doSingleStep(), mMaxSteps, mMaxStepsReached, CCopasiMethod::mpContainer, CTrajectoryMethod::mpContainerStateTime, CTrajectoryMethod::NORMAL, CMathContainer::updateSimulatedValues(), and CCopasiMessage::WARNING.

◆ updatePriorityQueue()

void CHybridMethod::updatePriorityQueue ( size_t  rIndex,
C_FLOAT64  time 
)
protected

Updates the priority queue.

Parameters
rIndexA size_t giving the index of the fired reaction
timeA C_FLOAT64 holding the time taken by this reaction

Updates the priority queue.

Parameters
rIndexA size_t giving the index of the fired reaction (-1, if no stochastic reaction has fired)
timeA C_FLOAT64 holding the current time

References CMathContainer::applyUpdateSequence(), CVectorCore< CType >::array(), C_FLOAT64, C_INVALID_INDEX, CDataObject::calculateValue(), generateReactionTime(), CMathReaction::getPropensityObject(), mAmu, mAmuOld, CCopasiMethod::mpContainer, mPQ, mReactionFlags, mReactions, mUpdateSequences, CVectorCore< CType >::size(), CIndexedPriorityQueue::updateNode(), CMathContainer::updateSimulatedValues(), and updateTauMu().

Referenced by doSingleStep().

◆ updateTauMu()

void CHybridMethod::updateTauMu ( size_t  rIndex,
C_FLOAT64  time 
)
protected

Updates the putative reaction time of a stochastic reaction in the priority queue. The corresponding amu and amu_old must be set prior to the call of this method.

Parameters
rIndexA size_t specifying the index of the reaction
timeA C_FLOAT64 specifying the current time

Updates the putative reaction time of a stochastic reaction in the priority queue. The corresponding amu and amu_old must be set prior to the call of this method.

Parameters
rIndexA size_t specifying the index of the reaction

References C_FLOAT64, generateReactionTime(), CIndexedPriorityQueue::getKey(), mAmu, mAmuOld, mPQ, and CIndexedPriorityQueue::updateNode().

Referenced by updatePriorityQueue().

Member Data Documentation

◆ mAmu

std::vector<C_FLOAT64> CHybridMethod::mAmu
protected

◆ mAmuOld

std::vector<C_FLOAT64> CHybridMethod::mAmuOld
protected

◆ mCurrentState

CVectorCore< C_FLOAT64 > CHybridMethod::mCurrentState
protected

Vectors to hold the system state and intermediate results

Referenced by partitionSystem(), CHybridNextReactionRKMethod::rungeKutta(), setupPartition(), and start().

◆ mDG

CDependencyGraph CHybridMethod::mDG
protected

The graph of reactions and their dependent reactions. When a reaction is executed, the propensities for each of its dependents must be updated.

Referenced by setupDependencyGraph().

◆ mFirstMetabIndex

size_t CHybridMethod::mFirstMetabIndex
protected

index of the first metab in CState

Referenced by CHybridNextReactionLSODAMethod::evalF(), and start().

◆ mFirstReactionFlag

◆ mLowerStochLimit

C_FLOAT64 CHybridMethod::mLowerStochLimit
protected

Limit for particle numbers. If a particle number is < StochLimit the corresponding reactions must be simulated stochastically.

Referenced by isValidProblem(), partitionSystem(), setupPartition(), and start().

◆ mMaxBalance

size_t CHybridMethod::mMaxBalance
protected

maximal increase of a particle number in one step.

◆ mMaxIntBeforeStep

size_t CHybridMethod::mMaxIntBeforeStep
protected

This is set to maxint - mMaxSteps*mMaxBalance

◆ mMaxSteps

unsigned C_INT32 CHybridMethod::mMaxSteps
protected

Max number of doSingleStep() per step()

Referenced by start(), and step().

◆ mMaxStepsReached

bool CHybridMethod::mMaxStepsReached
protected

Referenced by start(), and step().

◆ mMetab2React

std::vector<std::set <size_t> > CHybridMethod::mMetab2React
protected

Vector of relations between metabolites to reactions.

Referenced by partitionSystem(), setupMetab2React(), setupPartition(), and start().

◆ mMetabFlags

CVector< metabStatus > CHybridMethod::mMetabFlags
protected

Vector holding information on the status of metabolites. They can have low or high particle numbers.

Referenced by partitionSystem(), and setupPartition().

◆ mNumVariableMetabs

size_t CHybridMethod::mNumVariableMetabs
protected

◆ mPartitioningInterval

unsigned C_INT32 CHybridMethod::mPartitioningInterval
protected

The system gets repartitioned after this number of elementary steps.

Referenced by doSingleStep(), and start().

◆ mpFirstMetabValue

const C_FLOAT64* CHybridMethod::mpFirstMetabValue
protected

Referenced by setupMetab2React(), and start().

◆ mPQ

CIndexedPriorityQueue CHybridMethod::mPQ
protected

The set of putative stochastic (!) reactions and associated times at which each reaction occurs. This is represented as a priority queue, sorted by the reaction time. This heap changes dynamically as stochastic reactions become deterministic (delete this reaction from the queue) or vice versa (insert a new reaction into the queue).

Referenced by doSingleStep(), getStochTimeAndIndex(), partitionSystem(), setupPriorityQueue(), updatePriorityQueue(), and updateTauMu().

◆ mpRandomGenerator

CRandom* CHybridMethod::mpRandomGenerator
protected

The random number generator.

Referenced by generateReactionTime(), and start().

◆ mRandomSeed

unsigned C_INT32 CHybridMethod::mRandomSeed
protected

The random seed to use.

Referenced by start().

◆ mRateOffset

size_t CHybridMethod::mRateOffset
protected

Referenced by calculateDerivative(), and start().

◆ mReactionFlags

std::vector<CHybridStochFlag> CHybridMethod::mReactionFlags
protected

Vector to hold information about how many metabolites of a reaction have low particle numbers. If no metabolite of one reaction has low particle numbers this reaction will be simulated det.

Referenced by insertDeterministicReaction(), partitionSystem(), removeDeterministicReaction(), setupPartition(), setupPriorityQueue(), and updatePriorityQueue().

◆ mReactions

◆ mSpeciesRates

CVectorCore< C_FLOAT64 > CHybridMethod::mSpeciesRates
protected

Referenced by calculateDerivative(), and start().

◆ mStepsAfterPartitionSystem

size_t CHybridMethod::mStepsAfterPartitionSystem
protected

Number of elementary steps after the last partitioning.

Referenced by doSingleStep(), and start().

◆ mUpdateSequences

CVector< CCore::CUpdateSequence > CHybridMethod::mUpdateSequences
protected

A vector containing the update sequence required to update all propensity values.

Referenced by setupDependencyGraph(), start(), and updatePriorityQueue().

◆ mUpperStochLimit

C_FLOAT64 CHybridMethod::mUpperStochLimit
protected

◆ mUseRandomSeed

bool CHybridMethod::mUseRandomSeed
protected

Specifies if the mRandomSeed should be used. otherwise a randomly chosen seed is used.

Referenced by start().


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