You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pvlib/Bird1984模型下北向光伏组件出现负辐照度问题咨询

问题解答

负辐照度是否为预期行为?

这不是符合物理规则的预期结果,属于SPECTRL2模型超出使用边界产生的数值计算异常。
SPECTRL2是针对常规朝向光伏组件设计的经验光谱模型,仅在入射角(AOI)小于90°、太阳可照射到组件正面的场景下输出有效结果。你当前的测试场景为北半球高纬度(北纬49.88°)冬季,太阳全天处于南侧天空,而组件设置为正北朝向、45°倾角,大部分时段入射角远大于90°,直射光完全无法落到组件正面,模型在这种非设计输入下拟合出了无意义的负值。

是否需要将负值截断为0?

需要,且建议按优先级做两层处理,避免后续计算出错:

  • 先做前置参数过滤:调用spectrl2前先判断AOI数值,当AOI>90°时直接将直射光谱分量置0,从输入侧避免异常
  • 再对输出结果做截断:所有光谱辐照度数值小于0的统一设置为0,完全符合辐照度不可能为负的物理规则

代码修改参考

你可以在原有代码基础上增加以下逻辑:

import numpy as np

# 原有AOI计算逻辑后增加过滤
aoi = irradiance.aoi(tilt, azimuth, solpos.apparent_zenith, solpos.azimuth)
# 入射角大于90度时,模型直射分量无意义,后续处理直接跳过直射贡献
aoi_invalid = aoi > 90

# 得到spectra结果后增加截断逻辑
spectra = spectrum.spectrl2(
    apparent_zenith=solpos.apparent_zenith,
    aoi=aoi,
    surface_tilt=tilt,
    ground_albedo=albedo,
    surface_pressure=pressure,
    relative_airmass=relative_airmass,
    precipitable_water=water_vapor_content,
    ozone=ozone,
    aerosol_turbidity_500nm=tau500,
)
# 所有辐照度分量负值截断为0
for key in ['poa_direct', 'poa_diffuse', 'poa_ground_diffuse', 'poa_global']:
    spectra[key] = np.clip(spectra[key], a_min=0, a_max=None)

修改后重新绘图即可看到负值完全消失,输出符合物理逻辑的光谱结果。

内容的提问来源于stack exchange,提问作者Christian W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:15:01