湿球温度计算

来源:互联网 发布:深入理解java pdf下载 编辑:程序博客网 时间:2024/03/29 07:00

//计算代码,0-60℃ 0-100%/* *说明:已知室外温度、湿度计算湿焓值 *输入:Td 室外湿球温度 *输出:湿球温度 */double CalHZ_S(double Tw){    //double hw=0;    double mm0,mm1=0,mm2;    mm0=Tw/234.5;    mm1=Tw*(18.678-mm0)/(Tw+257.14);    mm2=exp(mm1);    double hw=1.01*Tw+0.6219*(2500+1.84*Tw)*611.2*mm2/(101326-611.2*mm2);    return hw;}/* *说明:已知室外温度、湿度计算焓值(简化算法) *输入:Td 室外干球温度 *      Hr 室外湿度 *输出:湿球温度 */double CalHZ(double Td,double Hr){    double t1,Pv,d,h;    t1=(18.678-Td/234.5)*Td/(Td+257.14);    Pv=611.2*exp(t1);//水蒸汽饱和压力    d=0.6219*(0.01*Hr*Pv/(101326-0.01*Hr*Pv));//kg/kg    h=1.01*Td+(2500+1.84*Td)*d;    return h;}/* *说明:已知室外温度、湿度求湿球温度 *输入:Td 室外干球温度 *      Hr 室外湿度 *输出:湿球温度 */double  CalTw(double Td,double Hr){    int kk=0;//迭代次数    double val=0;//迭代的湿球温度初值    double e=0;    double e_1=0,e_2=0;    double ee_1=0,ee_2=0;    double II=0;    if (Td<60&&Td>=0)    {        e=CalHZ_S(val)-CalHZ(Td,Hr);        e=abs(e);        while (e>0.02)        {            e=CalHZ_S(val)-CalHZ(Td,Hr);//比例            e_2=e_1;            e_1=e;            II+=e;            ee_2=ee_1;            ee_1=e_1-e_2;//微分            if (e>0)//大于目标值            {                val-=0.1*abs(e)+0.001*II+0.01*ee_1;//修正输入值            }            else            {                //小于目标值                val+=0.1*abs(e);            }            if (e_1-e_2<0)            {                val+=0.005;            }            else            {                val-=0.005;            }            e=CalHZ_S(val)-CalHZ(Td,Hr);            e=abs(e);            kk++;            if (kk>2000)//迭代超过1000,跳出            {                if (e>3)                {                    e=CalHZ_S(val)-CalHZ(Td,Hr);                    if (e<0)//继续+                    {                        val+=-0.1*e;                        if (val>Td)                        {                            val=Td*0.99;//                        }                    }                }                cout<<"e="<<e<<'\t';                        cout<<"val="<<val<<'\t';                return val;            }        }    }    cout<<"e="<<e<<'\t';            cout<<"val="<<val<<'\t';    return val;}
原创粉丝点击