hydesign.ems.ems_P2X

Classes

ems_P2X

Energy management optimization model for HPP with P2X

Functions

ems_cplex_P2X(wind_ts, solar_ts, price_ts, P_batt_MW, ...)

ems_cplex_parts_P2X(wind_ts, solar_ts, price_ts, ...)

EMS solver implemented in cplex

Module Contents

class hydesign.ems.ems_P2X.ems_P2X(N_time, eff_curve, life_y=25, intervals_per_hour=1, ems_type='cplex', load_min_penalty_factor=1000000.0, electrolyzer_eff_curve_type='production')[source]

Bases: openmdao.api.ExplicitComponent

Energy management optimization model for HPP with P2X The energy management system optimization model consists in maximizing the revenue generated by the plant over a period of time, including a possible penalty for not meeting the requirement of energy generation during peak hours over the period. It also assigns a cost for rapid fluctuations of the battery in order to slow down its degradation. The EMS type is a CPLEX optimization.

Parameters:
  • wind_t (WPP power time series [MW])

  • solar_t (PVP power time series [MW])

  • price_t (Electricity price time series)

  • b_P (Battery power capacity [MW])

  • b_E (Battery energy storage capacity [MW])

  • G_MW (Grid capacity [MW])

  • battery_depth_of_discharge (battery depth of discharge)

  • battery_charge_efficiency (Wake affected power curve)

  • peak_hr_quantile (Quantile of price time series to define peak price hours (above this quantile))

  • cost_of_battery_P_fluct_in_peak_price_ratio (cost of battery power fluctuations computed as a peak price ratio)

  • n_full_power_hours_expected_per_day_at_peak_price (Penalty occurs if number of full power hours expected per day at peak price are not reached)

  • price_H2 (Price of Hydrogen)

  • ptg_MW (Electrolyzer power capacity)

  • storage_eff (Compressor efficiency for hydrogen storage)

  • ptg_deg (Electrolyzer rate of degradation annually)

  • hhv (High heat value)

  • m_H2_demand_t (Hydrogen demand times series)

  • HSS_kg (Hydrogen storage system capacity)

  • penalty_factor_H2 (Penalty for not meeting hydrogen demand in an hour)

Returns:

  • wind_t_ext (WPP power time series)

  • solar_t_ext (PVP power time series)

  • price_t_ext (Electricity price time series)

  • hpp_t (HPP power time series)

  • hpp_curt_t (HPP curtailed power time series)

  • b_t (Battery charge/discharge power time series)

  • b_E_SOC_t (Battery energy SOC time series)

  • penalty_t (Penalty for not reaching expected energy productin at peak hours)

  • P_ptg_t (Electrolyzer power consumption time series)

  • m_H2_t (Hydrogen production time series)

  • m_H2_demand_t_ext (Hydrogen demand times series)

  • m_H2_demand_t (Hydrogen offtake times series)

  • LoS_H2_t (H2 storage level time series)

N_time[source]
eff_curve[source]
ems_type = 'cplex'[source]
life_y = 25[source]
life_h = 219000[source]
life_intervals = 219000[source]
load_min_penalty_factor = 1000000.0[source]
electrolyzer_eff_curve_type = 'production'[source]
setup()[source]

Declare inputs and outputs.

Available attributes:

name pathname comm options

compute(inputs, outputs)[source]

Compute outputs given inputs. The model is assumed to be in an unscaled state.

An inherited component may choose to either override this function or to define a compute_primal function.

Parameters:
  • inputs (Vector) – Unscaled, dimensional input variables read via inputs[key].

  • outputs (Vector) – Unscaled, dimensional output variables read via outputs[key].

  • discrete_inputs (dict-like or None) – If not None, dict-like object containing discrete input values.

  • discrete_outputs (dict-like or None) – If not None, dict-like object containing discrete output values.

hydesign.ems.ems_P2X.ems_cplex_P2X(wind_ts, solar_ts, price_ts, P_batt_MW, E_batt_MWh_t, hpp_grid_connection, battery_depth_of_discharge, charge_efficiency, price_H2, ptg_MW, HSS_kg, storage_eff, ptg_deg, hhv, m_H2_demand_ts, H2_storage_t, penalty_factor_H2, eff_curve, min_power_standby, load_min_penalty_factor=1000000.0, peak_hr_quantile=0.9, cost_of_battery_P_fluct_in_peak_price_ratio=0.5, n_full_power_hours_expected_per_day_at_peak_price=3, batch_size=62, electrolyzer_eff_curve_type='production')[source]
hydesign.ems.ems_P2X.ems_cplex_parts_P2X(wind_ts, solar_ts, price_ts, P_batt_MW, E_batt_MWh_t, hpp_grid_connection, battery_depth_of_discharge, charge_efficiency, price_H2, ptg_MW, HSS_kg, storage_eff, ptg_deg, hhv, m_H2_demand_ts, H2_storage_t, penalty_factor_H2, eff_curve, min_power_standby, load_min_penalty_factor=1000000.0, peak_hr_quantile=0.9, cost_of_battery_P_fluct_in_peak_price_ratio=0.5, n_full_power_hours_expected_per_day_at_peak_price=3, electrolyzer_eff_curve_type='production')[source]

EMS solver implemented in cplex

Parameters:
  • wind_ts (WPP power time series)

  • solar_ts (PVP power time series)

  • price_ts (price time series)

  • P_batt_MW (battery power)

  • E_batt_MWh_t (battery energy capacity time series)

  • H2_storage_t (hydrogen storgae capacity time series)

  • hpp_grid_connection (grid connection)

  • battery_depth_of_discharge (battery depth of discharge)

  • charge_efficiency (battery charge efficiency)

  • peak_hr_quantile (quantile of price time series to define peak price hours)

  • cost_of_battery_P_fluct_in_peak_price_ratio (cost of battery power fluctuations computed as a peak price ratio)

  • n_full_power_hours_expected_per_day_at_peak_price (Penalty occurs if number of full power hours expected per day at peak price are not reached)

  • price_H2 (Price of Hydrogen)

  • ptg_MW (Electrolyzer power capacity)

  • HSS_kg (Hydrogen storage capacity)

  • storage_eff (Compressor efficiency for hydrogen storage)

  • ptg_deg (Electrolyzer rate of degradation annually)

  • hhv (High heat value)

  • m_H2_demand_ts (Hydrogen demand times series)

  • penalty_factor_H2 (Penalty on not meeting hydrogen demand in an hour)

Returns:

  • P_HPP_ts (HPP power time series)

  • P_curtailment_ts (HPP curtailed power time series)

  • P_charge_discharge_ts (Battery charge/discharge power time series)

  • E_SOC_ts (Battery energy SOC time series)

  • penalty_ts (penalty time series for not reaching expected energy production at peak hours)

  • P_ptg_ts (Electrolyzer power consumption time series)

  • P_ptg_SB_ts (Electrolyzer standby mode power consumption time series)

  • m_H2_ts (Hydrogen production time series)

  • m_H2_offtake_ts (Hydrogen offtake time series)

  • LoS_H2_ts (Level of Hydrogen storage time series)