python实现空气焓值,湿球温度的计算

因为对热力学概念公式完全不懂,本文参考自以下blog,感谢其贡献

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LWLGZY/article/details/77469664

原博客C++语言编写,由于需要,本文将其改写为python版本

# 已知室外温度、湿度,计算湿焓值
def calculateHZ_S(tw):
    mm0 = tw / 234.5
    mm1 = tw * (18.678 - mm0) / (tw + 257.14)
    mm2 = np.exp(mm1)
    hw = 1.01 * tw + 0.6219 * (2500 + 1.84 * tw) * 611.2 * mm2 / (101326 - 611.2 * mm2)
    return hw


# 计算空气焓值,输入参数:series,list(矩阵运算)或者 单个值,输入温度、湿度
def calculateHZ(temper, humidity):
    t1 = (18.678 - temper / 234.5) * temper / (temper + 257.14)
    pv = 611.2 * np.exp(t1)
    d = 0.6219 * (0.01 * humidity * pv / (101326 - 0.01 * humidity * pv))
    h = 1.01 * temper + (2500 + 1.84 * temper) * d

    return h

# 输入温度、湿度
def calWbt(temper, humidity):
    nums = 0  # 迭代次数
    val = 0.  # 湿球温度迭代初值
    ii = 0
    e = e_1 = e_2 = ee_1 = ee_2 = 0
    if 0 <= temper < 60:
        e = np.abs(calculateHZ_S(val) - calculateHZ(temper, humidity))
        while e > 0.02:
            e = calculateHZ_S(val) - calculateHZ(temper, humidity)
            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 = np.abs(calculateHZ_S(val) - calculateHZ(temper, humidity))
            nums += 1
            if nums > 2000:
                if e > 3:
                    e = calculateHZ_S(val) - calculateHZ(temper, humidity)
                    if e < 0:
                        val += -0.1 * e
                        if val > temper:
                            val = temper * 0.99
                return val
        return val


# 计算湿球温度,湿球温度需要用到空气焓值,输入温度、湿度
def calculateWbt(temper, humidity):
    if len(temper) != len(humidity):
        logger.info('湿球温度计算 - 输入数据有误!')
        return None

    res_val = []
    for i in range(len(temper)):
        res_val.append(calWbt(temper[i], humidity[i]))
    return res_val

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值