bool CSteadyStateTask::initialize(const OutputFlag & of, COutputHandler * pOutputHandler, std::ostream * pOstream) { bool success = true; assert(mpProblem && mpMethod); CSteadyStateProblem* pProblem = dynamic_cast<CSteadyStateProblem *>(mpProblem); assert(pProblem); success &= pProblem->initialize(); CSteadyStateMethod* pMethod = dynamic_cast<CSteadyStateMethod *>(mpMethod); assert(pMethod); success &= pMethod->initialize(pProblem); success &= pMethod->isValidProblem(mpProblem); success &= updateMatrices(); mSteadyState = mpContainer->getState(true); success &= CCopasiTask::initialize(of, pOutputHandler, pOstream); return success; }
bool CSteadyStateTask::initialize(const OutputFlag & of, COutputHandler * pOutputHandler, std::ostream * pOstream) { assert(mpProblem && mpMethod); if (!mpMethod->isValidProblem(mpProblem)) return false; bool success = true; if (!updateMatrices()) return false; success &= CCopasiTask::initialize(of, pOutputHandler, pOstream); pdelete(mpSteadyState); mpSteadyState = new CState(mpProblem->getModel()->getInitialState()); mCalculateReducedSystem = (mpProblem->getModel()->getNumDependentReactionMetabs() != 0); #ifdef xxxx // init Jacobians size_t sizeX = mpSteadyState->getNumIndependent(); mJacobianX.resize(sizeX, sizeX); size_t size = sizeX + mpSteadyState->getNumDependent(); mJacobian.resize(size, size); //jacobian annotations CStateTemplate & StateTemplate = mpProblem->getModel()->getStateTemplate(); mpJacobianAnn->resize(); CModelEntity **ppEntities = StateTemplate.getEntities(); const size_t * pUserOrder = StateTemplate.getUserOrder().array(); const size_t * pUserOrderEnd = pUserOrder + StateTemplate.getUserOrder().size(); pUserOrder++; // We skip the time which is the first. size_t i, imax = size; for (i = 0; i < imax && pUserOrder != pUserOrderEnd; pUserOrder++) { const CModelEntity::Status & Status = ppEntities[*pUserOrder]->getStatus(); if (Status == CModelEntity::ODE || (Status == CModelEntity::REACTIONS && ppEntities[*pUserOrder]->isUsed())) { mpJacobianAnn->setAnnotationCN(0 , i, ppEntities[*pUserOrder]->getCN()); mpJacobianAnn->setAnnotationCN(1 , i, ppEntities[*pUserOrder]->getCN()); i++; } } mpJacobianXAnn->resize(); ppEntities = StateTemplate.beginIndependent(); imax = sizeX; for (i = 0; i < imax; ++i, ++ppEntities) { mpJacobianXAnn->setAnnotationCN(0 , i, (*ppEntities)->getCN()); mpJacobianXAnn->setAnnotationCN(1 , i, (*ppEntities)->getCN()); } #endif CSteadyStateProblem* pProblem = dynamic_cast<CSteadyStateProblem *>(mpProblem); assert(pProblem); success &= pProblem->initialize(); CSteadyStateMethod* pMethod = dynamic_cast<CSteadyStateMethod *>(mpMethod); assert(pMethod); success &= pMethod->initialize(pProblem); return success; }