相対湿度から湿球示度を逆算する 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〜)でも他パラメータから湿球示度を逆算できるようになった(というか、できるようにした)。