119 for (i = 0; i < imax; ++i)
131 for (i = 0; i < imax; ++i)
143 for (i = 0; i < imax; ++i)
281 mFirstMetabIndex = mpModel->getStateTemplate().getIndex(mpModel->getMetabolitesX()[0]);
407 std::vector<CHybridODE45MetabFlag>::iterator metabIt
409 const std::vector<CHybridODE45MetabFlag>::iterator metabEndIt
413 for (; metabIt != metabEndIt; ++metabIt)
415 metabIt->mFlag =
SLOW;
416 metabIt->mFastReactions.clear();
419 std::vector<CHybridODE45Balance>::iterator itBalance;
420 std::vector<CHybridODE45Balance>::iterator itEndBalance;
431 for (; itBalance != itEndBalance; ++itBalance)
433 size_t metab = itBalance->mIndex;
488 size_t maxBalance = 0;
498 &(*mpReactions)[i]->getChemEq().getBalances();
500 for (j = 0; j < balances->
size(); j++)
516 balances = &(*mpReactions)[i]->getChemEq().getSubstrates();
518 for (j = 0; j < balances->
size(); j++)
578 (*mpReactions)[rct]->getChemEq().getSubstrates();
580 for (
size_t i = 0; i < metab.
size(); i++)
582 pMetab = const_cast <
CMetab* >
583 (metab[i]->getMetabolite());
591 metab = (*mpReactions)[rct]->getChemEq().getModifiers();
593 for (
size_t i = 0; i < metab.
size(); i++)
595 pMetab = const_cast <
CMetab* >
596 (metab[i]->getMetabolite());
605 std::set< const CCopasiObject * > changed;
609 pMetab = (*mpMetabolites)[metab];
619 pReaction = (*mpReactions)[react];
636 std::set<size_t>::iterator reactIt;
638 std::vector<CHybridODE45MetabFlag>::iterator metabIt
640 const std::vector<CHybridODE45MetabFlag>::iterator metabEndIt
643 std::vector< std::set<size_t> >::iterator m2rIt =
646 for (; metabIt != metabEndIt; ++metabIt, ++m2rIt)
649 if (metabIt->mFlag ==
FAST)
651 for (reactIt = m2rIt->begin();
652 reactIt != m2rIt->end();
666 std::vector<std::set<size_t> >::iterator rctIt =
668 const std::vector<std::set<size_t> >::iterator rctEndIt =
671 for (
size_t rct = 0; rctIt != rctEndIt; ++rct, ++rctIt)
675 std::vector<CHybridODE45Balance>::iterator balIt =
677 const std::vector<CHybridODE45Balance>::iterator balEndIt =
680 for (; balIt != balEndIt; ++balIt)
682 size_t metabId = balIt->mIndex;
684 std::set<size_t>::iterator it =
686 const std::set<size_t>::iterator endIt =
689 for (; it != endIt; ++it)
719 for (i = 0; ((i <
mMaxSteps) && (time < endTime)); i++)
726 CCopasiMessage(
CCopasiMessage::WARNING,
"maximum number of reaction events was reached in at least one simulation step.\nThat means time intervals in the output may not be what you requested.");
824 std::set <size_t>::iterator updateIt
826 const std::set <size_t>::iterator updateEndIt
829 for (; updateIt != updateEndIt; updateIt++)
851 for (i = 0, imax = Compartment.
size(); i < imax; i++)
853 if (Compartment[i]->
getValue() < Volume)
854 Volume = Compartment[i]->
getValue();
889 for (
size_t i = 0; i <
mData.
dim - 1; i++, stateY++)
908 tdist = fabs(deltaT);
909 d__1 = fabs(
mTime), d__2 = fabs(EndTime);
912 if (tdist < std::numeric_limits< C_FLOAT64 >::epsilon() * 2. * w0)
959 std::cout <<
"Error Type: " <<
mIFlag << std::endl;
967 for (
size_t i = 0; i <
mData.
dim - 1; i++)
1007 for (
size_t i = 0; i <
mData.
dim - 1; i++)
1008 stateY[i] = tmpY[i];
1043 for (i = 0; i <
mData.
dim - 1; ++i)
1050 std::set <size_t>::iterator reactIt =
mCalculateSet.begin();
1066 std::vector <CHybridODE45Balance>::iterator metabIt;
1067 std::vector <CHybridODE45Balance>::iterator metabEndIt;
1079 for (; metabIt != metabEndIt; metabIt++)
1081 metabIndex = metabIt->mIndex;
1082 ydot[metabIndex] += metabIt->mMultiplicity *
mAmu[i];
1109 if (
mAmu[rIndex] == 0)
return std::numeric_limits<C_FLOAT64>::infinity();
1112 return - 1 * log(rand2) /
mAmu[rIndex];
1134 if (
mAmu[rIndex] != 0.0)
1158 mAmu[rIndex] = (*mpReactions)[rIndex]->calculateParticleFlux();
1177 const std::vector<CHybridODE45Balance> & substrates =
mLocalSubstrates[rIndex];
1181 for (
size_t i = 0; i < substrates.size(); i++)
1183 num_ident = substrates[i].mMultiplicity;
1188 number =
static_cast<C_INT32>((*mpMetabolites)[substrates[i].mIndex]->getValue());
1189 lower_bound = number - num_ident;
1190 substrate_factor = substrate_factor
1191 * pow((
double) number, (
int) num_ident - 1);
1195 while (number > lower_bound)
1203 if ((amu == 0) || (substrate_factor == 0))
1212 C_FLOAT64 rate_factor = (*mpReactions)[rIndex]->calculateParticleFlux();
1216 amu *= rate_factor / substrate_factor;;
1221 mAmu[rIndex] = rate_factor;
1237 std::set<std::string> *retset =
new std::set<std::string>;
1239 size_t i, imax = (*mpReactions)[rIndex]->getFunctionParameters().size();
1242 for (i = 0; i < imax; ++i)
1244 if ((*
mpReactions)[rIndex]->getFunctionParameters()[i]->getUsage()
1248 const std::vector <std::string> & metabKeylist =
1249 (*mpReactions)[rIndex]->getParameterMappings()[i];
1250 jmax = metabKeylist.size();
1252 for (j = 0; j < jmax; ++j)
1253 retset->insert(metabKeylist[j]);
1269 std::set<std::string> *retset =
new std::set<std::string>;
1277 retset->insert(
mLocalBalances[rIndex][i].mpMetabolite->getKey());
1289 std::vector< std::set<std::string>* > DependsOn;
1290 std::vector< std::set<std::string>* > Affects;
1317 std::set<std::string>::iterator iter = Affects[i]->begin();
1319 for (; iter != Affects[i]->end(); iter++)
1321 if (DependsOn[j]->count(*iter))
1336 for (i = 0; i < numReactions; i++)
1338 delete DependsOn[i];
1357 std::set <size_t>::iterator iter, iterEnd;
1383 for (; iter != iterEnd; iter++)
1465 tmp +=
mAmu[rIndex];
1467 if (tmp >= threshold)
1476 double *t,
double *tout,
1477 double *relerr,
double *abserr,
1478 C_INT *iflag,
double *work,
1479 C_INT *iwork,
double *yrcd)
1481 static C_INT k1, k2, k3, k4, k5, k6, k1m;
1692 rkfs_((
pEvalF)f, neqn, &y[1], t, tout, relerr, abserr, iflag,
1693 &work[1], &work[k1m], &work[k1], &work[k2], &work[k3],
1694 &work[k4], &work[k5], &work[k6], &work[k6 + 1], &iwork[1],
1695 &iwork[2], &iwork[3], &iwork[4], &iwork[5], &yrcd[1]);
1701 t,
double *tout,
double *relerr,
double *abserr,
C_INT *
1702 iflag,
double *yp,
double *h__,
double *f1,
double *
1703 f2,
double *f3,
double *f4,
double *f5,
double *savre,
1709 static double remin = 1e-12;
1710 static C_INT maxnfe = 3000;
1714 double d__1, d__2, d__3, d__4;
1726 static double s, ae, ee, dt, et, u26, rer, tol, ypk;
1727 static double hmin, toln;
1729 static double scale, eeoet;
1731 static double esttol, twoeps;
1772 twoeps = 2.f * std::numeric_limits< C_FLOAT64 >::epsilon();
1774 u26 = twoeps * 13.f;
1782 if (*relerr < 0. || *abserr < 0.)
1787 mflag =
abs(*iflag);
1789 if (mflag >= 1 && mflag <= 8)
1809 if (*t == *tout && *kflag != 3)
1835 if (*kflag == 5 && *abserr == 0.)
1840 if (*kflag == 6 && *relerr <= *savre && *abserr <= *savae)
1860 if (*iflag == 5 && *abserr > 0.)
1869 std::cout <<
"STOP 0 statement executed" << std::endl;
1887 mflag =
abs(*iflag);
1904 rer = twoeps + remin;
1946 (*f)(neqn, &a, &y[1], &yp[1]);
1963 for (k = 1; k <= i__1; ++k)
1965 tol = *relerr * (d__1 = y[k], fabs(d__1)) + *abserr;
1973 ypk = (d__1 = yp[k], fabs(d__1));
1975 d__1 = *h__, d__2 = d__1, d__1 *= d__1;
1977 if (ypk * (d__2 * (d__1 * d__1)) > tol)
1980 *h__ = pow(d__3, .2);
1994 d__3 = fabs(*t), d__4 = fabs(dt);
1995 d__1 = *h__, d__2 = u26 *
std::max(d__3, d__4);
1998 *jflag = *iflag >= 0 ? 2 : -2;
2004 *h__ = dt >= 0 ? fabs(*h__) : -fabs(*h__);
2009 if (fabs(*h__) >= fabs(dt) * 2.)
2026 if (fabs(dt) > u26 * fabs(*t))
2034 for (k = 1; k <= i__1; ++k)
2041 (*f)(neqn, &a, &y[1], &yp[1]);
2044 std::cout <<
"Step too Small" << std::endl;
2056 scale = 2. / *relerr;
2057 ae = scale * *abserr;
2065 hmin = u26 * fabs(*t);
2073 if (fabs(dt) >= fabs(*h__) * 2.)
2078 if (fabs(dt) > fabs(*h__))
2133 fehl_((
pEvalF)f, neqn, &y[1], t, h__, &yp[1], &f1[1], &f2[1],
2134 &f3[1], &f4[1], &f5[1], &f1[1], &yrcd[1]);
2146 for (k = 1; k <= i__1; ++k)
2148 et = (d__1 = y[k], fabs(d__1)) + (d__2 = f1[k], fabs(d__2)) + ae;
2160 ee = (d__1 = yp[k] * -2090. + (f3[k] * 21970. - f4[k] * 15048.) + (f2[k] * 22528. - f5[k] * 27360.), fabs(d__1));
2163 d__1 = eeoet, d__2 = ee / et;
2167 esttol = fabs(*h__) * eeoet * scale / 752400.;
2182 if (esttol < 59049.)
2184 s = .9 / pow(esttol, .2);
2189 if (fabs(*h__) > hmin)
2207 for (k = 1; k <= i__1; ++k)
2214 (*f)(neqn, &a, &y[1], &yp[1]);
2224 if (esttol > 1.889568e-4)
2226 s = .9 / pow(esttol, .2);
2235 d__2 = s * fabs(*h__);
2238 *h__ = *h__ >= 0 ? fabs(d__1) : -fabs(d__1);
2267 double *t,
double *h__,
2268 double *yp,
double *f1,
2269 double *f2,
double *f3,
2270 double *f4,
double *f5,
2271 double *s,
double *yrcd)
2316 for (k = 1; k <= i__1; ++k)
2318 f5[k] = y[k] + ch * yp[k];
2322 (*f)(neqn, &d__1, &f5[1], &f1[1]);
2326 yrcd[base] = *t + ch;
2329 for (k = 1; k <= i__1; ++k)
2331 yrcd[base + k] = f5[k];
2335 ch = *h__ * 3. / 32.;
2338 for (k = 1; k <= i__1; ++k)
2340 f5[k] = y[k] + ch * (yp[k] + f1[k] * 3.);
2343 d__1 = *t + *h__ * 3. / 8.;
2344 (*f)(neqn, &d__1, &f5[1], &f2[1]);
2348 yrcd[base] = *t + *h__ * 3. / 8.;
2351 for (k = 1; k <= i__1; ++k)
2353 yrcd[base + k] = f5[k];
2360 for (k = 1; k <= i__1; ++k)
2362 f5[k] = y[k] + ch * (yp[k] * 1932. + (f2[k] * 7296.
2366 d__1 = *t + *h__ * 12. / 13.;
2367 (*f)(neqn, &d__1, &f5[1], &f3[1]);
2370 base = (*neqn + 1) * 3 + 1;
2371 yrcd[base] = *t + *h__ * 12. / 13.;
2374 for (k = 1; k <= i__1; ++k)
2376 yrcd[base + k] = f5[k];
2383 for (k = 1; k <= i__1; ++k)
2385 f5[k] = y[k] + ch * (yp[k] * 8341. - f3[k] * 845.
2386 + (f2[k] * 29440. - f1[k] * 32832.));
2390 (*f)(neqn, &d__1, &f5[1], &f4[1]);
2396 for (k = 1; k <= i__1; ++k)
2398 f1[k] = y[k] + ch * (yp[k] * -6080.
2399 + (f3[k] * 9295. - f4[k] * 5643.)
2400 + (f1[k] * 41040. - f2[k] * 28352.));
2403 d__1 = *t + *h__ / 2.;
2404 (*f)(neqn, &d__1, &f1[1], &f5[1]);
2408 base = (*neqn + 1) * 2 + 1;
2409 yrcd[base] = *t + *h__ / 2.;
2412 for (k = 1; k <= i__1; ++k)
2414 yrcd[base + k] = f1[k];
2419 ch = *h__ / 7618050.;
2422 for (k = 1; k <= i__1; ++k)
2424 s[k] = y[k] + ch * (yp[k] * 902880.
2425 + (f3[k] * 3855735. - f4[k] * 1371249.)
2426 + (f2[k] * 3953664. + f5[k] * 277020.));
2445 size_t i, j, numReactions = mpReactions->
size();
2449 for (i = 0; i < numReactions; i++)
2452 if ((*mpReactions)[i]->getCompartmentNumber() != 1)
return - 1;
2455 if ((*mpReactions)[i]->isReversible() != 0)
return - 2;
2461 for (j = 0; j < mStoi.
numRows(); j++)
2463 multFloat = mStoi[j][i];
2464 multInt =
static_cast<C_INT32>(floor(multFloat + 0.5));
2466 if ((multFloat - multInt) >
INT_EPSILON)
return - 3;
2479 std::set< size_t >::iterator iter, iterEnd;
2481 os <<
"outputDebug(" << level <<
") *********************************************** BEGIN" << std::endl;
2489 os <<
"mMaxSteps: " <<
mMaxSteps << std::endl;
2490 os <<
"mMaxBalance: " <<
mMaxBalance << std::endl;
2502 os <<
"mStoi: " << std::endl;
2507 os <<
mStoi[i][j] <<
" ";
2515 os <<
temp[i] <<
" ";
2519 os <<
"mReactionFlags: " << std::endl;
2527 os <<
"mMetabFlags: " << std::endl;
2538 os <<
"mLocalBalances: " << std::endl;
2565 os <<
"mMetab2React: " << std::endl;
2577 os <<
"mAmu: " << std::endl;
2580 os <<
mAmu[i] <<
" ";
2583 os <<
"mAmuOld: " << std::endl;
2589 os <<
"mUpdateSet: " << std::endl;
2596 os <<
"mDG: " << std::endl <<
mDG;
2597 os <<
"mPQ: " << std::endl <<
mPQ;
2598 os <<
"Particle numbers: " << std::endl;
2602 os << (*mpMetabolites)[i]->getValue() <<
" ";
2632 os <<
temp[i] <<
" ";
2636 os <<
"mReactionFlags: " << std::endl;
2644 os <<
"mMetabFlags: " << std::endl;
2655 os <<
"mAmu: " << std::endl;
2658 os <<
mAmu[i] <<
" ";
2661 os <<
"mAmuOld: " << std::endl;
2667 os <<
"mUpdateSet: " << std::endl;
2673 os <<
"mPQ: " << std::endl <<
mPQ;
2674 os <<
"Particle numbers: " << std::endl;
2678 os << (*mpMetabolites)[i]->getValue() <<
" ";
2691 os <<
"outputDebug(" << level <<
") ************************************************* END" << std::endl;
2700 std::cout <<
"============Boolean============" << std::endl;
2703 std::cout <<
"mDoCorrection: Yes" << std::endl;
2705 std::cout <<
"mDoCorrection: No" << std::endl;
2708 std::cout <<
"mReducedModel: Yes" << std::endl;
2710 std::cout <<
"mReducedModel: No" << std::endl;
2712 std::cout << std::endl;
2714 std::cout <<
"============Metab============" << std::endl;
2717 std::cout <<
"~~~~mFirstMetabIndex:~~~~ " <<
mFirstMetabIndex << std::endl;
2718 std::cout <<
"~~~~mpMetabolites:~~~~" << std::endl;
2722 std::cout <<
"metab #" << i <<
" name: " << (*mpMetabolites)[i]->getObjectDisplayName() << std::endl;
2723 std::cout <<
"value pointer: " << (*mpMetabolites)[i]->getValuePointer() << std::endl;
2724 std::cout <<
"value: " << *((
double *)(*
mpMetabolites)[i]->getValuePointer()) << std::endl;
2727 std::cout << std::endl;
2729 std::cout <<
"~~~~mMetabFlags:~~~~ " << std::endl;
2733 std::cout <<
"metab #" << i << std::endl;
2734 std::cout <<
"mFlag: " <<
mMetabFlags[i].mFlag << std::endl;
2735 std::cout <<
"mFastReactions: ";
2736 std::set<size_t>::iterator it =
mMetabFlags[i].mFastReactions.begin();
2737 std::set<size_t>::iterator endIt =
mMetabFlags[i].mFastReactions.end();
2739 for (; it != endIt; it++)
2740 std::cout << *it <<
" ";
2742 std::cout << std::endl;
2745 std::cout << std::endl;
2747 std::cout <<
"============Reaction============" << std::endl;
2749 std::cout <<
"~~~~mNumReactions:~~~~ " <<
mNumReactions << std::endl;
2753 std::cout <<
"Reaction #: " << i <<
" Flag: " <<
mReactionFlags[i] << std::endl;
2756 std::cout <<
"~~~~mLocalBalances:~~~~ " << std::endl;
2760 std::cout <<
"Reaction: " << i << std::endl;
2764 std::cout <<
"Index: " <<
mLocalBalances[i][j].mIndex << std::endl;
2765 std::cout <<
"mMultiplicity: " <<
mLocalBalances[i][j].mMultiplicity << std::endl;
2766 std::cout <<
"mpMetablite: " <<
mLocalBalances[i][j].mpMetabolite << std::endl;
2770 std::cout <<
"~~~~mLocalSubstrates:~~~~ " << std::endl;
2774 std::cout <<
"Reaction: " << i << std::endl;
2779 std::cout <<
"mMultiplicity: " <<
mLocalSubstrates[i][j].mMultiplicity << std::endl;
2780 std::cout <<
"mpMetablite: " <<
mLocalSubstrates[i][j].mpMetabolite << std::endl;
2784 std::cout <<
"~~~~mMetab2React:~~~~ " << std::endl;
2788 std::cout <<
"metab #: " << i << std::endl;
2789 std::set<size_t>::iterator it =
mMetab2React[i].begin();
2790 std::set<size_t>::iterator endIt =
mMetab2React[i].end();
2791 std::cout <<
"React: ";
2793 for (; it != endIt; it++)
2794 std::cout << *it <<
" ";
2796 std::cout << std::endl;
2799 std::cout << std::endl;
2800 std::cout <<
"~~~~mReactAffect:~~~~ " << std::endl;
2804 std::cout <<
"react #: " << i << std::endl;
2805 std::set<size_t>::iterator it =
mReactAffect[i].begin();
2806 std::set<size_t>::iterator endIt =
mReactAffect[i].end();
2807 std::cout <<
"affect: ";
2809 for (; it != endIt; it++)
2810 std::cout << *it <<
" ";
2812 std::cout << std::endl;
2816 std::cout <<
"mHasStoiReaction: Yes" << std::endl;
2818 std::cout <<
"mHasStoiReaction: No" << std::endl;
2821 std::cout <<
"mHasDetermReaction: Yes" << std::endl;
2823 std::cout <<
"mHasDetermReaction: No" << std::endl;
2835 std::cout <<
"**State Output**" << std::endl;
2836 std::cout <<
"Time: " << time << std::endl;
2842 for (; pIt != pEnd; pIt++)
2843 std::cout << *pIt <<
" ";
2845 std::cout << std::endl;
2851 for (; pIt != pEnd; pIt++)
2852 std::cout << *pIt <<
" ";
2854 std::cout << std::endl;
2860 for (; pIt != pEnd; pIt++)
2861 std::cout << *pIt <<
" ";
2863 std::cout << std::endl;
2873 for (i = 0; i < imax; ++i)
2885 for (i = 0; i < imax; ++i)
2897 for (i = 0; i < imax; ++i)
std::set< size_t > mUpdateSet
CVector< C_FLOAT64 > temp
CCopasiObject * getParticleFluxReference()
CCopasiVectorN< CEvent > & getEvents()
const CCopasiVectorNS< CReaction > * mpReactions
const CCopasiVector< CMetab > & getMetabolites() const
const std::string & getObjectName() const
const CCopasiVectorN< CModelValue > & getModelValues() const
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)
virtual C_FLOAT64 getRandomOO()
virtual size_t size() const
void addDependent(const size_t &node, const size_t &dependent)
void recordState(const C_FLOAT64 time, const C_FLOAT64 *y)
size_t getNumMetabs() const
std::vector< std::set< size_t > > mMetab2React
void setupPriorityQueue(C_FLOAT64 startTime=0.0)
void updateSimulatedValues(const bool &updateMoieties)
virtual size_t numRows() const
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)
CTrajectoryProblem * mpProblem
CMatrix< C_FLOAT64 > mStoi
void resize(size_t size, const bool ©=false)
virtual void setValue(const C_FLOAT64 &value)
unsigned C_INT32 mRandomSeed
C_INT32 checkModel(CModel *model)
#define INTERP_RECORD_NUM
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 getKey(const size_t index) const
virtual bool isValidProblem(const CCopasiProblem *pProblem)
C_FLOAT64 getDefaultAtol(const CModel *pModel) const
void setTime(const C_FLOAT64 &time)
void doInverseInterpolation()
void updatePriorityQueue(size_t rIndex, C_FLOAT64 time)
void setupDependencyGraph()
CVector< C_FLOAT64 > mYdot
virtual bool elevateChildren()
C_FLOAT64 * endDependent()
C_FLOAT64 * endIndependent()
std::vector< std::vector< CHybridODE45Balance > > mLocalSubstrates
bool removeParameter(const std::string &name)
void fireReaction(size_t rIndex)
size_t getNumDependent() const
#define MCTrajectoryMethod
std::set< std::string > * getDependsOn(size_t rIndex)
static CRandom * createGenerator(CRandom::Type type=CRandom::mt19937, unsigned C_INT32 seed=0)
const C_FLOAT64 & getQuantity2NumberFactor() const
size_t getNumDependentReactionMetabs() const
void evalF(const C_FLOAT64 *t, const C_FLOAT64 *y, C_FLOAT64 *ydot)
void setState(const CState &state)
CVector< C_FLOAT64 > mAmu
size_t insertStochReaction(const size_t index, const C_FLOAT64 key)
const C_FLOAT64 & getDuration() const
C_FLOAT64 * getArray() const
const Value & getValue() const
std::set< std::string > * getAffects(size_t rIndex)
bool setValue(const std::string &name, const CType &value)
static void EvalF(const C_INT *n, const C_FLOAT64 *t, const C_FLOAT64 *y, C_FLOAT64 *ydot)
size_t getNumIndependent() const
std::vector< std::vector< CHybridODE45Balance > > mLocalBalances
const C_FLOAT64 & getTime() const
CInterpolation * mpInterpolation
CCopasiParameter * getParameter(const std::string &name)
CIndexedPriorityQueue mPQ
size_t getNumIndependentReactionMetabs() const
virtual Status step(const double &deltaT)
const C_FLOAT64 & getTime() const
CStateRecord * getInterpolationState()
bool dependsOn(DataObjectSet candidates, const DataObjectSet &context=DataObjectSet()) const
CHybridMethodODE45 * pMethod
CVector< C_FLOAT64 > mStateRecord
void setTime(const C_FLOAT64 &time)
CCopasiVectorNS< CCompartment > & getCompartments()
void updateNode(const size_t index, const C_FLOAT64 key)
static bool modelHasAssignments(const CModel *pModel)
const C_FLOAT64 & getValue() const
const C_FLOAT64 & getTime() const
virtual size_t getIndex(const CCopasiObject *pObject) const
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 *)
size_t getNumModelValues() const
bool addParameter(const CCopasiParameter ¶meter)
CCopasiVectorNS< CReaction > & getReactions()
std::vector< std::set< size_t > > mReactAffect
C_FLOAT64 doSingleStep(C_FLOAT64 currentTime, C_FLOAT64 endTime)
CCopasiParameter * assertParameter(const std::string &name, const CCopasiParameter::Type type, const CType &defaultValue)
std::ostringstream mErrorMsg
CRandom * mpRandomGenerator
const CState & getState() const
const CModelEntity::Status & getStatus() const
const CCopasiVector< CMetab > & getMetabolitesX() const
const CMatrix< C_FLOAT64 > & getStoi() const
void integrateDeterministicPart(C_FLOAT64 ds)
virtual size_t numCols() const
C_FLOAT64 * beginDependent()
CHybridMethodODE45(const CCopasiContainer *pParent=NULL)
CModel * getModel() const
void initializeIndexPointer(const size_t numberOfReactions)
void fireSlowReaction4Hybrid()
C_FLOAT64 * beginIndependent()
CVector< size_t > mReactionFlags
virtual void initialize(unsigned C_INT32 seed=CRandom::getSystemSeed())
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)
CCopasiObject * getValueReference() const