空気線図の計算 まとめ

2021-04-06

温度と湿度から飽和水蒸気圧、水蒸気分圧、絶対湿度、エンタルピー、露点温度、湿球温度を求める

はじめに

『空気線図』を利用することで、空気の状態を知ることができます。
そしてこの『空気線図』は空調の計算に広く利用されています。

しかし空気線図を読み取るのは手間で時間がかかります。
大量の空調計算を行う場合は空気線図を自動で読み取れるプログラムが必要となってきます。

文献やインターネット上には空気線図の計算式や空気線図の計算を行えるWEBツール等が公開されていますが、計算過程やプログラムが公開されてないので、以下の課題に直面するかもしれません。

  • 計算の過程が公開されていない
  • 計算式を四則演算で解けない

空調のシミュレーションや高度な計算を行う上では、空気線図を読み取ったり、WEBツールを使うわけにはいきません。

そこで、このページでは空気線図の計算を自分で行えるように、空気線図の計算をどのように解くのかの解説と、そのプログラムを公開します。

このページでは温度と湿度を入力条件として、その他の空気の状態(飽和水蒸気圧、水蒸気分圧、絶対湿度、エンタルピー、露点温度、湿球温度)を算出する方法をまとめました。

空気線図について

空気の全圧を一定にすると、温度、湿度、水蒸気分圧、絶対湿度、エンタルピー、露点温度、湿球温度などの状態量は、そのうちの2つが定まると、他は定まります。

したがって、そのいずれか2つを座標軸として、種々の空気線図をつくることができます。

絶対湿度とエンタルピーを斜交軸とした空気線図(h-x線図)は、空調の計算や空気の状態変化の解析によく使用されます。

標準大気圧の空気線図(h-x線図)は下図のようなものです。

空気のそれぞれの状態について。

乾球温度[℃]

一般的な温度計が示す空気の温度。
気温。
温度。

相対湿度[%]

空気の水蒸気含有量を表す尺度。
ある温度の空気に含むことのできる最大水蒸気量に対する実際にその空気に含まれている水蒸気量の比を単位「%」で表したもの。
湿度。

飽和水蒸気圧[Pa]

空気が含むことができる水蒸気の量(水蒸気圧)には、最大値があります。
その最大値まで水蒸気を含んだ状態の水蒸気圧力を飽和水蒸気圧といいます。

水蒸気分圧[Pa]

空気の圧力(大気圧)は、含まれる気体のそれぞれの圧力の和であり、水蒸気分圧は空気中の水蒸気の圧力をいいます。

絶対湿度[kg/kg’]

湿り空気に含まれる水蒸気の質量を指します。
乾き空気1kg に対する量としてあらわされます。

エンタルピー[kJ/kg’]

単位質量あたりのエンタルピー(空気が持つ熱量(エネルギー))を比エンタルピーといいます。
比エンタルピーは乾き空気1kgあたり何kJのエンタルピーであるかを表します。

露点温度[℃]

空気を冷却していくと、ある温度になると飽和状態となり、結露を生じます。
このときの温度を空気の「露点温度」と言います。

湿球温度[℃]

湿球温度は、通風のある水で湿った表面において、蒸発による気化冷却によって達成されうる最低の温度のことを言います。

計算式とプログラム

ではここから本題です。
温度と湿度からどのようにその他の空気状態を求めるのかを、計算式とプログラムで示していきます。

Wexler’s formula, E.F.August(1825), A.Sprung(1888)の乾湿計係数を使って計算してます。

0℃~50℃程度で成り立つであろう計算方法です。

飽和水蒸気圧[Pa]の求め方

温度から飽和水蒸気圧を求める方法として、一般的に使われているのが空気調和衛生工学便覧に書かれているウェクセラーの式です。

t:乾球温度[℃]
T:絶対温度[K], =t+273.15
Ps:飽和水蒸気圧[Pa]

