--- jupytext: text_representation: extension: .md format_name: myst format_version: 0.13 jupytext_version: 1.13.8 kernelspec: display_name: 'Python 3' name: python3 --- (pump)= # pump A hydropower pumping unit which consumes electricity to pump water between reservoirs | | | |---|---| |Input connections|{ref}`plant`, {ref}`reserve_group`, {ref}`commit_group`, {ref}`busbar`, {ref}`pump_reserve_capability`| |Output connections|{ref}`plant`, {ref}`reserve_group`, {ref}`commit_group`, {ref}`busbar`, {ref}`pump_reserve_capability`| |License|SHOP_OPEN| |Release version|13.0.0.a| ```{contents} :local: :depth: 1 ``` ## Introduction The pump object is in many ways analogous to the [](generator) object, but in reverse. Please consult the generator documentation for general topics not covered here (like unit commitment), as they are very similar for pumps. Instead of producing power from falling water, the pump consumes power to lift water. The power consumed by a pump is calculated by the following equation: ```{math} p = \frac{\rho \cdot g \cdot h \cdot q}{\eta_{gen}(p) \cdot \eta_{turb}(q, h)}, ``` where $p$ is the power, $\rho$ is the density of water, $g$ is the acceleration due to gravity, $h$ is the effective head of the generator, $q$ is the flow of water through the turbine, $\eta_{gen}$ is the efficiency of the generator and $\eta_{turb}$ is the efficiency of the turbine. Unlike the generator, the power consumed by the pump increases with lower efficiency. ## Required input Similar to the generator object, a pump must be connected to a [](plant) object. The plant is in turn connected to the rest of the system which decides the overall system topology of how water flows. A pump must have a specified the [penstock number](pump:penstock), [minimum consumption](pump:p_min), [maximum consumption](pump:p_max), [nominal consumption](pump:p_nom), and [turbine efficiency curves](pump:turb_eff_curves). A [generator efficiency curve](pump:gen_eff_curve) is also common input. ## Binary pumps A binary pump can only operate with a constant rotational speed, which means that it has a single operating point for a given head in SHOP. Binary pumps can be defined in SHOP by only inputting a single point on each turbine efficiency curve for the pump. This is shown in the [binary pump example](binary-pump-example). ## Reversible turbines Reversible turbines can operate as both generators and pumps. How these are modelled SHOP is covered in the [generator documentation](generator) and the [reversible turbine example](reversible-turbine-example). ## Reserve capacity Some pumps are able to deliver ancillary services, and reserve capacity can therefore be allocated on pumps in SHOP. Please see the [](generator) and [](reserve_group) objects for further information. Note that a upward reserve capacity on pumps is capacity for *decreasing* the consumption of the pump, which is the mirrored opposite of delivering upward reserves on generators (increasing production). The same is true for downward reserve capacity. ## Examples - [](binary-pump-example) - [](reversible-turbine-example) ## References - Short-term hydro scheduling of a variable speed pumped storage hydropower plant considering head loss in a shared penstock {cite}`Kong2019a` - Calculation of power compensation for a pumped storage hydropower plant with hydraulic short-circuit operation {cite}`Skjelbred2017b` ## Attributes ```{code-cell} ipython3 :tags: ['remove-input', 'full-width'] from IPython.core.display import HTML HTML("""
""") ``` (pump:initial_state)= ### initial_state The initial operation state of the pump before the optimization period: -1 = not set; 0 = not running; 1 = running (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:penstock)= ### penstock The penstock number the pump is connected to (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:separate_droop)= ### separate_droop A flag to turn on (1) or off (0, default) the building of separate droop variables for FCR-N, FCR-D up, and FCR-D down for the pump. (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:p_min)= ### p_min Static minimum consumption for the pump (xUnit: MW, yUnit: MW) (pump:p_max)= ### p_max Static maximum consumption for the pump (xUnit: MW, yUnit: MW) (pump:p_nom)= ### p_nom The nominal consumption that is the rated capacity of the pump (xUnit: MW, yUnit: MW) (pump:gen_eff_curve)= ### gen_eff_curve The efficiency curve for the machine powering the pump (xUnit: MW, yUnit: %) (pump:turb_eff_curves)= ### turb_eff_curves The turbine efficiency curve(s) as a function of upflow through the pump. Several curves can be specified for different head levels (reference value in the XY) to make the efficiency head-dependent. (xUnit: M3/S, yUnit: %) (pump:maintenance_flag)= ### maintenance_flag Flag determining whether the pump is out for maintenance for a given time step (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:startcost)= ### startcost Pump startup cost for turning on the pump (xUnit: NO_UNIT, yUnit: NOK) (pump:stopcost)= ### stopcost Pump shutdown cost for turning off the pump (xUnit: NO_UNIT, yUnit: NOK) (pump:committed_in)= ### committed_in Committed status given by the user used to define the operating status of the pump in the optimization: 0 - committed not to run; 1 - committed to run (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:committed_flag)= ### committed_flag Flag determining whether to use the input commit status should be used for a given time step or not (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:upstream_max)= ### upstream_max Maximum water level of upstream reservoir allowed when operating the pump (xUnit: NO_UNIT, yUnit: METER) (pump:upstream_max_flag)= ### upstream_max_flag Flag determining whether the maximum water level of upstream reservoir allowed when operating the pump should be included in the optimization model (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:downstream_min)= ### downstream_min Minimum water level of downstream reservoir required for operating the pump (xUnit: NO_UNIT, yUnit: METER) (pump:downstream_min_flag)= ### downstream_min_flag Flag determining whether the minimum water level of downstream reservoir required for operating the pump should be included in the optimization model (xUnit: NO_UNIT, yUnit: METER) (pump:consumption_schedule)= ### consumption_schedule Consumption schedule (xUnit: NO_UNIT, yUnit: MW) (pump:consumption_schedule_flag)= ### consumption_schedule_flag Flag determining whether the pump consumption schedule should be included in the optimization model (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:upflow_schedule)= ### upflow_schedule Pump upflow schedule (xUnit: NO_UNIT, yUnit: M3/S) (pump:upflow_schedule_flag)= ### upflow_schedule_flag Flag determining whether the pump upflow schedule should be included in the optimization model (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_mip_flag)= ### fcr_mip_flag Flag determining whether binary variables should be used to enforce minimum available capacity requirement when delivering FCR (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:p_fcr_min)= ### p_fcr_min Temporary minimum consumption for the pump when delivering FCR (xUnit: NO_UNIT, yUnit: MW) (pump:p_fcr_max)= ### p_fcr_max Temporary maximum consumption for the pump when delivering FCR (xUnit: NO_UNIT, yUnit: MW) (pump:p_rr_min)= ### p_rr_min Temporary minimum consumption for the pump when delivering RR (xUnit: NO_UNIT, yUnit: MW) (pump:frr_up_min)= ### frr_up_min Minimum FRR_UP delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:frr_up_max)= ### frr_up_max Maximum FRR_UP delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:frr_down_min)= ### frr_down_min Minimum FRR_DOWN delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:frr_down_max)= ### frr_down_max Maximum FRR_DOWN delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_n_up_min)= ### fcr_n_up_min Minimum FCR_N_UP delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_n_up_max)= ### fcr_n_up_max Maximum FCR_N_UP delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_n_down_min)= ### fcr_n_down_min Minimum FCR_N_DOWN delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_n_down_max)= ### fcr_n_down_max Maximum FCR_N_DOWN delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_d_up_min)= ### fcr_d_up_min Minimum FCR_D_UP delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_d_up_max)= ### fcr_d_up_max Maximum FCR_D_UP delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_d_down_min)= ### fcr_d_down_min Minimum FCR_D_DOWN delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_d_down_max)= ### fcr_d_down_max Maximum FCR_D_DOWN delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:rr_up_min)= ### rr_up_min Minimum RR_UP delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:rr_up_max)= ### rr_up_max Maximum RR_UP delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:rr_down_min)= ### rr_down_min Minimum RR_DOWN delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:rr_down_max)= ### rr_down_max Maximum RR_DOWN delivery for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_n_up_schedule)= ### fcr_n_up_schedule Pump FCR_N_UP delivery schedule (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_n_up_schedule_flag)= ### fcr_n_up_schedule_flag Flag determining whether the pump FCR_N_UP delivery schedule should be included in the optimization model (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_n_down_schedule)= ### fcr_n_down_schedule Pump FCR_N_DOWN delivery schedule (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_n_down_schedule_flag)= ### fcr_n_down_schedule_flag Flag determining whether the pump FCR_N_DOWN delivery schedule should be included in the optimization model (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_d_up_schedule)= ### fcr_d_up_schedule Pump FCR_D_UP delivery schedule (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_d_up_schedule_flag)= ### fcr_d_up_schedule_flag Flag determining whether the pump FCR_D_UP delivery schedule should be included in the optimization model (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_d_down_schedule)= ### fcr_d_down_schedule Pump FCR_D_DOWN delivery schedule (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_d_down_schedule_flag)= ### fcr_d_down_schedule_flag Flag determining whether the pump FCR_D_DOWN delivery schedule should be included in the optimization model (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:frr_up_schedule)= ### frr_up_schedule Pump FRR_UP delivery schedule (xUnit: NO_UNIT, yUnit: MW) (pump:frr_up_schedule_flag)= ### frr_up_schedule_flag Flag determining whether the pump FRR_UP delivery schedule should be included in the optimization model (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:frr_down_schedule)= ### frr_down_schedule Pump FRR_DOWN delivery schedule (xUnit: NO_UNIT, yUnit: MW) (pump:frr_down_schedule_flag)= ### frr_down_schedule_flag Flag determining whether the pump FRR_DOWN delivery schedule should be included in the optimization model (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:rr_up_schedule)= ### rr_up_schedule Pump RR_UP delivery schedule (xUnit: NO_UNIT, yUnit: MW) (pump:rr_up_schedule_flag)= ### rr_up_schedule_flag Flag determining whether the pump RR_UP delivery schedule should be included in the optimization model (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:rr_down_schedule)= ### rr_down_schedule Pump RR_DOWN delivery schedule (xUnit: NO_UNIT, yUnit: MW) (pump:rr_down_schedule_flag)= ### rr_down_schedule_flag Flag determining whether the pump RR_DOWN delivery schedule should be included in the optimization model (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:droop_cost)= ### droop_cost The cost for the inverse unit droop when it is modelled as a variable in the optimization model, which makes SHOP prefer high droop settings. The default droop_cost on global_settings is used if this attribute is not specified (xUnit: NO_UNIT, yUnit: NOK) (pump:fixed_droop)= ### fixed_droop Fixed unit droop given as input data (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fixed_droop_flag)= ### fixed_droop_flag Flag determining whether the fixed droop setting should be included in the optimization model (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:droop_min)= ### droop_min The lower bound of the unit droop when it is modelled as a variable in the optimization model. This bound is applied together with other FCR constraints, where the most restrictive will limit the FCR delivery (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:droop_max)= ### droop_max The upper bound of the unit droop when it is modelled as a variable in the optimization model. This bound is applied together with other FCR constraints, where the most restrictive will limit the FCR delivery (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:reserve_ramping_cost_up)= ### reserve_ramping_cost_up Upward reserve ramping cost for changing reserve delivery of the pump (xUnit: NO_UNIT, yUnit: NOK/MW) (pump:reserve_ramping_cost_down)= ### reserve_ramping_cost_down Downward reserve ramping cost for changing reserve delivery of the pump (xUnit: NO_UNIT, yUnit: NOK/MW) (pump:discrete_droop_values)= ### discrete_droop_values A list of all legal droop values for the pump. If the functionality for fixing the unit droop is activated by the 'set droop_discretization_limit' command, this list of discrete values will be used when fixing the pump droop (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_n_discrete_droop_values)= ### fcr_n_discrete_droop_values A list of all legal droop values for FCR-N reserves when the pump is built with separate droop. If the functionality for fixing the unit droop is activated by the 'set droop_discretization_limit' command, this list of discrete values will be used when fixing the generator droop (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_d_up_discrete_droop_values)= ### fcr_d_up_discrete_droop_values A list of all legal droop values for FCR-D up reserves when the pump is built with separate droop. If the functionality for fixing the unit droop is activated by the 'set droop_discretization_limit' command, this list of discrete values will be used when fixing the generator droop (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_d_down_discrete_droop_values)= ### fcr_d_down_discrete_droop_values A list of all legal droop values for FCR-D down reserves when the pump is built with separate droop. If the functionality for fixing the unit droop is activated by the 'set droop_discretization_limit' command, this list of discrete values will be used when fixing the generator droop (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_n_up_cost)= ### fcr_n_up_cost The cost of allocating FCR-N up reserves on this pump (xUnit: NO_UNIT, yUnit: NOK/MW) (pump:fcr_n_down_cost)= ### fcr_n_down_cost The cost of allocating FCR-N down reserves on this pump (xUnit: NO_UNIT, yUnit: NOK/MW) (pump:fcr_d_up_cost)= ### fcr_d_up_cost The cost of allocating FCR-D up reserves on this pump (xUnit: NO_UNIT, yUnit: NOK/MW) (pump:fcr_d_down_cost)= ### fcr_d_down_cost The cost of allocating FCR-D down reserves on this pump (xUnit: NO_UNIT, yUnit: NOK/MW) (pump:frr_up_cost)= ### frr_up_cost The cost of allocating FRR up reserves on this pump (xUnit: NO_UNIT, yUnit: NOK/MW) (pump:frr_down_cost)= ### frr_down_cost The cost of allocating FRR down reserves on this pump (xUnit: NO_UNIT, yUnit: NOK/MW) (pump:rr_up_cost)= ### rr_up_cost The cost of allocating RR up reserves on this pump (xUnit: NO_UNIT, yUnit: NOK/MW) (pump:rr_down_cost)= ### rr_down_cost The cost of allocating RR down reserves on this pump (xUnit: NO_UNIT, yUnit: NOK/MW) (pump:spinning_reserve_up_max)= ### spinning_reserve_up_max Sets a maximum limit for the sum of spinning reserves delivered in the upward direction on the pump (xUnit: NO_UNIT, yUnit: MW) (pump:spinning_reserve_down_max)= ### spinning_reserve_down_max Sets a maximum limit for the sum of spinning reserves delivered in the downward direction on the pump (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_n_droop_cost)= ### fcr_n_droop_cost The cost for the inverse unit droop for FCR-N reserves when it is modelled as a variable in the optimization model and droop is built separately for FCR-N and FCR-D. The droop_cost attribute on the pump or global_settings is used if this attribut is not specified. (xUnit: NO_UNIT, yUnit: NOK) (pump:fcr_d_up_droop_cost)= ### fcr_d_up_droop_cost The cost for the inverse unit droop for FCR-D up reserves when it is modelled as a variable in the optimization model and droop is built separately for FCR-N and FCR-D. The droop_cost attribute on the pump or global_settings is used if this attribut is not specified. (xUnit: NO_UNIT, yUnit: NOK) (pump:fcr_d_down_droop_cost)= ### fcr_d_down_droop_cost The cost for the inverse unit droop for FCR-D down reserves when it is modelled as a variable in the optimization model and droop is built separately for FCR-N and FCR-D. The droop_cost attribute on the pump or global_settings is used if this attribut is not specified. (xUnit: NO_UNIT, yUnit: NOK) (pump:fcr_n_fixed_droop)= ### fcr_n_fixed_droop Fixed unit droop schedule for FCR-N reserves when droop is built separately for FCR-N and FCR-D (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_d_up_fixed_droop)= ### fcr_d_up_fixed_droop Fixed unit droop schedule for FCR-D up reserves when droop is built separately for FCR-N and FCR-D (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_d_down_fixed_droop)= ### fcr_d_down_fixed_droop Fixed unit droop schedule for FCR-D down reserves when droop is built separately for FCR-N and FCR-D (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_n_droop_min)= ### fcr_n_droop_min The lower bound of the unit droop for FCR-N reserves when it is modelled as a variable in the optimization model and droop is built separately for FCR-N and FCR-D. This bound is applied together with other FCR-N constraints, where the most restrictive will limit the FCR delivery (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_d_up_droop_min)= ### fcr_d_up_droop_min The lower bound of the unit droop for FCR-D up reserves when it is modelled as a variable in the optimization model and droop is built separately for FCR-N and FCR-D. This bound is applied together with other FCR-D up constraints, where the most restrictive will limit the FCR delivery (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_d_down_droop_min)= ### fcr_d_down_droop_min The lower bound of the unit droop for FCR-D down reserves when it is modelled as a variable in the optimization model and droop is built separately for FCR-N and FCR-D. This bound is applied together with other FCR-D down constraints, where the most restrictive will limit the FCR delivery (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_n_droop_max)= ### fcr_n_droop_max The upper bound of the unit droop for FCR-N reserves when it is modelled as a variable in the optimization model and droop is built separately for FCR-N and FCR-D. This bound is applied together with other FCR-N constraints, where the most restrictive will limit the FCR delivery (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_d_up_droop_max)= ### fcr_d_up_droop_max The upper bound of the unit droop for FCR-D up reserves when it is modelled as a variable in the optimization model and droop is built separately for FCR-N and FCR-D. This bound is applied together with other FCR-D up constraints, where the most restrictive will limit the FCR delivery (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_d_down_droop_max)= ### fcr_d_down_droop_max The upper bound of the unit droop for FCR-D down reserves when it is modelled as a variable in the optimization model and droop is built separately for FCR-N and FCR-D. This bound is applied together with other FCR-D down constraints, where the most restrictive will limit the FCR delivery (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:historical_consumption)= ### historical_consumption The pump consumption for times before the optimization start. (xUnit: NO_UNIT, yUnit: MW) (pump:min_uptime)= ### min_uptime Minimum pump up-time, given in whole minutes. (xUnit: MINUTE, yUnit: MINUTE) (pump:min_downtime)= ### min_downtime Minimum pump down-time, given in whole minutes. (xUnit: MINUTE, yUnit: MINUTE) (pump:min_uptime_flag)= ### min_uptime_flag Flag for turning on/off the minimum pump up-time constraints (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:min_downtime_flag)= ### min_downtime_flag Flag for turning on/off the minimum pump down-time constraints (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:rr_up_stop_mip_flag)= ### rr_up_stop_mip_flag Setting this flag to 1 will turn on the use of binary variables in full iterations to enable this pump to deliver valid RR-UP reserves up to full stop. This forces RR-UP to either be alocated as spinning reserve (up to p_min) or up to a full stop, and no other spinning reservers can be allocated on the unit if RR-UP is delivered to stop. RR-UP allocation in forbidden consumption regions (between 0 and p_min) is also prohibited. If the flag is not specified, the attribute 'rr_up_stop_mip' on global_settings is used (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:max_p_constr)= ### max_p_constr Time-dependent maximum consumption limit for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:max_p_constr_flag)= ### max_p_constr_flag Flag determining whether the time-dependent maximum consumption limit for the pump should be included in the building of the original PQ curve (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:min_p_constr)= ### min_p_constr Time-dependent minimum consumption limit for the pump (xUnit: NO_UNIT, yUnit: MW) (pump:min_p_constr_flag)= ### min_p_constr_flag Flag determining whether the time-dependent minimum consumption limit for the pump should be included in the building of the original PQ curve (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:min_q_constr)= ### min_q_constr Time-dependent minimum upflow limit for the pump (xUnit: NO_UNIT, yUnit: M3/S) (pump:min_q_constr_flag)= ### min_q_constr_flag Flag determining whether the time-dependent minimum upflow limit for the pump should be included in the building of the original PQ curve (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:max_q_constr)= ### max_q_constr Time-dependent maximum upflow limit for the pump (xUnit: NO_UNIT, yUnit: M3/S) (pump:max_q_constr_flag)= ### max_q_constr_flag Flag determining whether the time-dependent maximum upflow limit for the pump should be included in the building of the original PQ curve (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:eff_head)= ### eff_head Resulting effective head of the pump (xUnit: NO_UNIT, yUnit: METER) (pump:sim_eff_head)= ### sim_eff_head Resulting effective head of the pump during simulation (xUnit: NO_UNIT, yUnit: METER) (pump:head_loss)= ### head_loss Resulting head loss of the pump, i.e. the effective head of the pump (eff_head) minus the plant gross head (gross_head) (xUnit: NO_UNIT, yUnit: METER) (pump:sim_head_loss)= ### sim_head_loss Resulting head loss of the pump in the simulation, i.e. the effective head of the pump (eff_head) minus the plant gross head (gross_head) (xUnit: NO_UNIT, yUnit: METER) (pump:consumption)= ### consumption Resulting pump consumption, calculated based on upflow (xUnit: NO_UNIT, yUnit: MW) (pump:sim_consumption)= ### sim_consumption Simulated pump consumption, calculated based on upflow (xUnit: NO_UNIT, yUnit: MW) (pump:solver_consumption)= ### solver_consumption Preliminary result for pump consumption that is returned by the linearized optimization problem (xUnit: NO_UNIT, yUnit: MW) (pump:upflow)= ### upflow Resulting pump upflow. If solver_upflow >= pump_turn_off_limit, upflow = solver_upflow. Otherwise, upflow = 0. (xUnit: NO_UNIT, yUnit: M3/S) (pump:sim_upflow)= ### sim_upflow Simulated pump upflow. (xUnit: NO_UNIT, yUnit: M3/S) (pump:solver_upflow)= ### solver_upflow Preliminary result for pump upflow that is returned by the linearized optimization problem (xUnit: NO_UNIT, yUnit: M3/S) (pump:committed_out)= ### committed_out Committed status of the pump as a result of the optimization: 0 - not running; 1 - committed to run (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:consumption_schedule_penalty)= ### consumption_schedule_penalty Resulting penalty when the pump consumption schedule is violated (xUnit: NO_UNIT, yUnit: MW) (pump:upflow_schedule_penalty)= ### upflow_schedule_penalty Resulting penalty when the pump upflow schedule is violated (xUnit: NO_UNIT, yUnit: MM3) (pump:fcr_n_up_delivery)= ### fcr_n_up_delivery Resulting pump FCR_N_UP delivery (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_n_down_delivery)= ### fcr_n_down_delivery Resulting pump FCR_N_DOWN delivery (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_d_up_delivery)= ### fcr_d_up_delivery Resulting pump FCR_D_UP delivery (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_d_down_delivery)= ### fcr_d_down_delivery Resulting pump FCR_D_DOWN delivery (xUnit: NO_UNIT, yUnit: MW) (pump:frr_up_delivery)= ### frr_up_delivery Resulting pump FRR_UP delivery (xUnit: NO_UNIT, yUnit: MW) (pump:frr_down_delivery)= ### frr_down_delivery Resulting pump FRR_DOWN delivery (xUnit: NO_UNIT, yUnit: MW) (pump:rr_up_delivery)= ### rr_up_delivery Resulting pump RR_UP delivery (xUnit: NO_UNIT, yUnit: MW) (pump:rr_down_delivery)= ### rr_down_delivery Resulting pump RR_DOWN delivery (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_n_up_delivery_physical)= ### fcr_n_up_delivery_physical Resulting physical pump FCR_N delivery in the upward direction (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_n_down_delivery_physical)= ### fcr_n_down_delivery_physical Resulting physical pump FCR_N delivery in the downward direction (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_d_up_delivery_physical)= ### fcr_d_up_delivery_physical Resulting physical pump FCR_D delivery in the upward direction (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_d_down_delivery_physical)= ### fcr_d_down_delivery_physical Resulting physical pump FCR_D delivery in the downward direction (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_n_up_schedule_penalty)= ### fcr_n_up_schedule_penalty Resulting penalty when the pump FCR_N_UP schedule is violated (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_n_down_schedule_penalty)= ### fcr_n_down_schedule_penalty Resulting penalty when the pump FCR_N_DOWN schedule is violated (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_d_up_schedule_penalty)= ### fcr_d_up_schedule_penalty Resulting penalty when the pump FCR_D_UP schedule is violated (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_d_down_schedule_penalty)= ### fcr_d_down_schedule_penalty Resulting penalty when the pump FCR_D_DOWN schedule is violated (xUnit: NO_UNIT, yUnit: MW) (pump:frr_up_schedule_penalty)= ### frr_up_schedule_penalty Resulting penalty when the pump FRR_UP schedule is violated (xUnit: NO_UNIT, yUnit: MW) (pump:frr_down_schedule_penalty)= ### frr_down_schedule_penalty Resulting penalty when the pump FRR_DOWN schedule is violated (xUnit: NO_UNIT, yUnit: MW) (pump:rr_up_schedule_penalty)= ### rr_up_schedule_penalty Resulting penalty when the pump RR_UP schedule is violated (xUnit: NO_UNIT, yUnit: MW) (pump:rr_down_schedule_penalty)= ### rr_down_schedule_penalty Resulting penalty when the pump RR_DOWN schedule is violated (xUnit: NO_UNIT, yUnit: MW) (pump:droop_result)= ### droop_result Resulting unit droop when it is modelled as a variable in the optimization model (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:original_pq_curves)= ### original_pq_curves Original PQ-curve for the pump that includes non-convex regions (xUnit: M3/S, yUnit: MW) (pump:convex_pq_curves)= ### convex_pq_curves Convexified PQ-curve for the pump that removes all the nonconcave points of the original PQ curve. The slope of each segment is non-decreasing. (xUnit: M3/S, yUnit: MW) (pump:final_pq_curves)= ### final_pq_curves Final PQ curve for the pump that is the final form included into the optimization problem. The first point of the convex PQ curve is extended to Q=0. (xUnit: M3/S, yUnit: MW) (pump:max_cons)= ### max_cons The head dependent maximal consumption of the pump, most accurate in incremental iterations (xUnit: NO_UNIT, yUnit: MW) (pump:min_cons)= ### min_cons The head dependent minimal consumption of the pump, most accurate in incremental iterations (xUnit: NO_UNIT, yUnit: MW) (pump:fcr_n_droop_result)= ### fcr_n_droop_result The optimized unit droop for FCR-N reserves when the droop is built separately for FCR-N and FCR-D. If all FCR reserves share a common droop setting, this txy is identical to the 'droop_result' attribute (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_d_up_droop_result)= ### fcr_d_up_droop_result The optimized unit droop for FCR-D up reserves when the droop is built separately for FCR-N and FCR-D. If all FCR reserves share a common droop setting, this txy is identical to the 'droop_result' attribute (xUnit: NO_UNIT, yUnit: NO_UNIT) (pump:fcr_d_down_droop_result)= ### fcr_d_down_droop_result The optimized unit droop for FCR-D down reserves when the droop is built separately for FCR-N and FCR-D. If all FCR reserves share a common droop setting, this txy is identical to the 'droop_result' attribute (xUnit: NO_UNIT, yUnit: NO_UNIT)