Reac::Reac(string const & id, Volsys * volsys, vector<Spec *> const & lhs, vector<Spec *> const & rhs, double kcst) : pID(id) , pModel(0) , pVolsys(volsys) , pLHS() , pRHS() , pOrder(0) , pKcst(kcst) { if (pVolsys == 0) { ostringstream os; os << "No volsys provided to Reac initializer function"; throw steps::ArgErr(os.str()); } if (pKcst < 0.0) { ostringstream os; os << "Reaction constant can't be negative"; throw steps::ArgErr(os.str()); } pModel = pVolsys->getModel(); assert (pModel != 0); setLHS(lhs); setRHS(rhs); pVolsys->_handleReacAdd(this); }
std::pair<unsigned int, real_type> SolverLinearTrilinos<T>::solve ( MatrixSparse<T> const& matrix, Vector<T> & solution, Vector<T> const& rhs, const double tol, const unsigned int m_its ) { DVLOG(2) << "Matrix solver...\n"; setRHS( rhs ); setLHS( solution ); setUserOperator( matrix ); M_Solver.SetParameters( M_List, true ); M_Solver.Iterate( m_its, tol ); return std::make_pair( M_Solver.NumIters(), M_Solver.TrueResidual() ); }