returnValue Integrator::setForwardSeed( const int &order, const DVector &xSeed, const DVector &pSeed, const DVector &uSeed, const DVector &wSeed ){ int run1; if( rhs == 0 ) return ACADOERROR( RET_TRIVIAL_RHS ); DVector tmpX; DVector components = rhs->getDifferentialStateComponents(); dP = pSeed; dU = uSeed; dW = wSeed; if( xSeed.getDim() != 0 ){ tmpX.init( components.getDim() ); for( run1 = 0; run1 < (int) components.getDim(); run1++ ) tmpX(run1) = xSeed((int) components(run1)); } return setProtectedForwardSeed( tmpX, pSeed, uSeed, wSeed, order ); }
returnValue Integrator::integrate( const Grid &t_ , const DVector &x0 , const DVector &xa , const DVector &p , const DVector &u , const DVector &w ){ int run1; returnValue returnvalue; if( rhs == 0 ) return ACADOERROR( RET_TRIVIAL_RHS ); DVector tmpX; DVector components = rhs->getDifferentialStateComponents(); const int N = components.getDim(); if( x0.getDim() != 0 ){ tmpX.init( components.getDim() ); for( run1 = 0; run1 < (int) components.getDim(); run1++ ) tmpX(run1) = x0((int) components(run1)); } // tmpX.print( "integrator x0" ); // u.print( "integrator u0" ); // p.print( "integrator p0" ); returnvalue = evaluate( tmpX, xa, p, u, w, t_ ); if( returnvalue != SUCCESSFUL_RETURN ) return returnvalue; xE.init(rhs->getDim()); xE.setZero(); DVector tmp(rhs->getDim()); getProtectedX(&tmp); for( run1 = 0; run1 < N; run1++ ) xE((int) components(run1)) = tmp(run1); for( run1 = N; run1 < N + ma; run1++ ) xE(run1) = tmp(run1); if( transition != 0 ) returnvalue = evaluateTransition( t_.getLastTime(), xE, xa, p, u, w ); return returnvalue; }