0

我正在使用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 图表。 在此处输入图像描述

4

1 回答 1

1

我不承认概念错误。当你整合光谱直接辐照度时,你会得到什么?我希望恢复 sw_dr 宽带值。有什么要检查的。计算 uvi 的代码行看起来很奇怪。total_irrad 中的 sw_dr 是一个 Series,sw_dr(λ[280:400]) 表示 sw_dr 是一个函数。

于 2020-12-02T16:26:01.377 回答