# 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

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 and Initial Conditions for Blocks with Finite Moist Air Volume.

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.

## Ports

### Conserving

## Parameters

## Model Examples

## Extended Capabilities

## Version History

**Introduced in R2013a**