×

SaunaFlow — ロウリュ体感温度シミュレータ (0次元・室内平均)

作成日: 2026-05-14 / 作者: ZEAL-BOOT-CAMP

— 熱流束(肌側)—
計算式・前提(出典リンク付き)
グラフの用語: 対流 q_conv ? 放射 q_rad ? 潜熱 q_lat ? 体感 Humidex ?
※ 0次元集中定数モデル。上下成層は無視。CFD/実測でキャリブレーション係数を後付けする想定。
記法: ∝X 比例 ∝1/X 反比例 ∝√X 平方根 ∝X^⅔ 2/3 乗 ∝X⁴ 4乗 ∝exp(X) 指数 線形差 ΔX に比例

図 A — 依存グラフ(何が何に効くか)

スライダー(橙)→ 派生量(灰)→ 出力(青)。エッジに依存の関数形を記載。例: V を上げると m_air ∝ V で熱容量 mCp が大きくなり、温度時定数 τ_T = mCp/(K_v+K_w) が増えて応答が鈍る。
flowchart LR
  classDef inp fill:#3a2a18,stroke:#ffb96b,color:#ffb96b,stroke-width:1.5px;
  classDef der fill:#262626,stroke:#666,color:#ddd;
  classDef out fill:#172838,stroke:#80b8ff,color:#80b8ff,stroke-width:1.5px;

  V["V
室容積"]:::inp T0["T₀
初期気温"]:::inp RH0["RH₀"]:::inp mw["m_w
水量"]:::inp tev["t_ev
蒸発時間"]:::inp Qh["Q_h
ヒーター"]:::inp ACH["ACH
換気"]:::inp Tw["T_w
壁温"]:::inp Ts["T_s
肌温"]:::inp vAir["v
風速"]:::inp hc["h_c
対流係数
(v 駆動 or 手動)"]:::der Tr["T_r
放射壁温"]:::inp m_air["m_air
= P·V/(R·T₀ₖ)"]:::der evapRate["evapRate
= m_w/t_ev"]:::der Aw["A_wall
= 6·V^⅔"]:::der Kw["K_w = 10·A_wall"]:::der Kv["K_v = (ACH/3600)·V·C_p"]:::der mCp["mCp = m_air·C_p"]:::der tau["τ_T = mCp/(K_v+K_w)
温度応答の時定数"]:::der Teq["T_eq
= (Q_h+K_v·T_out+K_w·T_w)/(K_v+K_w)
定常気温"]:::der esat["e_sat(T_c)
Tetens 指数式"]:::der wsat["w_sat(T_c)
飽和絶対湿度"]:::der wskin["w_skin = w_sat(T_s)"]:::der Tc(["T_c 気温"]):::out w(["w 絶対湿度"]):::out RH(["RH"]):::out H(["Humidex
体感温度"]):::out qconv(["q_conv 対流"]):::out qrad(["q_rad 放射"]):::out qlat(["q_lat 潜熱"]):::out qtot(["q_total"]):::out V -->|"∝V"| m_air T0 -->|"∝1/T₀ₖ"| m_air V -->|"∝V^⅔"| Aw Aw --> Kw V -->|"∝V"| Kv ACH -->|"∝ACH"| Kv m_air --> mCp mCp --> tau Kv --> tau Kw --> tau Qh --> Teq Kv --> Teq Kw --> Teq Tw -->|"線形"| Teq tau --> Tc Teq --> Tc mw -->|"∝m_w"| evapRate tev -->|"∝1/t_ev"| evapRate evapRate -->|"投入 ∝1/V"| w RH0 -->|"∝RH₀"| w T0 -->|"∝exp(T₀)"| w ACH -->|"希釈 ∝ACH"| w Tc --> esat esat -->|"∝exp(T_c)"| wsat wsat -->|"上限制限"| w Tc --> RH w --> RH esat --> RH Tc -->|"線形"| H w -->|"e_pa 経由"| H vAir -->|"Mitchell ∝v^0.6"| hc hc -->|"∝h_c"| qconv Tc -->|"線形差"| qconv Ts -->|"線形差"| qconv Tr -->|"∝T_rₖ⁴"| qrad Ts -->|"∝-T_sₖ⁴"| qrad hc -->|"∝h_c"| qlat w -->|"線形差"| qlat Ts --> wskin wskin -->|"-線形差"| qlat qconv --> qtot qrad --> qtot qlat --> qtot

図 B — 1タイムステップの解き順(逐次)

dt = 0.5 s、t = 0〜300 s。各ステップで既知 (T_c, w) から新しい (T_c, w) を逐次更新。温度更新は 半陰解法(分母に 1+dt·(K_v+K_w)/mCp)で大きい dt でも安定。蒸発潜熱はストーンが供給する前提で、空気からは奪わない(凝縮分のみ空気に戻る)。
flowchart TD
  classDef step fill:#262626,stroke:#888,color:#ddd,text-align:left;
  classDef io fill:#3a2a18,stroke:#ffb96b,color:#ffb96b;

  S0["t = i·dt
既知: T_c, w"]:::io S1["① 蒸発で水蒸気投入
dm = (t<t_ev) ? evapRate·dt : 0
w' = w + dm/m_air"]:::step S2["② 飽和制限・凝縮
w_sat = w_sat(T_c) ← Tetens
if w' > w_sat:
  condensed = (w'−w_sat)·m_air
  w' = w_sat"]:::step S3["③ 温度更新(半陰解法)
Q_in = Q_h + condensed·L/dt
T_c ← (T_c + dt·(Q_in + K_v·T_out + K_w·T_w)/mCp)
      / (1 + dt·(K_v + K_w)/mCp)"]:::step S4["④ 換気で湿度希釈
w ← w' − ach·(w' − w_out)·dt
(陽解法・1次オイラー)"]:::step S5["⑤ 湿度状態量
e_pa = w·P/(0.622 + w)
RH = 100·e_pa/e_sat(T_c)
Humidex = T_c + 0.5555·(e_pa/100 − 10)"]:::step S6["⑥ 肌側熱流束
q_conv = h_c·(T_c − T_s) 【線形】
q_rad = εσ(T_rₖ⁴ − T_sₖ⁴) 【4乗】
q_lat = (h_c/C_p)·L·(w − w_skin_sat) 【線形差】"]:::step S7["i ← i+1
次ステップへ"]:::io S0 --> S1 --> S2 --> S3 --> S4 --> S5 --> S6 --> S7 S7 -.->|"i < N"| S0
読み方のコツ:
応答の速さを知りたい → 図 A の τ_T 経路(V↑ で鈍く、ACH↑/壁面積↑ で速い)
到達温度を知りたい → 図 A の T_eq 経路(Q_h↑ で上、ACH↑ で下に引っ張る)
RH ピークのタイミング → ② で水蒸気が増え、③ で T_c が上がると e_sat が指数で増えて RH は下がる ⇒ 投入直後にピーク
放射の効き方T_r⁴ で非常に強い。T_s=35℃ 基準で T_r を 90→120℃ にすると q_rad は約 (393⁴−308⁴)/(363⁴−308⁴) ≈ 1.78 倍に跳ねる