Skip to content
cfd-lab:~/ja/posts/2026-05-28-streamline-pa…● online

この記事は著者が韓国語で書いた原文の翻訳です。 原文(한국어)を読む

NOTE #055DAY THU 유체역학DATE 2026.05.28UPDATED 2026.10.19READ 6 min read#Flow-Visualization#Streamline#Material-Derivative#Euler-Lagrange#Flow-Phenomena

流れの三つの肖像 — 流線・流跡線・流脈線はなぜ食い違うのか

インクの帯は流脈線です。定常流でも加速は対流項が作り、局所項が0でも喉では速度が跳ねます。

川にインクを一筋流して、写真を撮りました。同じ瞬間に、葉一枚の軌跡を描きました。二本の線は違っていました。流れは一つなのに、絵は二つです。流線・流跡線・流脈線が分かれる場所は時間で、その分かれは物質微分(流体に乗って見る変化率)と接しています。

収縮比のスライダーを0.25まで下げると、のど付近の粒子速度が4倍に跳ねます。

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.

それでも ∂u/∂t\partial u/\partial t の棒は0に張り付いたままです。加速はすべて青い対流項から出ています。局所項が0なのに、粒子は速くなります。

同じ流れ、異なる三枚の絵

流れを絵に残す方法は一つではありません。研究室では普通、三つを使います。

ある瞬間に、すべての点の速度の向きをつなぎます。粒子一つに目印を付けて、その足跡を追います。一か所から染料を流し続けて、できる帯を撮ります。同じ流れでも、結果がいつも一致するわけではありません。

分かれるのは時間です。流れが時間とともに変われば(非定常流)、三枚の絵は食い違います。変わらなければ(定常流)、三つはぴったり重なります。

流線・流跡線・流脈線 — 三つの定義

三つの曲線を式で切り分けてみましょう。速度場を u(x,t)\mathbf{u}(\mathbf{x}, t) とします。

流線(streamline):固定したある瞬間 tt に、全点で速度に接する曲線です。

dxu=dyv\frac{dx}{u} = \frac{dy}{v}

ここで u,vu, v はその瞬間の速度成分です。時間を止めたスナップ写真です。

流跡線(pathline):粒子一つを時間に沿って積分した実際の足跡です。

dxdt=u(x,t)\frac{d\mathbf{x}}{dt} = \mathbf{u}(\mathbf{x}, t)

木の葉一枚の旅の記録だと考えてください。

流脈線(streakline):同じ点 x0\mathbf{x}_0 を通り過ぎたすべての粒子が、いま どこにいるかをつないだ線です。煙突から立ちのぼる煙やインクの帯がまさにこれです。管に入れた染料の筋も同じ種類です。水の筋が乱れる瞬間の色素は、流線ではなくこの帯です。

定常流でのみ三つが重なる

定常流とは、速度場が時間に依存しない流れ、すなわち ∂u/∂t=0\partial \mathbf{u} / \partial t = 0 の場合です。このとき、粒子が一度ある点を通れば、後から来る粒子も同じ道をたどります。道が時間とともに変わらないからです。

そのため流跡線と流脈線が一致します。流線も毎瞬間同じなので、三つすべてが重なります。教科書で見る「きれいな流線図」は、実は定常流という暗黙の仮定の上に立っています。

非定常流ではこの仮定が崩れます。先に通った粒子の道と後の粒子の道が違い、瞬間の接線方向も毎瞬間変わります。だから三つの曲線は離れていきます。

オイラーとラグランジュ、そして物質微分

この食い違いの根には二つの視点があります。オイラー視点(空間の固定点で観察)とラグランジュ視点(粒子を追って観察)です。流線はオイラー的、流跡線はラグランジュ的です。

二つの視点をつなぐ橋が物質微分です。

DϕDt=∂ϕ∂t+(u⋅∇)ϕ\frac{D\phi}{Dt} = \frac{\partial \phi}{\partial t} + (\mathbf{u}\cdot\nabla)\phi

ここで ϕ\phi は任意の物理量、右辺の第一項は局所変化率、第二項は対流変化率です。前者は「固定点での時間変化」、後者は「粒子が場所を移したことで生じる変化」を意味します。

直感がつまずきやすいのがここです。定常流で ∂u/∂t=0\partial \mathbf{u}/\partial t = 0 でも、粒子は加速できます。狭まるノズルを思い浮かべてください。固定点で見れば速度は時間とともに変わりません。しかし粒子がのどへ吸い込まれるにつれてどんどん速くなります。その加速をすべて作るのが対流項 u ∂u/∂xu\,\partial u/\partial x です。

