飽和水蒸気の物性計算-温度基準(30.1~200℃) 温度T= 45 ℃ 水蒸気圧 p 水の比容積 v' 水蒸気の比容積v" H280607 0.09765 kgf/cm2 abs 0.0010099 m3/kg 15.23253 m3/kg 水の比エンタルピ- h’ 45.0 kcal/kg 水蒸気の比エンタルピ- h” 617.0 kcal/kg 蒸発潜熱r 572.0 kcal/kg Sub スプライン補間() '1.メインルーチン '1.1変数の定義 Dim U, NN, V, X(), Y() As Variant ReDim X(20) ReDim Y(20) NN = 18 '補間基準データX(),Y()の最大番号 '1.2温度Tに対する水蒸気圧の補間計算 '水蒸気の飽和圧力データX(),Y()の設定 'X() ℃ Y() p kg/cm2 abs---機械工学便覧p11-52 X(1) = 30: Y(1) = 0.043251 X(2) = 40: Y(2) = 0.075204 X(3) = 50: Y(3) = 0.12578 X(4) = 60: Y(4) = 0.20313 X(5) = 70: Y(5) = 0.31776 X(6) = 80: Y(6) = 0.48294 X(7) = 90: Y(7) = 0.71491 X(8) = 100: Y(8) = 1.03323 X(9) = 110: Y(9) = 1.4609 X(10) = 120: Y(10) = 2.0246 X(11) = 130: Y(11) = 2.7546 X(12) = 140: Y(12) = 3.685 X(13) = 150: Y(13) = 4.8538 X(14) = 160: Y(14) = 6.3025 X(15) = 170: Y(15) = 8.0764 X(16) = 180: Y(16) = 10.224 X(17) = 190: Y(17) = 12.799 X(18) = 200: Y(18) = 15.855 U = Cells(4, 3) '補間する温度の読込-- 番号修正要 Call Spline(U, NN, V, X(), Y()) 'subプロシージャ"Spline"の呼出 Cells(4, 7) = V 'Tに対して計算した補間値 '1.3温度Tに対する水の比容積の補間計算 '水の比容積v'データX(),Y()の設定 'X() ℃ Y() v'm3/kg---機械工学便覧p11-52 X(1) = 30: Y(1) = 0.0010043 X(2) = 40: Y(2) = 0.0010078 X(3) = 50: Y(3) = 0.0010121 X(4) = 60: Y(4) = 0.0010171 X(5) = 70: Y(5) = 0.0010229 X(6) = 80: Y(6) = 0.0010292 X(7) = 90: Y(7) = 0.0010361 X(8) = 100: Y(8) = 0.0010437 X(9) = 110: Y(9) = 0.0010519 X(10) = 120: Y(10) = 0.0010606 X(11) X(12) X(13) X(14) X(15) X(16) X(17) X(18) = = = = = = = = 130: 140: 150: 160: 170: 180: 190: 200: Y(11) Y(12) Y(13) Y(14) Y(15) Y(16) Y(17) Y(18) = = = = = = = = 0.00107 0.0010801 0.0010908 0.0011022 0.0011145 0.0011275 0.0011415 0.0011565 U = Cells(4, 3) '補間する温度の読込 Call Spline(U, NN, V, X(), Y()) 'subプロシージャ"Spline"の呼出 Cells(6, 7) = V 'Tに対して計算した補間値 '1.4温度Tに対する水蒸気の比容積の補間の計算 '水蒸気の比容積v”データX(),Y()の設定 'X() ℃ Y() v”m3/kg---機械工学便覧p11-52 X(1) = 30: Y(1) = 32.929 X(2) = 40: Y(2) = 19.546 X(3) = 50: Y(3) = 12.046 X(4) = 60: Y(4) = 7.6785 X(5) = 70: Y(5) = 5.0463 X(6) = 80: Y(6) = 3.4091 X(7) = 90: Y(7) = 2.3613 X(8) = 100: Y(8) = 1.673 X(9) = 110: Y(9) = 1.2099 X(10) = 120: Y(10) = 0.89152 X(11) = 130: Y(11) = 0.66814 X(12) = 140: Y(12) = 0.50849 X(13) = 150: Y(13) = 0.39245 X(14) = 160: Y(14) = 0.30676 X(15) = 170: Y(15) = 0.24255 X(16) = 180: Y(16) = 0.1938 X(17) = 190: Y(17) = 0.15632 X(18) = 200: Y(18) = 0.12716 U = Cells(4, 3) '補間する温度の読込 Call Spline(U, NN, V, X(), Y()) 'subプロシージャ"Spline"の呼出 Cells(8, 7) = V 'Tに対して計算した補間値 '1.5温度Tに対する水の比エンタルピ-の補間の計算 '水の比エンタルピ- h’データX(),Y()の設定 'X() ℃ Y() X(1) = 30: Y(1) X(2) = 40: Y(2) X(3) = 50: Y(3) X(4) = 60: Y(4) X(5) = 70: Y(5) X(6) = 80: Y(6) h’kcal/kg---機械工学便覧p11-52 = 30.01 = 40# = 49.98 = 59.97 = 69.98 = 79.99 X(7) = 90: Y(7) = 90.03 X(8) = 100: Y(8) = 100.09 X(9) = 110: Y(9) = 110.18 X(10) = 120: Y(10) = 120.31 X(11) = 130: Y(11) = 130.48 X(12) = 140: Y(12) = 140.71 X(13) = 150: Y(13) = 150.99 X(14) = 160: Y(14) = 161.33 X(15) = 170: Y(15) = 171.76 X(16) = 180: Y(16) = 182.27 X(17) = 190: Y(17) = 192.87 X(18) = 200: Y(18) = 203.59 U = Cells(4, 3) '補間する温度の読込 Call Spline(U, NN, V, X(), Y()) 'subプロシージャ"Spline"の呼出 Cells(10, 7) = V 'Tに対して計算した補間値 '1.6温度Tに対する水蒸気の比エンタルピ- の補間の計算 '水蒸気の比エンタルピ- h”データX(),Y()の設定 'X() ℃ Y() h”kcal/kg---機械工学便覧p11-52 X(1) = 30: Y(1) = 610.6 X(2) = 40: Y(2) = 614.9 X(3) = 50: Y(3) = 619.1 X(4) = 60: Y(4) = 623.3 X(5) = 70: Y(5) = 627.4 X(6) = 80: Y(6) = 631.5 X(7) = 90: Y(7) = 635.3 X(8) = 100: Y(8) = 639.2 X(9) = 110: Y(9) = 642.8 X(10) = 120: Y(10) = 646.3 X(11) = 130: Y(11) = 649.6 X(12) = 140: Y(12) = 652.8 X(13) = 150: Y(13) = 655.7 X(14) = 160: Y(14) = 658.4 X(15) = 170: Y(15) = 660.9 X(16) = 180: Y(16) = 663.1 X(17) = 190: Y(17) = 665# X(18) = 200: Y(18) = 666.6 U = Cells(4, 3) '補間する温度の読込 Call Spline(U, NN, V, X(), Y()) 'subプロシージャ"Spline"の呼出 Cells(12, 7) = V 'Tに対して計算した補間値 '1.7温度Tに対する水蒸気の比エンタルピ-の補間の計算 '水蒸気の比エンタルピ-rデータX(),Y()の設定 'X() ℃ Y() X(1) = 30: Y(1) X(2) = 40: Y(2) X(3) = 50: Y(3) r kcal/kg---機械工学便覧p11-52 = 580.6 = 574.9 = 569.1 X(4) = 60: Y(4) = 563.3 X(5) = 70: Y(5) = 557.4 X(6) = 80: Y(6) = 551.5 X(7) = 90: Y(7) = 545.3 X(8) = 100: Y(8) = 539.1 X(9) = 110: Y(9) = 532.6 X(10) = 120: Y(10) = 526# X(11) = 130: Y(11) = 519.1 X(12) = 140: Y(12) = 512.1 X(13) = 150: Y(13) = 504.7 X(14) = 160: Y(14) = 497.1 X(15) = 170: Y(15) = 489.1 X(16) = 180: Y(16) = 480.8 X(17) = 190: Y(17) = 472.1 X(18) = 200: Y(18) = 463 U = Cells(4, 3) '補間する温度の読込 Call Spline(U, NN, V, X(), Y()) 'subプロシージャ"Spline"の呼出 Cells(14, 7) = V 'Tに対して計算した補間値 End Sub 'subプロシージャ"Spline" Sub Spline(U, NN, V, ByRef X() As Variant, ByRef Y() As Variant) '1.係数A,B,D,F,G,Hの計算 Dim A1() As Double ReDim A1(NN) As Double Dim A2() As Double ReDim A2(NN) As Double Dim B1() As Double ReDim B1(NN) As Double Dim B2() As Double ReDim B2(NN) As Double Dim D() As Double ReDim D(NN) As Double Dim F() As Double ReDim F(NN) As Double Dim G() As Double ReDim G(NN) As Double Dim H() As Double ReDim H(NN) As Double Dim j As Variant For j = 1 To NN - 1 If j = 2 Then Dim k As Variant k=2 B1(2) = (Y(2) - Y(1)) / (X(2) - X(1)) A1(2) = (Y(3) - Y(2)) / (X(3) - X(2)) - B1(2) A2(2) = A1(2) / (X(3) - X(1)) B2(2) = B1(2) - A2(2) * (X(2) + X(1)) D(1) = 2 * A2(2) * X(1) + B2(2) D(2) = 2 * A2(2) * X(2) + B2(2) F(1) = D(1) * (X(2) - X(1)) G(1) = 3 * Y(2) - D(2) * (X(2) - X(1)) - 3 * Y(1) - 2 * F(1) H(1) = Y(2) - Y(1) - F(1) - G(1) B1(3) = (Y(3) - Y(2)) / (X(3) - X(2)) A1(3) = (Y(4) - Y(3)) / (X(4) - X(3)) - B1(3) A2(3) = A1(3) / (X(4) - X(2)) B2(3) = B1(3) - A2(3) * (X(3) + X(2)) D(3) = 2 * A2(3) * X(3) + B2(3) F(2) = D(2) * (X(2) - X(1)) G(2) = 3 * Y(3) - D(3) * (X(3) - X(2)) - 3 * Y(2) - 2 * F(2) H(2) = Y(3) - Y(2) - F(2) - G(2) ElseIf j >= 3 And j < NN - 1 Then For k = 3 To NN - 1 B1(k) = (Y(k) - Y(k - 1)) / (X(k) - X(k - 1)) A1(k) = (Y(k + 1) - Y(k)) / (X(k + 1) - X(k)) - B1(k) A2(k) = A1(k) / (X(k + 1) - X(k - 1)) B2(k) = B1(k) - A2(k) * (X(k) + X(k - 1)) D(k) = 2 * A2(k) * X(k) + B2(k) F(k) = D(k) * (X(k + 1) - X(k)) G(k) = 3 * Y(k + 1) - D(k + 1) * (X(k + 1) - X(k)) - 3 * Y(k) - 2 * F(k) H(k) = Y(k + 1) - Y(k) - F(k) - G(k) Next k ElseIf j = NN - 1 Then k = NN - 1 B1(k) = (Y(k) - Y(k - 1)) / (X(k) - X(k - 1)) A1(k) = (Y(k + 1) - Y(k)) / (X(k + 1) - X(k)) - B1(k) A2(k) = A1(k) / (X(k + 1) - X(k - 1)) B2(k) = B1(k) - A2(k) * (X(k) + X(k - 1)) k = NN D(k) = 2 * A2(k - 1) * X(k) + B2(k - 1) k=k-1 F(k) = D(k) * (X(k + 1) - X(k)) G(k) = 3 * Y(k + 1) - D(k + 1) * (X(k + 1) - X(k)) - 3 * Y(k) - 2 * F(k) H(k) = Y(k + 1) - Y(k) - F(k) - G(k) End If Next j '2.補間点Vの計算 Dim W As Variant '補間点Uがx(j)より小さくなるjを見つける j = NN Do While (X(j) - U) >= 0 j=j-1 Loop W = (U - X(j)) / (X(j + 1) - X(j)) V = Y(j) + W * (F(j) + W * (G(j) + W * H(j))) End Sub
© Copyright 2024 ExpyDoc