In file /home/blah/darwin2k/src/dyno/mechanism/dynoConstraint.h:

class contactConstraint

A unilateral constraint for frictionless contact between a link and a fixed surface.

Inheritance:


Public Methods

[more] contactConstraint(void)
constructor
[more] contactConstraint(link* L, const triple &xlink, const triple &cworld, const triple &n, double tol, part* P = NULL)
constructor.
[more] contactConstraint(link* L, link* L2, const triple &xlink1, const triple &xlink2, const triple &n, double tol, part* P = NULL, part* P2 = NULL)
constructor.
[more]virtual int updateConstants(const triple &xlink, const triple &cworld, const triple &n, double tol)
updates constants used in the constraint equations.


Inherited from uconstraint:


Inherited from constraint:

Public Fields

omechanism* mech
optrList* otherMechs
olinkForceRecord* frec
omatrix Jc
odouble cDotTol
ovector C
ovector Cdot
oint jdirty
oint* _hasPosLimit
odouble* maxForce
odouble* minForce
ovector prevF
oint eindex
oint iindex
oint fdindex
oint inSystem
odouble kp
odouble kv

Public Methods

oinline int index(void) const
ovirtual int correctDrift(int i) const
oinline virtual double computeCorrection(int i, int includeVel)
oinline virtual int hasPosLimit(int i) const
oinline virtual int hasNegLimit(int i) const
oinline virtual int hasForceLimits(void) const
oinline virtual void allocatePosLimits(void)
ovirtual void print(int printVal = 0)
ovirtual int createConstraintEquations(void)
ovirtual int deleteConstraintEquations(void)
ovirtual int setDynamicValues(void)
ovirtual const double* getCoefficients(int whichDof) const
ovirtual int resize(int newSize)
ovirtual int setDirtyFlags(void)
ovirtual int updateFlags(void)
oinline virtual int isBilateral(void) const
oinline virtual int isFrictional(int i) const
ovirtual int eval(int onlyConst = 0)
oinline virtual double computeFStep(vector &a, vector &da, vector &f, vector &df, int i)
oinline virtual double computeAStep(vector &a, vector &da, vector &f, vector &df, int i)
ovirtual int satisfied(const vector &a, const vector &f, int j)
oinline virtual int needsImpulse(int i)
oint computeJacobian(void)
ovirtual int violated(void)
ovirtual int applyToMech(mechanism* m, int subtract = 0)
oint getGeneralizedForce(vector &gf)
ovirtual const linkForceRecord* getForces(void)


Inherited from dynoObject:

Public Fields

odynamicSystem* ds
oint active
oint stateSize

Public Methods

oinline virtual int getState(double* state)
oinline virtual int setState(const double* state)
oinline virtual int reset(void)


Inherited from synObject:

Public Fields

ostatic int staticClassID
oint objectID
oint verboseLevel

Public Methods

ovirtual const char* className(void) const
ovirtual synObject* copy(void) const
ovirtual int isOfType(int typeNum, int derivedOk)
ostatic int setStaticClassID(void)
ovirtual int classID(void) const


Documentation

A unilateral constraint for frictionless contact between a link and a fixed surface. The constraint equations for a frictionless contact are:
  1.  an >= 0       (normal acceleration must be non-negative) 
  2.  fn >= 0       (normal force must be non-negative)
  3.  fn*an >= 0    (normal force and/or normal acceleration must 
 
o contactConstraint(void)
constructor

o contactConstraint(link* L, const triple &xlink, const triple &cworld, const triple &n, double tol, part* P = NULL)
constructor. l is the link acted on by the contact. xlink is the world-space location of contact point on the link and cworld is the world-space location of the contact point on the fixed surface. n is the surface normal at cworld and points outward from the fixed surface. tol is the tolerance on interpenetration for the contact. Ideally xlink and cworld are the same; however, since there is a depth tolerance involved, some interpenetration always occurs. cworld is thus used to compute the amount of constraint violation and corrective acceleration.

o contactConstraint(link* L, link* L2, const triple &xlink1, const triple &xlink2, const triple &n, double tol, part* P = NULL, part* P2 = NULL)
constructor. l is the first link acted on by the contact, l2 is the second. xlink is the world-space location of contact point on link l and xlink2 is the world-space location of the contact point on link l2. n is the surface normal at cworld and points outward from l2 towards l1. tol is the tolerance on interpenetration for the contact. Ideally xlink and xlink2 are the same; however, since there is a depth tolerance involved, some interpenetration always occurs. The difference is used to compute the amount of constraint violation and corrective acceleration.

ovirtual int updateConstants(const triple &xlink, const triple &cworld, const triple &n, double tol)
updates constants used in the constraint equations. This should be called when using persistent contacts to update the constraint for changing conditions. In the case of two-link contact, cworld should be the world-space location of the contact point on the second link.


Direct child classes:
frictionContact

Alphabetic index HTML hierarchy of classes or Java



This page was generated with the help of DOC++.