# Coulomb and Viscous Friction

Model discontinuity at zero, with linear gain elsewhere

Discontinuities

## Description

The Coulomb and Viscous Friction block models Coulomb (static) and viscous (dynamic) friction. The block models a discontinuity at zero and a linear gain otherwise.

The block output matches the MATLAB® result for:

`y = sign(x) .* (Gain .* abs(x) + Offset)`

where `y` is the output, `x` is the input, `Gain` is the signal gain for nonzero input values, and `Offset` is the Coulomb friction.

The block accepts one input and generates one output. The input can be a scalar, vector, or matrix with real and complex elements.

• For a scalar input, `Gain` and `Offset` can have dimensions that differ from the input. The output is a scalar, vector, or matrix depending on the dimensions of `Gain` and `Offset`.

• For a vector or matrix input, `Gain` and `Offset` must be scalar or have the same dimensions as the input. The output is a vector or matrix of the same dimensions as the input.

## Data Type Support

The Coulomb and Viscous Friction block supports real inputs of the following data types:

• Floating point

• Built-in integer

• Fixed point

The block supports complex inputs only for floating-point data types, `double` and `single`. The output uses the same data type as the input.

## Parameters

Coulomb friction value

Specify the offset that applies to all input values.

Coefficient of viscous friction

Specify the signal gain for nonzero input values.

## Examples

### Scalar Input

Suppose that you have the following model:

In this model, block input `x` and `Gain` are scalar values, but `Offset` is a vector. Therefore, the block uses element-wise scalar expansion to compute the output.

### Vector Input

Suppose that you have the following model:

In this model, vector dimensions for block input `x` and `Offset` are the same.

### Matrix Input

Suppose that you have the following model:

In this model, matrix dimensions for block input `x` and `Offset` are the same.

## Characteristics

 Data Types Double | Single | Base Integer | Fixed-Point Sample Time Inherited from driving block Direct Feedthrough Yes Multidimensional Signals No Variable-Size Signals No Zero-Crossing Detection Yes Code Generation Yes