Commit ed11752e authored by Niina Helistö's avatar Niina Helistö
Browse files

Moved start-up and shutdown costs as well as start-up fuel consumption from p_unit to p_gnu_io.

Issue #173.
parent f4399dd4
......@@ -288,6 +288,13 @@ param_gnu "Set of possible data parameters for grid, node, unit" /
inertia "Inertia of the unit (s)"
unitSizeMVA "Generator MVA rating of one subunit (MVA)"
availabilityCapacityMargin "Availability of the unit in the capacity margin equation (p.u.). If zero, v_gen is used. Currently used only for output capacity."
startCostCold "Variable start-up costs for cold starts excluding fuel costs (EUR/MW)"
startCostWarm "Variable start-up costs for warm starts excluding fuel costs (EUR/MW)"
startCostHot "Variable start-up costs for hot starts excluding fuel costs (EUR/MW)"
startFuelConsCold "Consumption of start-up fuel per cold subunit started up (MWh_fuel/MW)"
startFuelConsWarm "Consumption of start-up fuel per warm subunit started up (MWh_fuel/MW)"
startFuelConsHot "Consumption of start-up fuel per hot subunit started up (MWh_fuel/MW)"
shutdownCost "Cost of shutting down the unit (EUR/MW)"
/
param_gnuBoundaryProperties "Properties that can be set for the different boundaries" /
......@@ -304,15 +311,8 @@ param_unit "Set of possible data parameters for units" /
useInitialOnlineStatus "A flag to fix the online status of a unit for the first time step (binary)"
initialOnlineStatus "Initial online status of the unit in the first time step (0-1)"
unavailability "Unavailability of given energy conversion technology (p.u.)"
startCostCold "Variable start-up costs for cold starts excluding fuel costs (EUR/MW)"
startCostWarm "Variable start-up costs for warm starts excluding fuel costs (EUR/MW)"
startCostHot "Variable start-up costs for hot starts excluding fuel costs (EUR/MW)"
startFuelConsCold "Consumption of start-up fuel per cold subunit started up (MWh_fuel/MW)"
startFuelConsWarm "Consumption of start-up fuel per warm subunit started up (MWh_fuel/MW)"
startFuelConsHot "Consumption of start-up fuel per hot subunit started up (MWh_fuel/MW)"
startColdAfterXhours "Offline hours after which the start-up will be a cold start (h)"
startWarmAfterXhours "Offline hours after which the start-up will be a warm start (h)"
shutdownCost "Cost of shutting down the unit"
rampSpeedToMinLoad "Ramping speed from start-up to minimum load (p.u./min)"
rampSpeedFromMinLoad "Ramping speed from shutdown decision to zero load (p.u./min)"
minOperationHours "Minimum operation time (h), prevents shutdown after startup until the defined amount of time has passed"
......
......@@ -192,10 +192,10 @@ unit_investMIP(unit)${ p_unit(unit, 'investMIP')
unitStarttype(unit, 'cold') = yes;
// Units with parameters regarding hot/warm starts
unitStarttype(unit, starttypeConstrained)${ p_unit(unit, 'startWarmAfterXhours')
or p_unit(unit, 'startCostHot')
or p_unit(unit, 'startFuelConsHot')
or p_unit(unit, 'startCostWarm')
or p_unit(unit, 'startFuelConsWarm')
or sum(gnu(grid, node, unit), p_gnu(grid, node, unit, 'startCostHot'))
or sum(gnu(grid, node, unit), p_gnu(grid, node, unit, 'startFuelConsHot'))
or sum(gnu(grid, node, unit), p_gnu(grid, node, unit, 'startCostWarm'))
or sum(gnu(grid, node, unit), p_gnu(grid, node, unit, 'startFuelConsWarm'))
or p_unit(unit, 'startColdAfterXhours')
}
= yes;
......@@ -241,11 +241,11 @@ p_uNonoperational(unitStarttype(unit, 'hot'), 'min')
p_uNonoperational(unitStarttype(unit, 'hot'), 'max')
= p_unit(unit, 'startWarmAfterXhours');
p_uStartup(unitStarttype(unit, 'hot'), 'cost')
= p_unit(unit, 'startCostHot')
* sum(gnu_output(grid, node, unit), p_gnu(grid, node, unit, 'unitSize'));
= sum(gnu(grid, node, unit), p_gnu(grid, node, unit, 'unitSize')
* p_gnu(grid, node, unit, 'startCostHot'));
p_uStartup(unitStarttype(unit, 'hot'), 'consumption')
= p_unit(unit, 'startFuelConsHot')
* sum(gnu_output(grid, node, unit), p_gnu(grid, node, unit, 'unitSize'));
= sum(gnu(grid, node, unit), p_gnu(grid, node, unit, 'unitSize')
* p_gnu(grid, node, unit, 'startFuelConsHot'));
// Warm startup parameters
p_uNonoperational(unitStarttype(unit, 'warm'), 'min')
......@@ -253,21 +253,21 @@ p_uNonoperational(unitStarttype(unit, 'warm'), 'min')
p_uNonoperational(unitStarttype(unit, 'warm'), 'max')
= p_unit(unit, 'startColdAfterXhours');
p_uStartup(unitStarttype(unit, 'warm'), 'cost')
= p_unit(unit, 'startCostWarm')
* sum(gnu_output(grid, node, unit), p_gnu(grid, node, unit, 'unitSize'));
= sum(gnu(grid, node, unit), p_gnu(grid, node, unit, 'unitSize')
* p_gnu(grid, node, unit, 'startCostWarm'));
p_uStartup(unitStarttype(unit, 'warm'), 'consumption')
= p_unit(unit, 'startFuelConsWarm')
* sum(gnu_output(grid, node, unit), p_gnu(grid, node, unit, 'unitSize'));
= sum(gnu(grid, node, unit), p_gnu(grid, node, unit, 'unitSize')
* p_gnu(grid, node, unit, 'startFuelConsWarm'));
// Cold startup parameters
p_uNonoperational(unitStarttype(unit, 'cold'), 'min')
= p_unit(unit, 'startColdAfterXhours');
p_uStartup(unit, 'cold', 'cost')
= p_unit(unit, 'startCostCold')
* sum(gnu_output(grid, node, unit), p_gnu(grid, node, unit, 'unitSize'));
= sum(gnu(grid, node, unit), p_gnu(grid, node, unit, 'unitSize')
* p_gnu(grid, node, unit, 'startCostCold'));
p_uStartup(unit, 'cold', 'consumption')
= p_unit(unit, 'startFuelConsCold')
* sum(gnu_output(grid, node, unit), p_gnu(grid, node, unit, 'unitSize'));
= sum(gnu(grid, node, unit), p_gnu(grid, node, unit, 'unitSize')
* p_gnu(grid, node, unit, 'startFuelConsCold'));
// Start-up fuel consumption per fuel
p_unStartup(unit, node, starttype)$p_uStartupfuel(unit, node, 'fixedFuelFraction')
......@@ -276,8 +276,8 @@ p_unStartup(unit, node, starttype)$p_uStartupfuel(unit, node, 'fixedFuelFraction
//shutdown cost parameters
p_uShutdown(unit, 'cost')
= p_unit(unit, 'shutdownCost')
* sum(gnu_output(grid, node, unit), p_gnu(grid, node, unit, 'unitSize'));
= sum(gnu(grid, node, unit), p_gnu(grid, node, unit, 'unitSize')
* p_gnu(grid, node, unit, 'shutdownCost'));
// Determine unit emission costs
p_unitEmissionCost(unit, node, emission)${nu(node, unit) and p_nEmission(node, emission)}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment