#include "mtt_Dassl_Solver.hh"
// used by "-ae dassl" NOT "-i dassl"
MTT::Dassl_Solver *MTT::Dassl_Solver::static_ptr;
ColumnVector
MTT::Dassl_Solver::f_dassl (const ColumnVector &tryUi,
const ColumnVector &tryUidot,
double t, int &ires)
{
static MTT::Dassl_Solver *p = MTT::Dassl_Solver::static_ptr;
ColumnVector residual = p->eval(tryUi);
ColumnVector uidoterr = (tryUi - p->_ui) - tryUidot;
p->_yz = residual + uidoterr;
return p->_yz;
}
void
MTT::Dassl_Solver::Solve (void)
{
const double t0 = 0.0;
const double t1 = 1.0;
DAEFunc fcn(&MTT::Dassl_Solver::f_dassl);
DASSL eqn(AlgebraicSolver::_ui,t0,fcn);
AlgebraicSolver::_ui = eqn.do_integrate (t1);
}