NREL / reV

Renewable Energy Potential (reV) Model
https://nrel.github.io/reV/
BSD 3-Clause "New" or "Revised" License
107 stars 24 forks source link

Bug on calculation of multi-year mean LCOE vs. LCOE based on multi-year mean capacity factor #271

Closed grantbuster closed 3 years ago

grantbuster commented 3 years ago

We have a very interesting and widely systematic bug in the way reV calculates its multi-year mean LCOE.

As it turns out, taking the multi-year mean of the annual capacity factor values and the multi-year mean of the annual lcoe_fcr values does not give you consistent results. That is to say that if you re-calculated the lcoe based on the multi-year cf_mean values, you would get a different result than the reV outputs. Some of the error is due to integer storage of capacity factor values, but we’ve debunked this as the sole cause of these issues. We think this is because of the structure of the lcoe equation, basically resulting in the fact that averaging the equation outputs is not the same as inputting a multi-year mean cf_mean point value. If you don’t believe me, there’s some raw data below you can test yourself.

You can see in the plots below that the error is a strong function of the inter-year capacity factor coefficient of variation. That is, sites with high year-to-year variability have large error in the averaging of the multi-year lcoe values.

In order not to be too alarmist, I’ve also included a histogram showing that the vast majority of errors are below 2%. Errors above 10% are extremely rare. The average error is 0.37%. I believe this is for all of land-based wind in conus. Note that the errors are calculated as 100 * (reV_lcoe – recalculated_lcoe / recalculated_lcoe).

This raises the question: how do we want to calculate LCOE values? Is the correct way to calculate LCOE based on the multi-year mean capacity factor? If so, is this amount of error acceptable?

image

image

Dramatic example with cf_cov=0.375 resulting in 21% error in the multi-year mean LCOE.

LCOE = (2880398.5 0.072 + 109017.09) / (8760 2430 / 1000 * cf_mean)

gid 273062
cf_mean-2007 0.008
cf_mean-2008 0.022
cf_mean-2009 0.018
cf_mean-2010 0.022
cf_mean-2011 0.018
cf_mean-2012 0.013
cf_mean-2013 0.008
cf_mean-means 0.016
cf_mean-stdev 0.006
cf_mean-cov 0.375
lcoe_fcr-2007 1821.256
lcoe_fcr-2008 668.8469
lcoe_fcr-2009 845.7948
lcoe_fcr-2010 680.6867
lcoe_fcr-2011 804.6429
lcoe_fcr-2012 1127.407
lcoe_fcr-2013 1950.419
lcoe_fcr-means 1128.436
lcoe_fcr-stdev 500.2979
lcoe_fcr-cov 0.443355
recalc_lcoe_2007 1857.993
recalc_lcoe_2008 675.6338
recalc_lcoe_2009 825.7746
recalc_lcoe_2010 675.6338
recalc_lcoe_2011 825.7746
recalc_lcoe_2012 1143.38
recalc_lcoe_2013 1857.993
recalc_lcoe_multi_year 928.9964
error_multi_year_perc 21.4683
grantbuster commented 3 years ago

"Bug" is a strong word here. after much discussion, we are planning on adding a feature to re-calculate the LCOE at several steps (multi-year mean, sc-aggregation). This will be best-practice to re-calculate the LCOE from the multi-year mean AEP but not considered a "bug" if done otherwise. New feature being tracked in #277. Closing this for now.