Public interface
Module
EnergyModelsRenewableProducers
— ModuleMain module for EnergyModelsRenewableProducers.jl
.
This module implements the following types (Nodes) with constraints:
NonDisRes
is a subtype ofSource
and represents a non-dispatchable renewable producer, as wind, solar etc.PumpedHydroStor
is a subtype ofStorage
and represents a regulated pumped hydro storage.HydroStor
is a subtype ofStorage
and represents a regulated hydro storage, that is a standard hydro powerplant without pumps.
Node types
Abstract types
EnergyModelsRenewableProducers.HydroStorage
— TypeAn abstract type for hydro storage nodes, with or without pumping.
Concrete types
EnergyModelsRenewableProducers.NonDisRES
— TypeNonDisRES <: EMB.Source
A non-dispatchable renewable energy source. It extends the existing RefSource
node through including a profile that corresponds to thr production. The profile can have variations on the strategic level.
Fields
id
is the name/identifyer of the node.cap::TimeProfile
is the installed capacity.profile::TimeProfile
is the power production in each operational period as a ratio of the installed capacity at that time.opex_var::TimeProfile
is the variable operating expense per energy unit produced.opex_fixed::TimeProfile
is the fixed operating expense.output::Dict{Resource, Real}
are the generatedResource
s, normally Power.data::Vector{Data}
is the additional data (e.g. for investments). The fielddata
is conditional through usage of a constructor.
EnergyModelsRenewableProducers.HydroStor
— TypeHydroStor{T} <: HydroStorage{T}
A regulated hydropower storage, modelled as a Storage
node. A regulated hydro storage node requires a capacity for the discharge
and does not have a required inflow from the model, except for water inflow from outside the model, although it requires a field input
.
Fields
id
is the name/identifyer of the node.level::EMB.UnionCapacity
are the level parameters of theHydroStor
node. Depending on the chosen type, the charge parameters can include variable OPEX and/or fixed OPEX.discharge::EMB.UnionCapacity
are the discharging parameters of theHydroStor
node. Depending on the chosen type, the discharge parameters can include variable OPEX, fixed OPEX, and/or a capacity.level_init::TimeProfile
is the initial stored energy in the dam.level_inflow::TimeProfile
is the inflow of power per operational period.level_min::TimeProfile
is the minimum fraction of the reservoir capacity that has to remain in theHydroStorage
node.stor_res::ResourceCarrier
is the storedResource
.input::Dict{Resource, Real}
are the inputResource
s. In the case of aHydroStor
, this field can be left out.output::Dict{Resource, Real}
can only contain one entry, the stored resource.data::Vector{Data}
additional data (e.g. for investments). The fielddata
is conditional through usage of a constructor.
EnergyModelsRenewableProducers.PumpedHydroStor
— TypePumpedHydroStor{T} <: HydroStorage{T}
A pumped hydropower storage, modelled as a Storage
node. A pumped hydro storage node allows for storing energy through pumping water into the reservoir. The current implementation is a simplified node in which no lower reservoir is required. Instead, it is assumed that the reservoir has an infinite size.
A pumped hydro storage node requires a capacity for both charge
and discharge
to account for the potential to store energy in the form of potential energy.
Fields
id
is the name/identifyer of the node.charge::EMB.UnionCapacity
are the charging parameters of thePumpedHydroStor
node. Depending on the chosen type, the charge parameters can include variable OPEX, fixed OPEX, and/or a capacity.level::EMB.UnionCapacity
are the level parameters of theHydroStor
node. Depending on the chosen type, the charge parameters can include variable OPEX and/or fixed OPEX.discharge::EMB.UnionCapacity
are the discharging parameters of theHydroStor
node. Depending on the chosen type, the discharge parameters can include variable OPEX, fixed OPEX, and/or a capacity.level_init::TimeProfile
is the initial stored energy in the dam.level_inflow::TimeProfile
is the inflow of power per operational period.level_min::TimeProfile
is the minimum fraction of the reservoir capacity that has to remain in theHydroStorage
node.stor_res::ResourceCarrier
is the storedResource
.input::Dict{Resource, Real}
are the inputResource
s.output::Dict{Resource, Real}
can only contain one entry, the stored resource.data::Vector{Data}
additional data (e.g. for investments). The fielddata
is conditional through usage of a constructor.
Legacy constructors
EnergyModelsRenewableProducers.RegHydroStor
— FunctionRegHydroStor(
id::Any,
rate_cap::TimeProfile,
stor_cap::TimeProfile,
has_pump::Bool,
level_init::TimeProfile,
level_inflow::TimeProfile,
level_min::TimeProfile,
opex_var::TimeProfile,
opex_fixed::TimeProfile,
stor_res::ResourceCarrier,
input,
output,
Data,
)
Original Legacy constructor for a regulated hydropower storage, with or without pumping capabilities. This version is discontinued starting with Version 0.6.0. resulting in an error It is replaced with the two new types HydroStor
and PumpedHydroStor
to utilize the concept of multiple dispatch instead of logic.
See the documentation for further information regarding how you can translate your existing model to the new model.
Fields
id
is the name/identifyer of the node.rate_cap::TimeProfile
is the installed installed rate capacity.stor_cap::TimeProfile
is the installed storage capacity in the dam.has_pump::Bool
states wheter the stored resource can flow in.level_init::TimeProfile
is the initial stored energy in the dam.level_inflow::TimeProfile
is the inflow of power per operational period.level_min::TimeProfile
is the minimum fraction of the reservoir capacity that has to remain in theHydroStorage
node.opex_var::TimeProfile
are the variable operational expenses per GWh produced.opex_fixed::TimeProfile
are the fixed operational costs of the storage caacity.stor_res::ResourceCarrier
is the storedResource
.input::Dict{Resource, Real}
are the stored and used resources. The values in the Dict are ratios describing the energy loss when using the pumps.output::Dict{Resource, Real}
can only contain one entry, the stored resource.data::Array{Data}
additional data (e.g. for investments). This value is conditional through the application of a constructor.