# Nonlinear Translational Spring

Translational spring based on polynomial or table lookup parameterizations

**Library:**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

Use the **Variables** tab to set the priority
and initial target values for the block variables before simulating.
For more information, see Set Priority and Initial Target for Block Variables.

## Ports

### Conserving

## Parameters

## Model Examples

## Extended Capabilities

**Introduced in R2013a**