収縮比0.25での4倍と、0に張り付いた局所項の棒は、冒頭のスライダーですでに出ています。ここで新しく見るのは、その4倍を作っているのが対流項だけだという点です。

Python — 振動する流れで三つの曲線を描く#

三つの曲線を一度に描いてみましょう。横方向速度が下流へ伝わる波である流れを使います。u=Uu = U、v=V0cos⁡(ωt−kx)v = V_0\cos(\omega t - k x)、ここで k=ω/Uk = \omega/U です。この流れでは三つの曲線がきれいに異なる形を持ちます。

import numpy as np
 
U, V0, omega = 1.0, 0.6, 2.0
k = omega / U
 
def velocity(x, t):
    """下流へ伝わる横波: (u, v) を返す"""
    return U, V0 * np.cos(omega * t - k * x)
 
def pathline(t0, t_end, dt=0.01):
    """t0 に原点から出た粒子の足跡(数値積分)"""
    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):
    """t_now 時点の染料帯: 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)   # この流れでの厳密解
    return x, y
 
def streamline_snapshot(t_now, x_max=10.0, n=400):
    """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"流跡線の終点 : ({xp[-1]:.2f}, {yp[-1]:.2f})")
print(f"流脈線 y 範囲: [{ys.min():.2f}, {ys.max():.2f}]")
print(f"流線   y 範囲: [{yl.min():.2f}, {yl.max():.2f}]")

出力は、三つの曲線がまったく異なる領域を占めることを示します。流跡線は直線に伸び、流線は振幅 V0/ωV_0/\omega の浅い波、流脈線はそれより大きく揺れます。同じ流れ、異なる三枚の絵です。

コードの数値は U=1、V0=0.6、ω=2、t_now=6 です。k=ω/U なので k は 2 です。粒子の上では位相 ωt−kx が打ち消されます。u が U で一定なら x=Ut となり、kx=ωt なので v=V0 の定数です。だから流跡線は曲線ではなく、直線 y=(V0/U)x=0.6x です。t=6 なら終点は (6, 3.6) です。dt=0.01 の積分も、位相が 0 である限り、毎ステップ同じ直線をたどります。

流線の式は (V0/ω) にサインの差を掛けます。V0/ω=0.6/2=0.3 です。サインの差は −2 から 2 の間なので、y は ±0.6 を超えられません。浅い波の幅がこの限界です。その端に届くには、kx が一回転を超えて回る必要があります。k=2 で x が 0 から 10 までなので、位相の幅は 20 ラジアン、三回転を超えます。t_now=6 では ωt=12 なので、スナップショット一つがその区間を覆います。±0.6 は式の飾りではなく、この窓で実際に届く端です。

流脈線は y=V0 cos(ωs) に (t−s) を掛けたものです。コサインの絶対値は 1 を超えず、t−s は 6 まで伸びます。|y| の上限は 0.6 掛ける 6、つまり 3.6 です。流線の限界 0.6 の六倍です。同じ V0 なのに流脈線だけ大きく揺れるのは、放出時刻の差が掛けられるからです。収縮比 0.25 は面積比です。非圧縮なら速度は面積の逆数なので、のどでは 4 倍になります。その 4 倍は局所項ではなく、対流項がすべて作ります。

非定常性を自分で揺らす

では時間を生かして、三つの曲線がどう分かれるかを見ましょう。下のシミュレーションで振幅 V0V_0 と周波数 ω\omega を操作してみましょう。

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.

V0V_0 をゼロに下げると、三つの曲線が軸の上に重なります。定常流に戻ったのです。V0V_0 と ω\omega を上げると、黄色の流線は速く波打ち、ピンクの流跡線はまっすぐ伸び、シアンの流脈線はまた別の波形を描きます。非定常性が強いほど、三つの肖像は遠ざかります。

インクの帯を流線と読むと方向がずれます

写真の中のインクを流線と書くと、速度の接線を、いま染料がある場所のほうへ読むことになります。非定常流ではその二つは違います。流線は時間を止めた断面で、流脈線は一か所を通り過ぎた粒子たちの現在です。物質微分 D/Dt=∂/∂t+u⋅∇D/Dt = \partial/\partial t + \mathbf{u}\cdot\nabla の対流項は、定常流でも加速を作ります。局所項が0だという理由だけで粒子が等速だと書くと、ノズルの4倍が抜け落ちます。

定常流なら三つは重なります。違えば、流れが時間とともに変わっている合図です。煙突が煙を引き上げる浮力を測る前に、その煙が流脈線かどうかから選びます。帯を流線に置くと、方向が違います。

役に立ったらシェアしてください。