calc_rh.cpp
来自「使用4中计算相对湿度」· C++ 代码 · 共 130 行
CPP
130 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include "CALC_RH.h"
#include "formula1.h"
#include "formula2.h"
#include "formula3.h"
#include "formula4.h"
#include "about.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
double Tg,Ts,dq,pq,pqb;
double dq1,dq2,dq3,dq4,dq5;
extern double Ai;
double Ew,Etw,e,logEw,logEtw;
double ts,tg,ft1,ft2;
double KA=0.000667;
double KB=101300;
double C1=-5800.2206;
double C2=1.3914993;
double C3=-0.04860239;
double C4=0.000041764768;
double C5=-0.000000014452093;
double C6=6.5459673;
double m1=23.1964;
double m2=3816.44;
double m3=-46.13;
double lnPs,lnPg,Ps,Pg;
double RH1,RH2,RH3,RH4;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Text="";
Edit2->Text="";
Edit3->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Form1->Hide();
if(RadioButton1->Checked==true) Form2->Show();
else if (RadioButton2->Checked==true) Form3->Show();
else if (RadioButton3->Checked==true) Form4->Show();
else if (RadioButton4->Checked==true) Form5->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1Click(TObject *Sender)
{
Form1->Hide();
Form6->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(Edit1->Text!="") tg=StrToFloat(Edit1->Text);
if(Edit2->Text!="") ts=StrToFloat(Edit2->Text);
Tg=tg+273.15;
Ts=ts+273.15;
//tg和ts分别为干球、湿球温度(℃),输入值
//Tg和Ts分别为干球、湿球温度(K),输入值+273.15即可得到
if(Tg<Ts) Edit3->Text="输入有误(干球温度>湿球温度!)";
else
{
if(RadioButton1->Checked==true)
{
dq1=166.31*pow((647.3-Ts),0.38)+1.01*(Tg-Ts);
dq2=exp(23.1964-(3816.44)/(Ts-46.13));
dq3=1.01*101300*(Tg-Ts);
dq4=1.88*(Tg-Ts)+267.38*pow((647.3-Ts),0.38);
dq5=101300-exp(23.1964-3816.44/(Ts-46.13));
dq=(dq1*dq2-dq3)/(dq4*dq5);
pq=101300*dq/(0.622+dq);
pqb=exp(23.1964-(3816.44/(Tg-46.13)));
RH1=pq/pqb*100;
Edit3->Text=FloatToStrF(RH1,0,5,5)+"%";
}
else if(RadioButton2->Checked==true)
{
logEw =10.79574*(1-273.16/Tg)-5.02800*log(Tg/273.16)+1.50475*0.0001*(1-pow(10,(-8.2969*(Tg/273.16-1))))+0.42873*0.001*pow(10,(4.76955*(1-273.16/Tg))-1)+0.78614;
logEtw=10.79574*(1-273.16/Ts)-5.02800*log(Ts/273.16)+1.50475*0.0001*(1-pow(10,(-8.2969*(Ts/273.16-1))))+0.42873*0.001*pow(10,(4.76955*(1-273.16/Ts))-1)+0.78614;
Ew=pow(10,logEw);
Etw=pow(10,logEtw);
e=Etw-Ai*0.001*1013*(Tg-Ts);
RH2=e/Ew*100;
Edit3->Text=FloatToStrF(RH2,0,5,5)+"%";
}
else if(RadioButton3->Checked==true)
{
lnPs=C1/Ts+C2+C3*Ts+C4*Ts*Ts+C5*Ts*Ts*Ts+C6*log(Ts);
lnPg=C1/Tg+C2+C3*Tg+C4*Tg*Tg+C5*Tg*Tg*Tg+C6*log(Tg);
Ps= exp(lnPs);
Pg= exp(lnPg);
pq=Ps-KA*KB*(Tg-Ts);
RH3=(pq/Pg)*100;
Edit3->Text=FloatToStrF(RH3,0,5,5)+"%";
}
else if(RadioButton4->Checked==true)
{
lnPs=C1/Ts+C2+C3*Ts+C4*Ts*Ts+C5*Ts*Ts*Ts+C6*log(Ts);
//lnPs=m1-(m2/(Ts+m3));
lnPg=m1-(m2/(Tg+m3));
Ps= exp(lnPs);
Pg= exp(lnPg);
pq=Ps-KA*KB*(Tg-Ts);
RH4=(pq/Pg)*100;
Edit3->Text=FloatToStrF(RH4,0,5,5)+"%";
}
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?