Skip to content

Tutorial 4 — Springs & Dampers

Goal: add your first force elements — a spring and a damper — and watch a body oscillate, then settle. You'll connect the picture to the two formulas that run through all of vibration engineering: the natural frequency ωₙ = √(k/m) and the damping ratio that decides whether a system rings or just sags to rest.

Time: ~20 minutes · Prerequisites: Tutorial 1 (build a body, set a run, Solve, play back). Joints not required — a spring attaches on its own.


Concept — a restoring force, and something to bleed off energy

A spring pushes back in proportion to how far it's stretched — Hooke's law, F = −k·x (k = stiffness, N/m). On its own, a spring + mass is a perfect oscillator: displace it and it rings forever at its natural frequency

ωₙ = √(k / m) (rad/s) → period T = 2π√(m / k)

A damper resists velocity instead of position — F = −c·v (c = damping coefficient, N·s/m). It converts motion into heat, so oscillations decay. How fast they decay is set by the dimensionless damping ratio:

ζ = c / (2√(k·m))

  • ζ < 1 — underdamped: it oscillates, but the amplitude shrinks each cycle.
  • ζ = 1 — critically damped: the fastest return to rest with no overshoot.
  • ζ > 1 — overdamped: it crawls back to rest, no oscillation at all.

BriskFyr calls these constitutive laws: linear elastic (spring only), linear viscous (damper only), and linear viscoelastic (both together). We'll use all three.


Build a spring–mass oscillator

1. Body on a raised node

Add a Node (Build ▸ Node), set its Position to (0, 0, 2). Add a Rigid Body on it (1 kg).

Expected: a 1 kg body floats 2 m above the grid.

2. Add a Spring to ground

In the toolbar's Springs & Loads group, click Spring.

Expected: a coil/helix glyph appears connecting the body down to an anchor on the ground, 0.3 m below the body's node. In the Inspector you'll see a Spring_1 element with a linear elastic law, stiffness 1000 N/m, and free length taken from the nodes (so it starts exactly at rest length — no initial stretch).

The body with a helix spring glyph running down to the ground anchor.

3. Soften the spring so the bounce is visible

k = 1000 gives a tiny, fast wobble. Select Spring_1 and in its constitutive-law editor set Stiffness = 100 N/m.

Expected: with k = 100 and m = 1 kg, the natural frequency is ωₙ = √(100/1) = 10 rad/s (≈ 1.6 Hz, period ≈ 0.63 s), and gravity alone will bounce the body about 0.1 m.

The Spring's constitutive-law editor with Stiffness = 100 N/m (linear elastic).

4. Solve and watch it ring

Set the run (Solve tab ▸ Duration 3 s, Time step 0.01 s) and Solve. Play it back.

Expected: released from rest, the body drops, overshoots, and bounces up and down about a new equilibrium (where the spring's pull balances gravity). With no damping yet, the bounce doesn't die away — constant amplitude, cycle after cycle.

Playback mid-bounce — the spring stretched as the body oscillates at constant amplitude (no damping yet).

5. Measure the period

Use the playback time read-out (or, for a precise read, add a Distance Request from the body to a fixed Marker and plot it — this previews Tutorial 7). Time one full up-and-down cycle.

Expected:0.63 s, matching T = 2π√(m/k) = 2π√(1/100) = 0.628 s. ✅ Change the mass to 4 kg and re-Solve — the period doubles (T ∝ √m), exactly as the formula says.


Add damping — make it settle

6. Turn the spring into a spring–damper

Select Spring_1 and in the constitutive-law editor change the law to linear viscoelastic, then set Damping = 5 N·s/m (keep Stiffness 100).

Expected: the glyph now also shows a dashpot (a telescoping cylinder) alongside the coil. The damping ratio is ζ = c/(2√(km)) = 5/(2√(100)) = 0.25 — underdamped.

Underdamped (ζ = 0.25) — a dashpot now sits beside the coil and the oscillation decays over a few cycles.

7. Solve — underdamped decay

Solve and play back.

Expected: the body still oscillates, but each bounce is smaller than the last — the amplitude decays toward the equilibrium. That's ζ = 0.25: it rings, then settles.

8. Crank the damping up

Change Damping = 40 N·s/m (ζ = 40/20 = 2, overdamped) and Solve again.

Expected: no oscillation at all — the body slides smoothly down to its equilibrium and stops. Too much damping removes the ring entirely. (Try Damping = 20, ζ = 1, for the critically-damped case — the quickest settle with no overshoot.)


Verifiable outcome

  • Undamped: oscillates at ωₙ = √(k/m); period ≈ 0.63 s for k = 100, m = 1. ✅
  • Underdamped (ζ = 0.25): oscillates but the amplitude decays each cycle. ✅
  • Overdamped (ζ = 2): no oscillation — settles straight to rest. ✅

You've now driven a system across the whole damping spectrum from one editor, and connected each behaviour to ζ.


Load the finished model

For a richer worked example, load Demos ▸ Spring-Mass-Damper — a three-mass chain (wall → spring/damper → mass → spring/damper → mass → …), each mass on its own slider, pushed by step forces. It's the multi-degree-of-freedom version of what you just built, and a good sandbox for seeing how coupled springs share motion.

The 3-DOF Spring-Mass-Damper demo loaded — three boxes on rails with helix springs + dashpots between them.

Troubleshooting

  • The bounce is too small/fast to see → you left Stiffness at 1000. Set it to 100 (Step 3); softer spring = bigger, slower bounce.
  • It just sinks and stops with no oscillation → your damping is too high (overdamped). Lower it (try Damping = 5) to see the ring.
  • No dashpot appears when you add damping → make sure the law is linear viscoelastic (spring + damper), not linear viscous (damper only) or linear elastic (spring only).
  • Nothing moves at all → confirm gravity is on (Settings ▸ Environment) and the spring actually connects the body to ground (Spring_1 in the Inspector).