飽和水蒸気圧の計算 Delphi (2017/05/30)
ヴァイサラの資料の計算式を使用しています。
unit VaisalaUnit; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Math; type TForm2 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); var T, S, Pws, Ews, x : double; Tdp, H, Pw, Td, A : double; begin // 25℃ = 31.69hPa // 100℃(水の沸点)における飽和水蒸気圧は 1013.25 hPa // 温度 [C] Td := 25.0; // 絶対温度 [K] T := Td + 273.15; // 相対湿度 [%RH] H := 50.0; // 飽和水蒸気圧 [hPa] // Vaisala -------------------------------------------------------------- S := T - ( -0.12743214E-7 * Power(T, 3) + 0.13746454E-4 * Power(T, 2) + -0.46094296E-2 * Power(T, 1) + 0.49313580 * Power(T, 0) ); //Edit1.Text := FloatToStr(S) + ' [hPa]'; Pws := Exp( -0.14452093E-7 * Power(S, 3) + 0.41764768E-4 * Power(S, 2) + -0.48640239E-1 * Power(S, 1) + 0.13914993E01 * Power(S, 0) + -0.58002206E04 * Power(S, -1)+ 6.5459673 * Ln(S) ) / 100; Edit1.Text := FloatToStr(Pws) + ' [hPa]'; // --------------------------------------------------------------------------- // [hPa]Tetens(テテンス)の式 ----------------------------------------------- Ews := 6.1078 * Power(10, 7.5 * Td / (Td + 237.3)); Edit2.Text := FloatToStr(Ews) + ' [hPa]'; // --------------------------------------------------------------------------- // Wagner(ワグナー)の式 ---------------------------------------------------- x := 1 - (Td + 273.15) / 647.3; Ews := 221200 * Exp(( -7.76451 * x + 1.45838 * Power(x, 1.5) + -2.7758 * Power(x, 3) + -1.23303 * Power(x, 6)) / (1 - x)); Edit3.Text := FloatToStr(Ews) + ' [hPa]'; // --------------------------------------------------------------------------- // 水蒸気圧 [hPa] Pw := Pws * H / 100; // 露点温度 [℃DP] Tdp := 237.30 / (7.5000 / Log10(Pw / 6.1078) - 1); Edit4.Text := FloatToStr(Tdp) + ' [hPa]'; // 容積絶対湿度 [g/m3] A := 216.679 * Pw / T; Edit5.Text := FloatToStr(A) + ' [g/m3]'; // 混合比 [g/kg] x := 621.9907 * Pw / (1013.25 - Pw); // 重量絶対湿度 [kg/kg(DA)] Edit6.Text := FloatToStr(x / 1000) +' [g/kg]'; // エンタルピ [kj/kg] h := Td * (1.01 + 0.00189 * x) + 2.5 * x; Edit7.Text := FloatToStr(h) + ' [kj/kg]'; end; end.