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

Merge branch 'master' into EfficiencyImprovements

parents c9f41b92 205103f0
......@@ -80,16 +80,17 @@ Sets
* --- Reserve types -----------------------------------------------------------
restype "Reserve types"
restypeDirection(restype, up_down) "Different combinations of reserve types and directions"
restypeDirectionGridNode(restype, up_down, grid, node) "Nodes with reserve requirements"
resTypeDirectionGridNodeNode(restype, up_down, grid, node, node) "Node node connections that can transfer reserves"
restypeDirectionGroup(restype, up_down, group)
restypeDirectionGridNode(restype, up_down, grid, node) "Nodes with up/down reserve requirements"
resTypeDirectionGridNodeNode(restype, up_down, grid, node, node) "Node node connections that can transfer up/down reserves"
restypeDirectionGroup(restype, up_down, group) "Groups with up/down reserve requirements"
restypeDirectionGridNodeGroup(restype, up_down, grid, node, group)
gnuRescapable(restype, up_down, grid, node, unit) "Units capable and available to provide particular reserves"
gnuRescapable(restype, up_down, grid, node, unit) "Units capable and available to provide particular up/down reserves"
gnuOfflineRescapable(restype, grid, node, unit) "Units capable and available to provide offline reserves"
restypeReleasedForRealization(restype) "Reserve types that are released for the realized time intervals"
offlineRes (restype) "Reserve types where offline reserve provision possible"
offlineResUnit (unit) "Units where offline reserve provision possible"
restype_inertia(restype) "Reserve types where the requirement can also be fulfilled with the inertia of synchronous machines"
groupRestype(group, restype) "Groups with reserve requirements"
* --- Sets to define time, forecasts and samples ------------------------------
$$include '%input_dir%/timeAndSamples.inc'
......
......@@ -599,6 +599,7 @@ loop(m,
${ not mSettingsReservesInUse(m, restype, up_down)
}
= no;
groupRestype(group, restype) = sum(up_down, restypeDirectionGroup(restype, up_down, group));
restypeDirectionGridNodeGroup(restype, up_down, grid, node, group)
${ not mSettingsReservesInUse(m, restype, up_down)
}
......
......@@ -503,7 +503,7 @@ df_reserves(grid, node, restype, ft(f, t))
}
= sum(f_${ mf_realization(mSolve, f_) }, ord(f_) - ord(f)) + Eps; // The Eps ensures that checks to see if df_reserves exists return positive even if the displacement is zero.
Option clear = df_reservesGroup;
df_reservesGroup(group, restype, ft(f, t))
df_reservesGroup(groupRestype(group, restype), ft(f, t))
${ p_groupReserves(group, restype, 'update_frequency')
and p_groupReserves(group, restype, 'gate_closure')
and ord(t) <= tSolveFirst + p_groupReserves(group, restype, 'gate_closure')
......@@ -517,7 +517,7 @@ df_reservesGroup(group, restype, ft(f, t))
// Set of ft-steps where the reserves are locked due to previous commitment
Option clear = ft_reservesFixed;
ft_reservesFixed(group, restype, f_solve(f), t_active(t))
ft_reservesFixed(groupRestype(group, restype), f_solve(f), t_active(t))
${ mf_realization(mSolve, f)
and not tSolveFirst = mSettings(mSolve, 't_start') // No reserves are locked on the first solve!
and p_groupReserves(group, restype, 'update_frequency')
......
Markdown is supported
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