Coulomb Damping Simulator Back
Vibration Simulator

Coulomb Damping Simulator — Free Vibration with Dry Friction

Visualize the free vibration of a mass-spring system with dry friction. Unlike viscous damping, the amplitude decays linearly, the motion stops in finite time, and the rest position generally has an offset inside the dead zone.

Parameters
Mass m
kg
Spring stiffness k
N/m
Kinetic friction coefficient μ
Initial displacement x_0
m

Gravity g = 9.81 m/s² is fixed. Friction force F_d = μ·m·g opposes velocity. Stop test: |ẋ| < ε and |k·x| ≤ F_d.

Results
Natural frequency f_n
Amplitude decrement per cycle Δ=4F_d/k
Cycles to stop N_stop
Stopping time T_stop
Time response x(t)

blue solid = displacement x(t) / orange dashed = linear envelope / grey band = dead zone ±F_d/k / yellow vertical = stopping time

Phase plane (x, ẋ)

vertical = velocity ẋ / horizontal = displacement x. Unlike the logarithmic spiral of viscous damping, the centre jumps to ±F_d/k every half-cycle.

Theory & Key Formulas

Coulomb-damped free vibration is a piecewise-linear nonlinear system in which a constant-magnitude friction force F_d = μ·m·g acts opposite to the velocity, with the sign of the friction term switching every half-cycle.

Equation of motion (sgn is the sign function):

$$m\ddot{x} + k\,x + F_d\,\mathrm{sgn}(\dot{x}) = 0,\qquad F_d = \mu\,m\,g$$

Natural angular frequency and period — unchanged by Coulomb damping:

$$\omega_n = \sqrt{k/m},\qquad T = \frac{2\pi}{\omega_n}$$

Amplitude decrement per full cycle (linear):

$$\Delta x = \frac{4\,F_d}{k} = \frac{4\,\mu\,m\,g}{k}$$

Dead zone (motion stops once inside) and the number of cycles to stop:

$$|x| \le \frac{F_d}{k},\qquad N_\text{stop} \approx \frac{x_0\,k}{4\,F_d} - \frac{1}{4}$$

What is the Coulomb Damping Simulator

🙋
What exactly is "Coulomb damping"? I think I remember viscous damping from the textbook, but this one is new.
🎓
Roughly speaking, think of a mass on a spring sliding on a tabletop, with dry friction between the mass and the table. The equation of motion is $m\ddot{x} + k x + F_d\,\mathrm{sgn}(\dot{x}) = 0$ with $F_d = \mu m g$. While viscous damping uses a force $c\dot{x}$ proportional to velocity, here the friction force has a constant magnitude and just flips sign with the velocity. Look at the time response above.
🙋
Oh, the shape is really different from an ordinary damped sine wave! The envelope is a straight line, not an exponential.
🎓
Exactly the key feature. Viscous damping shrinks the amplitude as $e^{-\zeta\omega_n t}$, so mathematically it "never stops". Coulomb damping subtracts the same $4F_d/k$ from the amplitude every cycle. The envelope is linear and the motion ends in finite time. Most real machines that come to rest with a small "thunk" are doing this.
🙋
What is the "dead zone"? The grey band on the chart.
🎓
Also interesting. When the mass instantaneously stops, if the spring restoring force $|kx|$ is smaller than the friction force $F_d$, the friction cancels it out completely and the mass cannot start moving again. The condition is $|x| \le F_d/k$. So the vibration does not necessarily settle at the origin; it settles somewhere inside this band. Raise the friction-coefficient slider and you can see the band widen and the stop offset grow.
🙋
Got it! Is that also why the phase plane plot looks a bit different from the viscous spiral?
🎓
Sharp observation. With viscous damping the phase plane is a smooth logarithmic spiral into the origin. Coulomb damping is a piecewise-linear system in which the friction term flips every half-cycle, so the centre of the spiral hops by $\pm F_d/k$ each half-cycle, giving a staircase-like spiral. In the phase plane panel you can see arcs of different centres stacking and settling into the dead zone.

Frequently Asked Questions

