Simbody  3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
SimTK::PLUSImpulseSolver Class Reference

TODO: PLUS (Poisson-Lankarani-Uchida-Sherman) impulse solver. More...

+ Inheritance diagram for SimTK::PLUSImpulseSolver:

Public Member Functions

 PLUSImpulseSolver (Real roll2slipTransitionSpeed)
 
bool solve (int phase, const Array_< MultiplierIndex > &participating, const Matrix &A, const Vector &D, const Array_< MultiplierIndex > &expanding, Vector &piExpand, Vector &verrStart, Vector &verrApplied, Vector &pi, Array_< UncondRT > &unconditional, Array_< UniContactRT > &uniContact, Array_< UniSpeedRT > &uniSpeed, Array_< BoundedRT > &bounded, Array_< ConstraintLtdFrictionRT > &consLtdFriction, Array_< StateLtdFrictionRT > &stateLtdFriction) const override
 Solve with conditional constraints. More...
 
bool solveBilateral (const Array_< MultiplierIndex > &participating, const Matrix &A, const Vector &D, const Vector &rhs, Vector &pi) const override
 Solve with only unconditional constraints. More...
 
 SimTK_DEFINE_UNIQUE_LOCAL_INDEX_TYPE (PLUSImpulseSolver, ActiveIndex)
 
- Public Member Functions inherited from SimTK::ImpulseSolver
 ImpulseSolver (Real roll2slipTransitionSpeed, Real convergenceTol, int maxIters)
 
virtual ~ImpulseSolver ()
 
void setMaxRollingSpeed (Real roll2slipTransitionSpeed)
 
Real getMaxRollingSpeed () const
 
void setConvergenceTol (Real tol)
 
Real getConvergenceTol () const
 
void setMaxIterations (int maxIts)
 
int getMaxIterations () const
 
void clearStats () const
 
void clearStats (int phase) const
 

Additional Inherited Members

- Public Types inherited from SimTK::ImpulseSolver
enum  ContactType {
  TypeNA =-1,
  Observing =0,
  Known =1,
  Participating =2
}
 
enum  UniCond {
  UniNA =-1,
  UniOff =0,
  UniActive =1,
  UniKnown =2
}
 
enum  FricCond {
  FricNA =-1,
  FricOff =0,
  Sliding =1,
  Impending =2,
  Rolling =3
}
 
enum  BndCond {
  BndNA =-1,
  SlipLow =0,
  ImpendLow =1,
  Engaged =2,
  ImpendHigh =3,
  SlipHigh =4
}
 
- Static Public Member Functions inherited from SimTK::ImpulseSolver
static const char * getContactTypeName (ContactType ct)
 
static const char * getUniCondName (UniCond uc)
 
static const char * getFricCondName (FricCond fc)
 
static const char * getBndCondName (BndCond bc)
 
static void dumpUniContacts (const String &msg, const Array_< UniContactRT > &uniContacts)
 
- Static Public Attributes inherited from SimTK::ImpulseSolver
static const int MaxNumPhases = 3
 
- Protected Attributes inherited from SimTK::ImpulseSolver
Real m_maxRollingTangVel
 
Real m_convergenceTol
 
int m_maxIters
 
long long m_nSolves [MaxNumPhases]
 
long long m_nIters [MaxNumPhases]
 
long long m_nFail [MaxNumPhases]
 
long long m_nBilateralSolves
 
long long m_nBilateralIters
 
long long m_nBilateralFail
 

Detailed Description

TODO: PLUS (Poisson-Lankarani-Uchida-Sherman) impulse solver.

Constructor & Destructor Documentation

SimTK::PLUSImpulseSolver::PLUSImpulseSolver ( Real  roll2slipTransitionSpeed)
inlineexplicit

Member Function Documentation

bool SimTK::PLUSImpulseSolver::solve ( int  phase,
const Array_< MultiplierIndex > &  participating,
const Matrix A,
const Vector D,
const Array_< MultiplierIndex > &  expanding,
Vector piExpand,
Vector verrStart,
Vector verrApplied,
Vector pi,
Array_< UncondRT > &  unconditional,
Array_< UniContactRT > &  uniContact,
Array_< UniSpeedRT > &  uniSpeed,
Array_< BoundedRT > &  bounded,
Array_< ConstraintLtdFrictionRT > &  consLtdFriction,
Array_< StateLtdFrictionRT > &  stateLtdFriction 
) const
overridevirtual

Solve with conditional constraints.

Implements SimTK::ImpulseSolver.

bool SimTK::PLUSImpulseSolver::solveBilateral ( const Array_< MultiplierIndex > &  participating,
const Matrix A,
const Vector D,
const Vector rhs,
Vector pi 
) const
overridevirtual

Solve with only unconditional constraints.

Implements SimTK::ImpulseSolver.

SimTK::PLUSImpulseSolver::SimTK_DEFINE_UNIQUE_LOCAL_INDEX_TYPE ( PLUSImpulseSolver  ,
ActiveIndex   
)

The documentation for this class was generated from the following file: