|
太阳辐射在许多场景都常有应用,本文将利用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")
|
|