returnValue DynamicDiscretization::deleteAllSeeds(){ BlockMatrix empty; setBackwardSeed( empty ); setForwardSeed( empty, empty, empty, empty ); return SUCCESSFUL_RETURN; }
returnValue DynamicDiscretization::setUnitBackwardSeed(){ BlockMatrix seed( 1, N ); int run1; for( run1 = 0; run1 < N; run1++ ) seed.setIdentity( 0, run1, nx ); return setBackwardSeed( seed ); }
returnValue Integrator::integrateSensitivities( ){ uint run1; returnValue returnvalue; if( ( nBDirs > 0 || nBDirs2 > 0 ) && transition != 0 ){ int order; if( nBDirs2 > 0 ) order = 2; else order = 1; returnvalue = diffTransitionBackward( dXb, dPb, dUb, dWb, order ); setBackwardSeed( order, dXb ); if( returnvalue != SUCCESSFUL_RETURN ) return ACADOERROR(returnvalue); } returnvalue = evaluateSensitivities(); if( returnvalue != SUCCESSFUL_RETURN ) return ACADOERROR(returnvalue); if( nBDirs > 0 || nBDirs2 > 0 ) return SUCCESSFUL_RETURN; int order = 1; if( nFDirs2 > 0 ) order = 2; Matrix tmp( rhs->getDim(), 1 ); returnvalue = getProtectedForwardSensitivities(&tmp,order); Vector components = rhs->getDifferentialStateComponents(); dX.init(rhs->getDim()-ma); dX.setZero(); for( run1 = 0; run1 < components.getDim(); run1++ ) dX((int) components(run1)) = tmp(run1,0); if( returnvalue != SUCCESSFUL_RETURN ) return ACADOERROR(returnvalue); if( transition != 0 ) returnvalue = diffTransitionForward( dX, dP, dU, dW, order ); return returnvalue; }
returnValue Objective::setUnitBackwardSeed( ){ BlockMatrix seed(1,1); seed.setIdentity(0,0,1); return setBackwardSeed(&seed,1); }