煙を1 m 下げたらドラフトが7 Pa 消えた — フランクリン暖炉と浮力の収支
浮力は高さではなく、熱いときの高さでしか稼げません。同じ煙突でも下降流路を通れば必ずドラフトは減ります。
1741年、煙をわざわざ下へ流した暖炉#
ベンジャミン・フランクリンは1741年に暖炉を設計し直しました。狙いは単純です。煙突からそのまま 抜けていく熱を、部屋の中でもう一度つかまえることでした。当時のヨーロッパは人口が急増して薪が 不足しており、暖房効率は生存に直結する問題でした。
彼が採った方法は流路を折り返すことです。火から昇った煙をバッフル(baffle、流路を横切って流れを 曲げる板)の上へ越えさせ、鋳鉄の壁に沿って下へ降ろし、そのあとで煙突へ上げます。降りる間に 鋳鉄が温まり、その熱が部屋へ放射されます。当時の記録はこれを「サイフォン現象」と呼びました。
煙突の頂点の高さは変わりません。煙が最終的に得る高度差も同じです。ところがこの暖炉は、煙が 部屋へ漏れることで悪名を得ました。この記事では、その損が正確にどこでどれだけ生じるのかを浮力の 帳簿に書き出します。答えは一行です — 浮力は高さではなく、熱いときの高さでしか稼げません。
ドラフトは密度差に高さを掛けた量である
煙突が煙を引き上げる力をドラフト(draft、通風力)と呼びます。これはポンプではなく静水圧の差です。 外気の柱と内側の煙の柱で重さが違うために生じます。
高さ の煙道(flue)に対して、ドラフトは次のように書けます。
は外気密度、 は高さ での煙の密度、 は重力加速度です。煙道の内外で 絶対圧はほぼ等しいので理想気体では が成り立ち、煙温度が で一様なら 積分はすぐに解けます。
10 °C の外気( kg/m³)、煙温度 500 K、煙突高さ 7 m を入れると 37 Pa に なります。実際の暖炉のドラフトは 10〜30 Pa なので、大きさは合っています。
ここで効いてくるのは が積分の中にあることです。浮力は総高さに一度だけ掛ける量では なく、1 m ごとにその場の密度で買い足していく量です。フランクリンが支払った代金はここにあります。
下のシミュレーションで実際に操作してみましょう。
down-leg スライダーを目一杯動かしても、煙突の頂点は 7 m に固定されたままです。それでも右側の
帳簿の赤い棒が伸び、正味のドラフトは減ります。続いて fire temp を下げると、焚口ゲージが橙色の
逆流限界線を越えますが、下降流路が深いほどその瞬間はずっと早く訪れます。
浮力は熱いときの高さでしか稼げない
経路を三区間に切ります。バッフルまでの上昇( m)、下降流路()、煙突 ( m)です。三区間の高度変化を足すと によらず常に 7 m です。ところが各区間の 浮力寄与は、その区間を通るときの煙の密度で計算されます。
煙は壁へ熱を失いながら冷えていきます。経路座標 に沿って書けば一階の常微分方程式ひとつです。
は総括熱伝達係数、 は煙道の周長、 は質量流量、 は定圧比熱です。解は指数 減衰で、その減衰長が である点があとで効いてきます。
これで損が見えます。下降流路は経路の中で二番目に熱い区間です。密度がほぼ最小なので がほぼ最大になり、そこへ負の が掛かります。逆に、その 1 m を 取り返す煙突区間の煙は、すでに鋳鉄へ熱を渡して冷えています。高く売って安く買うのではなく、高く 買って安く売っているわけです。
さらに、フランクリン暖炉では下降流路が部屋の中にあります。つまり最も熱を奪われる区間でも あります。暖房効率のために設計したまさにその特徴が、煙突の使うはずだった浮力の予算を先に 消費してしまいます。
ループひとつで閉じる運動量収支
流量 は浮力と損失が釣り合うところで決まります。煙道を一周する運動量収支です。
左辺が浮力水頭、右辺が摩擦損失と局所損失(曲がり・出口)です。 は Darcy 摩擦係数、 は 煙道直径、 は断面積、 は局所損失係数、 は出口密度です。管摩擦項の形は 助走区間と Hagen–Poiseuille で扱ったものと 同じです。
この式は見かけほど素直ではありません。 が増えると右辺は で増えますが、左辺も 一緒に増えます。流量が多いほど滞留時間が短くなり、煙が熱いまま煙突を通るからです。この フィードバックのため、残差 は について上に凸となり、 根がふたつ現れます。下側の根は不安定で、実際の運転点は上側の根です。
Python で書き出した浮力の帳簿#
経路を細かく刻んで温度を行進させ、区間ごとの浮力水頭を別々に集めてから、上側の根を二分法で 求めます。下降高さを 0 から 1.2 m まで掃引します。
import math
G, R_AIR, CP = 9.81, 287.0, 1100.0
T_AMB, P_ATM = 283.0, 101325.0
D_FLUE = 0.15
A_FLUE = math.pi * D_FLUE ** 2 / 4.0
PERIM = math.pi * D_FLUE
F_DARCY, K_MINOR = 0.030, 3.0
U_ROOM, U_STACK = 40.0, 5.0 # 室内の鋳鉄流路 / 煙突の組積 [W/m2K]
Z_TOP, Z_BAFFLE = 7.0, 0.80 # 煙突出口 / バッフル上端 [m]
A_MOUTH, V_SPILL = 0.12, 0.25 # 焚口の開口面積 [m2] / 逆流限界の面速度 [m/s]
def gas_density(T):
return P_ATM / (R_AIR * T)
def march_flue(mdot, h_down, T_fire, n=120):
# 上昇 / 下降 / 煙突の三区間をたどり、区間ごとの浮力水頭と総損失を集める
legs = [(Z_BAFFLE, +1.0, U_ROOM),
(h_down, -1.0, U_ROOM),
(Z_TOP - Z_BAFFLE + h_down, +1.0, U_STACK)]
T, loss, heads = T_fire, 0.0, []
rho_a = gas_density(T_AMB)
for L, sgn, U in legs:
head = 0.0
if L > 0.0:
ds = L / n
for _ in range(n):
T_new = T_AMB + (T - T_AMB) * math.exp(-U * PERIM * ds / (mdot * CP))
rho = gas_density(0.5 * (T + T_new))
head += (rho_a - rho) * G * sgn * ds
loss += F_DARCY / D_FLUE * 0.5 * mdot ** 2 / (rho * A_FLUE ** 2) * ds
T = T_new
heads.append(head)
loss += K_MINOR * 0.5 * mdot ** 2 / (gas_density(T) * A_FLUE ** 2)
return heads, loss, T
def solve_mdot(h_down, T_fire, lo=1e-3, hi=0.4, n=100):
# 浮力 = 損失の上側(安定)の根。根がなければ 0.0
grid = [lo * (hi / lo) ** (i / (n - 1.0)) for i in range(n)]
res = []
for m in grid:
heads, loss, _ = march_flue(m, h_down, T_fire)
res.append(sum(heads) - loss)
k = max(range(n), key=lambda i: res[i])
if res[k] <= 0.0:
return 0.0
a, b = grid[k], grid[-1]
for _ in range(40):
m = 0.5 * (a + b)
heads, loss, _ = march_flue(m, h_down, T_fire)
a, b = (m, b) if sum(heads) - loss > 0.0 else (a, m)
return 0.5 * (a + b)
print("h_down[m] mdot[kg/s] V_exit[m/s] draft[Pa] T_exit[K]")
for i in range(0, 7):
h = 0.2 * i
m = solve_mdot(h, 700.0)
heads, loss, T_e = march_flue(m, h, 700.0)
print(f" {h:4.2f} {m:8.4f} {m / (gas_density(T_e) * A_FLUE):6.2f}"
f" {sum(heads):7.2f} {T_e:7.1f}")
for h in (0.0, 1.0):
m = solve_mdot(h, 700.0)
heads, loss, T_e = march_flue(m, h, 700.0)
print(f"\nbuoyancy ledger h_down = {h:.1f} m, mdot = {m:.4f} kg/s")
for name, val in zip(["rise to baffle", "descent ", "chimney "], heads):
print(f" {name} {val:+7.2f} Pa")
print(f" net {sum(heads):+7.2f} Pa (loss {loss:.2f} Pa)")
mdot_spill = gas_density(T_AMB) * A_MOUTH * V_SPILL
print(f"\nspillage threshold: mdot < {mdot_spill:.4f} kg/s")
for h in (0.0, 1.0):
lo, hi = 290.0, 700.0
for _ in range(30):
mid = 0.5 * (lo + hi)
lo, hi = (mid, hi) if solve_mdot(h, mid) < mdot_spill else (lo, mid)
print(f" h_down = {h:.1f} m -> spills below T_fire = {0.5 * (lo + hi):6.1f} K")h_down[m] mdot[kg/s] V_exit[m/s] draft[Pa] T_exit[K]
0.00 0.0629 5.59 44.72 554.5
0.20 0.0623 5.37 43.48 537.2
0.40 0.0617 5.15 42.16 520.6
0.60 0.0610 4.93 40.76 504.6
0.80 0.0602 4.72 39.29 489.2
1.00 0.0593 4.51 37.72 474.2
1.20 0.0583 4.30 36.05 459.6
buoyancy ledger h_down = 0.0 m, mdot = 0.0629 kg/s
rise to baffle +5.57 Pa
descent +0.00 Pa
chimney +39.15 Pa
net +44.72 Pa (loss 44.72 Pa)
buoyancy ledger h_down = 1.0 m, mdot = 0.0593 kg/s
rise to baffle +5.56 Pa
descent -6.16 Pa
chimney +38.32 Pa
net +37.72 Pa (loss 37.72 Pa)
spillage threshold: mdot < 0.0374 kg/s
h_down = 0.0 m -> spills below T_fire = 335.2 K
h_down = 1.0 m -> spills below T_fire = 377.0 K帳簿を二行だけ比べれば十分です。下降流路 1 m は直接 Pa を持っていきます。そして煙突は 1 m 長くなったにもかかわらず、寄与が から Pa へ減りました。伸びた 1 m を 通る煙がすでにより冷えているからです。ふたつの損を合わせると 6.99 Pa で、正味ドラフトの減少分 7.00 Pa とぴたりと一致します。
焚口が先に音を上げる — 42 K の余裕が消えた#
ドラフトが 44.7 から 37.7 Pa へ減っただけで、ただちに煙が部屋へ出てくるわけではありません。 実際の限界は焚口の開口にあります。火口を通る面速度が概ね 0.25 m/s を下回ると、熱い煙が開口の 上側から漏れ出し始めます。この基準を流量に直すと 0.0374 kg/s です。
出力の最後の二行が、そのしきい値を温度に換算したものです。下降流路がなければ、煙温度が 335 K を 下回るまで持ちこたえます。下降流路が 1 m あると 377 K ですでに音を上げます。42 K の余裕が 消えたわけです。
火が勢いよく燃えている間は、どちらもよく吸い込みます。問題は火をつける瞬間と、火が衰える瞬間です。 フランクリン暖炉が「煙る暖炉」として記憶された理由はここにあります。結局 1780 年代に デイヴィッド・リッテンハウスが下降流路を取り払い、煙道をまっすぐ煙突へ上げる L 字構造に改め、 その形が以後の標準になりました。
中立面 — 部屋ひとつで同じ計算が繰り返される
同じ静水圧の理屈は、煙突のない部屋でもそのまま働きます。内外の密度が違えばふたつの静水圧直線の 傾きが変わり、傾きの違う二直線はちょうど一箇所の高さで交わります。その高さが中立面 (neutral plane) です。
開口が上下にふたつあり、面積が 、高さが なら、両開口の質量流量が等しいという 条件から が閉じた形で出てきます。
中立面より下では外気が入り、上では室内の空気が出ていきます。下の図で開口の高さと面積比、室温を 変えてみましょう。
上側の開口を大きくすると中立面がそちらへ引き寄せられます。大きな穴は小さな圧力差でも同じ流量を 通せるからです。そして室温を 283 K より下げると、青い直線が反対に傾き、二本の矢印がどちらも 反転します。
自然対流解析でこの予算はどこに記帳されるか
この計算を CFD に移すとき、引っかかる箇所が三つあります。
ひとつ目は圧力境界条件の基準高さです。開口に totalPressure = 0 をそのまま載せるのは、
中立面を境界面そのものに固定するのと同じです。実際には を差し引いた動圧で
扱ってはじめて、外側の柱の静水圧勾配が生き残ります。これを外すと、解は収束するのに流量が
数倍ずれます。
ふたつ目はBoussinesq 近似の有効範囲です。上の計算の温度差は 200 K を超えます。密度変化が 50 % を超えるので、 と線形化すると浮力を大きく 見誤ります。その境目がどこにあるかは Boussinesq が 30 K で嘘をつく場所 で整理しました。煙突問題は低マッハの圧縮性か可変密度の定式化へ進むべきです。
三つ目は定常解がひとつではないことです。ループ収支の根がふたつあるという事実は、反復計算に そのまま現れます。初期流量をゼロ近くに与えると、ソルバーは下側の根へ滑り落ちて「ドラフトなし」に 収束します。自然対流問題全般に共通するこの多重解の性質は 自然対流と Rayleigh 数 で扱った分岐 構造と同じ根を持ちます。初期値を上側の根の近くに置くか、流量を強制した状態から徐々に緩めるほうが 安全です。
フランクリンは熱を部屋に留めることには成功しました。ただしその熱は、煙突が使うはずだった予算 でした。浮力で駆動する系のどこに熱交換器を置くかを決めるときは、帳簿のどの欄からお金が出ていくのかを 先に確かめるほうが賢明です。
関連記事
役に立ったらシェアしてください。