相对湿度计算

 

这篇文章起因是因为工作的需要,我们一般用的都是干湿球温度计(psychrometer)很早就知道相对湿度是空气中水蒸气分压和饱和水蒸气压力之间的比值,但是一直不知道怎么计算的。常规的都是测出干球和湿球的温度值,然后通过查干湿球对照表得出结论;这次查了一下资料,最大的感触是在学术类文章上百度不如google,我先用百度查了一下相关词,确实国内有人写过类似的文章,但是你也知道,对于没钱的人想看到清晰地原版资料是多么的困难,我下了一个资料,被他的推论公式搞得云里雾里(很多符号都看不清),让后我果断选择了google去搜索外文资料,很快就找到了,并且很权威很官方(来自维萨拉,至于它是干嘛的,大家百度一下吧!-_-!!)。
 

 资料下载地址相对湿度计算

     


新问题接着出现,如何在已知干球温度和相对湿度的情况下推算湿球温度,

饱和蒸汽压计算公式 1:Pws=A*10^(m*T/(T+Tn))  (T为温度)就是这个公式。

A=6.089613,m=7.33502,Tn=230.3921

绝对含湿量水蒸汽分压计算公式2: Pw=Pws(Twet)-Ptot*K*(Tdry-Twet)(Ptot常压1013hPa,K为干湿球系数0.000662,Tdry为干球温度,Twet就是要求解的值)

Pw= Pws(Twet)-1013*0.000662*(Tdry-Twet)

相对湿度计算公式3: RH=Pw/Pws(Tdry)*100%

 将湿球温度设成x,得到一个超越方程:

f(x)= A*10^(m*x/(x+Tn))-1013*0.000662*(Tdry-T)-Pw

用二分法求解

#include<iostream>
#include<cmath>

double Pws(double T);
double Fps(double T,double RH,const double Td);
const double Accu=pow(10.0,-5.0);
using namespace std;

int main()
{
	double a,b,R;
	double c=0.0;
	do
	{
		cout<<"输入干球温度:\n";
	cin>>a;
	if(a<0||a>100)
		cout<<"干球应该在0到100之间,请重新输入:\n";
	}
	while(!cin||a<0||a>100);
	do
	{
	cout<<"输入相对湿度:\n";
	cin>>R;
	if(R<0||R>1)
		cout<<"相对湿度应该在0和1之间,请重新输入:\n";
	}
	while(!cin||R<0||R>1);
	const double Td=a;
	do
	{
		b=(a+c)/2.0;
	
		if(Fps(a,R,Td)*Fps(b,R,Td)<0)
			c=b;
		else if(Fps(c,R,Td)*Fps(b,R,Td)<0)
			a=b;
		else 
			break;
	}
	while (fabs(Fps(b,R,Td))>Accu);
	cout<<"湿球温度:"<<b;
	system("pause");
 	return 0;

}

double Pws(double T)
{
	//Pws=A*10^(m*T/(T+Tn)) A=6.089613,m=7.33502,Tn=230.3921
	return 6.089613*pow(10.0,7.33502*T/(T+230.3921));
}
double Fps(double T,double RH,double Td)
{
	//Pw= Pws(Twet)-1013*0.000662*(Tdry-Twet)

	return Pws(T)-1013*0.000662*(Td-T)-Pws(Td)*RH;
}




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值