This provides deformed geometry and force details for one element of a contact patch that may be composed of many elements. More...
#include <CompliantContactSubsystem.h>
Public Attributes | |
int | m_whichSurface |
int | m_elementId |
Transform | m_patchFrame |
Vec2 | m_patchHalfDimensions |
Vec3 | m_deformation |
Vec3 | m_deformationRate |
SpatialVec | m_slipVelocity |
SpatialVec | m_forceOnSurface2InP |
Real | m_patchArea |
Real | m_peakPressure |
Real | m_potentialEnergy |
Real | m_powerLoss |
This provides deformed geometry and force details for one element of a contact patch that may be composed of many elements.
Depending on the contact model, the element or elements may be associated with the patch itself, or the elements may be associated with the contacting surfaces. However, in all cases 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. We do make note of which element we're reporting for here in case this information is of use to the caller, but in most cases it can be ignored.
We return a "patch frame" P for the element with this meaning:
The patch frame P is reported in ground, via a Transform X_GP, however of more relevance are two frames P1 and P2 which are fixed to surface1's and surface2's rigid bodies, resp., and instantaneously coincident with P. These would be located on their bodies via X_B1P1 and X_B2P2, although we don't report those here (you can easily calculate them). 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 itself is defined by giving its half dimensions along P's x and y axes; it is assumed symmetric about the origin. These dimensions are not necessarily meaningful, depending on the particulars of the contact model in use. The patch area is provided separately and its significance also depends on the model.
Elastic deformation of the element is reported as a vector r in P. The -z component is the normal compression of the element (that is, it will be a negative number), x,y gives the tangential deformation (often zero but can be either sign). The vector -r thus gives the original (undeformed) location of the material point now at OP. Note that we do not attempt to report angular deformation of the element.
Elastic deformation rate rdot=d/dt r (with the derivative taken in P) is also provided. This is the rate that the material point currently at OP is moving with respect to frame P, if you think of P as being instantaneously fixed with respect to the element's rigid body. That is, we are not including the fact that the contact point OP and frame P 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.
Slip velocity is the spatial velocity (that is, angular and linear) of this element's material in the patch with respect to the other surface's corresponding material, measured at OP and expressed in P. The linear z component is zero unless the surfaces are separating in which case it will be positive. Linear x,y is the slip vector which is the relative x-y motion of P1 and P2 minus the deformation rates of the two surfaces so that it represents actual material-over-material slippage. The angular z component is the "spin" rate about the normal with angular x,y representing the "roll" rate.
Contact force is the spatial force (that is, moment and linear force) being applied to this surface at the contact point OP, expressed in P. The linear z component is the normal force due to elasticity and dissipation, and will be negative as long as the surfaces aren't sticking. The (x,y) components are the tangential force due to friction and to tangential elasticity and dissipation, if any. The z component of the moment, if any, is the torsional friction and the (x,y) moment is the rolling resistance.
Peak pressure is a scalar providing the worst-case pressure present somewhere in the patch, if the model can provide that. Otherwise it should just be the normal force divided by the patch area to give the average pressure across the patch.
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.
int m_elementId |
Real m_patchArea |
Real m_peakPressure |
Real m_potentialEnergy |
Real m_powerLoss |
int m_whichSurface |