Possible error in heat rates
To check if p_effGroupUnit('section') in periodicinit.gms on line 342
// If the minimum operating point is above zero, then the approximate efficiency curve crosses the real efficiency curve at minimum and maximum.
else
// Calculating the slope based on the first nonzero and the last defined data points.
p_effUnit(effSelector, unit, effSelector_, 'slope')
= (p_unit(unit, op__) / p_unit(unit, eff__) - p_unit(unit, 'op00') / p_unit(unit, 'eff00'))
/ (p_unit(unit, op__) - p_unit(unit, 'op00'));
// Calculating the section based on the slope and the last defined point.
p_effGroupUnit(effSelector, unit, 'section')
= ( 1 / p_unit(unit, eff__) - p_effUnit(effSelector, unit, effSelector_, 'slope') )
* p_unit(unit, op__);
is overwritten later on line 422:
p_effGroupUnit(effGroup, unit, 'section') = smin(effGroupSelectorUnit(effGroup, unit, effSelector), p_effUnit(effGroup, unit, effSelector, 'section')); // NOTE! Uses maximum efficiency for the group.