相対湿度から湿球示度を逆算する VBE コード
【2006/12/01】
Web 上に公開された記事をどう引用して何に使うかは、法律や利害関係に抵触しない限り、個人の自由である。正味な話、私(おうる)も勝手に公開している以上、何の文句も言えないのは当然の話である。言えないついでにお節介を企ててみた。
因みに Javascript 版では実装済み。(というか、今回のは Javascript 版の function を VBE にこつこつと書き換えただけのもの)
Private Function 湿度2湿球(気温 As Single, 相対湿度 As Single, 大気圧 As Single, 通風条件 As Boolean) ' 相対湿度から乾湿計の湿球示度を計算 ' Javascript 版より移植 20061201 ' ' http://d.hatena.ne.jp/owl/19760704 ' http://www010.upp.so-net.ne.jp/catwalk/humid/ ' ' ※「通風条件」とは、通風計を使用するか否か ' 家庭用乾湿計の場合、このパラメータは false もしくは未入力でよい ' If ((大気圧 > 2000) Or (大気圧 < 300)) Then 気圧 = 1013.25 Else 気圧 = 大気圧 End If If 通風条件 = True Then k = 0.5 m = 755 Else k = 0.0008 m = 1 End If a = 7.5 b = 237.3 飽和乾 = 6.11 * 10 ^ (7.5 * 気温 / (237.3 + 気温)) 蒸気圧 = 飽和乾 * 相対湿度 / 100 露点 = b / ((a / (Log(蒸気圧 / 6.11) / Log(10#))) - 1) ' 気温と露点から計算する場合 ' ※ この上 2行の数式をコメントアウトし、代わりに下の 2式を使用する。 ' ※ 冒頭行の Function 湿度2湿球() 内のパラメータも書き換えること! ' (「相対湿度」→「露点」) ' 蒸気圧 = 6.11 * 10 ^ (a * 露点 /(b + 露点)) ' 現在の水蒸気圧 ' 相対湿度 = 蒸気圧 / 飽和乾 * 100 ' 相対湿度 eet = 0 ' 本当はやりたくなかったんだけどバイナリサーチ。 tt1 = -273.15 tt2 = 気温 For cc = 1 To 1000 ' 永久ループ → フリーズが恐いので for 文 tt = (tt1 + tt2) / 2 ee = 6.11 * 10 ^ (a * tt / (b + tt)) eet = ee - k * 気圧 * (気温 - tt) / m If 蒸気圧 > eet Then tt1 = tt Else tt2 = tt End If If Abs(蒸気圧 - eet) < 0.0000001 Then 'MsgBox ("Loop count = " & cc) ' メンテ用 cc = 1000 End If Next 飽和湿 = ee 湿度2湿球 = tt End Function
(ここを右クリックで以上のモジュールを含む「VBE_humid_100.bas」テキストファイルのダウンロードが可能。)
例によって凍結条件はばっさり省略。こちらも動作内容に関する保証はとりかねるが、その点を御理解頂けるのであれば適宜改変して御使用いただきたいと思う。
「要するに何をやっているのか」は、コードを読めば概ね御理解頂けるものと思う。「やっていること」のほうがむしろ知りたい、というかたには、上掲リンク先(神大の先生が作成したプログラム)のドキュメントが参考になる。
「何をやっているのなんてどうでもいいから結果をさくっと知りたい」という方には、VBE 版よりも Javascript 版 および PHP 版 をお奨めする*1。
このページ全体を表示するには、ここをクリック。
*1:当初、逆算機能を搭載しているのは Javascript 版だけだったのだが 2008/03 に PHP 版(v2.0〜)でも他パラメータから湿球示度を逆算できるようになった(というか、できるようにした)。