Public interface

Module

EnergyModelsHeatModule

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.

source

Resource types

EnergyModelsHeat.ResourceHeatType
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::IDT is the name/identifyer of the resource.
  • t_supply::TS is the supply temperature in °C as a TimeProfile. Providing a single number will be translated to a FixedProfile.
  • t_return::TR is the return temperature in °C as a TimeProfile. Providing a single number will be translated to a FixedProfile. This field is optional, and will be set to zero if no value is provided.
source
EnergyModelsHeat.DHPipeType
DHPipe

A DH pipe between two nodes.

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 pipe
  • pipe_length::Float64 is the pipe length in meters
  • pipe_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 field formulation is conditional through usage of a constructor.
  • data::Vector{<:Data} is the additional data (e.g., for investments). The field data is conditional through usage of a constructor.
source

Node types

EnergyModelsHeat.HeatPumpType
HeatPump <: 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 source
  • t_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 produced Resources with conversion value Real.
  • data::Vector{<:Data} is the additional data (e.g., for investments). The field data is conditional through usage of a constructor.
source
EnergyModelsHeat.ThermalEnergyStorageType
ThermalEnergyStorage{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.

StorageBehavior

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 the ThermalEnergyStorage 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 the ThermalEnergyStorage. Depending on the chosen type, the charge parameters can include variable OPEX and/or fixed OPEX.
  • stor_res::Resource is the stored Resource.
  • heat_loss_factor::Float64 are the relative heat losses in percent.
  • input::Dict{<:Resource,<:Real} are the input Resources with conversion value Real.
  • output::Dict{<:Resource,<:Real} are the generated Resources with conversion value Real. Only relevant for linking and the stored Resource as the output value is not utilized in the calculations.
  • data::Vector{<:Data} is the additional data (e.g., for investments). The field data is conditional through usage of a constructor.
source
EnergyModelsHeat.HeatExchangerType
HeatExchanger

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 input Resources with conversion value Real.
  • output::Dict{<:Resource, <:Real} are the generated Resources with conversion value Real.
  • data::Vector{Data} is the additional data (e.g. for investments). The field data is conditional through usage of a constructor.
  • delta_t_min is the ΔT_min for the heat exchanger
source
EnergyModelsHeat.DirectHeatUpgradeType
DirectHeatUpgrade

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 input Resources with conversion value Real. Valid inputs are: one Heat resource and one power resource.
  • output::Dict{<:Resource, <:Real} are the generated Resources with conversion value Real. Valid output is a single Heat resource
  • data::Vector{Data} is the additional data. The pinch data must be included here.
  • delta_t_min is the ΔT_min for the heat exchanger.
source
Changes

Once exported, remove EnergyModelsHeat. in front of DirectHeatUpgrade

Data types

EnergyModelsHeat.PinchDataType
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.

source

Auxiliary types

Changes

To be added, once docstrings are written:

  • EqualMassFlows
  • DifferentMassFlows