33 #ifndef COPASI_CHybridMethodODE45
34 #define COPASI_CHybridMethodODE45
54 #define MAX_STEPS 1000000
55 #define INT_EPSILON 0.1
66 #define USE_RANDOM_SEED false
75 #define DETERMINISTIC 1
80 #define INTERP_RECORD_NUM 6
82 #define REACH_END_TIME 0
403 std::set <std::string> *
getAffects(
size_t rIndex);
408 double *tout,
double *relerr,
double *abserr,
413 t,
double *tout,
double *relerr,
414 double *abserr,
C_INT *iflag,
double *yp,
415 double *h__,
double *f1,
double *f2,
416 double *f3,
double *f4,
double *f5,
417 double *savre,
double *savae,
C_INT *nfe,
419 C_INT *kflag,
double *yrcd);
422 double *h__,
double *yp,
double *f1,
423 double *f2,
double *f3,
double *f4,
424 double *f5,
double *s,
double *yrcd);
754 #endif // COPASI_CHybridMethodODE45
std::set< size_t > mUpdateSet
CVector< C_FLOAT64 > temp
const CCopasiVectorNS< CReaction > * mpReactions
C_INT fehl_(pEvalF f, const C_INT *neqn, double *y, double *t, double *h__, double *yp, double *f1, double *f2, double *f3, double *f4, double *f5, double *s, double *yrcd)
virtual void start(const CState *initialState)
std::vector< std::set< size_t > > mMetab2React
void setupPriorityQueue(C_FLOAT64 startTime=0.0)
void getStochTimeAndIndex(C_FLOAT64 &ds, size_t &rIndex)
void outputState(const CState *pS)
C_INT rkfs_(pEvalF f, const C_INT *neqn, double *y, double *t, double *tout, double *relerr, double *abserr, C_INT *iflag, double *yp, double *h__, double *f1, double *f2, double *f3, double *f4, double *f5, double *savre, double *savae, C_INT *nfe, C_INT *kop, C_INT *init, C_INT *jflag, C_INT *kflag, double *yrcd)
CVector< C_FLOAT64 > mAmuOld
C_FLOAT64 generateReactionTime(size_t rIndex)
CMatrix< C_FLOAT64 > mStoi
unsigned C_INT32 mRandomSeed
C_INT32 checkModel(CModel *model)
C_INT rkf45_(pEvalF f, const C_INT *neqn, double *y, double *t, double *tout, double *relerr, double *abserr, C_INT *iflag, double *work, C_INT *iwork, double *yrcd)
size_t mNumVariableMetabs
std::vector< CHybridODE45MetabFlag > mMetabFlags
C_FLOAT64 getDefaultAtol(const CModel *pModel) const
void doInverseInterpolation()
void updatePriorityQueue(size_t rIndex, C_FLOAT64 time)
void setupDependencyGraph()
CVector< C_FLOAT64 > mYdot
virtual bool elevateChildren()
std::vector< std::vector< CHybridODE45Balance > > mLocalSubstrates
void fireReaction(size_t rIndex)
std::set< std::string > * getDependsOn(size_t rIndex)
void evalF(const C_FLOAT64 *t, const C_FLOAT64 *y, C_FLOAT64 *ydot)
CVector< C_FLOAT64 > mAmu
std::ofstream mOutputFile
std::set< std::string > * getAffects(size_t rIndex)
static void EvalF(const C_INT *n, const C_FLOAT64 *t, const C_FLOAT64 *y, C_FLOAT64 *ydot)
std::vector< std::vector< CHybridODE45Balance > > mLocalBalances
CInterpolation * mpInterpolation
CIndexedPriorityQueue mPQ
virtual Status step(const double &deltaT)
static CTrajectoryMethod * createMethod(CCopasiMethod::SubType subType=CCopasiMethod::deterministic)
CHybridMethodODE45 * pMethod
CVector< C_FLOAT64 > mStateRecord
std::string mOutputFileName
static bool modelHasAssignments(const CModel *pModel)
CVector< C_FLOAT64 > mDWork
void updateTauMu(size_t rIndex, C_FLOAT64 time)
CCopasiVector< CMetab > * mpMetabolites
size_t getReactionIndex4Hybrid()
void setupReactionFlags()
void(* pEvalF)(const C_INT *, const double *, const double *, double *)
std::vector< std::set< size_t > > mReactAffect
C_FLOAT64 doSingleStep(C_FLOAT64 currentTime, C_FLOAT64 endTime)
std::ostringstream mErrorMsg
CRandom * mpRandomGenerator
void integrateDeterministicPart(C_FLOAT64 ds)
CHybridMethodODE45(const CCopasiContainer *pParent=NULL)
void fireSlowReaction4Hybrid()
CVector< size_t > mReactionFlags
void calculateAmu(size_t rIndex)
void initMethod(C_FLOAT64 time)
void initializeParameter()
std::set< size_t > mCalculateSet
CStateRecord * mpEventState
void outputDebug(std::ostream &os, size_t level)
virtual bool isValidProblem(const CCopasiProblem *pProblem)