Three Portraits of a Flow — Why Streamlines, Pathlines, and Streaklines Diverge
Three curves that split apart in unsteady flow, and the material derivative
You drip a thread of ink into a river and snap a photo. At the same instant, you float a leaf and trace its path. The two lines come out different. The flow is one thing, yet its picture splits in two. This post shows why streamlines, pathlines, and streaklines pull apart, and how that split ties back to the material derivative — the rate of change you see while riding along with the fluid. By the end, you can read the trace of time hidden in a single river photo.
One Flow, Three Different Pictures#
There is more than one way to draw a flow. In the lab, three are common.
First, connect the velocity directions at every point at one instant. Second, tag a single parcel and follow its footprints. Third, release dye continuously from one spot and photograph the ribbon it forms. All three watch the same flow, yet their results need not agree.
The key is time. When the flow changes in time (unsteady), the three pictures drift apart. When it does not (steady), the three overlap exactly. That gap is today's subject.
Streamlines, Pathlines, Streaklines — Three Definitions#
Let us pin down each curve with a formula. Write the velocity field as .
Streamline: at one frozen instant , the curve tangent to the velocity at every point.
Here are the velocity components at that instant. It is a snapshot with time held still.
Pathline: the actual track of a single parcel integrated forward in time.
Think of it as one leaf's travel diary.
Streakline: the line joining the current positions of every parcel that has passed through a fixed point . Smoke rising from a chimney, or a ribbon of dye, is exactly this.
They Coincide Only in Steady Flow#
A steady flow is one whose velocity field does not depend on time, that is . Then, once a parcel passes a point, every later parcel walks the same road — the road does not change with time.
So the pathline and the streakline become identical. The streamline is the same at every instant too, so all three overlap. The "clean streamline picture" we see in textbooks quietly stands on the assumption of steadiness.
In unsteady flow that assumption breaks. The road of an earlier parcel differs from a later one, and the instantaneous tangent direction shifts moment to moment. That is why the three curves spread.
Euler, Lagrange, and the Material Derivative#
At the root of this split lie two viewpoints: the Eulerian one (observing at a fixed point in space) and the Lagrangian one (observing while following a parcel). The streamline is Eulerian; the pathline is Lagrangian.
The bridge between the two is the material derivative.
Here is any field quantity, the first term on the right is the local rate of change, and the second is the convective rate. The first means "change in time at a fixed point," the second "change because the parcel has moved elsewhere."
This is where intuition stumbles. Even in steady flow with , a parcel can still accelerate. Picture a narrowing nozzle. At a fixed point the speed never changes in time. Yet a parcel sucked into the throat keeps speeding up. All of that acceleration comes from the convective term .
Drag the contraction ratio in the simulation below.
Nothing in this field depends on time, so ∂u/∂t = 0 at every fixed point. Yet the pink parcel still accelerates into the throat — all of it from the convective term u·∂u/∂x.
Lower the contraction to 0.25 and the parcel speed quadruples near the throat. Still the bar sticks to zero. Every bit of the acceleration comes from the cyan convective term.
Python — Drawing the Three Curves in an Oscillating Flow#
Let us draw the three curves at once. We use a flow whose transverse velocity is a wave propagating downstream: , with . In this flow the three curves take cleanly different shapes.
import numpy as np
U, V0, omega = 1.0, 0.6, 2.0
k = omega / U
def velocity(x, t):
"""transverse wave traveling downstream: returns (u, v)"""
return U, V0 * np.cos(omega * t - k * x)
def pathline(t0, t_end, dt=0.01):
"""track of the parcel released from the origin at time t0 (numerical)"""
x, y, t = 0.0, 0.0, t0
xs, ys = [x], [y]
while t < t_end:
u, v = velocity(x, t)
x += u * dt; y += v * dt; t += dt
xs.append(x); ys.append(y)
return np.array(xs), np.array(ys)
def streakline(t_now, n=400):
"""dye ribbon at t_now: current positions of parcels released at s<=t_now"""
s = np.linspace(0.0, t_now, n)
x = U * (t_now - s)
y = V0 * np.cos(omega * s) * (t_now - s) # exact for this flow
return x, y
def streamline_snapshot(t_now, x_max=10.0, n=400):
"""streamline through the origin at instant t_now"""
x = np.linspace(0.0, x_max, n)
y = (V0 / omega) * (np.sin(omega * t_now) - np.sin(omega * t_now - k * x))
return x, y
t_now = 6.0
xp, yp = pathline(0.0, t_now)
xs, ys = streakline(t_now)
xl, yl = streamline_snapshot(t_now)
print(f"pathline end : ({xp[-1]:.2f}, {yp[-1]:.2f})")
print(f"streakline span: y in [{ys.min():.2f}, {ys.max():.2f}]")
print(f"streamline span: y in [{yl.min():.2f}, {yl.max():.2f}]")The output shows the three curves occupying entirely different territory. The pathline runs straight, the streamline is a shallow ripple of amplitude , and the streakline swings much wider. One flow, three different pictures.
Shaking the Unsteadiness Yourself#
Now bring time to life and watch the three curves split. In the simulation below, adjust the amplitude and the frequency .
Field: u = U, v = V₀·cos(ωt − kx) with k = ω/U. Drag V₀ to 0 and the three curves collapse onto the axis — they only ever agree when the flow is steady.
Pull down to zero and the three curves fold onto the axis — you are back in steady flow. Raise and and the amber streamline ripples fast, the pink pathline runs straight, and the cyan streakline traces yet another waveform. The stronger the unsteadiness, the farther the three portraits drift.
When You Look at a River Again#
A single flow yields three pictures for one reason only: time. The streamline is a slice with time frozen, the pathline is one parcel's life story, the streakline is the present whereabouts of everyone who passed one spot.
Three lines to carry away.
- If the three coincide, the flow is steady. If they differ, the flow is changing in time.
- The convective term of the material derivative produces acceleration even in steady flow.
- If your experimental photo is a dye ribbon, it is a streakline, not a streamline. Confuse the two and you read the velocity direction wrong.
Share if you found it helpful.