Key Components#

Electrolyser#

The main load object used in NEMGLO.


class nemglo.components.electrolyser.Electrolyser(system_plan, identifier)#

Object to store the user input parameters of electrolyser, check and validate inputs, then perform loading actions to planner object.

Parameters
  • system_plan (nemglo.planner.Plan) – The system plan object for which the Electrolyser should be linked to.

  • identifier (str) – A unique identifier to refer to the object as. For example, ‘H2E’.

load_h2_parameters_preset(capacity, maxload, minload, offload, electrolyser_type, sec_profile, h2_price_kg=None)#

Load Electrolyser parameters to define the object.

Parameters
  • capacity (float) – The desired rated capacity of the Electrolyser, in MW.

  • maxload (float) – The maximum load operation of the Electrolyser, in MW. At present, NEMGLO assumes capacity parameter. maxload has null effect on the optimiser.

  • minload (float) – The minimum stable loading (MSL) of the Electrolyser, in MW.

  • offload (float) – The off state of the Electrolyser, in MW. In other words, absolute minimum value.

  • electrolyser_type (str) – Either set as ‘PEM’ or ‘AE’. This determines which set of predefined electrolyser characteristics are used.

  • sec_profile (str) – Either set as ‘fixed’ or ‘variable’. This determines the behaviour of the conversion function from electricity, as MW, to hydrogen, as kg.

  • h2_price_kg (float, optional) – The sale price or production benefit received for the volume of hydrogen produced, by default None.

remove_electrolyser_operation()#

Removes all assosciations of the Electrolyser object from the Plan object.

_set_mw_load()#

Defines Electrolyser MW load variables and prices variables according to input market prices in Plan object.

_set_mw_load_sum()#

Add a variable summating all interval data for the Electrolyser mw_load variables.

_set_h2_production_fixed()#

Creates a timeseries of Hydrogen Production variables for the optimiser determined by a fixed (linear) specific energy consumption (kWh/kg). Each variable is set by the equation of: h2_production [kg] = (1 / sec_system) [kg/kWh] * 10^3 [kWh/MWh] * h2e_load [MW] * (Interval Length [min] / 60) [h]

_set_h2_production_variable()#

Creates a timeseries of Hydrogen Production variables for the optimiser determined by a variable specific energy consumption (kWh/kg) relationship. The determined y-variable (Hydrogen Production [kg]) is resolved by a Special Ordered Set (SOS) Type 2 in the optimisation solver. In essence, a piecewise linear approximation of the defined _sec_variable_points.

The fundamental equation converting SEC [kWh/kg] to [kg] is defined by: h2_production [kg] = (1 / sec_system) [kg/kWh] * 10^3 [kWh/MWh] * h2e_load [MW] * (Interval Length [min] / 60) [h]

_price_h2_production()#

Defines a price for Hydrogen production [$/kg] as a benefit (not cost) in the optimisation solver.

_set_h2_production_sum()#

Add a variable summating all interval data for the Electrolyser h2 production variables.

_set_ramp_variable()#

Set the ramp variable

Note

The units of the ramp variable are in MW. The user should consider this and dispatch interval length for conventional reporting in MW/min.

_set_production_target(target_value=100, bound='max', period='hour')#

Set production target

Warning

In development (from old version)

_set_storage_external_flow(external_flow=- 500)#

Set storage external flow

Todo

Add dynamic storage external_flow that varies between intervals


Renewables#

A renewables object allows the user to consider a Power Purchase Agreement (PPA) with a specific generator in NEMGLO.


class nemglo.components.renewables.Generator(system_plan, identifier)#

Generator class is used to create an object to store parameters defining an Variable Renewable Energy (VRE) source for the load to contract a Power Purchase Agreements (PPA) with.

Parameters
  • system_plan (nemglo.planner.Plan) – The system plan object for which the Generator should be linked to.

  • identifier (str) – A unique identifier to refer to the object as. For example, ‘VRE1’ for the first PPA, ‘VRE2’ for the second.

  • todo: (..) – Inherit data directly via data_fetch and flag an attribute to signify this vs custom inputs.: From using python, writing a yaml file to show inputs saved in simulation.

load_vre_parameters(duid, capacity, trace, ppa_strike, ppa_floor=None)#

Load VRE parameters defining the Generator object.

Parameters
  • duid (str) – The unique string of the VRE Generator. If using a custom input, create a custom name for reference.

  • capacity (float) – The desired rated capacity of the VRE Generator, in MW. Note the input trace will be scaled accordingly.

  • trace (pandas.DataFrame) –

    Timeseries data of generator trace.

    Columns:

    Description:

    Time

    Dispatch interval timestamps (as datetime.datetime)

    {duid}

    Capacity factor trace values between 0 and 1, % (as np.float64)

  • ppa_strike (float) – The strike price for the Power Purchase Agreement (PPA) with the VRE Generator, in $/MWh.

  • ppa_floor (float, optional) – A floor price for the PPA contract if desired, in $/MWh, by default None.

add_ppa_contract()#

Constructs a PPA contract between the load and VRE Generator, given the defined parameters of the generator.

Tip

This function is for standard python use. For more advanced control / direct interfacing, instead use the _set functions.

remove_ppa_contract()#

Removes all assosciations of the Generator object from the Plan object.

_set_capacity_var(ub=numpy.inf)#

Defines Generator capacity variable in the optimiser as -> Capacity = 100.0

_set_availability()#

Defines the VRE generator’s availability in the optimiser.

_set_ppa_cost_function()#

Add the PPA cost function of the VRE generator as a CfD traded on the variable volume of available generation.

Note

The cost component in the objective function is expressed in $/MW.

_set_ppa_rec_sum()#

Add a summation of the traded volume of the PPA CfD which can used to consider the volume of Renewable Energy Certificates received by the load on the assumption of a bundled PPA.

Note

The ppa_rec_sum variable is expressed in MW.


Emissions#

An emissions object allows the user to configure NEMGLO to consider shadow pricing of emissions data in the optimisation.


class nemglo.components.emissions.Emissions(system_plan, identifier)#

Object to store the user input parameters of Emissions, check and validate inputs, then perform loading actions to planner object.