# Nonlinear Translational Spring

Translational spring based on polynomial or table lookup parameterizations

**Libraries:**

Simscape /
Driveline /
Couplings & Drives /
Springs & Dampers

## Description

The Nonlinear Translational Spring block represents a translational spring with a nonlinear force-displacement curve. The spring force magnitude is a general function of displacement and does not necessarily need to satisfy Hooke’s law. You can parameterize the force-displacement relationship using a polynomial or a lookup table. The spring force can be symmetric or asymmetric with respect to zero deformation.

The symmetric polynomial parameterization defines spring force according to the expression

$$F={k}_{1}x+sign(x)\cdot {k}_{2}{x}^{2}+{k}_{3}{x}^{3}+sign(x)\cdot {k}_{4}{x}^{4}+{k}_{5}{x}^{5},$$

where:

*F*is the spring force.*k*_{1},*k*_{2}, ...,*k*_{5}are the spring coefficients.*x*is the relative displacement between ports**R**and**C**.*x*_{init}is the initial relative displacement.

At simulation start *x* is equal to
*x*_{init}.

To avoid zero-crossings that slow simulation, eliminate the sign function from the
polynomial expression by specifying an odd polynomial (*b*_{2},*b*_{4}
= 0).

The asymmetric polynomial parameterization defines spring force according to the expression:

$$F=\{\begin{array}{cc}{k}_{1t}x+{k}_{2t}{x}^{2}+{k}_{3t}{x}^{3}+{k}_{4t}{x}^{4}+{k}_{5t}{x}^{5},& x\ge 0\\ {k}_{1c}x+{k}_{2c}{x}^{2}+{k}_{3c}{x}^{3}+{k}_{4c}{x}^{4}+{k}_{5c}{x}^{5},& x<0\end{array},$$

where:

*k*_{1},*k*_{2}, ...,*k*_{5}are the spring tension coefficients.*k*_{1},*k*_{2}, ...,*k*_{5}are the spring compression coefficients.

Both polynomial parameterizations use a fifth-order polynomial expression. To use a lower-order polynomial, set the unneeded higher-order coefficients to zero. To use a higher-order polynomial, fit to a lower-order polynomial or use the table lookup parameterization.

Setting **Parameterization** to `By table lookup`

defines the damping torque based on a set of torque and angular velocity vectors. If you
do not enter a datapoint for the origin, the block automatically adds one (zero angular
velocity and zero torque).

### Variables

To set the priority and initial target values for the block variables prior to simulation,
use the **Initial Targets** section in the block dialog box or Property
Inspector. For more information, see Set Priority and Initial Target for Block Variables.

Nominal values provide a way to specify the expected magnitude of a variable in a model.
Using system scaling based on nominal values increases the simulation robustness. Nominal
values can come from different sources, one of which is the **Nominal
Values** section in the block dialog box or Property Inspector. For more
information, see Modify Nominal Values for a Block Variable.

## Examples

## Ports

### Conserving

## Parameters

## Extended Capabilities

## Version History

**Introduced in R2013a**