液体の水と接する場合(0.01℃以上):
ln(Ps)=
0.58002206×104/T
+0.13914993×10
0.48640239×101T
+0.41764768×104T2
0.14452093×107T3
+0.65459673×10ln(T)

この式をJavaScriptでそのままプログラム化すると以下のコードになります。

function temp2ps(temp){
    let T=temp+273.15;//温度⇒絶対温度
    let ps=Math.exp(
        -0.58002206*10**4/T
        +0.13914993*10
        -0.48640239*10**(-1)*T
        +0.41764768*10**(-4)*T**2
        -0.14452093*10**(-7)*T**3
        +0.65459673*10*Math.log(T)
    );
    return ps;
}
console.log(temp2ps(20));//20℃の時の飽和水蒸気圧[Pa]

このコードを実行すると、、、

2338.8037000739814

ウェクセラーの式により、温度から飽和水蒸気圧が計算できました。

水蒸気分圧[Pa]の求め方

水蒸気分圧は、上で求めた飽和水蒸気圧を相対湿度で案分するだけで計算できます。

Ps:飽和水蒸気圧[Pa]
P:水蒸気分圧[Pa]
φ:相対湿度[%]

P=Ps×φ100

絶対湿度[kg/kg’]の求め方

絶対湿度は、水蒸気分圧から計算できます。

P:水蒸気分圧[Pa]
x:絶対湿度[kg/kg’]
Patm:大気圧[Pa]

x=0.622×PPatmP

エンタルピー[kJ/kg’]の求め方

比エンタルピーは、温度と絶対湿度から計算できます。

t:乾球温度[℃]
x:絶対湿度[kg/kg’]
h:比エンタルピー[kJ/kg’]

h=1.006t+(1.86t+2501)x

露点温度[℃]の求め方

露点温度は、上に出てきた式を組み合わせても、y=f(x) の形で求めることができません。

ここで諦めてしまった人も多いのではないでしょうか。

露点温度は、その空気の水蒸気分圧を求め、その水蒸気分圧と同じ飽和水蒸気圧となる温度を探索することで算出できます。

以下のプログラムでは二分法を使って15℃50%の空気の露点温度を求めています。

function temp2ps(temp){
    let T=temp+273.15;//温度⇒絶対温度
    let ps=Math.exp(-5800.2206/T+1.3914993-0.048640239*T+(0.000041764768*T)*T-((0.000000014452093*T)*T)*T+6.5459673*Math.log(T));
    return ps;
}

//15℃50%の露点温度を求める
let temp=15;
let rh=50;

let p=temp2ps(temp)*rh/100;//水蒸気分圧

let t_min=0;
let t_max=temp;
let t_mid=(t_max+t_min)/2;

while (t_max-t_min > 0.0001) {
    let wps=temp2ps(t_mid);
    if(wps>p){
        t_max=t_mid;
    }else{
        t_min=t_mid;
    }
    t_mid=(t_max+t_min)/2;
}
console.log("露点温度:"+t_mid.toFixed(3)+"℃");

結果

露点温度:4.672

湿球温度[℃]の求め方

湿球温度は露点温度同様、上に出てきた式を組み合わせても、y=f(x) の形で求めることができません。

空調のシミュレーション上、湿球温度を求めることは多いはずです。

湿球温度を求めるための式として、E.F.August(1825)は,湿球面の蒸発で失う熱量と周囲より取得する熱量との収支平衡が孤立閉塞系内の等圧断熱過程で達成するとし,次の式を示しています。

ew:tw[Pa]
e:[Pa]
A:湿
td:[]
tw:湿[]
p:[Pa]

ewe=Ap(tdtw)

その後しばらくして、A.Sprung(1888)によりSprungの乾湿計係数が提示されています。

A:6.62×104K1

温度と湿度から水蒸気分圧や飽和水蒸気圧を求められるので、上記式が成り立つような湿球温度を探索することで、湿球温度が求められます。

