Simbody
3.5
|
This class combines a piece of ContactGeometry with a ContactMaterial to make an object suitable for attaching to a body which can then engage in contact behavior with other contact surfaces. More...
Public Member Functions | |
ContactSurface () | |
Create an empty ContactSurface. More... | |
ContactSurface (const ContactGeometry &shape, const ContactMaterial &material, Real thickness=0) | |
Create a ContactSurface with a given shape and material. More... | |
ContactSurface & | setShape (const ContactGeometry &shape) |
Define a new shape for this ContactSurface. More... | |
ContactSurface & | setMaterial (const ContactMaterial &material, Real thickness=0) |
Define a new material for this ContactSurface, optionally providing the thickness of this elastic material layer over a rigid substrate. More... | |
ContactSurface & | setThickness (Real thickness) |
Set the thickness of the layer of elastic material coating this contact surface. More... | |
const ContactGeometry & | getShape () const |
Get read-only access to the shape of this contact surface. More... | |
const ContactMaterial & | getMaterial () const |
Get read-only access to the material of this contact surface. More... | |
Real | getThickness () const |
Get the thickness of the elastic material layer on this contact surface, with zero indicating that the thickness has not been set. More... | |
ContactGeometry & | updShape () |
Get writable access to the shape of this contact surface. More... | |
ContactMaterial & | updMaterial () |
Get writable access to the material of this contact surface. More... | |
ContactSurface & | joinClique (ContactCliqueId clique) |
Join a contact clique if not already a member. More... | |
void | leaveClique (ContactCliqueId clique) |
Remove this surface from a contact clique if it is a member. More... | |
bool | isInSameClique (const ContactSurface &other) const |
Determine whether this contact surface is a member of any of the same cliques as some other contact surface, in which case they will be invisible to one another. More... | |
const Array_< ContactCliqueId, short > & | getCliques () const |
Return a reference to the list of CliqueIds of the cliques in which this contact surface is a member; the list is always sorted in ascending order. More... | |
Static Public Member Functions | |
static bool | cliquesIntersect (const Array_< ContactCliqueId, short > &a, const Array_< ContactCliqueId, short > &b) |
Return true if there are any common cliques on two clique lists which must each be sorted in ascending order. More... | |
static ContactCliqueId | createNewContactClique () |
Create a new contact clique and return its unique integer id (thread safe). More... | |
This class combines a piece of ContactGeometry with a ContactMaterial to make an object suitable for attaching to a body which can then engage in contact behavior with other contact surfaces.
The ContactMaterial may be considered as uniform throughout a large solid volume or as a thin layer of uniform material thickness h on top of a rigid substrate. Compliant contact models vary in how they deal with the thickness h: Hertz ignores it, Elastic Foundation uses it to define unit strain.
Typically any contact surface can bump into any other contact surface. However, some groups of surfaces can or should never interact; those groups are called "contact cliques". The set of surfaces that are mounted to the same rigid body always constitues a clique. In addition, other cliques may be defined and arbitrary surfaces made members so that they won't interact. This is commonly used for contact surfaces on adjacent bodies when those surfaces are near the joint between two bodies.
|
inline |
Create an empty ContactSurface.
|
inline |
Create a ContactSurface with a given shape and material.
|
inline |
Define a new shape for this ContactSurface.
|
inline |
Define a new material for this ContactSurface, optionally providing the thickness of this elastic material layer over a rigid substrate.
|
inline |
Set the thickness of the layer of elastic material coating this contact surface.
This is required by the Elastic Foundation Model but is ignored by the Hertz model. Elastic Foundation uses this value to define "unit strain", that is, an element deformed by 0.1*thickness has 10% strain.
|
inline |
Get read-only access to the shape of this contact surface.
|
inline |
Get read-only access to the material of this contact surface.
|
inline |
Get the thickness of the elastic material layer on this contact surface, with zero indicating that the thickness has not been set.
|
inline |
Get writable access to the shape of this contact surface.
|
inline |
Get writable access to the material of this contact surface.
|
inline |
Join a contact clique if not already a member.
It is OK to pass an invalid clique id here, in which case it will be quietly ignored.
|
inline |
Remove this surface from a contact clique if it is a member.
It is OK to pass an invalid clique id here, in which case it will be quietly ignored.
|
inline |
Determine whether this contact surface is a member of any of the same cliques as some other contact surface, in which case they will be invisible to one another.
|
inline |
Return a reference to the list of CliqueIds of the cliques in which this contact surface is a member; the list is always sorted in ascending order.
|
inlinestatic |
Return true if there are any common cliques on two clique lists which must each be sorted in ascending order.
This takes no longer than O(a+b) where a and b are the sizes of the two clique lists.
|
inlinestatic |
Create a new contact clique and return its unique integer id (thread safe).
Every contact surface is automatically a member of a clique containing all the surfaces that reside on the same body.