Commit 7052337c authored by Juha Kiviluoma's avatar Juha Kiviluoma
Browse files

rest of the IC_ramp stuff that I had forgotten to commit.

parent 2c7a5eee
...@@ -21,6 +21,7 @@ Free variables ...@@ -21,6 +21,7 @@ Free variables
v_state(grid, node, s, f, t) "State variable for nodes that maintain a state (MWh, unless modified by energyStoredPerUnitOfState and diffCoeff parameters)" v_state(grid, node, s, f, t) "State variable for nodes that maintain a state (MWh, unless modified by energyStoredPerUnitOfState and diffCoeff parameters)"
v_genRamp(grid, node, unit, s, f, t) "Change in energy generation or consumption over an interval (MW/h)" v_genRamp(grid, node, unit, s, f, t) "Change in energy generation or consumption over an interval (MW/h)"
v_transfer(grid, node, node, s, f, t) "Average electricity transmission level from node to node during an interval (MW)" v_transfer(grid, node, node, s, f, t) "Average electricity transmission level from node to node during an interval (MW)"
v_ICramp(grid, node, node, s, f, t) "Change in energy transfer over an interval (MW/h)"
; ;
Integer variables Integer variables
v_startup_MIP(unit, starttype, s, f, t) "Sub-units started up after/during an interval (p.u.), (MIP variant)" v_startup_MIP(unit, starttype, s, f, t) "Sub-units started up after/during an interval (p.u.), (MIP variant)"
......
...@@ -77,6 +77,9 @@ equations ...@@ -77,6 +77,9 @@ equations
q_rampDownLimit(mType, s, grid, node, unit, f, t) "Down ramping limited for units" q_rampDownLimit(mType, s, grid, node, unit, f, t) "Down ramping limited for units"
q_rampUpDown(mType, s, grid, node, unit, f, t) "Ramping separated into possibly several upward and downward parts (for different cost levels)" q_rampUpDown(mType, s, grid, node, unit, f, t) "Ramping separated into possibly several upward and downward parts (for different cost levels)"
q_rampSlack(mType, s, grid, node, unit, slack, f, t) "Upward and downward ramps constrained by slack boundaries (for different cost levels)" q_rampSlack(mType, s, grid, node, unit, slack, f, t) "Upward and downward ramps constrained by slack boundaries (for different cost levels)"
q_ICramp(grid, node, node, s, f, t) "Record the ramps of transfers with ramp restricitions"
q_ICrampUpLimit(grid, node, node, s, f, t) "Up ramping limited for transfers"
q_ICrampDownLimit(grid, node, node, s, f, t) "Down ramping limited for transfers"
q_conversionDirectInputOutput(s, effSelector, unit, f, t) "Direct conversion of inputs to outputs (no piece-wise linear part-load efficiencies)" q_conversionDirectInputOutput(s, effSelector, unit, f, t) "Direct conversion of inputs to outputs (no piece-wise linear part-load efficiencies)"
q_conversionSOS2InputIntermediate(s, effSelector, unit, f, t) "Intermediate output when using SOS2 variable based part-load piece-wise linearization" q_conversionSOS2InputIntermediate(s, effSelector, unit, f, t) "Intermediate output when using SOS2 variable based part-load piece-wise linearization"
q_conversionSOS2Constraint(s, effSelector, unit, f, t) "Sum of v_sos2 has to equal v_online" q_conversionSOS2Constraint(s, effSelector, unit, f, t) "Sum of v_sos2 has to equal v_online"
......
...@@ -2146,6 +2146,48 @@ q_resTransferLimitLeftward(gn2n_directional(grid, node, node_), sft(s, f, t)) ...@@ -2146,6 +2146,48 @@ q_resTransferLimitLeftward(gn2n_directional(grid, node, node_), sft(s, f, t))
) // END sum(t_invest) ) // END sum(t_invest)
; ;
*----------------------------------------------------------------------IC RAMP-------------------------------------------------------------------------------------------------------------------------------------
q_ICramp(gn2n_directional(grid, node, node_), sft(s, f, t)) ..
+ v_ICramp(grid, node, node_, s, f, t)
=E=
// Change in transfers over the interval: v_transfer(t) - v_transfer(t-1)
+ v_transfer(grid, node, node_, s, f, t)
- v_transfer(grid, node, node_, s+ds(s,t), f+df(f,t+dt(t)), t+dt(t))
;
* --- Ramp Up Limits ----------------------------------------------------------
q_ICrampUpLimit(gn2n_directional(grid, node, node_), sft(s, f, t))
${ p_gnn(grid, node, node_, 'ICrampUp')
} ..
+ v_ICramp(grid, node, node_, s, f, t)
=L=
+ ( p_gnn(grid, node, node_, 'transferCap')
* p_gnn(grid, node, node_, 'ICrampUp')
* 60
)
;
* --- Ramp Down Limits ----------------------------------------------------------
q_ICrampDownLimit(gn2n_directional(grid, node, node_), sft(s, f, t))
${ p_gnn(grid, node, node_, 'ICrampDown')
} ..
+ v_ICramp(grid, node, node_, s, f, t)
=G=
- ( p_gnn(grid, node, node_, 'transferCap')
* p_gnn(grid, node, node_, 'ICrampDown')
* 60
)
;
*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
* --- Rightward Reserve Provision Limits ---------------------------------------- * --- Rightward Reserve Provision Limits ----------------------------------------
q_reserveProvisionRightward(restypeDirectionGridNodeNode(restype, up_down, grid, node, node_), sft(s, f, t)) q_reserveProvisionRightward(restypeDirectionGridNodeNode(restype, up_down, grid, node, node_), sft(s, f, t))
......
...@@ -26,6 +26,7 @@ Option clear = v_gen; ...@@ -26,6 +26,7 @@ Option clear = v_gen;
Option clear = v_state; Option clear = v_state;
Option clear = v_genRamp; Option clear = v_genRamp;
Option clear = v_transfer; Option clear = v_transfer;
Option clear = v_ICramp;
// Integer Variables // Integer Variables
Option clear = v_online_MIP; Option clear = v_online_MIP;
Option clear = v_invest_MIP; Option clear = v_invest_MIP;
......
...@@ -294,6 +294,24 @@ $offtext ...@@ -294,6 +294,24 @@ $offtext
*v_startup.l(unitStarttype(unit, starttype), f, t)${uft_online(unit, f, t) and not unit_investLP(unit) } = 0; *v_startup.l(unitStarttype(unit, starttype), f, t)${uft_online(unit, f, t) and not unit_investLP(unit) } = 0;
*v_shutdown.l(unit, f, t)${sum(starttype, unitStarttype(unit, starttype)) and uft_online(unit, f, t) and not unit_investLP(unit) } = 0; *v_shutdown.l(unit, f, t)${sum(starttype, unitStarttype(unit, starttype)) and uft_online(unit, f, t) and not unit_investLP(unit) } = 0;
*----------------------------------------------------------------------IC RAMP-------------------------------------------------------------------------------------------------------------------------------------
v_ICramp.up(gn2n_directional(grid, node, node_), sft(s, f, t))${ ord(t) > msStart(mSolve, s) + 1
and p_gnn(grid, node, node_, 'ICrampUp')
and not p_gnn(grid, node, node_, 'transferCapInvLimit')
}
= p_gnn(grid, node, node_, 'transferCap')
* p_gnn(grid, node, node_, 'ICrampUp')
* 60; // Unit conversion from [p.u./min] to [p.u./h]
v_ICramp.lo(gn2n_directional(grid, node, node_), sft(s, f, t))${ ord(t) > msStart(mSolve, s) + 1
and p_gnn(grid, node, node_, 'ICrampDown')
and not p_gnn(grid, node, node_, 'transferCapInvLimit')
}
= -(p_gnn(grid, node, node_, 'transferCap'))
* p_gnn(grid, node, node_, 'ICrampDown')
* 60; // Unit conversion from [p.u./min] to [p.u./h]
*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
* --- Energy Transfer Boundaries ---------------------------------------------- * --- Energy Transfer Boundaries ----------------------------------------------
......
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