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 + -
显示快捷键?