Types of energy system components

This document provides details on the component models and their implementations.

The description of each component type includes a block with a number of attributes that describe the type and how it connects to other components by its input and output interfaces. An example of such a block:

Type name BoundedSink
File energy_systems/general/bounded_sink.jl
Available models default
System function bounded_sink
Medium medium/None
Input media None/auto
Output media
Tracked values IN, Max_Energy

The available models listed are subtypes to the implementation of a component, which each work slightly differently and might use different parameters. An example is the difference between a condensing gas boiler and a traditional one. Note: At the moment there is no argument for the model, as each component currently only has one implemented model. In the future this will be extended to include a default model (when no argument is provided) and additional optional models.

Of particular note are the descriptions of the medium (if it applies) of the component type and its input and output interfaces. The Medium is used for components that could handle any type of medium and need to be configured to work with a specific medium. The attributes Input media and Output media describes which input and output interfaces the type provides and how the media of those can be configured. The syntax name:value lists the name of the parameter in the input data that defines the medium first, followed by a forward slash and the default value of the medium second, if any. A value of None implies that no default is set and therefore it must be given in the input data. A value of auto implies that the value is determined with no required input, usually from the Medium.

The Tracked values attribute lists which values of the component can be tracked with the output specification in the input file (see this section for details). Note that a value of IN or OUT refers to all input or output interfaces of the component. Which these are can be infered from the input and output media attributes and the chosen medium names if they differ from the default values.

The description further lists which arguments the implementation takes. Let's take a look at an example:

Name Type R/D Example Description
max_power_profile_file_path String Y/N profiles/district/max_power.prf Path to the max power profile.
efficiency Float Y/Y 0.8 Ratio of output over input energies.
static_temperature Temperature N/N 65.0 If given, sets the temperature of the heat output to a static value.

The name of the entries should match the keys in the input file, which is carried verbatim as entries to the dictionary argument of the component's constructor. The column R/D lists if the argument is required (R) and if it has a default value (D). If the argument has a default value the example value given in the next column also lists what that default value is. Otherwise the example column shows what a value might look like.

The type refers to the type it is expected to have after being parsed by the JSON library. The type Temperature is an internal structure and simply refers to either Float or Nothing, the null-type in Julia. In general, a temperature of Nothing implies that any temperature is accepted and only the amount of energy is revelant. More restrictive number types are automatically cast to their superset, but not the other way around, e.g: . Dictionaries given in the {"key":value} notation in JSON are parsed as Dict{String,Any}.

Boundary and connection components

General bounded sink

Type name BoundedSink
File energy_systems/general/bounded_sink.jl
Available models default
System function bounded_sink
Medium medium/None
Input media None/auto
Output media
Tracked values IN, Max_Energy

Generalised implementation of a bounded sink.

Can be given a profile for the maximum power it can take in, which is scaled by the given scale factor. If the medium supports it, it can either be given a profile for the temperature or use a static temperature.

Name Type R/D Example Description
max_power_profile_file_path String N/N profiles/district/max_power.prf Path to the max power profile.
static_power Temperature N/N 4000.0 If given, sets the power of the input to a static value.
scale Float Y/N 4000.0 Factor by which the max power values are multiplied. Only applies to profiles.
temperature_profile_file_path String N/N profiles/district/temperature.prf Path to the profile for the input temperature.
static_temperature Temperature N/N 65.0 If given, sets the temperature of the input to a static value.

General bounded supply

Type name BoundedSupply
File energy_systems/general/bounded_supply.jl
Available models default
System function bounded_source
Medium medium/None
Input media
Output media None/auto
Tracked values OUT, Max_Energy, Temperature

Generalised implementation of a bounded source.

Can be given a profile for the maximum power it can provide, which is scaled by the given scale factor. If the medium supports it, it can either be given a profile for the temperature or use a static temperature.

Name Type R/D Example Description
max_power_profile_file_path String N/N profiles/district/max_power.prf Path to the max power profile.
static_power Temperature N/N 4000.0 If given, sets the power of the output to a static value.
scale Float Y/N 4000.0 Factor by which the max power values are multiplied. Only applies to profiles.
temperature_profile_file_path String N/N profiles/district/temperature.prf Path to the profile for the output temperature.
static_temperature Temperature N/N 65.0 If given, sets the temperature of the output to a static value.

Bus

Type name Bus
File energy_systems/connections/bus.jl
Available models default
System function bus
Medium medium/None
Input media None/auto
Output media None/auto
Tracked values Balance

The only implementation of special component Bus, used to connect multiple components with a shared medium.

Name Type R/D Example Description
connection_matrix Dict{String,Any} N/N

General fixed sink

Type name Demand
File energy_systems/general/fixed_sink.jl
Available models default
System function fixed_sink
Medium medium/None
Input media None/auto
Output media
Tracked values IN, Load, Temperature

Generalised implementation of a fixed sink.

Can be given a profile for the energy it requests, which is scaled by the given scale factor. Alternatively a static load can be given. If the medium supports it, it can either be given a profile for the temperature or use a static temperature.

