Simbody  3.7
SimTK::ContactDetail Class Reference

This provides deformed geometry and force details for one element of a contact patch that may be composed of many elements. More...

Public Member Functions

const Vec3getContactPoint () const
 This is the point at which this contact element applies equal and opposite forces to the two bodies. More...
 
const UnitVec3getContactNormal () const
 This is the normal direction for this contact element, pointing away from body 1's exterior and towards body 2's interior, that is, in the direction of the normal force applied to body 2 by body1. More...
 
const Vec3getSlipVelocity () const
 Get the relative slip velocity between the bodies at the contact point, as body 2's velocity in body 1. More...
 
const Vec3getForceOnSurface2 () const
 Get the total force applied to body 2 at the contact point by this contact element; negate this to find the force on body 1 at the same point. More...
 
Real getDeformation () const
 Get the total normal material deformation at the contact point; this is the sum of the deformations of the two surfaces there. More...
 
Real getDeformationRate () const
 Get the instantaneous rate at which the material at the contact point is deforming; this is the material derivative of the deformation and does not reflect that fact that the contact point itself is changing with time. More...
 
Real getPatchArea () const
 This is the surface area represented by this contact element. More...
 
Real getPeakPressure () const
 This is the peak pressure on this element; typically it is just the normal force divided by the patch area since most contact models assume constant force across a contact element's patch. More...
 
Real getPotentialEnergy () const
 Get the amount of potential energy currently stored in the deformation of this contact element. More...
 
Real getPowerDissipation () const
 Get the energy dissipation rate (power loss) due to the deformation rate and friction losses for this element (this is a signed value with positive indicating dissipation). More...
 
void changeFrameInPlace (const Transform &X_BA)
 This object is currently in an assumed frame A; given a transform from another frame B to A we'll re-measure and re-express this in B. More...
 
void changeFrameAndSwitchSurfacesInPlace (const Transform &X_BA)
 Assuming that this object is currently reporting surface 2 information in frame A, here we want to both change the frame to B and swap which surface is to be considered as surface 2. More...
 

Public Attributes

Vec3 m_contactPt
 
UnitVec3 m_patchNormal
 
Vec3 m_slipVelocity
 
Vec3 m_forceOnSurface2
 
Real m_deformation
 
Real m_deformationRate
 
Real m_patchArea
 
Real m_peakPressure
 
Real m_potentialEnergy
 
Real m_powerLoss
 

Detailed Description

This provides deformed geometry and force details for one element of a contact patch that may be composed of many elements.

Every element generates equal and opposite forces on both surfaces so we can use a consistent patch-centered convention for reporting details regardless of the original source of the element.

Deformed patch geometry

Vector results are expressed in Ground. We return

  • the contact point C where equal and opposite forces are applied to material points of the two surfaces.
  • the contact normal direction n pointing away from surface1's exterior and towards surface2's interior
  • the slip velocity v of surface 2 relative to surface 1, measured at C and in the plane perpendicular to n
  • the force applied to body 2 by body 1; that is, its normal component is in direction n and its tangential component opposes velocity v

It is important to note that we are interested in the motion (deformations) of material points here, not the motion of the contact point which is a non-material concept and thus not directly involved in producing forces. The patch area is provided separately and its significance also depends on the model.

Elasticity and dissipation

We report the combined deformation (>= 0) of the two surfaces at C, along the normal n. We do not attempt to report angular deformation of the element. Elastic deformation rate is also provided. This is the rate that the material points currently at C are compressing or relaxing along the normal. That is, we are not including the fact that the contact point C may be moving along the surfaces, we just report what is happening to the material in its own frame. Note that we do not attempt to report angular deformation rate.

Slipping and friction

Slip velocity measures the relative velocity of the body stations that are instantaneously coincident with C. This will be in the plane for which n is the normal, but it is expressed in Ground so is a 3d vector.

Force and pressure

Contact force is the force being applied to surface 2 by surface 1 at the contact point C. This includes the normal force due to elasticity and dissipation, and the tangential force due to friction and to tangential elasticity and dissipation, if any.

Peak pressure is a scalar providing the worst-case pressure present somewhere in the patch, if the model can provide that. Otherwise it will be the normal force divided by the patch area to give the average pressure across the patch.

Energy and power

