Public interface
Module
EnergyModelsHeat — Module
Main 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 — Type
ResourceHeat{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::IDTis the name/identifyer of the resource.t_supply::TSis the supply temperature in °C as aTimeProfile. Providing a single number will be translated to aFixedProfile.t_return::TRis 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 — Type
DHPipeA 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
idis the name/identifier of the link.from::Nodeis the node from which there is flow into the link.to::Nodeis the node to which there is flow out of the link.cap::TimeProfileis the heat transport capacity of the pipepipe_length::Float64is the pipe length in meterspipe_loss_factor::Float64is the heat loss factor in [W m⁻¹ K⁻¹].t_ground::TimeProfileis the ground temperature in °C.- **
resource_heat::ResourceHeatis the resource used by DHPipe formulation::Formulationis the used formulation of links. The fieldformulationis conditional through usage of a constructor.data::Vector{<:ExtensionData}is the additional data (e.g., for investments). The fielddatais conditional through usage of a constructor.
Node types
EnergyModelsHeat.HeatPump — Type
HeatPump <: EMB.NetworkNodeA HeatPump node to convert low temperature heat to high(er) temperature heat by utilizing an exergy driving force (e.g., electricity).
Fields
idis the name/identifier of the node.cap::TimeProfileis the installed heating capacity.cap_lower_boundis the lower capacity bound for flexibility within [0, 1] reflecting the lowest possible relative capacity use.t_sourceis the temperature profile of the heat sourcet_sinkis the sink temperature of the condensator. The temperature must be given in °C.eff_carnotis the Carnot Efficiency COPreal/COPcarnot. The value must be within [0, 1].input_heatis the resource for the low temperature heat input.driving_forceis the resource of the driving force, e.g., electricity.opex_var::TimeProfileis the variable operating expense per energy unit produced.opex_fixed::TimeProfileis the fixed operating expense.output::Dict{<:Resource, <:Real}are the producedResources with conversion valueReal.data::Vector{<:ExtensionData}is the additional data (e.g., for investments). The fielddatais conditional through usage of a constructor.
EnergyModelsHeat.ThermalEnergyStorage — Type
ThermalEnergyStorage{T} <: Storage{T}A ThermalEnergyStorage that functions mostly like a RefStorage with the additional option to include a discharge rate and 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.
BoundRateTES in its current implementation only supports CyclicRepresentative as storage behavior when using RepresentativePeriods. This input is not a required input due to the inclusion of a constructor.
Fields
idis the name/identifier of the node.charge::AbstractStorageParametersare the charging parameters of theThermalEnergyStoragenode. Depending on the chosen type, the charge parameters can include variable OPEX, fixed OPEX, and/or a capacity.level::AbstractStorageParametersare the level parameters of theThermalEnergyStorage. Depending on the chosen type, the charge parameters can include variable OPEX and/or fixed OPEX.discharge::AbstractStorageParametersare the discharging parameters of theThermalEnergyStoragenode. Depending on the chosen type, the discharge parameters can include variable OPEX, fixed OPEX, and/or a capacity.stor_res::Resourceis the storedResource.
heat_loss_factor::Float64are the relative heat losses in percent.input::Dict{<:Resource,<:Real}are the inputResources with conversion valueReal.output::Dict{<:Resource,<:Real}are the generatedResources with conversion valueReal. Only relevant for linking and the storedResourceas the output value is not utilized in the calculations.data::Vector{<:ExtensionData}is the additional data (e.g., for investments). The fielddatais conditional through usage of a constructor.
EnergyModelsHeat.BoundRateTES — Type
BoundRateTES{T} <: AbstractTES{T}A BoundRateTES that has the option to include thermal energy losses. In contrast to ThermalEnergyStorage, the maximum charging and discharging rates are defined as a ratio between the (dis-)charge rate and the installed storage capacity.
BoundRateTES in its current implementation only supports CyclicRepresentative as storage behavior when using RepresentativePeriods. This input is not a required input due to the inclusion of a constructor.
Fields
idis the name/identifier of the node.level::AbstractStorageParametersare the level parameters of theBoundRateTES. Depending on the chosen type, the level parameters can include variable OPEX and/or fixed OPEX.stor_res::Resourceis the storedResource.heat_loss_factor::Float64are the relative heat losses in percent.level_discharge::Float64is the ratio of maximum discharge rate and installed storage level.level_charge::Float64is the ratio of maximum charge rate and installed storage level.input::Dict{<:Resource,<:Real}are the inputResources with conversion valueReal.output::Dict{<:Resource,<:Real}are the generatedResources with conversion valueReal. Only relevant for linking and the storedResourceas the output value is not utilized in the calculations.data::Vector{<:ExtensionData}is the additional data (e.g., for investments). The fielddatais conditional through usage of a constructor.
EnergyModelsHeat.HeatExchanger — Type
HeatExchangerA 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
idis the name/identifier of the node.cap::TimeProfileis the installed capacity.opex_var::TimeProfileis the variable operating expense per energy unit produced.opex_fixed::TimeProfileis the fixed operating expense.input::Dict{<:Resource, <:Real}are the inputResources with conversion valueReal.output::Dict{<:Resource, <:Real}are the generatedResources with conversion valueReal.data::Vector{<:ExtensionData}is the additional data (e.g. for investments). The fielddatais conditional through usage of a constructor.delta_t_minis the ΔT_min for the heat exchanger
EnergyModelsHeat.DirectHeatUpgrade — Type
DirectHeatUpgradeA 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
idis the name/identifier of the node.cap::TimeProfileis the installed capacity.opex_var::TimeProfileis the variable operating expense per energy unit produced.opex_fixed::TimeProfileis the fixed operating expense.input::Dict{<:Resource, <:Real}are the inputResources with conversion valueReal. Valid inputs are: oneHeatresource and one power resource.output::Dict{<:Resource, <:Real}are the generatedResources with conversion valueReal. Valid output is a singleHeatresourcedata::Vector{<:ExtensionData}is the additional data. The pinch data must be included here.delta_t_minis the ΔT_min for the heat exchanger.
Data types
EnergyModelsHeat.PinchData — Type
PinchData{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.