Name Type R/D Example Description
energy_profile_file_path String N/N profiles/district/demand.prf Path to the input energy profile.
static_load Float N/N 4000.0 If given, ignores the energy profile and sets the input energy to a static value.
scale Float Y/N 4000.0 Factor by which the energy profile values are multiplied. Only applies to profiles.
temperature_profile_file_path String N/N profiles/district/temperature.prf Path to the profile for the input temperature.
static_temperature Temperature N/N 65.0 If given, sets the temperature of the input to a static value.

General demand

Type name Demand
File energy_systems/general/fixed_sink.jl
Alias to FixedSink.

General fixed supply

Type name FixedSupply
File energy_systems/general/fixed_supply.jl
Available models default
System function fixed_source
Medium medium/None
Input media
Output media None/auto
Tracked values Out, Supply, Temperature

Generalised implementation of a fixed source.

Can be given a profile for the energy it can provide, which is scaled by the given scale factor. If the medium supports it, it can either be given a profile for the temperature or use a static temperature.

Name Type R/D Example Description
energy_profile_file_path String N/N profiles/district/energy_source.prf Path to the output energy profile.
static_supply Float N/N 4000.0 If given, ignores the energy profile and sets the output energy to a static value.
scale Float Y/N 4000.0 Factor by which the energy profile values are multiplied. Only applies to profiles.
temperature_profile_file_path String N/N profiles/district/temperature.prf Path to the profile for the output temperature.
static_temperature Temperature N/N 65.0 If given, sets the temperature of the output to a static value.

Grid connection

Type name GridConnection
File energy_systems/connections/grid_connection.jl
Available models default
System function bounded_source, bounded_sink
Medium medium/None
Input media None/auto
Output media None/auto
Tracked values IN, Out, Draw sum, Load sum

Used as a source or sink with no limit, which receives or gives off energy from/to outside the system boundary.

If parameter is_source is true, acts as a bounded_source with only one output connection. Otherwise a bounded_sink with only one input connection. In both cases the amount of energy supplied/taken in is tracked as a cumulutative value.

Name Type R/D Example Description
is_source Boolean Y/Y True If true, the grid connection acts as a source.

Other sources and sinks

Photovoltaic plant

Type name PVPlant
File energy_systems/electric_producers/pv_plant.jl
Available models default: simplified
System function fixed_source
Medium
Input media
Output media m_el_out/m_e_ac_230v
Tracked values OUT, Supply

A photovoltaic (PV) power plant producing electricity.

The energy it produces in each time step must be given as a profile, but can be scaled by a fixed value.

Name Type R/D Example Description
energy_profile_file_path String Y/N profiles/district/pv_output.prf Path to the output energy profile.
scale Float Y/N 4000.0 Factor by which the profile values are multiplied.

Transformers

Combined Heat and Power plant

Type name CHPP
File energy_systems/electric_producers/chpp.jl
Available models default: simplified
System function transformer
Medium
Input media m_gas_in/m_c_g_natgas
Output media m_heat_out/m_h_w_ht1, m_el_out/m_e_ac_230v
Tracked values IN, OUT

A Combined Heat and Power Plant (CHPP) that transforms combustible gas into heat and electricity.

Name Type R/D Example Description
power Float Y/N 4000.0 The maximum design power.
electricity_fraction Float Y/Y 0.4 Fraction of the input chemical energy that is output as electricity.
min_power_fraction Float Y/Y 0.2 The minimum fraction of the design power that is required for the plant to run.
min_run_time UInt Y/Y 1800 Minimum run time of the plant in seconds. Will be ignored if other constraints apply.
output_temperature Temperature N/N 90.0 The temperature of the heat output.

Electrolyser

Type name Electrolyser
File energy_systems/others/electrolyser.jl
Available models default: simplified
System function transformer
Medium
Input media m_el_in/m_e_ac_230v
Output media m_heat_out/m_h_w_lt1, m_h2_out/m_c_g_h2, m_o2_out/m_c_g_o2
Tracked values IN, OUT

Implementation of an electrolyser splitting water into hydrogen and oxygen while providing the waste heat as output.

Name Type R/D Example Description
power Float Y/N 4000.0 The maximum design power.
min_power_fraction Float Y/Y 0.2 The minimum fraction of the design power that is required for the plant to run.
heat_fraction Float Y/Y 0.4 Fraction of the input electric energy that is output as heat.
min_run_time UInt Y/Y 1800 Minimum run time of the plant in seconds. Will be ignored if other constraints apply.
output_temperature Temperature N/Y 55.0 The temperature of the heat output.

Fuel boiler

Type name FuelBoiler
File energy_systems/heat_producers/fuel_boiler.jl
Available models default: simplified
System function transformer
Medium
Input media m_fuel_in
Output media m_heat_out/m_h_w_ht1
Tracked values IN, OUT

A boiler that transforms chemical fuel into heat.

This needs to be parameterized with the medium of the fuel intake as the implementation is agnostic towards the kind of fuel under the assumption that the fuel does not influence the behaviour or require/produce by-products such as pure oxygen or ash (more to the point, the by-products do not need to be modelled for an energy simulation.)

The current implementation includes functionality to model a PLR-dependant thermal efficiency , however the efficiency curve is not customizable without code changes until a system for functions-as-parameters is in place.

Name Type R/D Example Description
m_fuel_in String Y/N m_c_g_natgas The medium of the fuel intake.
power Float Y/N 4000.0 The maximum design power.
min_power_fraction Float Y/Y 0.2 The minimum fraction of the design power that is required for the plant to run.
min_run_time UInt Y/Y 1800 Minimum run time of the plant in seconds. Will be ignored if other constraints apply.
output_temperature Temperature N/N 90.0 The temperature of the heat output.
max_thermal_efficiency Float N/Y 1.0 The maximum thermal efficiency if no is used.
is_plr_dependant Boolean N/Y False Toggle if is used or not.

Heat pump

Type name HeatPump
File energy_systems/heat_producers/heat_pump.jl
Available models default: carnot
System function transformer
Medium
Input media m_el_in/m_e_ac_230v, m_heat_in/m_h_w_lt1
Output media m_heat_out/m_h_w_ht1
Tracked values IN, OUT, COP

Elevates supplied low temperature heat to a higher temperature with input electricity.

Name Type R/D Example Description
power Float Y/N 4000.0 The maximum design power.
min_power_fraction Float Y/Y 0.2 The minimum fraction of the design power that is required for the plant to run.
min_run_time UInt Y/Y 1800 Minimum run time of the plant in seconds. Will be ignored if other constraints apply.
fixed_cop Float N/N 3.0 If given, ignores the dynamic COP calculation and uses a static one.
input_temperature Temperature N/N 20.0 If given, ignores the supplied temperature and uses a static one.
output_temperature Temperature N/N 65.0 If given, ignores the requested temperature and uses a static one.

Storage

General storage

Type name Storage
File energy_systems/general/storage.jl
Available models default: simplified
System function storage
Medium medium/None
Input media None/auto
Output media None/auto
Tracked values IN, OUT, Load, Load%, Capacity

A generic implementation for energy storage technologies.

Name Type R/D Example Description
capacity Float Y/N 12000.0 The overall capacity of the storage.
load Float Y/N 6000.0 The initial load state of the storage.

Battery

Type name Battery
File energy_systems/storage/battery.jl
Available models default: simplified
System function storage
Medium medium/m_e_ac_230v
Input media None/auto
Output media None/auto
Tracked values IN, OUT, Load, Load%, Capacity

A storage for electricity.

Name Type R/D Example Description
capacity Float Y/N 12000.0 The overall capacity of the battery.
load Float Y/N 6000.0 The initial load state of the battery.

Buffer Tank

Type name BufferTank
File energy_systems/storage/buffer_tank.jl
Available models default: simplified
System function storage
Medium medium/m_h_w_ht1
Input media None/auto
Output media None/auto
Tracked values IN, OUT, Load, Load%, Capacity

A short-term storage for heat of thermal carrier fluids, typically water.

Model simplified:

If the adaptive temperature calculation is activated, the temperatures for the input/output of the BT depends on the load state. If it is sufficiently full (depends on the switch_point), the BT can output at the high_temperature and takes in at the high_temperature. If the load falls below that, the output temperature drops and reaches the low_temperature as the load approaches zero.

If the adaptive temperature calculation is deactivated, always assumes the high_temperature for both input and output.

Name Type R/D Example Description
capacity Float Y/N 12000.0 The overall capacity of the BT.
load Float Y/N 6000.0 The initial load state of the BT.
use_adaptive_temperature Float Y/Y False If true, enables the adaptive output temperature calculation.
switch_point Float Y/Y 0.15 Partial load at which the adaptive output temperature calculation switches.
high_temperature Temperature Y/Y 75.0 The high end of the adaptive in-/output temperature.
low_temperature Temperature Y/Y 20.0 The low end of the adaptive in-/output temperature.

Seasonal thermal storage

Type name SeasonalThermalStorage
File energy_systems/storage/seasonal_thermal_storage.jl
Available models default: simplified
System function storage
Medium
Input media m_heat_in/m_h_w_ht1
Output media m_heat_out/m_h_w_lt1
Tracked values IN, OUT, Load, Load%, Capacity

A long-term storage for heat stored in a stratified artificial aquifer.

Model simplified:

If the adaptive temperature calculation is activated, the temperatures for the input/output of the STES depends on the load state. If it is sufficiently full (depends on the switch_point), the STES can output at the high_temperature and takes in at the high_temperature. If the load falls below that, the output temperature drops and reaches the low_temperature as the load approaches zero.

If the adaptive temperature calculation is deactivated, always assumes the high_temperature for both input and output.

Name Type R/D Example Description
capacity Float Y/N 12000.0 The overall capacity of the STES.
load Float Y/N 6000.0 The initial load state of the STES.
use_adaptive_temperature Float Y/Y False If true, enables the adaptive output temperature calculation.
switch_point Float Y/Y 0.25 Partial load at which the adaptive output temperature calculation switches.
high_temperature Temperature Y/Y 90.0 The high end of the adaptive in-/output temperature.
low_temperature Temperature Y/Y 15.0 The low end of the adaptive in-/output temperature.