Potential energy is the amount of energy currently stored in the elastic deformation of this element. Summing this over all the contact detail elements should yield the same value as is reported as the resultant potential energy for this contact.

Power loss is the rate at which energy is being lost due to dissipation and to friction, but not due to elastic deformation because that is contributing to potential energy and we expect to get it back. Summing this over all the contact detail elements should yield the same value as is reported as the resultant power loss for this contact.

Member Function Documentation

◆ getContactPoint()

const Vec3& SimTK::ContactDetail::getContactPoint ( ) const
inline

This is the point at which this contact element applies equal and opposite forces to the two bodies.

◆ getContactNormal()

const UnitVec3& SimTK::ContactDetail::getContactNormal ( ) const
inline

This is the normal direction for this contact element, pointing away from body 1's exterior and towards body 2's interior, that is, in the direction of the normal force applied to body 2 by body1.

◆ getSlipVelocity()

const Vec3& SimTK::ContactDetail::getSlipVelocity ( ) const
inline

Get the relative slip velocity between the bodies at the contact point, as body 2's velocity in body 1.

This is a vector in the contact plane, that is, it is perpendicular to the contact normal.

◆ getForceOnSurface2()

const Vec3& SimTK::ContactDetail::getForceOnSurface2 ( ) const
inline

Get the total force applied to body 2 at the contact point by this contact element; negate this to find the force on body 1 at the same point.

◆ getDeformation()

Real SimTK::ContactDetail::getDeformation ( ) const
inline

Get the total normal material deformation at the contact point; this is the sum of the deformations of the two surfaces there.

This is sometimes called the "approach" of the two bodies and represents the amount of overlap of the undeformed surfaces at this point; that is, they have to deform this much in order not to overlap.

◆ getDeformationRate()

Real SimTK::ContactDetail::getDeformationRate ( ) const
inline

Get the instantaneous rate at which the material at the contact point is deforming; this is the material derivative of the deformation and does not reflect that fact that the contact point itself is changing with time.

Energy dissipation in the material depends on the rate at which the material is deforming, it does not depend on contact point changes.

◆ getPatchArea()

Real SimTK::ContactDetail::getPatchArea ( ) const
inline

This is the surface area represented by this contact element.

◆ getPeakPressure()

Real SimTK::ContactDetail::getPeakPressure ( ) const
inline

This is the peak pressure on this element; typically it is just the normal force divided by the patch area since most contact models assume constant force across a contact element's patch.

◆ getPotentialEnergy()

Real SimTK::ContactDetail::getPotentialEnergy ( ) const
inline

Get the amount of potential energy currently stored in the deformation of this contact element.

◆ getPowerDissipation()

Real SimTK::ContactDetail::getPowerDissipation ( ) const
inline

Get the energy dissipation rate (power loss) due to the deformation rate and friction losses for this element (this is a signed value with positive indicating dissipation).

◆ changeFrameInPlace()

void SimTK::ContactDetail::changeFrameInPlace ( const Transform X_BA)
inline

This object is currently in an assumed frame A; given a transform from another frame B to A we'll re-measure and re-express this in B.

Cost is 63 flops.

◆ changeFrameAndSwitchSurfacesInPlace()

void SimTK::ContactDetail::changeFrameAndSwitchSurfacesInPlace ( const Transform X_BA)
inline

Assuming that this object is currently reporting surface 2 information in frame A, here we want to both change the frame to B and swap which surface is to be considered as surface 2.

Cost is 72 flops.

Member Data Documentation

◆ m_contactPt

Vec3 SimTK::ContactDetail::m_contactPt

◆ m_patchNormal

UnitVec3 SimTK::ContactDetail::m_patchNormal

◆ m_slipVelocity

Vec3 SimTK::ContactDetail::m_slipVelocity

◆ m_forceOnSurface2

Vec3 SimTK::ContactDetail::m_forceOnSurface2

◆ m_deformation

Real SimTK::ContactDetail::m_deformation

◆ m_deformationRate

Real SimTK::ContactDetail::m_deformationRate

◆ m_patchArea

Real SimTK::ContactDetail::m_patchArea

◆ m_peakPressure

Real SimTK::ContactDetail::m_peakPressure

◆ m_potentialEnergy

Real SimTK::ContactDetail::m_potentialEnergy

◆ m_powerLoss

Real SimTK::ContactDetail::m_powerLoss

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