以下のプログラムでは二分法を使って15℃50%の空気の湿球温度を求めています。

const Patm=101325;//大気圧[Pa]

function temp2ps(temp){
    let T=temp+273.15;//温度⇒絶対温度
    let ps=Math.exp(-5800.2206/T+1.3914993-0.048640239*T+(0.000041764768*T)*T-((0.000000014452093*T)*T)*T+6.5459673*Math.log(T));
    return ps;
}

//15℃50%の湿球温度を求める
let temp=15;
let rh=50;

let p=temp2ps(temp)*rh/100;//水蒸気分圧

let tw_min=-20;
let tw_max=temp;
let tw_mid=(tw_max+tw_min)/2;

while (tw_max-tw_min > 0.0001) {
    let ew=temp2ps(tw_mid);
    let sprung=ew-p-6.62*Patm*(temp-tw_mid)/10000;
    if(sprung>0){
        tw_max=tw_mid;
    }else{
        tw_min=tw_mid;
    }
    tw_mid=(tw_max+tw_min)/2;
}
console.log("湿球温度:"+tw_mid.toFixed(3)+"℃");

結果

湿球温度:9.732

ここまでで、温度と湿度から飽和水蒸気圧、水蒸気分圧、絶対湿度、エンタルピー、露点温度、湿球温度を求める方法を解説しました。

次に、温度湿度から一気に全てのその他空気状態を求めるプログラムをまとめておきます。

温度と湿度から他の状態を算出するプログラムまとめ

コード

const Patm=101325;//大気圧[Pa]

function temp2ps(temp){
    let T=temp+273.15;//温度⇒絶対温度
    let ps=Math.exp(-5800.2206/T+1.3914993-0.048640239*T+(0.000041764768*T)*T-((0.000000014452093*T)*T)*T+6.5459673*Math.log(T));
    return ps;
}

//15℃50%の空気状態を求める
let temp=15;
let rh=50;

let ps=temp2ps(temp);
console.log("飽和水蒸気圧:"+ps.toFixed(2)+"Pa");
let p=ps*rh/100;
console.log("水蒸気分圧:"+p.toFixed(2)+"Pa");
let x=0.622*(p)/(Patm-p);
console.log("絶対湿度"+(x*1000).toFixed(2)+"g/kg'");
let h=1.006*temp+(1.86*temp+2501)*x;
console.log("エンタルピー:"+h.toFixed(2)+"kJ/kg'");

let t_min=-20;
let t_max=temp;
let t_mid=(t_max+t_min)/2;
while (t_max-t_min > 0.0001) {
    let wps=temp2ps(t_mid);
    if(wps>p){
        t_max=t_mid;
    }else{
        t_min=t_mid;
    }
    t_mid=(t_max+t_min)/2;
}
console.log("露点温度:"+t_mid.toFixed(2)+"℃");

let tw_min=-20;
let tw_max=temp;
let tw_mid=(tw_max+tw_min)/2;
while (tw_max-tw_min > 0.0001) {
    let ew=temp2ps(tw_mid);
    let sprung=ew-p-6.62*Patm*(temp-tw_mid)/10000;
    if(sprung>0){
        tw_max=tw_mid;
    }else{
        tw_min=tw_mid;
    }
    tw_mid=(tw_max+tw_min)/2;
}
console.log("湿球温度:"+tw_mid.toFixed(2)+"℃");

結果

飽和水蒸気圧:1705.45Pa
水蒸気分圧:852.72Pa     
絶対湿度5.28g/kg'        
エンタルピー:28.44kJ/kg'
露点温度:4.67℃
湿球温度:9.73

おわりに

温度と湿度から飽和水蒸気圧、水蒸気分圧、絶対湿度、エンタルピー、露点温度、湿球温度を具体的に求める方法を示しました。

コピペでそのまま利用できると思うので、空調の計算やシミュレーションにご活用ください。

参考