我正在使用pvlib计算表面的漫射和直接入射太阳辐射,这很好用。在计算表面的总入射短波辐射时,我考虑了云、反照率、海冰等。
....
transmittance = (1.0 - cloud_covers) * 0.75
# irrads is a DataFrame containing ghi, dni, dhi
irrads = pvlib.irradiance.liujordan(solpos['apparent_zenith'].to_numpy(), transmittance, am_abs_array)
total_irrad = pvlib.irradiance.get_total_irradiance(surface_tilt,
surface_azimuth,
apparent_zenith,
azimuth,
irrads['dni'],
irrads['ghi'],
irrads['dhi'],
albedo=albedo)
sw_dr = total_irrad['poa_direct']
sw_df = total_irrad['poa_diffuse']
现在,使用直接 (sw_dr) 和漫射 (sw_df) 短波辐射,我想通过 1) 计算入射太阳辐射的光谱分布乘以太阳能光谱 2) 仅考虑来自波长 280-400 nm (sw_dr_λ_280-400) 的辐照度。
每个波长间隔 dλ 对直接和漫射短波辐射的贡献由其在标准太阳光谱 ASTM E-490 AM0( Shanmugam 和 Ahn,2007 )下的太阳能量加权,该表可在塞费里安等人。2018 年适用于 200-4000 nm 波长。我的理解是,这给了我直接和漫射短波辐射,它是 10 nm 间隔波长的函数。为了计算紫外线指数,我使用了这里的公式:
uvi = np.sum(sw_dr_λ_280_400*erythema_spectrum_λ) * 40.0
其中 erythema_spectrum 是每个波段 (10 nm) 对红斑影响的加权。
当我使用这种方法计算 UVI 值时,这些值太高了,我想知道我的方法是否有缺陷,或者我在这里做错了什么。有没有其他人使用 pvlib 计算过 UVI?
我感谢您的帮助。干杯,特隆德
更新:我修复了上面的功能更正确。当我计算 1 月 15 日 30N (0-360E) 以北的 UVI 时,我得到的平均 UVI 为 14,但最大值为 264。这就是它的样子:
更新 2:根据下面@Cliff H 的评论,我将我的值除以 25。新值在 UVI 的范围内,所以这似乎是正确的。请参阅 2015 年 6 月的 UVI 图表。