首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法协调PVLIB输出和NREL SAM

无法协调PVLIB输出和NREL SAM
EN

Stack Overflow用户
提问于 2020-02-13 23:33:38
回答 1查看 342关注 0票数 1

背景

传统上,我使用NREL SAM工具来估计太阳的输出。我一直在试验PVLIB,这是很好的,因为开放的性质和灵活性,但我似乎不能调和PVLIB和NREL SAM之间的太阳产量估计。

我做了什么,

我在金皮QLD附近模拟一个假想的太阳能农场。我访问了climate.onebuiling网站,下载了"AUS_QLD_Gympie.AP.945660_TMYx.2003-2017“的zip文件夹/ epw文件。然后,我在NREL的SAM工具中使用了这个天气文件,并使用了以下规范: PVwatts;

  • 200,000 KWdc
  • 模块类型=标准
  • 1.2直流与交流的比率
  • 96%逆变器效率
  • 1轴回溯
  • 倾斜度= 26度
  • 方位=0度
  • GCR = 0.4
  • 损失、阴影和缩减=违约

在NREL中,年能源产量(AC GWh)为415.96 GWh /a。

然后,我将相同的epw文件转换为csv,只为ghi、dni、dhi、temp_air & wind_speed (Google链接到CSV文件)保留列。我已将此文件用作PVLIB的导入。我规范了一个PVLIB系统,上面有相同的规格,加上反照率= 0.2和最大角度= 90度(代码如下)。

我在PVLIB中得到的结果是395.61 GWh。

问题

我得到的结果很不一样。PVLIB = ~395 GWh p.a.相对于SAM = ~415 GWH p.我预计差别在1-2%左右,但不是5%。

与使用clearsky.ineichen (用linke_turbidity调整)的PVLIB系统相比,数字更糟糕,该系统产生~475 GWh p.a。

帮助请求

有人知道为什么我的结果会如此不同吗?我能做些什么来缩小差距吗?

PVLIB码

代码语言:javascript
复制
# **********************************************************
# IMPORT LIBRARIES
# **********************************************************
import pandas as pd

from pvlib.pvsystem import PVSystem
from pvlib import clearsky, atmosphere, solarposition, irradiance
from pvlib.location import Location
from pvlib.tracking import SingleAxisTracker
from pvlib.modelchain import ModelChain
from pvlib.temperature import TEMPERATURE_MODEL_PARAMETERS

# **********************************************************
# LOCATION & SOLAR SIZE INPUTS
# **********************************************************
# Lat and Long desired
lat = -26.18
lon = 152.63

# Set Location
tz, altitude, name = 'Australia/Queensland', 10, 'Gympie/QLD'

# Set location details for model
latitude, longitude, = lat, lon
location = Location(latitude, longitude, tz, altitude, name)

# load some module and inverter specifications
module_parameters = {'pdc0': 200000000, 'gamma_pdc': -0.004}
inverter_parameters = {'pdc': 166666666, 'pdc0': 166666666, 'eta_inv_nom': 0.96}
temperature_model_parameters = TEMPERATURE_MODEL_PARAMETERS['sapm']['open_rack_glass_glass']

# **********************************************************
# ONEBUILDING DATA
# **********************************************************
df = pd.read_csv('weather import.csv')
df['time'] = df['time'].astype('datetime64[ns]')
df.set_index(['time'], inplace=True)
df.index = df.index.tz_localize(tz=tz)
df = df.asfreq(freq='1h')
onebuilding = df

# **********************************************************
# INEICHEN CLEAR SKIES ADJUSTED FOR TURBIDITY
# **********************************************************
# Create PVLib inputs
times = df.index
solpos = solarposition.get_solarposition(times, latitude, longitude)
apparent_zenith = solpos['zenith']
rel_airmass = atmosphere.get_relative_airmass(apparent_zenith)
pressure = atmosphere.alt2pres(altitude)
abs_airmass = atmosphere.get_absolute_airmass(rel_airmass, pressure)
linke_turbidity = clearsky.lookup_linke_turbidity(times, latitude, longitude)
dni_extra = irradiance.get_extra_radiation(times)
ineichen = clearsky.ineichen(apparent_zenith, abs_airmass, linke_turbidity, altitude, dni_extra)
ineichen.to_csv('ineichen.csv')

# **********************************************************
# SELECT WHICH WEATHER DATA TO USE (ineichen v onebuilding)
# **********************************************************
# Select which version we wish to use (onebuilding, ineichen)
selected_irrad = onebuilding
print(selected_irrad)

# Create Weather File
weather = pd.DataFrame(data={'ghi': selected_irrad.ghi, 'dni': selected_irrad.dni,
                             'dhi': selected_irrad.dhi, 'temp_air': df['temp_air'],
                             'wind_speed': df['wind_speed']})

# **********************************************************
# CREATE PV SYSTEM AND PV MODEL CHAIN
# **********************************************************
# Define the specs for the PV System (fixed system)
f_system = PVSystem(
    surface_tilt=abs(lat),
    surface_azimuth=0,
    albedo=0.2,
    module='pvwatts_dc',
    inverter='pvwatts_ac',
    module_parameters=module_parameters,
    inverter_parameters=inverter_parameters,
    racking_model='open_rack_glass_glass',
    name='fixed',
    temperature_model_parameters=temperature_model_parameters
)

# Define the specs for the PV System (1 axis tracking system)
t_system = SingleAxisTracker(
    axis_tilt=0,
    axis_azimuth=0,
    max_angle=90,
    backtrack=True,
    module='pvwatts_dc',
    inverter='pvwatts_ac',
    module_parameters=module_parameters,
    inverter_parameters=inverter_parameters,
    name='tracking',
    gcr=.40,
)

# build model chain
mc = ModelChain(
    system=t_system,
    location=location,
    name='pvwatts',
    dc_model='pvwatts',
    ac_model='pvwatts',
    losses_model='pvwatts',
    aoi_model='physical',
    spectral_model='no_loss',
    temperature_model='sapm')

# run model chain
mc.run_model(weather=weather)
print(mc.ac.sum())
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-14 23:36:46

如果不对中间结果进行详细的比较,很难确切地说明为什么年度能量是不同的。一个因素似乎是换位模型(GHI、DHI和DNI到平面数组):pvlib ModelChain默认为Hay/Davies模型,我相信相同的默认使用Perez 1990模型。这两个模型每年的阵列面辐照度将相差几个百分点,这取决于扩散和直接辐照度的相对水平;参见Lave等人图6

您可以通过向transposition_model = 'perez',实例添加mc来选择pvlib中的Perez 1990模型。我希望这将缩小pvlib和SAM结果之间的差异,并对您的发现感兴趣。

使用TMY天气文件进行的计算不会给出与使用晴空模式的辐照度计算结果相同的结果,因为TMY是根据历史天气记录组装的,因此包括多云周期。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60218037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档