Main Content

Spatial Contact Force

Apply contact forces between a pair of connected bodies

  • Library:
  • Simscape / Multibody / Forces and Torques

Description

The Spatial Contact Force block models the contact between a pair of bodies using the penalty method. This method allows the bodies to penetrate a small amount to compute the contact forces. The block applies normal and frictional contact forces between the connected base and follower bodies.

The normal contact force is computed using the force equation of the classical spring-damper system. During contact, the normal contact force is proportional to its corresponding penetration depth and velocity. The Transition Region Width specifies the transitional region to the force equations. While the penetration depth moves through the transition region, the block smoothly ramps up the force. At the end of the transition region, the full stiffness and damping are applied. On the rebound, both stiffness and damping forces are smoothly decreased back to zero. This smooth transition eliminates discontinuities from the force equations and eliminates zero-crossing events. The larger the Transition Region Width, the smoother the transition trend of the contact force. In contrast, as the Transition Region Width is reduced toward zero, the contact force tends to have a sharper transition that behaves like a discontinuous problem.

To better detect contacts when the value of Transition Region Width is small, the Spatial Contact Force block supports optional zero-crossing detection. The zero-crossing events only occur when the separation distance changes from positive or zero to negative and vice versa.

Note

The zero-crossing detection of the Spatial Contact Force block is different with the original zero-crossing detection of Simulink® blocks, such as From File and Integrator, because the force equation of the Spatial Contact Force is continuous. For more information of the zero-crossing detection of Simulink blocks, see Zero-Crossing Detection.

Each body has a contact frame with its origin located at the contact point and its z-axis aligned with the contact normal direction. When the surface is smooth near the contact point, the contact normal is the outward surface normal at the contact point. When the surface is not smooth, the contact normal is computed using other means, but it always points outward from the body near the contact point. During continuous contact, the contact frame moves around the body as the contact point moves.

The diagram shows the contact frame for the base body. Contact forces are applied to the two solid bodies at the origin of the contact frame in conformance with Newton's Third Law:

  1. The normal force, fn, which is aligned with the z-axis of the contact frame. This force pushes the solid bodies apart in order to reduce penetration.

  2. The frictional force, ff, which lies in the contact plane. This force opposes the relative tangential velocities between the two bodies near the area of penetration.

The Spatial Contact Force block supports a variety of geometries and bodies. For example, it supports all the solid blocks in the Body Elements library and the Infinite Plane and Point blocks in the Curves and Surfaces library.

Note

  • For File Solid and Revolved Solid blocks, their physical properties, such as mass and inertia, are based on the true geometry, but contact modeling is based on the convex hull geometry. For an example, see the following figure.

Contacts Between Solids

Convex hulls are commonly used to represent the geometric boundary when the true geometry presents algorithmic complexity. A convex hull is the smallest convex polyhedron that contains all the vertexes of a true geometry. For a convex hull, the exterior angle (α) between a pair of adjacent faces must be greater than or equal to 180 degrees.

Convex Hull

Ports

Input

expand all

Input port associated with the base frame in the model.

Input port associated with the follower frame in the model.

Output

expand all

Separation distance between the two solid body elements.

Dependencies

To enable this port, select Sense Separation Distance.

Magnitude of the normal contact force between the two solid body elements.

Dependencies

To enable this port, select Sense Normal Force.

Magnitude of the frictional contact force between the two solid body elements.

Dependencies

To enable this port, select Sense Frictional Force Mag.

Parameters

expand all

Normal Force

The spring stiffness is a constant value that represents the contact force of two colliding solid bodies. The larger the value of the spring stiffness, the harder the contact between the solid body elements.

The damping coefficient is a constant value that represents the lost energy from colliding solid bodies. The larger the value of the damping coefficient, the more energy is lost when geometries collide and the faster the contact vibrations are dampened. A value of zero can be used to model perfectly elastic collisions, which conserve energy.

Transition region width, expressed as depth of penetration. The smaller the region, the sharper the onset of contact and the smaller the time-step required for the solver. Reducing the transition region improves model accuracy, while expanding it improves simulation speed.

Frictional Force

Frictional force is the force that lies tangentially in the contact frame and perpendicular to the normal force. Selecting Smooth Stick-Slip produces more realistic contact dynamics.

Smooth Stick-Slip

When Smooth Stick-Slip is selected, the frictional force is continuous with respect to the relative tangential velocity near the penetration region. This graph shows how the friction force is affected:

μstatic is the coefficient of static friction, μdynamic is the coefficient of dynamic friction, and vcrit is the critical velocity.

None

When None is selected, no frictional force is applied.

Ratio of the magnitude of the frictional force to the magnitude of the normal force when the tangential velocity is close to zero.

This value is determined by the material properties of the contacting solid bodies. It is always nonnegative and is often less than one, although values greater than one are possible for high-friction materials. In most cases, this value should be higher than the Coefficient of Dynamic Friction.

Dependencies

To enable this parameter, set Method to Smooth Stick-Slip.

The ratio of the magnitude of the frictional force to the magnitude of the normal force when the tangential velocity is large.

This value is determined by the material properties of the contacting solid bodies. It is always nonnegative and is often less than one, although values greater than one are possible for high-friction materials. In most cases, this value should be lower than the Coefficient of Static Friction.

Dependencies

To enable this parameter, set Method to Smooth Stick-Slip.

When the critical velocity is equal the magnitude of the tangential velocity, the effective coefficient of friction is equal to the specified Coefficient of Static Friction. As the magnitude of the tangential velocity increases beyond this value, the effective coefficient of friction asymptotically approaches the specified Coefficient of Dynamic Friction.

Dependencies

To enable this parameter, set Method to Smooth Stick-Slip.

Sensing

Select to measure the separation distance between two solid bodies. If the two solid bodies are not penetrating, this is a nonnegative value equal to the minimum distance between the two geometries. If the two solid bodies are penetrating, this is a negative value equal to the penetration depth.

Select to measure the magnitude of the normal contact force between the two connected solid bodies.

Select to measure the magnitude of the frictional contact force between the two connected solid bodies.

Zero-Crossings

Select to detect the start and end of each contact as zero-crossing events. The zero-crossing events occur when the separation distance changes from positive or zero to negative and vice versa.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.

Introduced in R2019b