38 #define XXXX_Reporting
47 mEigenValues(
"Eigenvalues of Jacobian", this),
48 mEigenValuesX(
"Eigenvalues of reduced system Jacobian", this)
61 mpSteadyState(src.mpSteadyState),
62 mJacobian(src.mJacobian),
63 mJacobianX(src.mJacobianX),
66 mEigenValues(src.mEigenValues, this),
67 mEigenValuesX(src.mEigenValuesX, this)
182 const size_t * pUserOrderEnd = pUserOrder + stateTemplate.
getUserOrder().
size();
186 size_t i, imax = size;
188 for (i = 0; i < imax && pUserOrder != pUserOrderEnd; pUserOrder++)
207 for (i = 0; i < imax; ++i, ++ppEntities)
222 std::ostream * pOstream)
253 const size_t * pUserOrderEnd = pUserOrder + StateTemplate.
getUserOrder().
size();
257 size_t i, imax = size;
259 for (i = 0; i < imax && pUserOrder != pUserOrderEnd; pUserOrder++)
278 for (i = 0; i < imax; ++i, ++ppEntities)
303 if (useInitialValues)
369 std::cout <<
"vectorEigen_R.size() = " << vectorEigen_R.
size() <<
" + vectorEigen_I.size() = " << vectorEigen_I.
size() <<
" == " << size << std::endl;
372 assert(vectorEigen_R.
size() == vectorEigen_I.
size());
376 for (i = 0; i < vectorEigen_R.
size(); ++i)
378 *pTo = vectorEigen_R[i]; ++pTo;
379 *pTo = vectorEigen_I[i]; ++pTo;
393 std::cout <<
"vectorEigenX_R.size() = " << vectorEigenX_R.
size() <<
" + vectorEigenX_I.size() = " << vectorEigenX_I.
size() <<
" == " << sizeX << std::endl;
397 assert(vectorEigenX_R.
size() == vectorEigenX_I.
size());
401 for (i = 0; i < vectorEigenX_R.
size(); ++i)
403 *pTo = vectorEigenX_R[i]; ++pTo;
404 *pTo = vectorEigenX_I[i]; ++pTo;
444 os <<
"A steady state with given resolution was found." << std::endl;
448 os <<
"No steady state with given resolution was found!" << std::endl;
449 os <<
"(below are the last unsuccessful trial values)" << std::endl;
453 os <<
"An equilibrium steady state (zero fluxes) was found." << std::endl;
457 os <<
"An invalid steady state (negative concentrations) was found." << std::endl;
465 if (!pState)
return os;
469 if (!pModel)
return os;
479 size_t i, imax = Metabolites.
size();
481 os <<
"Species" <<
"\t";
482 os <<
"Concentration";
487 os <<
" (" << Units <<
")";
491 os <<
"Concentration Rate";
495 os <<
" (" << Units <<
")";
499 os <<
"Particle Number" <<
"\t";
501 os <<
"Particle Number Rate";
505 os <<
" (" << Units <<
")";
509 os <<
"Transition Time";
513 os <<
" (" << Units <<
")";
517 for (i = 0; i < imax; ++i)
519 pMetab = Metabolites[i];
524 os << pMetab->
getRate() <<
"\t";
534 imax = Reactions.
size();
536 os <<
"Reaction" <<
"\t";
542 os <<
" (" << Units <<
")";
546 os <<
"Particle Flux";
550 os <<
" (" << Units <<
")";
554 for (i = 0; i < imax; ++i)
556 pReaction = Reactions[i];
558 os << pReaction->
getFlux() <<
"\t";
564 if (static_cast<CSteadyStateProblem *>(A.
mpProblem)->isJacobianRequested())
568 if (static_cast<CSteadyStateProblem *>(A.
mpProblem)->isStabilityAnalysisRequested())
570 os <<
"Eigenvalues\treal\timaginary" << std::endl;
573 for (i = 0; i < imax; i++)
581 if (static_cast<CSteadyStateProblem *>(A.
mpProblem)->isStabilityAnalysisRequested())
583 os <<
"Eigenvalues\treal\timaginary" << std::endl;
586 for (i = 0; i < imax; i++)
593 if (static_cast<CSteadyStateProblem *>(A.
mpProblem)->isStabilityAnalysisRequested())
595 os <<
"Stability Analysis of the Reduced System" << std::endl;
CSteadyStateMethod::ReturnCode mResult
const CSteadyStateMethod::ReturnCode & getResult() const
const CArrayAnnotation * getJacobianAnnotated() const
void calcEigenValues(const CMatrix< C_FLOAT64 > &matrix)
virtual bool process(const bool &useInitialValues)
std::string getTimeUnitsDisplayString() const
const C_FLOAT64 & getParticleFlux() const
const C_FLOAT64 & getRate() const
virtual CCopasiObjectName getCN() const
const CCopasiVector< CMetab > & getMetabolites() const
std::string getConcentrationRateUnitsDisplayString() const
const std::string & getObjectName() const
size_t getNumIndependent() const
std::string getFrequencyUnitsDisplayString() const
virtual size_t size() const
virtual bool initialize(const OutputFlag &of, COutputHandler *pOutputHandler, std::ostream *pOstream)
void updateNonSimulatedValues(void)
virtual CCopasiMethod * createMethod(const int &type) const
void setInitialState(const CState &state)
void updateSimulatedValues(const bool &updateMoieties)
CProcessReport * mpCallBack
std::string getQuantityRateUnitsDisplayString() const
void setAnnotationCN(size_t d, size_t i, const std::string cn)
CMatrix< C_FLOAT64 > mJacobianX
bool isStabilityAnalysisRequested() const
virtual void output(const COutputInterface::Activity &activity)
const CState * getState() const
void setDescription(const std::string &s)
CArrayAnnotation * mpJacobianAnn
const CCopasiMethod::SubType & getSubType() const
const CArrayAnnotation * getJacobianXAnnotated() const
const C_FLOAT64 & getFlux() const
void applyInitialValues()
const CVector< C_FLOAT64 > & getI() const
const CEigen & getEigenValues() const
void setTime(const C_FLOAT64 &time)
virtual bool isValidProblem(const CCopasiProblem *pProblem)
virtual bool initialize()
bool mCalculateReducedSystem
CCopasiProblem * mpProblem
CArrayAnnotation * mpJacobianXAnn
size_t getNumDependent() const
size_t getNumDependentReactionMetabs() const
void setState(const CState &state)
std::ostream & operator<<(std::ostream &os, const CSteadyStateTask &A)
virtual ~CSteadyStateTask()
virtual bool updateMatrices()
CSteadyStateTask(const CCopasiContainer *pParent=NULL)
void stabilityAnalysis(const C_FLOAT64 &resolution)
size_t getNumIndependent() const
const CMatrix< C_FLOAT64 > & getJacobianReduced() const
CModelEntity ** beginIndependent()
virtual bool initialize(const CSteadyStateProblem *pProblem)
const CVector< C_FLOAT64 > & getR() const
virtual void resize(size_t rows, size_t cols, const bool ©=false)
static CSteadyStateMethod * createMethod(CCopasiMethod::SubType subType=CCopasiMethod::Newton)
void setMode(size_t d, Mode m)
std::string getConcentrationUnitsDisplayString() const
void setDimensionDescription(size_t d, const std::string &s)
const C_FLOAT64 & getValue() const
const C_FLOAT64 & getTime() const
const CEigen & getEigenValuesReduced() const
size_t getNumDependent() const
const CState & getInitialState() const
virtual bool initialize(const OutputFlag &of, COutputHandler *pOutputHandler, std::ostream *pOstream)
const CStateTemplate & getStateTemplate() const
virtual size_t size() const
CCopasiVectorNS< CReaction > & getReactions()
CSteadyStateMethod::ReturnCode process(CState *pState, CMatrix< C_FLOAT64 > &jacobianX, CProcessReport *handler)
virtual bool add(CCopasiObject *pObject, const bool &adopt=true)
bool updateInitialValues()
C_FLOAT64 getStabilityResolution()
void doJacobian(CMatrix< C_FLOAT64 > &jacobian, CMatrix< C_FLOAT64 > &jacobianX)
C_INT32 getVariable(const std::string &name, const std::string &type, void *pout, CReadConfig::Mode mode=CReadConfig::NEXT)
bool isJacobianRequested() const
const CState & getState() const
const CModelEntity::Status & getStatus() const
CMatrix< C_FLOAT64 > mEigenvaluesXMatrix
const CVector< size_t > & getUserOrder() const
void load(CReadConfig &configBuffer)
const CMatrix< C_FLOAT64 > & getJacobian() const
CMatrix< C_FLOAT64 > mJacobian
CArrayAnnotation * mpEigenvaluesJacobianXAnn
CModel * getModel() const
virtual void print(std::ostream *ostream) const
CModelEntity ** getEntities()
CMatrix< C_FLOAT64 > mEigenvaluesMatrix
CArrayAnnotation * mpEigenvaluesJacobianAnn