Only the sign of the friction term changes from one half-cycle to the next. Within each half-cycle the motion is simple harmonic with a "spring-plus-constant-offset" restoring force. If you redefine the equilibrium at the shifted centre ±F_d/k, the restoring force is unchanged and the angular frequency stays at ω_n = √(k/m). Viscous damping makes the eigenvalues complex and shifts the damped frequency to ω_d = ω_n·√(1−ζ²), but Coulomb damping leaves the period intact.
The equation of motion becomes m·ẍ + c·ẋ + k·x + F_d·sgn(ẋ) = 0, and the amplitude decay has the form "exponential × (exponential − offset)". The envelope is neither a pure exponential nor a pure straight line: it is closer to linear early on and closer to exponential once the amplitude is small. Motion still stops in finite time, with the rest position anywhere inside the dead zone |x| ≤ F_d/k. In test data the two contributions are separated by an energy-dissipation balance to identify them individually.
Because it contains a sign function, the system is nonlinear and non-smooth and the superposition principle of linear vibration theory does not apply. Common approaches are: (1) piecewise-linear solution — solving each half-cycle and stitching them together; (2) equivalent linearization (harmonic linearization) — replacing the friction term with an equivalent viscous damper by matching the first Fourier component; (3) time-stepping numerical integration (Runge-Kutta, velocity Verlet). This simulator uses approach (3), with sgn(ẋ) replaced by 0 when |ẋ| < ε to avoid numerical chattering.
Yes. Common examples are stacked leaf springs (interlayer friction), seismic friction dampers (friction pads sandwiched in X-braces), and the escapement of a mechanical watch (which maintains a constant amplitude). Unlike viscous dampers, whose damping coefficient drifts with temperature and speed, dry friction gives an almost speed-independent and temperature-stable force as long as the normal load is constant. The drawbacks — stop offset, dead zone and stick-slip — can hurt precision positioning, so in servo systems they are sometimes actively compensated.

Real-World Applications

Automotive leaf springs: Truck and bus leaf springs are stacks of leaves, with dry friction between the leaves. Acting in parallel with the viscous shock absorber, this Coulomb damping dissipates vibration energy and improves ride comfort. In design, the number of leaves, contact area and lubrication condition are tuned so that the friction force F_d gives the desired linear amplitude decrement 4F_d/k.

Seismic friction dampers: In retrofit seismic design, high-friction pads are inserted at the centre of X-braces; relative sliding during an earthquake traces out a hysteresis loop. Coulomb damping is nearly velocity-independent and gives a consistent damping force for both slow earthquake motions and quick aftershocks, which makes it especially effective for low-rise building retrofit.

Mechanical watch escapement: The balance wheel + hairspring vibrating system has small dry friction at the contact between the escapement pallet and the wheel teeth. Coulomb damping alone would stop it, so the mainspring torque "kicks" the balance every half-cycle to maintain a constant amplitude. The finite-stop property of Coulomb damping is therefore the starting point for designing the periodic energy input.

Stick-slip in machine-tool feed axes: On plain sliding ways, low-speed feed often exhibits stick-slip — the carriage alternates between sticking and lurching. This is a nonlinear interaction of the static/kinetic friction gap and stiffness, and degrades surface finish and positioning accuracy. Replacing the way with a rolling guide, using hydrostatic oil films, or applying velocity feedforward compensation are the usual countermeasures, and "dead zone" and "stop offset" concepts feed directly into their effectiveness checks.

Common Misconceptions and Cautions

The most common misconception is to assume that "Coulomb-damped vibration eventually stops at x = 0". In reality the mass cannot start moving again unless $|kx| > F_d$, so it stops somewhere inside the dead zone $|x| \le F_d/k$ — generally not at the origin. Raise μ in the simulator and watch the stop position drift away from zero. In precision positioning mechanisms this "stop offset" becomes a direct contribution to position error and motivates servo or active compensation.

The next most common error is to confuse the per-half-cycle and per-full-cycle amplitude decrements. The decrement per half-cycle is 2F_d/k, and the decrement per full cycle is twice that, 4F_d/k. The "amplitude decrement per cycle" card in the simulator shows this 4F_d/k. Mixing them up will halve or double your estimate of the number of cycles to stop. Decide up front whether you count half-cycles (sign-flipped peaks) or full cycles (same-side peaks).

Finally, note that numerical evaluation of sgn(ẋ) is prone to chatter near ẋ = 0. A naive sgn(ẋ) = ẋ/|ẋ| flips violently between ±1 as the velocity crosses zero, and even Runge-Kutta will produce a buzzing numerical solution. Two safeguards are essentially mandatory in the implementation: (1) introduce a velocity threshold ε_v (typically 1e-4 to 1e-6) and set sgn = 0 when |ẋ| < ε_v, and (2) snap to the static state as soon as |ẋ| < ε and |kx| ≤ F_d. This simulator uses ε_v = 1e-4; making it too large stops the motion too early, too small and the chatter persists — you can feel the tradeoff directly in the implementation.