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

基于ERA5卫星GHI数据计算跟踪式组件表面辐照度的方法咨询

跟踪式光伏组件表面辐照度计算(基于ERA5 GHI数据)

要计算跟踪式光伏组件表面的辐照度,核心是先从ERA5的水平面总辐照度(GHI)分解出关键分量,再结合跟踪系统的类型计算入射辐照度,以下是关键步骤和对应的计算函数/方法:

1. 从GHI分解直射(DNI)和散射(DHI)分量

ERA5通常仅提供GHI,需先分解为直射法向辐照度(DNI)和水平面散射辐照度(DHI),常用Erbs模型,对应的计算逻辑可封装为函数:

def erbs_decompose(GHI, solar_zenith, datetime):
    # 输入:GHI(水平面总辐照度)、太阳天顶角、时间
    # 输出:DNI、DHI
    zenith_rad = np.radians(solar_zenith)
    extraterrestrial = pvlib.irradiance.get_extra_radiation(datetime)
    kt = GHI / (extraterrestrial * np.cos(zenith_rad))
    
    if kt <= 0.22:
        DHI = GHI * (1 - 0.09 * kt)
    elif kt <= 0.8:
        DHI = GHI * (0.9511 - 0.1604*kt + 4.388*kt**2 - 16.638*kt**3 + 12.336*kt**4)
    else:
        DHI = GHI * 0.165
    
    DNI = (GHI - DHI) / np.cos(zenith_rad) if np.cos(zenith_rad) > 0 else 0
    return DNI, DHI

2. 计算太阳位置参数

需要太阳高度角、方位角来确定跟踪系统的角度,常用SPA(太阳位置算法),可直接调用成熟函数:

  • Python pvlib.solarposition.get_solarposition():输入经纬度、时间,输出太阳天顶角、方位角等参数
  • 自行实现SPA核心逻辑:基于日期、经纬度计算太阳赤纬、时角等,进而推导位置参数

3. 跟踪式表面辐照度计算

根据跟踪系统类型选择对应方法:

单轴跟踪(南北轴,东西方向转动)

计算跟踪表面的入射角,再结合各辐照度分量计算总入射辐照度,常用函数逻辑:

def single_axis_irradiance(DNI, DHI, GHI, solar_zenith, solar_azimuth, axis_tilt=0, axis_azimuth=180):
    # 输入:DNI、DHI、GHI、太阳天顶角/方位角、跟踪轴倾角/方位角(南北轴默认方位角180°)
    # 输出:跟踪表面总辐照度
    tracker_angles = pvlib.tracking.singleaxis(solar_zenith, solar_azimuth, axis_tilt, axis_azimuth)
    surface_tilt = tracker_angles['surface_tilt']
    surface_azimuth = tracker_angles['surface_azimuth']
    
    # 直射分量
    dni_irrad = pvlib.irradiance.dni(dni=DNI, solar_zenith=solar_zenith, surface_tilt=surface_tilt, surface_azimuth=surface_azimuth, solar_azimuth=solar_azimuth)
    # 散射分量(Hay模型)
    dhi_irrad = pvlib.irradiance.haydavies(dhi=DHI, solar_zenith=solar_zenith, surface_tilt=surface_tilt, surface_azimuth=surface_azimuth, solar_azimuth=solar_azimuth)
    # 地面反射分量(默认反照率0.2)
    albedo_irrad = pvlib.irradiance.albedo(ghi=GHI, surface_tilt=surface_tilt, albedo=0.2)
    
    return dni_irrad + dhi_irrad + albedo_irrad

双轴跟踪(始终正对太阳)

此时表面与太阳光线垂直,入射角为0,直射分量直接取DNI,散射分量用Klucher模型计算:

def double_axis_irradiance(DNI, DHI, GHI, solar_zenith, solar_azimuth):
    # 双轴跟踪时表面始终垂直太阳,动态调整表面倾角/方位角
    surface_tilt = 90 - solar_zenith
    surface_azimuth = solar_azimuth
    
    # 直射分量
    dni_irrad = DNI
    # 散射分量(Klucher模型)
    dhi_irrad = pvlib.irradiance.klucher(dhi=DHI, solar_zenith=solar_zenith, surface_tilt=surface_tilt, surface_azimuth=surface_azimuth, solar_azimuth=solar_azimuth)
    # 地面反射分量
    albedo_irrad = pvlib.irradiance.albedo(ghi=GHI, surface_tilt=surface_tilt, albedo=0.2)
    
    return dni_irrad + dhi_irrad + albedo_irrad

注意事项

  • ERA5的GHI为小时均值,计算时需用对应时段的平均太阳位置,或逐分钟插值提升精度
  • 若ERA5提供DNI/DHI的再分析数据,可直接使用,无需分解

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:15:28