Public interface
Module
EnergyModelsHeat
— ModuleMain module for EnergyModelsHeat
: a framework for energy system models with thermal components.
It exports the resource ResourceHeat
and structures for DH pipe, heat pump and heat exchanger.
Resource
types
EnergyModelsHeat.ResourceHeat
— TypeResourceHeat{IDT,TS<:TimeProfile,TR<:TimeProfile} <: Resource
ResourceHeat(id, t_supply::TimeProfile, t_return::TimeProfile)
ResourceHeat(id, t_supply::TimeProfile)
ResourceHeat(id, t_supply::Real, t_return::Real)
ResourceHeat(id, t_supply::Real)
A resource for heat.
Fields
id::IDT
is the name/identifyer of the resource.t_supply::TS
is the supply temperature in °C as aTimeProfile
. Providing a single number will be translated to aFixedProfile
.t_return::TR
is the return temperature in °C as aTimeProfile
. Providing a single number will be translated to aFixedProfile
. This field is optional, and will be set to zero if no value is provided.
Link
types
EnergyModelsHeat.DHPipe
— TypeDHPipe
A district heating pipe between two nodes. The district heating pipe only transports the specified resource with a specified loss factor. It has a maximum capacity.
Fields
id
is the name/identifier of the link.from::Node
is the node from which there is flow into the link.to::Node
is the node to which there is flow out of the link.cap::TimeProfile
is the heat transport capacity of the pipepipe_length::Float64
is the pipe length in meterspipe_loss_factor::Float64
is the heat loss factor in [W m⁻¹ K⁻¹].t_ground::TimeProfile
is the ground temperature in °C.- **
resource_heat::ResourceHeat
is the resource used by DHPipe formulation::Formulation
is the used formulation of links. The fieldformulation
is conditional through usage of a constructor.data::Vector{<:ExtensionData}
is the additional data (e.g., for investments). The fielddata
is conditional through usage of a constructor.
Node
types
EnergyModelsHeat.HeatPump
— TypeHeatPump <: EMB.NetworkNode
A HeatPump
node to convert low temperature heat to high(er) temperature heat by utilizing an exergy driving force (e.g., electricity).
Fields
id
is the name/identifier of the node.cap::TimeProfile
is the installed heating capacity.cap_lower_bound
is the lower capacity bound for flexibility within [0, 1] reflecting the lowest possible relative capacity use.t_source
is the temperature profile of the heat sourcet_sink
is the sink temperature of the condensator. The temperature must be given in °C.eff_carnot
is the Carnot Efficiency COPreal/COPcarnot. The value must be within [0, 1].input_heat
is the resource for the low temperature heat input.driving_force
is the resource of the driving force, e.g., electricity.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 producedResource
s with conversion valueReal
.data::Vector{<:ExtensionData}
is the additional data (e.g., for investments). The fielddata
is conditional through usage of a constructor.
EnergyModelsHeat.ThermalEnergyStorage
— TypeThermalEnergyStorage{T} <: Storage{T}
A ThermalEnergyStorage
that functions mostly like a RefStorage
with the additional option to include thermal energy losses. Heat losses are quantified through a heat loss factor that describes the amount of thermal energy that is lost in relation to the storage level from the previous timeperiod.
The main difference to RefStorage
is that these heat losses do not occur while charging or discharging, i.e., they are proportional to the storage level.
ThermalEnergyStorage
in its current implementation only supports CyclicRepresentative
as storage behavior. This input is not a required input due to the utilization of an inner constructor.
Fields
id
is the name/identifier of the node.charge::AbstractStorageParameters
are the charging parameters of theThermalEnergyStorage
node. Depending on the chosen type, the charge parameters can include variable OPEX, fixed OPEX, and/or a capacity.level::AbstractStorageParameters
are the level parameters of theThermalEnergyStorage
. Depending on the chosen type, the charge parameters can include variable OPEX and/or fixed OPEX.stor_res::Resource
is the storedResource
.heat_loss_factor::Float64
are the relative heat losses in percent.input::Dict{<:Resource,<:Real}
are the inputResource
s with conversion valueReal
.output::Dict{<:Resource,<:Real}
are the generatedResource
s with conversion valueReal
. Only relevant for linking and the storedResource
as the output value is not utilized in the calculations.data::Vector{<:ExtensionData}
is the additional data (e.g., for investments). The fielddata
is conditional through usage of a constructor.
EnergyModelsHeat.HeatExchanger
— TypeHeatExchanger
A HeatExchanger
node to convert "raw" surplus energy from other processes to "available" energy that can be used in the District Heating network.
The default heat exchanger assumes that mass flows can be different to optimize heat transfer. This is encoded by the type parameter HeatExchangerAssumptions
. The default value is DifferentMassFlows
, the alternative is to specify EqualMassFlows
to limit heat exchange to equal mass flow in the two circuits.
Fields
id
is the name/identifier of the node.cap::TimeProfile
is the installed capacity.opex_var::TimeProfile
is the variable operating expense per energy unit produced.opex_fixed::TimeProfile
is the fixed operating expense.input::Dict{<:Resource, <:Real}
are the inputResource
s with conversion valueReal
.output::Dict{<:Resource, <:Real}
are the generatedResource
s with conversion valueReal
.data::Vector{<:ExtensionData}
is the additional data (e.g. for investments). The fielddata
is conditional through usage of a constructor.delta_t_min
is the ΔT_min for the heat exchanger
EnergyModelsHeat.DirectHeatUpgrade
— TypeDirectHeatUpgrade
A DirectHeatUpgrade
node to upgrade "raw" surplus energy from other processes to "available" energy that can be used in the District Heating network.
The default DirectHeatUpgrade
heat exchanger assumes that mass flows can be different to optimize heat transfer. This is encoded by the type parameter HeatExchangerAssumptions
. The default value is DifferentMassFlows
, the alternative is to specify EqualMassFlows
to limit heat exchange to equal mass flow in the two circuits.
Fields
id
is the name/identifier of the node.cap::TimeProfile
is the installed capacity.opex_var::TimeProfile
is the variable operating expense per energy unit produced.opex_fixed::TimeProfile
is the fixed operating expense.input::Dict{<:Resource, <:Real}
are the inputResource
s with conversion valueReal
. Valid inputs are: oneHeat
resource and one power resource.output::Dict{<:Resource, <:Real}
are the generatedResource
s with conversion valueReal
. Valid output is a singleHeat
resourcedata::Vector{<:ExtensionData}
is the additional data. The pinch data must be included here.delta_t_min
is the ΔT_min for the heat exchanger.
Data
types
EnergyModelsHeat.PinchData
— TypePinchData{T}
Data for fixed temperature intervals used to calculate available energy from surplus energy source operating at T_SH_hot
and T_SH_cold
, with ΔT_min
between surplus source and the district heating network operating at T_DH_hot
and T_DH_cold
.
This struct is used internally, and it is calculated from the supply and return temperatures of the ResourceHeat
going in and out of the AbstractHeatExchanger
.