Key Components
Contents
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.