39 mTimeSeriesRequested(true),
41 mpCrossSectionProblem(NULL),
42 mpTrajectoryMethod(NULL),
43 mUpdateMoieties(false),
46 mOutputStartTime(0.0),
49 mOutputStartNumCrossings(0),
50 mMaxNumCrossings(std::numeric_limits< size_t >::
max()),
58 mStatesRingCounter(0),
59 mPreviousCrossingTime(std::numeric_limits<
C_FLOAT64 >::quiet_NaN()),
60 mPeriod(std::numeric_limits<
C_FLOAT64 >::quiet_NaN()),
61 mAveragePeriod(std::numeric_limits<
C_FLOAT64 >::quiet_NaN()),
62 mLastPeriod(std::numeric_limits<
C_FLOAT64 >::quiet_NaN()),
64 mLastFreq(std::numeric_limits<
C_FLOAT64 >::quiet_NaN()),
65 mFreq(std::numeric_limits<
C_FLOAT64 >::quiet_NaN()),
66 mAverageFreq(std::numeric_limits<
C_FLOAT64 >::quiet_NaN())
77 mTimeSeriesRequested(src.mTimeSeriesRequested),
79 mpCrossSectionProblem(NULL),
80 mpTrajectoryMethod(NULL),
81 mUpdateMoieties(false),
84 mOutputStartTime(0.0),
87 mOutputStartNumCrossings(0),
88 mMaxNumCrossings(std::numeric_limits< size_t >::
max()),
96 mStatesRingCounter(0),
97 mPreviousCrossingTime(std::numeric_limits<
C_FLOAT64 >::quiet_NaN()),
98 mPeriod(std::numeric_limits<
C_FLOAT64 >::quiet_NaN()),
99 mAveragePeriod(std::numeric_limits<
C_FLOAT64 >::quiet_NaN()),
100 mLastPeriod(std::numeric_limits<
C_FLOAT64 >::quiet_NaN()),
102 mLastFreq(std::numeric_limits<
C_FLOAT64 >::quiet_NaN()),
103 mFreq(std::numeric_limits<
C_FLOAT64 >::quiet_NaN()),
104 mAverageFreq(std::numeric_limits<
C_FLOAT64 >::quiet_NaN())
115 this->
add(mpMethod,
true);
143 std::ostream * pOstream)
159 if (pParameter != NULL)
175 if ((pOutputHandler != NULL) &&
203 std::string name =
"__cutplane";
207 std::stringstream str;
208 str <<
"__cutplane" << ++count;
215 std::stringstream expression;
245 mPeriod = std::numeric_limits< C_FLOAT64 >::quiet_NaN();
247 mLastPeriod = std::numeric_limits< C_FLOAT64 >::quiet_NaN();
249 mLastFreq = std::numeric_limits< C_FLOAT64 >::quiet_NaN();
250 mFreq = std::numeric_limits< C_FLOAT64 >::quiet_NaN();
251 mAverageFreq = std::numeric_limits< C_FLOAT64 >::quiet_NaN();
285 bool flagProceed =
true;
335 if (useInitialValues)
349 bool StateChanged =
false;
367 StateChanged =
false;
392 StateChanged =
false;
425 StateChanged =
false;
495 if (pParameter != NULL)
576 if (tmp < mpCrossSectionProblem->getConvergenceOutTolerance())
611 if (tmp < mpCrossSectionProblem->getConvergenceTolerance())
655 return std::numeric_limits< C_FLOAT64 >::quiet_NaN();
661 return std::numeric_limits< C_FLOAT64 >::quiet_NaN();
670 for (; p1 != p1End; ++p1, ++p2)
672 ret += (*p1 != *p2) ? pow((*p1 - *p2) / (fabs(*p1) + fabs(*p2)), 2) : 0.0;
675 return 2.0 * sqrt(ret);
C_FLOAT64 mPreviousCrossingTime
const std::string & getSingleObjectCN() const
CEvent * createEvent(const std::string &name)
virtual bool elevateChildren()
CCopasiVectorN< CEvent > & getEvents()
bool getFlagLimitOutTime() const
void setProblem(CTrajectoryProblem *problem)
virtual bool initialize(const OutputFlag &of, COutputHandler *pOutputHandler, std::ostream *pOstream)
bool getFlagLimitCrossings() const
size_t mStatesRingCounter
virtual void stateChanged()
const CCopasiMessage & getMessage() const
virtual bool setName(const std::string &name)
void setInitialState(const CState &state)
void updateSimulatedValues(const bool &updateMoieties)
CProcessReport * mpCallBack
void processStart(const bool &useInitialValues)
virtual bool setMethodType(const int &type)
void allocate(const size_t &steps)
const CMathModel * getMathModel() const
virtual void output(const COutputInterface::Activity &activity)
void setCurrentState(CState *currentState)
virtual size_t getIndex(const std::string &name) const
const CCopasiMethod::SubType & getSubType() const
virtual bool process(const bool &useInitialValues)
void applyInitialValues()
virtual bool progressItem(const size_t &handle)
bool getFlagLimitConvergence() const
virtual bool isValidProblem(const CCopasiProblem *pProblem)
C_FLOAT64 * endIndependent()
CCopasiProblem * mpProblem
const CVector< C_INT > & getRoots() const
virtual void addInterface(COutputInterface *pInterface)
void eventCallBack(CEvent::Type type)
#define MCTrajectoryMethod
const C_FLOAT64 * mpCurrentTime
void setState(const CState &state)
size_t addItem(const std::string &name, const std::string &value, const std::string *pEndValue=NULL)
const C_FLOAT64 & getDuration() const
void setEventCallBack(void *pTask, EventCallBack ecb)
void processRoots(const C_FLOAT64 &time, const bool &equality, const bool &correct, const CVector< C_INT > &roots)
bool setTriggerExpression(const std::string &expression)
CCrossSectionTask(const CCopasiContainer *pParent=NULL)
const Value & getValue() const
std::vector< CState > mStatesRing
const C_FLOAT64 & getThreshold() const
bool isPositiveDirection() const
virtual void start(const CState *initialState)
virtual bool finishItem(const size_t &handle)
virtual CCopasiMethod * createMethod(const int &type) const
CCopasiParameter * getParameter(const std::string &name)
size_t mOutputStartNumCrossings
const unsigned C_INT32 & getCrossingsLimit() const
CTrajectoryMethod * mpTrajectoryMethod
bool processQueue(const C_FLOAT64 &time, const bool &equality, CProcessQueue::resolveSimultaneousAssignments pResolveSimultaneousAssignments)
static CTrajectoryMethod * createMethod(CCopasiMethod::SubType subType=CCopasiMethod::deterministic)
const unsigned C_INT32 & getOutCrossingsLimit() const
bool mTimeSeriesRequested
const C_FLOAT64 & getTime() const
const C_FLOAT64 & getOutputStartTime() const
bool getFlagLimitOutCrossings() const
bool compileIfNecessary(CProcessReport *pProcessReport)
C_FLOAT64 mOutputStartTime
static void EventCallBack(void *pCSTask, CEvent::Type type)
void setType(const Type &type)
static bool isValidMethod(const unsigned int &method, const unsigned int *validMethods)
bool processStep(const C_FLOAT64 &nextTime)
virtual bool add(CCopasiObject *pObject, const bool &adopt=true)
const C_FLOAT64 & getProcessQueueExecutionTime() const
bool updateInitialValues()
bool getFlagLimitOutConvergence() const
virtual bool initialize(const OutputFlag &of, COutputHandler *pOutputHandler, std::ostream *pOstream)
Header file of class CEvent.
const CState & getState() const
const CProcessQueue & getProcessQueue() const
C_FLOAT64 mProgressFactor
virtual Status step(const double &deltaT)
const CTimeSeries & getTimeSeries() const
CCopasiObject * addObjectReference(const std::string &name, CType &reference, const unsigned C_INT32 &flag=0)
CCrossSectionProblem * mpCrossSectionProblem
CModel * getModel() const
static C_FLOAT64 relativeDifferenceOfStates(CState *s1, CState *s2)
static const unsigned int ValidMethods[]
C_FLOAT64 * beginIndependent()
bool removeEvent(const size_t index, const bool &recursive=true)