void visit(const NewtonImpactFrictionNSL& nslaw) { double e; e = nslaw.en(); // Only the normal part is multiplied by e SP::SiconosVector y_k_1 ; y_k_1 = _inter->yMemory(_osnsp->inputOutputLevel())->getSiconosVector(1); (*_inter->yForNSsolver())(0) += e * (*y_k_1)(0); }
void visit(const NewtonImpactFrictionNSL& nslaw) { double e; e = nslaw.en(); // Only the normal part is multiplied by e const SiconosVector& y_k_1( _inter->yMemory(_osnsp->inputOutputLevel()).getSiconosVector(1)); SiconosVector & osnsp_rhs = *(*_interProp.workVectors)[SchatzmanPaoliOSI::OSNSP_RHS]; osnsp_rhs (0) += e * (y_k_1)(0); }
void visit(const NewtonImpactNSL& nslaw) { double e; e = nslaw.e(); Index subCoord(4); subCoord[0] = 0; subCoord[1] = _inter->nonSmoothLaw()->size(); subCoord[2] = 0; subCoord[3] = subCoord[1]; // Only the normal part is multiplied by e SP::SiconosVector y_k_1 ; y_k_1 = _inter->yMemory(_osnsp->inputOutputLevel())->getSiconosVector(1); // std::cout << "y_k_1 " << std::endl; // y_k_1->display(); subscal(e, *y_k_1, *(_inter->yForNSsolver()), subCoord, false); }
void visit(const NewtonImpactNSL& nslaw) { double e; e = nslaw.e(); Index subCoord(4); subCoord[0] = 0; subCoord[1] = _inter->nonSmoothLaw()->size(); subCoord[2] = 0; subCoord[3] = subCoord[1]; // Only the normal part is multiplied by e const SiconosVector& y_k_1( _inter->yMemory(_osnsp->inputOutputLevel()).getSiconosVector(1)); DEBUG_PRINTF("_osnsp->inputOutputLevel() = %i \n ",_osnsp->inputOutputLevel() ); DEBUG_EXPR(y_k_1.display());; SiconosVector & osnsp_rhs = *(*_interProp.workVectors)[SchatzmanPaoliOSI::OSNSP_RHS]; subscal(e, y_k_1, osnsp_rhs, subCoord, false); }