void NewtonEulerR::computeOutput(double time, Interaction& inter, unsigned int derivativeNumber) { DEBUG_BEGIN("NewtonEulerR::computeOutput(...)\n"); DEBUG_PRINTF("with time = %f and derivativeNumber = %i starts\n", time, derivativeNumber); VectorOfBlockVectors& DSlink = inter.linkToDSVariables(); SiconosVector& y = *inter.y(derivativeNumber); BlockVector& q = *DSlink[NewtonEulerR::q0]; if (derivativeNumber == 0) { computeh(time, q, y); } else { /* \warning V.A. 15/04/2016 * We decide finally not to update the Jacobian there. To be discussed */ // computeJachq(time, inter, DSlink[NewtonEulerR::q0]); // computeJachqT(inter, DSlink[NewtonEulerR::q0]); if (derivativeNumber == 1) { assert(_jachqT); assert(DSlink[NewtonEulerR::velocity]); DEBUG_EXPR(_jachqT->display();); DEBUG_EXPR((*DSlink[NewtonEulerR::velocity]).display(););
void FirstOrderType1R::computeOutput(double time, Interaction& inter, InteractionProperties& interProp, unsigned int level) { SiconosVector& y = *inter.y(0); // Warning: temporary method to have contiguous values in memory, copy of block to simple. VectorOfBlockVectors& DSlink = *interProp.DSlink; VectorOfVectors& workV = *interProp.workVectors; SiconosVector& workX = *workV[FirstOrderR::vec_x]; workX = *DSlink[FirstOrderR::x]; SiconosVector& workZ = *workV[FirstOrderR::vec_z]; workZ = *DSlink[FirstOrderR::z]; computeh(time, workX, workZ, y); *DSlink[FirstOrderR::z] = workZ; }