PVLib中不同函数对真/视太阳天顶角的要求及适配方法咨询
问题
我希望使用pvlib.irradiance.erbs从GHI估算DHI和DNI,步骤如下:
- 首先通过
pvlib.Location.get_solarposition计算目标地点的太阳位置 - 再结合天顶角与GHI气象数据运行erbs
- 之后用
pvlib.tracking.singleaxis调整太阳跟踪 - 最后通过
pvlib.irradiance.get_total_irradiance计算辐照度
我注意到pvlib.tracking.singleaxis和pvlib.irradiance.get_total_irradiance需要视太阳角,pvlib.irradiance.erbs需要真太阳天顶角,但pvlib.Location.get_solarposition未明确输出类型。
因此我想咨询:
- 是否需要在这些函数间转换真/视太阳角?
- 若需要,应如何操作?
pvlib.Location.get_solarposition应适配哪种类型?
回答
1. 是否需要转换真/视太阳角?
需要。erbs模型依赖真太阳天顶角(忽略大气折射的理论值),而跟踪系统、总辐照度计算需要视太阳角(包含大气折射修正,更贴近实际观测的太阳位置),两者物理定义不同,必须对应转换后再传入对应函数。
2. 如何进行转换?
pvlib提供了直接的大气折射修正工具,转换逻辑如下:
- 真太阳天顶角转视太阳天顶角:调用
pvlib.atmosphere.refraction计算折射修正值,用真太阳天顶角减去该值得到视太阳天顶角 - 视太阳天顶角转真太阳天顶角:用视太阳天顶角加上折射修正值即可
示例代码:
import pvlib # 假设已获取真太阳天顶角tsza,观测点气压默认101325Pa refraction_correction = pvlib.atmosphere.refraction(tsza, pressure=101325) # 得到视太阳天顶角 apparent_zenith = tsza - refraction_correction
3. pvlib.Location.get_solarposition应适配哪种类型?
pvlib.Location.get_solarposition默认输出真太阳角(包含真太阳天顶角、真太阳方位角),可以直接将结果中的zenith字段传入erbs使用;之后再通过上述折射转换得到视太阳角,供给singleaxis和get_total_irradiance。
如果需要直接获取视太阳角,调用get_solarposition时可设置参数refraction=True,函数会自动应用大气折射修正返回视太阳角。但如果同时需要给erbs用的真太阳角,建议先获取真太阳角再手动转换,避免重复计算。
内容的提问来源于stack exchange,提问作者Thomas Arildsen
相关产品推荐
相关产品推荐

