1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

窓は外が何℃で結露する? 表面温度の式と露点の二分法で、窓の種類ごとの結露日数をTypeScriptで数える

1
Posted at

はじめに

暮らしのお金を試算するサイト「いくらかかるの研究所」に、窓の結露をチェックするツールを追加しました。

部屋の温度・湿度と窓の種類から、次の3つを出します。

  • 窓が結露し始める外の気温(しきい値)
  • 冬(11〜3月)に結露する日数(住宅省エネ基準の公的な計算方法の気象データ、1時間ごと・1年分)
  • 1月の朝の冷え込みで、結露しない湿度の上限

使っている式は2本だけです。どちらも、住宅の省エネ基準の資料にある値と式から組み立てました。

モデル:窓の室内側の表面温度

窓を1枚の板とみなし、熱が外へ一定の速さで流れている(定常・一次元)と考えると、室内側の表面温度は次の式になります。

θs = θi − U × Rsi × (θi − θo)
記号 意味 値
θi 室温 [℃] 入力
θo 外気温 [℃] 気象データ(8,760時間)
U 窓の熱貫流率 [W/(m²K)] 窓の種類ごとの値(下の表)
Rsi 室内側の表面熱伝達抵抗 [m²K/W] 0.17 − 0.04 = 0.13

Rsi は、算定方法の第三章第三節にある「外気側と室内側の表面熱伝達抵抗の和 0.17」から、外気側(外壁・外気に接する場合)の 0.04 を引いて出しました。

この表面温度が、部屋の空気の露点温度以下になると結露します。

しきい値は式を解くだけ

θs = 露点 となる外気温を θo について解くと、しきい値になります。

θo = θi − (θi − 露点) / (U × Rsi)
export const surfaceTemp = (tIn: number, tOut: number, u: number, rsi: number) => tIn - u * rsi * (tIn - tOut);

/** この外気温 [℃] 以下で窓の室内側が結露する */
export function thresholdOut(tIn: number, rh: number, u: number, rsi: number): number {
  if (!(u > 0) || !(rsi > 0)) throw new Error('熱貫流率と表面熱伝達抵抗は0より大きい値にしてください');
  return tIn - (tIn - dewPoint(tIn, rh)) / (u * rsi);
}

露点は二分法で出す

飽和水蒸気圧の式(pyhees と同じ式を TypeScript に移植したもの)は、温度 → 水蒸気圧の向きにしか書かれていません。逆向き(水蒸気圧 → 温度)は、単調増加なので二分法で解きました。

/** 水蒸気圧 [Pa] が飽和水蒸気圧と等しくなる温度(露点)[℃] */
export function dewPointFromPv(pv: number): number {
  if (!(pv > 0)) throw new Error('水蒸気圧は0より大きい値にしてください');
  let lo = -60;
  let hi = 60;
  for (let i = 0; i < 80; i++) {
    const mid = (lo + hi) / 2;
    if (pvs(mid) < pv) lo = mid;
    else hi = mid;
  }
  return (lo + hi) / 2;
}

export const dewPoint = (theta: number, rh: number): number => dewPointFromPv((pvs(theta) * rh) / 100);

範囲は −60〜60℃ で、80回の半分割で幅は 120 / 2^80 ℃ になり、倍精度の限界より十分小さくなります。室温20℃・湿度50%の露点は 9.27℃、湿度60%なら 12.01℃ でした。

湿度の上限は逆向きに

「この外気温なら、湿度何%まで結露しないか」は、表面温度の飽和水蒸気圧と室温の飽和水蒸気圧の比で出せます。

export function rhLimit(tIn: number, tOut: number, u: number, rsi: number): number {
  const ts = surfaceTemp(tIn, tOut, u, rsi);
  return Math.min(100, (pvs(ts) / pvs(tIn)) * 100);
}

結果:室温20℃・湿度50%の場合

窓 U しきい値 冬の結露日数(東京など 6地域) 冬の結露日数(盛岡など 3地域)
アルミ × 単板ガラス 6.51 7.3℃ 125日 151日
アルミ × 複層ガラス 4.07 −0.3℃ 31日 116日
アルミ樹脂複合 × Low-E複層 2.91 −8.4℃ 0日 8日
樹脂 × Low-E複層(ガス入り) 2.15 −18.4℃ 0日 0日
樹脂 × トリプル 1.60 −31.6℃ 0日 0日

熱貫流率は、日本サッシ協会の資料「建具とガラスの組み合わせによる開口部の熱貫流率」の値(付属部材なし)です。「1時間でも結露した日」を1日と数えています。

単板ガラスは、外が7.3℃を下回るだけで結露する計算です。6地域(東京・大阪など)の気象データでも、冬の5か月(151日)のうち125日が当てはまりました。

1月の日最低気温の平均(東京など 1.3℃)のとき、結露しない湿度の上限は、単板ガラスで35%、複層ガラスで53%、樹脂 × Low-E で72%でした。

実装のメモ

  • 結露日数は「8,760時間 × しきい値との比較」なので、1回の計算は一瞬です。窓の種類5つを毎回すべて計算し、選んだ窓と並べて表示しています
  • 部屋の温度・湿度は1日中一定としています。夜に暖房を止めて室温が下がる場合は、表面温度も下がるので、実際はもっと結露しやすくなります(このモデルでは扱っていません)
  • 窓の下のほうは空気が冷えやすいなど、窓の中での温度のむらも扱っていません

まとめ

  • 窓の結露は「表面温度 ≦ 露点」の判定で、表面温度は1本の式で出せる
  • 露点は飽和水蒸気圧の式を二分法で逆に解く
  • 気象データの8,760時間と比べるだけで、地域ごとの結露日数まで出せる

ツールでは、市区町村・室温・湿度・窓の種類を選んで計算できます(入力した内容は保存しません)。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?