Types of energy system components

This chapter provides details on the parameters of energy system components, which can be used in the project input file. For a detailed description of the mathematical models, see the chapter on the component models.

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, Losses

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.
constant_temperature Temperature N/N 65.0 If given, sets the temperature of the heat output to a constant 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}.

Storage un-/loading

All components can be set to be dis-/allowed to un-/load storages to which they output or from which they draw energy. This only makes sense if an intermediary bus exists as direct connections to/from storages must always be allowed to transfer energy. The flags to control this behaviour are set in the strategy part of the parameter specification (compare component specification). Here are exemplary parameters for a bounded supply:

{
    "uac": "TST_SRC_01",
    "type": "BoundedSupply",
    "medium": "m_h_w_lt1",
    ...
    "strategy": {
        "name": "default",
        "load_storages m_h_w_lt1": false
    }
}

This would result in the energy the source supplies not being used to fill storages. The medium name m_h_w_lt1 is, in this case, derived from the parameter medium. The load_storages medium parameter must match the name of the medium of the input/output, however that is set or derived. For controlling, if components can draw energy from storages, the corresponding unload_storages medium parameter can be used.

Efficiency functions

Various components, particularly transformers, require an efficiency function to determine how much energy is produced from a given input and vice-versa. This is described in more detail in the chapter on general effects and traits. In the simplest case this can be a constant factor, such as a 1:1 ratio, however in the mathematical models of the components this can be almost any continuous function mapping a part-load ratio on [0,1] to an efficiency factor on [0,1].

For the configuration of components a selected number of different cases are implemented. If a function is known, but cannot be precisely modelled using one of these parameterised functions, it is possible to use a piece-wise linear approximation, which is also useful to model data-driven functions.

In the project file the definition of an efficiency functions should look like this: <function_model>:<list_of_numbers> with function_model being a string (see below) and list_of_numbers being a comma-seperated list of numbers with a period as decimal seperator and no thousands-seperator. The meaning of the numbers depends on the function model.

Three different function models are implemented:

  • const: Takes one number and uses it as a constant efficiency factor.
  • poly: Takes a list of numbers and uses them as the coefficients of a polynomial with order n-1 where n is the length of coefficients. The list starts with coefficients of the highest order. E.g. poly:0.5,2.0,0.1 means
  • pwlin: A piece-wise linear interpolation. Takes a list of numbers and uses them as support values for an even distribution of linear sections on the interval [0,1]. The PLR-values (on the x axis) are implicit with a step size equal to the inverse of the length of support values minus 1. The first and last support values are used as the values for a PLR of 0.0 and 1.0 respectively. E.g. pwlin:0.6,0.8,0.9 means two sections of step size 0.5 with a value of e(0.0)==0.6, e(0.5)==0.8, e(1.0)=0.9 and linear interpolation inbetween.

Because not all functions are (easily) invertible a numerical approximation of the inverse function is precalculated during initialisation. The size of the discretization step can be controlled with the parameter nr_discretization_steps, which has a default value of 30 steps. It should not often be necessary to use a different value, but this can be beneficial to balance accuracy vs. performance.

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, Temperature

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, a temperature can be given, either as profile from a .prf file or from the ambient temperature of the project-wide weather file or a constant temperature can be set.

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.
constant_power Temperature N/N 4000.0 If given, sets the max power of the input to a constant value.
scale Float N/Y 1.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.
constant_temperature Temperature N/N 65.0 If given, sets the temperature of the input to a constant value.
temperature_from_global_file String N/N temp_ambient_air If given, sets the temperature of the input to the ambient air temperature of the global weather file.

Note that either temperature_profile_file_path, static_temperature or temperature_from_global_file (or none of them) should be given!

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, a temperature can be given, either as profile from a .prf file or from the ambient temperature of the project-wide weather file or a constant temperature can be set.

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.
constant_power Temperature N/N 4000.0 If given, sets the max power of the output to a constant value.
scale Float N/Y 1.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.
constant_temperature Temperature N/N 65.0 If given, sets the temperature of the output to a constant value.
temperature_from_global_file String N/N temp_ambient_air If given, sets the temperature of the input to the ambient air temperature of the global weather file.

Note that either temperature_profile_file_path, static_temperature or temperature_from_global_file (or none of them) should be given!

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, Transfer->UAC

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

Note that the tracked value Transfer->UAC refers to an output value that corresponds to how much energy the bus has transfered to the bus with the given UAC.

Name Type R/D Example Description
connections Dict{String,Any} N/N Connection config for the bus. See chapter on the input file format for details.

General fixed sink

Type name FixedSink
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, Demand, 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, a temperature can be given, either as profile from a .prf file or from the ambient temperature of the project-wide weather file or a constant temperature can be set.

Name Type R/D Example Description
energy_profile_file_path String N/N profiles/district/demand.prf Path to the input energy profile.
constant_demand Float N/N 4000.0 [power, not work!] If given, ignores the energy profile and sets the input demand to this constant power.
scale Float N/Y 1.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.
constant_temperature Temperature N/N 65.0 If given, sets the temperature of the input to a constant value.
temperature_from_global_file String N/N temp_ambient_air If given, sets the temperature of the input to the ambient air temperature of the global weather file.

Note that either temperature_profile_file_path, static_temperature or temperature_from_global_file (or none of them) should be given!

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, a temperature can be given, either as profile from a .prf file or from the ambient temperature of the project-wide weather file or a constant temperature can be set.

Name Type R/D Example Description
energy_profile_file_path String N/N profiles/district/energy_source.prf Path to the output energy profile.
constant_supply Float N/N 4000.0 [power, not work!] If given, ignores the energy profile and sets the output supply to this constant power.
scale Float N/Y 1.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.
constant_temperature Temperature N/N 65.0 If given, sets the temperature of the output to a constant value.
temperature_from_global_file String N/N temp_ambient_air If given, sets the temperature of the input to the ambient air temperature of the global weather file.

Note that either temperature_profile_file_path, static_temperature or temperature_from_global_file (or none of them) should be given!

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, Input_sum, Output_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, Losses

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

Name Type R/D Example Description
power_gas Float Y/N 4000.0 The maximum design power input (chemical input 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_gas 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, Losses, Losses_heat, Losses_hydrogen

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

Name Type R/D Example Description
power_el Float Y/N 4000.0 The maximum electrical design power input.
min_power_fraction Float Y/Y 0.2 The minimum fraction of the design power_el 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, Losses

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.)

Name Type R/D Example Description
m_fuel_in String Y/N m_c_g_natgas The medium of the fuel intake.
power_th Float Y/N 4000.0 The maximum thermal design power output.
min_power_fraction Float Y/Y 0.2 The minimum fraction of the design power_th 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.
efficiency String Y/Y const:0.9 See description of efficiency functions.
nr_discretization_steps UInt N/Y 30 See description of efficiency functions.

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, Losses

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

Name Type R/D Example Description
power_th Float Y/N 4000.0 The thermal design power at the heating output.
min_power_fraction Float Y/Y 0.2 The minimum fraction of the design power_th 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.
constant_cop Float N/N 3.0 If given, ignores the dynamic COP calculation and uses a constant value.
input_temperature Temperature N/N 20.0 If given, ignores the supplied temperature and uses a constant one.
output_temperature Temperature N/N 65.0 If given, ignores the requested temperature and uses a constant 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, Losses

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, Losses

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, Losses

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, Losses

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.