找回密码
 会员注册
查看: 18|回复: 0

python计算太阳辐射(GHI、DNI、DHI)

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
71080
发表于 2024-9-9 20:40:47 | 显示全部楼层 |阅读模式
太阳辐射在许多场景都常有应用,本文将利用pvlib简单计算一下太阳辐射强度。需要注意的是几个常见的概念,有时会发生混淆:全球水平辐射(GHI)全球水平辐射(GlobalHorizontalIrradiance,GHI)是指单位面积上,垂直于地面接收到的来自太阳的直接辐射和大气散射辐射的总和。直接法线辐射(DNI)直接法线辐射(DirectNormalIrradiance,DNI)是指单位面积上,垂直于来自太阳的直接辐射的接收量。与GHI不同,DNI只考虑了太阳直射光,不包括大气散射光。水平散射辐射(DHI)水平散射辐射(DiffuseHorizontalIrradiance,DHI)是指在水平面上,仅由天空散射光组成的太阳辐射。这部分辐射来自太阳直射光在大气中被分散后的结果。事实上pvlib库中采用Ineichen模型用于计算太阳辐射,主要根据林克浑浊系数进行计算。importpandasaspdimportmatplotlib.pyplotaspltimportpvlibfrompvlib.locationimportLocation#设置地点和时区latitude,longitude,tz=40.3,120.3,'Asia/Shanghai'location=Location(latitude,longitude,tz)#生成一天内每小时的时间序列times=pd.date_range('2023-12-0100:00','2023-12-0123:59',freq='1h',tz=tz)#使用pvlib计算太阳位置solar_position=location.get_solarposition(times)#计算全球水平面上的辐射量dni_extra=pvlib.irradiance.get_extra_radiation(times)airmass=location.get_airmass(solar_position=solar_position)linke_turbidity=pvlib.clearsky.lookup_linke_turbidity(times,latitude,longitude)csky=pvlib.clearsky.ineichen(solar_position['apparent_zenith'],airmass['airmass_relative'],linke_turbidity,altitude=location.altitude,dni_extra=dni_extra)#散射辐射(DHI)dhi=csky['dhi']#绘制全球辐射、直接辐射和散射辐射的变化图plt.figure(figsize=(10,6))plt.plot(times,csky['ghi'],label='GlobalHorizontalIrradiance(GHI)')plt.plot(times,csky['dni'],label='DirectNormalIrradiance(DNI)')plt.plot(times,dhi,label='DiffuseHorizontalIrradiance(DHI)')plt.xlabel('Time')plt.ylabel('Irradiance(W/m^2)')plt.title('Irradiancethroughouttheday')plt.legend()plt.xticks(rotation=45)plt.tight_layout()plt.show()#给出一天中最大的辐射值max_ghi=csky['ghi'].max()print(f"Themaximumglobalhorizontalirradianceis{max_ghi}W/m^2")
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-9 05:50 , Processed in 0.593380 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表