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_1element 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).

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.

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.

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.

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.

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_1in the Inspector).