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 because direct connections to/from storages must always be allowed to transfer energy. Here are exemplary parameters for a BoundedSupply
:
{
"uac": "TST_SRC_01",
"type": "BoundedSupply",
"medium": "m_h_w_lt1",
...
"control_parameters": {
"load_storages m_h_w_lt1": false
}
}
This would result in the output of the source not being used to fill storages. The name of the load_storages medium
parameter must match the name of the medium of the input/output in question. The medium name m_h_w_lt1
is, in this case, derived from the parameter medium
. The medium name might also be set directly, for example with m_heat_in
for a HeatPump
.
Similarly, components can be configured to be dis-/allowed to draw energy from storages with the corresponding unload_storages medium
parameter. Any input/output not specified in this way is assumed to be allowed to un-/load storages.
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.
Because the efficiency must always be defined in relation on input or output of the component, the functionality supports this interface being defined as linear. This means that the amount of energy on this interface is strictly linear to the PLR multiplied with the design power. The other interfaces of the component are then calculated with efficiencies relative to this linear interface. Example: A fuel boiler defined with linear heat output would have a constant efficiency of 1.0 on the heat output and a different efficiency on the fuel input. If the conversion from fuel to heat is 90% efficient, this results in an efficiency factor of 1.1 on the fuel input.
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.
The definition of an efficiency function in the project file, for example a parameter efficiency_heat_out
, 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. E.g.
const:0.9
. - 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 ofe(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. In particular if a piece-wise linear interpolation is used it makes sense to use the same number of discretization steps so that the support values overlap for both the efficiency function and its inverse.
Control modules
For a general overview of what control modules do and how they work, see this chapter. In the following the currently implemented control modules and their required parameters are listed.
Some parameters specify behaviour of multiple modules on the same component as well as other control behaviour of the component. As the control_modules
subconfig is a list and cannot hold parameters, these are specified in the control_parameters
subconfig. In addition to the storage un-/loading flags these general control parameters are:
aggregation_plr_limit | How the upper PLR limit is aggregated. Should be either max (take the maximum) or min (take the minimum). Defaults to max . |
aggregation_charge | How the charging flag is aggregated. Should be either all (all must be true ) or any (any one must be true ). Defaults to all . |
aggregation_discharge | How the discharging flag is aggregated. Should be either all (all must be true ) or any (any one must be true ). Defaults to all . |
Economical discharge
Handles the discharging of a battery to only be allowed if sufficient charge is available and a linked PV plant has available power below a given threshold. Mostly used for examplatory purposes.
Note: At the moment there is no mechanism to prevent the battery to be fully discharged in a single timestep. This will be changed in a future update.
This module is implemented for the following component types: Battery
name | Name of the module. Fixed value of economical_discharge |
pv_threshold | Treshold of the PV plant below which discharge is allowed. Absolute value in Wh. |
min_charge | The minimum charge level required for discharge to be allowed. Defaults to 0.2 . |
discharge_limit | The charge level to which the battery is discharged, below which discharge is stopped. Defaults to 0.05 |
pv_plant_uac | The UAC of the PV plant that is linked to the module. |
battery_uac | The UAC of the battery to which the module is attached. |
Profile limited
Sets the maximum PLR of a component to values from a profile. Used to set the operation of a component to a fixed schedule while allowing circumstances to override the schedule in favour of a lower PLR.
This module is implemented for the following component types: CHPP
, Electrolyser
, FuelBoiler
, HeatPump
name | Name of the module. Fixed value of profile_limited |
profile_path | File path to the profile with the limit values. Must be a .prf file. |
Storage-driven
Controls a component to only operate when the charge of a linked storage component falls below a certain threshold and keep operating until a certain higher threshold is reached and minimum operation time has passed. This is often used to avoid components switching on and off rapidly to keep a storage topped up, as realised systems often operate with this kind of hysteresis behaviour.
This module is implemented for the following component types: CHPP
, Electrolyser
, FuelBoiler
, HeatPump
name | Name of the module. Fixed value of storage_driven |
low_threshold | The storage charge threshold below which operation is turned on. Defaults to 0.2 . |
high_treshold | The storage charge threshold above which operation is turned off. Defaults to 0.95 . |
min_run_time | Minimum run time for the "on" state. Absolute value in seconds. Defaults to 1800 . |
storage_uac | The UAC of the storage component linked to the module. |
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
, constant_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
, constant_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
, constant_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
, constant_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 , Temperature |
Used as a source or sink with no limit, which receives or gives off energy from/to outside the system boundary. Optionally, temperatures can be taken into account (constant, from profile or from weather file).
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. |
temperature_profile_file_path |
String |
N/N | profiles/district/temperature.prf |
Path to the profile for the input temperature. |
constant_temperature |
Temperature |
N/N | 12.0 | If given, sets the temperature of the input (or output) to a constant value. |
temperature_from_global_file |
String |
N/N | temp_ambient_air |
If given, sets the temperature of the input (or output) to the ambient air temperature of the global weather file. |
Note that either temperature_profile_file_path
, constant_temperature
or temperature_from_global_file
(or none of them) should be given!
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 fuel into heat and electricity.
Name | Type | R/D | Example | Description |
---|---|---|---|---|
power_el |
Float |
Y/N | 4000.0 | The design power of electrical output. |
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. |
efficiency_fuel_in |
String |
Y/Y | const:1.0 |
See description of efficiency functions. |
efficiency_el_out |
String |
Y/Y | pwlin:0.01,0.17,0.25,0.31,0.35,0.37,0.38,0.38,0.38 |
See description of efficiency functions. |
efficiency_heat_out |
String |
Y/Y | pwlin:0.8,0.69,0.63,0.58,0.55,0.52,0.5,0.49,0.49 |
See description of efficiency functions. |
linear_interface |
String |
Y/Y | fuel_in |
See description of efficiency functions. |
nr_discretization_steps |
UInt |
Y/Y | 8 |
See description of efficiency functions. |
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_ht_out /m_h_w_ht1 , m_heat_lt_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 pute water into hydrogen and oxygen while providing the waste heat as output.
If parameter heat_lt_is_usable
is false, the output interface m_heat_lt_out
is not set and does not require to be connected to another component or bus. The energy that is calculated to be put out on this interface is then added to Losses_heat
instead.
Dispatch strategies:
all_equal
: This spreads the load evenly across all units. This is a simplified model that ignoresmin_power_fraction
.equal_with_mpf
: Same as an equal distribution, however if the total PLR is lower thanmin_power_fraction
, then a number of units are activated at a calculated PLR to ensure the minimum restriction is observed and the demand is met.try_optimal
: Attempts to activate a number of units close to their optimal PLR to meet the demand. If no optimal solution exists, typically at very low PLR or close to the nominal power, falls back to activating only one or all units.
Name | Type | R/D | Example | Description |
---|---|---|---|---|
power_el |
Float |
Y/N | 4000.0 | The maximum electrical design power input. |
nr_switchable_units |
UInt |
Y/Y | 1 | The number of units that can be switched on/off to meet demand. |
dispatch_strategy |
String |
Y/Y | equal_with_mpf |
The dispatch strategy to be used to switch on/off units. |
min_power_fraction |
Float |
Y/Y | 0.4 | The minimum PLR that is required for one unit of the electrolyser to run. |
min_power_fraction_total |
Float |
Y/Y | 0.2 | The minimum PLR that is required for the whole plant to run. |
optimal_unit_plr |
Float |
Y/Y | 0.65 | The optimal PLR for each unit at which hydrogen production is most efficient. Only required if dispatch strategy try_optimal is used. |
min_run_time |
UInt |
Y/Y | 3600 | Minimum run time of the plant in seconds. Will be ignored if other constraints apply. |
heat_lt_is_usable |
Bool |
Y/Y | false | Toggle if the low temperature heat output is usable. |
output_temperature_ht |
Temperature |
Y/Y | 55.0 | The temperature of the high temperature heat output. |
output_temperature_lt |
Temperature |
Y/Y | 25.0 | The temperature of the low temperature heat output. |
linear_interface |
String |
Y/Y | el_in |
See description of efficiency functions. |
efficiency_el_in |
String |
Y/Y | const:1.0 |
See description of efficiency functions. |
efficiency_heat_ht_out |
String |
Y/Y | const:0.15 |
See description of efficiency functions. |
efficiency_heat_lt_out |
String |
Y/Y | const:0.07 |
See description of efficiency functions. |
efficiency_h2_out |
String |
Y/Y | const:0.57 |
See description of efficiency functions. |
efficiency_h2_out_lossless |
String |
Y/Y | const:0.6 |
See description of efficiency functions. |
efficiency_o2_out |
String |
Y/Y | const:0.6 |
See description of efficiency functions. |
nr_discretization_steps |
UInt |
Y/Y | 1 |
See description of efficiency functions. |
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.1 | The minimum fraction of the design power_th that is required for the plant to run. |
min_run_time |
UInt |
Y/Y | 0 | 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_fuel_in |
String |
Y/Y | const:1.1 |
See description of efficiency functions. |
efficiency_heat_out |
String |
Y/Y | const:1.0 |
See description of efficiency functions. |
linear_interface |
String |
Y/Y | heat_out |
See description of efficiency functions. |
nr_discretization_steps |
UInt |
Y/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 , MixingTemperature_Input , MixingTemperature_Output |
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 | ideally_stratified , balanced , ideally_mixed |
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 , CurrentMaxOutTemp |
A short-term storage for heat, stored with a thermal heat carrier fluid, typically water.
Three model types are available. The model ideally_stratified
assumes two adiabatically separated temperature layers,
the upper one with high_temperature
and the lower one with low_temperature
.
Here, possible losses are only energy losses affecting the amount of energy in the hot layer without reducing its temperature.
Note that no gains into the cold layer are included in the model.
The ideally_mixed
model assumes a perfectly mixed storage, meaning the whole storage always has the same temperature
between high_temperature
and low_temperature
. Here, losses result in a decrease of temperature of the storage medium.
Note that the storage has its high temperature only at a load of 100% and that connected components may not accept
heat at a lower temperature.
The balanced
model is a combination of the former two models. Here, a switch_point
is defined as the fraction of the
load of the storage where the model switches from ideally stratified (load above switch_point
) to ideally mixed
(load less then switch_point
).
See the chapter here for more explanation on the different models.
Independent of the model, the input temperature is always required as high_temperature
.
For the size of the buffer tank, either the volume
or the capacity
can be given. If a capacity is given and no losses are considered,
the density and thermal capacity of the medium, rho_medium
and cp_medium
, are not required.
Note that no losses are applied when the storage is completely empty, meaning at low_temperature
.
General parameter:
Name | Type | R/D | Example | Unit | Description |
---|---|---|---|---|---|
model_type |
String |
Y/Y | "ideally_stratified" | [-] | type of the buffer tank model: ideally_stratified , balanced , ideally_mixed |
capacity |
Float |
Y/N | 12000.0 | [Wh] | capacity of the BT: Note that either volume or capacity should be given. |
OR: volume |
Float |
Y/N | 15.5 | [] | volume of the BT: Note that either volume or capacity should be given. |
rho_medium |
Float |
Y/Y | 1000.0 | [kg/] | density of the heat carrier medium |
cp_medium |
Float |
Y/Y | 4.18 | [kJ/(kg K)] | specific thermal capacity of the heat carrier medium |
high_temperature |
Temperature |
Y/Y | 75.0 | [°C] | the upper temperature of the buffer tank, equals the required input temperature |
low_temperature |
Temperature |
Y/Y | 20.0 | [°C] | the lower temperature of the buffer tank defining the empty state |
initial_load |
Float |
Y/Y | 0.0 | [%/100] [0:1] | the initial load state of the buffer tank |
max_load_rate |
Float |
N/N | 1.5 | [1/h] | the maximum load rate of the buffer tank related to the capacity |
max_unload_rate |
Float |
N/N | 1.5 | [1/h] | the maximum unload rate of the buffer tank related to the capacity |
Parameter for the "balanced" model:
Name | Type | R/D | Example | Unit | Description |
---|---|---|---|---|---|
switch_point |
Float |
Y/Y | 0.15 | [%/100] [0:1] | load state at which the model switches from ideally_stratified to ideally_mixed (only for model type balanced ) |
Parameter to consider losses (only for consider_losses = true):
Name | Type | R/D | Example | Unit | Description |
---|---|---|---|---|---|
consider_losses |
Bool |
Y/Y | False | [-] | flag if losses should be taken into account |
h_to_r |
Float |
Y/Y | 2.0 | [-] | ratio of height to radius of the cylinder representing the buffer tank |
thermal_transmission_barrel |
Float |
Y/Y | 1.2 | [W/(m K)] | thermal transmission coefficient of the barrel of the buffer tank |
thermal_transmission_lid |
Float |
Y/Y | 1.2 | [W/(m K)] | thermal transmission coefficient of the lid of the buffer tank |
thermal_transmission_bottom |
Float |
Y/Y | 1.2 | [W/(m K)] | thermal transmission coefficient of the bottom of the buffer tank, for model_type ideally_mixed only. |
ground_temperature |
Temperature |
Y/Y | 12.0 | [°C] | constant ground temperature, to calculate losses through the bottom of the tank, for model_type ideally_mixed only |
ambient_temperature_profile_path |
String |
N/N | profiles/district/ambient_temperature.prf |
[°C] | path to the profile for the surrounding air temperature |
OR: constant_ambient_temperature |
Temperature |
N/N | 18.0 | [°C] | if given, sets the surrounding air temperature to a constant value |
OR: ambient_temperature_from_global_file |
String |
N/N | temp_ambient_air |
[-] | if given, sets the surrounding air temperature to the ambient air temperature of the global weather file |
Note that either ambient_temperature_profile_path
, constant_ambient_temperature
or ambient_temperature_from_global_file
should be given!
Examplary input file definition for buffer tank
Minimal definition of a buffer tank in the input file:
"TST_BFT_TH_01": {
"type": "BufferTank",
"medium": "m_h_w_ht1",
"output_refs": [
"TST_DEM_01"
],
"model_type": "ideally_stratified",
"capacity": 10000
}
Extended definition of a buffer tank in the input file:
"TST_BFT_TH_01": {
"type": "BufferTank",
"medium": "m_h_w_ht1",
"output_refs": [
"TST_DEM_01"
],
"___GENERAL PARAMETER___": "",
"model_type": "ideally_stratified",
"capacity": 300000,
"rho_medium": 1000,
"cp_medium": 4.18,
"high_temperature": 80.0,
"low_temperature": 15.0,
"initial_load": 0.5,
"max_load_rate": 1.0,
"max_unload_rate": 1.5,
"___BALANCED MODEL ONLY___": "",
"switch_point": 0.25,
"___LOSSES___": "",
"consider_losses": true,
"h_to_r": 2,
"constant_ambient_temperature": 18,
"ground_temperature": 12,
"thermal_transmission_lid": 1.0,
"thermal_transmission_barrel": 1.0,
"thermal_transmission_bottom": 1.0
}
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. |
Heat sources and sinks
Generic heat source
Type name | GenericHeatSource |
File | energy_systems/heat_sources/generic_heat_source.jl |
Available models | simplified (default) |
System function | bounded_source |
Medium | medium /None |
Input media | |
Output media | None /auto |
Tracked values | OUT , Max_Energy , Temperature_src_in , Temperature_snk_out |
A generic heat source for various sources of heat.
Can be given a profile for the maximum power it can provide, which is scaled by the given scale factor. For the temperature either temperature_profile_file_path
, constant_temperature
or temperature_from_global_file
must be given! The given temperature is considered the input source temperature and an optional reduction is applied (compare with model description). If the lmtd
model is used and no min/max temperatures are given, tries to read them from the given profile.
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. |
temperature_reduction_model |
String |
Y/Y | none |
Which temperature reduction model is used. Should be one of: none , constant , lmtd |
min_source_in_temperature |
Float |
N/N | -10.0 | Minimum source input temperature. |
max_source_in_temperature |
Float |
N/N | 40.0 | Maximum source input temperature. |
minimal_reduction |
Float |
N/Y | 2.0 | Minimal reduction temperature. For the constant model this exact value is used, for lmtd a slight correction is applied. |
Examplary input file definition
"TST_SRC_01": {
"type": "GenericHeatSource",
"medium": "m_h_w_lt1",
"control_refs": [],
"output_refs": [
"TST_BUS_TH_01"
],
"max_power_profile_file_path": "./profiles/tests/source_heat_max_power.prf",
"temperature_profile_file_path": "./profiles/examples/general/src_heat_temp_var_avg25.prf",
"temperature_reduction_model": "lmtd",
"min_source_in_temperature": 5,
"max_source_in_temperature": 35,
"scale": 2000
}
Geothermal probes
Type name | GeothermalProbes |
File | energy_systems/heat_sources/geothermal_probes.jl |
Available models | simplified (default), detailed |
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 , new_fluid_temperature , current_output_temperature , current_input_temperature , fluid_reynolds_number |
A model of a geothermal probe field or a single geothermal probe. Two models are available, one detailed
and a simplified
version that uses a constant user-defined thermal borehole resistance. This avoids the need of defining 11 additional parameters.
Model simplified
:
The geothermal probe is modeled using precalculated g-functions. The model needs quite many input parameters. Especially the soil properties, including the undisturbed ground temperature, have a significant effect on the results. Therefore is it crucial to know the soil conditions at the investigated site.
The g-function can be either imported from a text file or can be taken from the library provided within the repository. There are different configurations available: rectangle, open_rectangle, zoned_rectangle, U_configurations, lopsided_U_configuration, C_configuration, L_configuration. Each of them can be specified by the number of probes in x and y direction (note that the number of probes defined for x has to be less or equal the number of probes defined for y). Some of the configurations, like zoned rectangles, require an additional key, that is specified in the documentation of the library in detail, available here within the publication doi.org/10.15121/1811518.
A short overview of the included configurations is given in the following. Note that not all configurations are available. Check the documentation linked above or the included text files that contain all possible key combinations for the different probe field configurations. To import a g-function from another source, see the description below.
rectangle
Here, only number_of_probes_x
and number_of_probes_y
are required. They define the number of rows in x and y direction, while y >= x. The rectangle that is defined with these two parameters is filled completely with probes.
Example: o o o o o o o o o o o o
number_of_probes_x = 3
number_of_probes_y = 4
key_2 = ""
open_rectangle
Here, number_of_probes_x
and number_of_probes_y
define a probe field as for a normal rectangle. This rectangle is not filled, instead key_2
defines the number of outer rows that should be considered. This allows for the creation of a single-row rectangle, or a rectangle field that has a "hole" in the middle.
Example: o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
number_of_probes_x = 5
number_of_probes_y = 7
key_2 = "2"
zoned_rectangle
Here, number_of_probes_x
and number_of_probes_y
define an unfilled rectangle with only one row of probes (like an open rectancle with key_2 = 1
). For zoned rectangles, key_2
then defines the shape of the inner assembly of probes forming a rectangle, which can be "1_3" (as "x_y") for an inner set of 1x3 probes, located inside of the outer ring.
Example: o o o o o o o o o o o o o o o o o o o o o o o
number_of_probes_x = 5
number_of_probes_y = 7
key_2 = "1_3"
U_configurations
Here, number_of_probes_x
and number_of_probes_y
define the number of probes forming a single-row rectangle that is left open at the top end. The key_2
then defines the number of rows that are forming this U-shape.
Example: o o o o o o o o o o o o o o o o o o o o o o
number_of_probes_x = 5
number_of_probes_y = 5
key_2 = "2"
lopsided_U_configuration
Lopsided U is an U-configuration with some probes missing at the top right corner. This is only available as single-row U. The keys number_of_probes_x
and number_of_probes_y
define the general shape of the U, while key_2
then represents the number of removed probes from the top right corner at the right side of the U.
Example: o o o o o o o o o o o o o
number_of_probes_x = 5
number_of_probes_y = 6
key_2 = "2"
C_configuration
C-configurations are only available as single-row C-shapes, where the C is turned 90° anti-clockwise. A C-shape is like an U-shape with some more probes at the top row attempting to close the U to form an open rectangle. number_of_probes_x
and number_of_probes_y
define the number of probes forming an unfilled single-row rectangle, while key_2
defines the number of probes that are removed from the top end of the rectangle. If possible, they are removed symmetrically starting from the center. If that is not possible due to an uneven number, the single leftover probe is removed at the left side.
Example: o o o o o o o o o o o o o o o o o o
number_of_probes_x = 6
number_of_probes_y = 6
key_2 = "2"
L_configuration
L-configurations are currently only available as single-row L shapes. They are defined like rectangles, but the probe field then only contains a L with a single row that is not filled with other probes.
Example: o o o o o o o
number_of_probes_x = 3
number_of_probes_y = 5
key_2 = ""
Import g-function from txt-file
A custom g-function for a specific probe field with specific soil conditions can be calculated e.g. using the python package pygfunction and imported as a text file to ReSiE.
The file needs to have the following structure (without the notes):
comment1 // comments can be given without limitation
number_of_probes: 42 // required variable
*** // start of data has to be specified with three stars
-8.84569; 1.07147
-7.90838; 1.38002
-7.24323; 1.65958
-6.68104; 1.99430
-6.16948; 2.28428
-5.68586; 2.62013
-5.21865; 2.90993
-4.76141; 3.01677
...
The first column has to hold the normalized logarithmic time, with as the steady-state time defined by Eskilson.
The second column, separatey by a semicolon, holds the g-function values. Note that the number of probes has to be given as well in the header of the file. An example file can be found here.
If a g_function_file_path
is specified, the following parameters are not used within ReSie: probe_field_geometry
, number_of_probes_x
, number_of_probes_y
, probe_field_key_2
, borehole_spacing
, soil_density
, soil_specific_heat_capacity
.
General parameter
Name | Type | R/D | Example | Unit | Description |
---|---|---|---|---|---|
model_type |
String |
Y/Y | simplified |
[-] | Type of probe model: "simplified" with constant or "detailed" with calculated thermal borehole resistance in every time step. |
max_input_power |
Float |
Y/Y | 50 | [W/m_probe] | maximum input power per probe meter |
max_output_power |
Float |
Y/Y | 50 | [W/m_probe] | maximum output power per probe meter |
regeneration |
Bool |
Y/Y | true | [-] | flag if regeneration should be taken into account |
max_probe_temperature_loading |
Float |
N/N | 50 | [°C] | maximum temperature allowed for regeneration |
min_probe_temperature_unloading |
Float |
N/N | 6 | [°C] | minimum temperature allowed for unloading |
probe_depth |
Float |
Y/Y | 150 | [m] | depth (or length) of a single geothermal probe. Has to be between 24 m and 384 m. |
borehole_diameter |
Float |
Y/Y | 0.15 | [m] | borehole diameter |
loading_temperature |
Temperature |
N/Y | nothing | [°C] | nominal high temperature for loading geothermal probe storage, can also be set from other end of interface |
loading_temperature_spread |
Float |
Y/Y | 3 | [K] | temperature spread between forward and return flow during loading |
unloading_temperature_spread |
Float |
Y/Y | 3 | [K] | temperature spread between forward and return flow during unloading |
soil_undisturbed_ground_temperature |
Float |
Y/Y | 11 | [°C] | undisturbed ground temperature as average over the depth of the probe, considered as constant over time |
boreholewall_start_temperature |
Float |
Y/Y | 4 | [°C] | borehole wall starting temperature |
Parameter for simple model only
Name | Type | R/D | Example | Unit | Description |
---|---|---|---|---|---|
borehole_thermal_resistance |
Float |
Y/Y | 0.1 | [(Km)/W] | thermal resistance of borehole (constant, if not calculated from other parameters in every time step!) |
Parameter to get g-function from the included library
Name | Type | R/D | Example | Unit | Description |
---|---|---|---|---|---|
probe_field_geometry |
String |
Y/Y | rectangle |
[-] | type of probe field geometry, can be one of: rectangle, open_rectangle, zoned_rectangle, U_configurations, lopsided_U_configuration, C_configuration, L_configuration |
number_of_probes_x |
Int |
Y/Y | 1 | [-] | number of probes in x direction, corresponds to value of g-function library. Note that number_of_probes_x <= number_of_probes_y! |
number_of_probes_y |
Int |
Y/Y | 1 | [-] | number of probes in y direction, corresponds to value of g-function library. Note that number_of_probes_x <= number_of_probes_y! |
probe_field_key_2 |
String |
Y/Y | "" | [-] | key2 of g-function library. Can also be "" if none is needed. The value depends on the chosen library type. |
borehole_spacing |
Float |
Y/Y | 5 | [m] | distance between boreholes in the field, assumed to be constant. Set average spacing. |
soil_density |
Float |
Y/Y | 2000 | [kg/m^3] | soil density |
soil_specific_heat_capacity |
Float |
Y/Y | 2400 | [J/(kgK)] | soil specific heat capacity |
soil_heat_conductivity |
Float |
Y/Y | 1.5 | [W/(Km)] | heat conductivity of surrounding soil, homogenous and constant |
Externally importing g-function from a file
Name | Type | R/D | Example | Unit | Description |
---|---|---|---|---|---|
g_function_file_path |
String |
Y/N | "path/to/file.txt" | [-] | absolute or relative path to a txt file containing an externally calculated g-function |
Model detailed
:
The detailed model uses extended parameters to determine the thermal borehole resistance from the fluid to the soil. Therefore, an approach by Hellström (1991) is used to determine the effective thermal borehole resistance using the convective heat transfer coefficient within the pipe. For that, the Reynolds number is calculated in every timestep to determine the heat transmission from fluid to the pipe. The heat conductivity of the pipe and the grout has to be given. The heat transmission from pipe to grout and grout to soil is neglected.
To perform this calculation in every timestep, the following input parameters are required additionally to the ones of the simplified model, while the borehole_thermal_resistance
is not needed anymore:
Name | Type | R/D | Example | Unit | Description |
---|---|---|---|---|---|
probe_type |
Int |
Y/Y | 2 | [-] | probe type: 1: single U-pipe in one probe, 2: double U-pipe in one probe |
pipe_diameter_outer |
Float |
Y/Y | 0.032 | [m] | outer pipe diameter |
pipe_diameter_inner |
Float |
Y/Y | 0.026 | [m] | inner pipe diameter |
pipe_heat_conductivity |
Float |
Y/Y | 0.42 | [W/(Km)] | heat conductivity of inner pipes |
shank_spacing |
Float |
Y/Y | 0.1 | [m] | distance between inner pipes in borehole, diagonal through borehole center. required for calculation of thermal borehole resistance. |
fluid_specific_heat_capacity |
Float |
Y/Y | 3800 | [J/(kgK)] | specific heat capacity of brine at 0 °C (25 % glycol 75 % water) |
fluid_density |
Float |
Y/Y | 1045 | [kg/m^3] | density of brine at 0 °C (25 % glycol 75 % water) |
fluid_kinematic_viscosity |
Float |
Y/Y | 3.9e-6 | [m^2/s] | kinematic viscosity of brine at 0 °C (25 % glycol 75 % water) |
fluid_heat_conductivity |
Float |
Y/Y | 0.5 | [W/(Km)] | heat conductivity of brine at 0 °C (25 % glycol 75 % water) |
fluid_prandtl_number |
Float |
Y/Y | 30 | [-] | Prandtl-number of brine at 0 °C (25 % glycol 75 % water) |
grout_heat_conductivity |
Float |
Y/Y | 2.0 | [W/(Km)] | heat conductivity of grout (filling material) |
soil_heat_conductivity |
Float |
Y/Y | 1.5 | [W/(Km)] | heat conductivity of surrounding soil, homogenous and constant |
Examplary input file definition for geothermal probe:
"TST_GTP_01": {
"type": "GeothermalProbes",
"m_heat_out": "m_h_w_lt1",
"control_refs": [],
"output_refs": [
"TST_HP_01"
],
"model_type": "detailed",
"___GENERAL PARAMETER___": "",
"max_input_power": 150,
"max_output_power": 150,
"regeneration": true,
"max_probe_temperature_loading": 45,
"min_probe_temperature_unloading": 6,
"probe_depth": 150,
"borehole_diameter": 0.16,
"loading_temperature_spread": 4,
"unloading_temperature_spread": 1.5,
"soil_undisturbed_ground_temperature": 13,
"boreholewall_start_temperature": 13,
"___G-FUNCTION FROM LIBRARY___": "",
"probe_field_geometry": "rectangle",
"number_of_probes_x": 3,
"number_of_probes_y": 12,
"probe_field_key_2": "",
"borehole_spacing": 8,
"soil_density": 1800,
"soil_specific_heat_capacity": 2400,
"soil_heat_conductivity": 1.6 , // also needed for detailed model
"___SIMPLIFIED MODEL___": "",
"borehole_thermal_resistance": 0.1,
"___DETAILED MODEL___": "",
"probe_type": 2,
"pipe_diameter_outer": 0.032,
"pipe_diameter_inner": 0.0262,
"pipe_heat_conductivity": 0.42,
"shank_spacing": 0.1,
"fluid_specific_heat_capacity": 3795,
"fluid_density": 1052,
"fluid_kinematic_viscosity": 3.9e-6,
"fluid_heat_conductivity": 0.48,
"fluid_prandtl_number": 31.3,
"grout_heat_conductivity": 2
}
Geothermal collector
Type name | GeothermalHeatCollector |
File | energy_systems/heat_sources/geothermal_heat_collector.jl |
Available models | simplified (default), detailed |
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 , fluid_temperature , ambient_temperature , global_radiation_power . Detailed only: fluid_reynolds_number , alpha_fluid_pipe |
A model of a geothermal collector that can also be used to simulate a cold district heating network (5th generation). Two models are available, one detailed
and a simplified
version that uses a constant user-defined thermal pipe resistance (fluid to soil). This avoids the need of defining 7 additional parameters. To simulate a single pipe, make sure that you use an appropriate width of the simulation area (‘pipe_spacing’), as no explicit model for single pipes is currently available and the boundary of the simulation volume facing the side is assumed to be adiabatic (Neumann boundary condition) and not constant (Dirichlet boundary condition). Check the temperature distribution over time by activating the additional plots in the io_settings.
The parameters characterising the soil and its moisture content, such as heat capacity, density, thermal conductivity and enthalpy of fusion, as well as the parameters describing the boundary conditions on the ground surface, have a significant influence on the simulation results. Make sure that you select suitable values, e.g. from VDI 4640. The default values are not necessarily correct or consistent.
General parameter
Name | Type | R/D | Example | Unit | Description |
---|---|---|---|---|---|
model_type |
String |
Y/Y | simplified |
[-] | type of collector model: "simplified" with constant or "detailed" with calculated thermal resistance (fluid -> pipe) in every time step. |
temperature_from_global_file |
String |
Y/N | temp_ambient_air |
[°C] | profile for ambient dry bulb temperature (provide either this or temperature_profile_file_path or constant_temperature) |
OR: temperature_profile_file_path |
String |
Y/N | path/to/file |
[°C] | profile for ambient dry bulb temperature (provide either this or temperature_from_global_file or constant_temperature) |
OR: constant_temperature |
Float |
Y/N | 13 | [°C] | constant value for ambient dry bulb temperature (provide either this or temperature_from_global_file or temperature_profile_file_path) |
global_solar_radiation_from_global_file |
String |
Y/N | globHorIrr |
[W/m^2] | profile for global solar horizontal radiation (provide either this or global_solar_radiation_profile_file_path or constant_global_solar_radiation) |
OR: global_solar_radiation_profile_file_path |
String |
Y/N | path/to/file |
[W/m^2] | profile for global solar horizontal radiation (provide either this or global_solar_radiation_from_global_file or constant_global_solar_radiation) |
OR: constant_global_solar_radiation |
Float |
Y/N | 400 | [W/m^2] | constant value for global solar horizontal radiation (provide either this or global_solar_radiation_from_global_file or global_solar_radiation_profile_file_path) |
infrared_sky_radiation_from_global_file |
String |
Y/N | longWaveIrr |
[W/m^2] | profile for infrared sky radiation (provide either this or infrared_sky_radiation_profile_file_path or constant_infrared_sky_radiation) |
OR: infrared_sky_radiation_profile_file_path |
String |
Y/N | path/to/file |
[W/m^2] | profile for infrared sky radiation (provide either this or infrared_sky_radiation_from_global_file or constant_infrared_sky_radiation) |
OR: constant_infrared_sky_radiation |
Float |
Y/N | 500 | [W/m^2] | constant value for infrared sky radiation (provide either this or infrared_sky_radiation_from_global_file or infrared_sky_radiation_profile_file_path) |
accuracy_mode |
String |
Y/Y | normal |
[-] | can be one of: very_rough , rough , normal , high , very_high . Note that very_rough can have significant errors compared to higher resolution while very_high requires significant computational effort! |
regeneration |
Bool |
Y/Y | true | [-] | flag if regeneration should be taken into account |
max_output_power |
Float |
Y/Y | 20 | [W/m^2] | maximum output power per collector area |
max_input_power |
Float |
Y/Y | 20 | [W/m^2] | maximum input power per collector area |
fluid_min_output_temperature |
Float |
N/N | -5 | [°C] | minimum output temperature of the fluid for unloading; if not specified, no limit is applied for the output temperature |
fluid_max_input_temperature |
Float |
N/N | 60 | [°C] | maximum input temperature of the fluid for loading; if not specified, no limit is applied for the input temperature |
phase_change_upper_boundary_temperature |
Float |
Y/Y | -0.25 | [°C] | the upper boundary of the phase change temperature range |
phase_change_lower_boundary_temperature |
Float |
Y/Y | -1.0 | [°C] | the lower boundary of the phase change temperature range |
number_of_pipes |
Float |
Y/Y | 1 | [-] | the number of parallel collector pipes |
pipe_length |
Float |
Y/Y | 100 | [m] | the length of a single collector pipe |
pipe_spacing |
Float |
Y/Y | 0.5 | [m] | the spacing between the parallel collector pipes. For a single pipe, use a larger spacing depending on the soil conditions. Check the temporal evolution of the temperature distribution with additional plots in the io_settings. |
pipe_laying_depth |
Float |
Y/Y | 1.5 | [m] | the depth of the soil between the surface and the pipe |
pipe_radius_outer |
Float |
Y/Y | 0.016 | [m] | the outer radius of the pipe |
considered_soil_depth |
Float |
Y/Y | 10.0 | [m] | the total depth of the simulated soil from the surface to undisturbed ground temperature |
soil_specific_heat_capacity |
Float |
Y/Y | 1000 | [J/(kgK)] | specific heat capacity of the soil in unfrozen state |
soil_specific_heat_capacity_frozen |
Float |
Y/Y | 900 | [J/(kgK)] | specific heat capacity of the soil in frozen state |
soil_density |
Float |
Y/Y | 2000 | [kg/m^3] | density of the soil |
soil_heat_conductivity |
Float |
Y/Y | 1.5 | [W/(Km)] | heat conductivity of the soil in unfrozen state |
soil_heat_conductivity_frozen |
Float |
Y/Y | 2.0 | [W/(Km)] | heat conductivity of the soil in frozen state |
soil_specific_enthalpy_of_fusion |
Float |
Y/Y | 90000 | [J/kg] | specific enthalpy of fusion of soil |
surface_convective_heat_transfer_coefficient |
Float |
Y/Y | 14.7 | [W/(m^2 K)] | convective heat transfer on surface |
surface_reflection_factor |
Float |
Y/Y | 0.25 | [-] | reflection factor / albedo value of surface |
surface_emissivity |
Float |
Y/Y | 0.9 | [-] | emissivity of the surface |
unloading_temperature_spread |
Float |
Y/Y | 3 | [K] | temperature spread between forward and return flow during unloading |
loading_temperature_spread |
Float |
Y/Y | 3 | [K] | temperature spread between forward and return flow during loading |
start_temperature_fluid_and_pipe |
Float |
Y/Y | 15.5 | [°C] | starting temperature of fluid and soil near pipe |
undisturbed_ground_temperature |
Float |
Y/Y | 9 | [°C] | undisturbed ground temperature at the bottom of the simulation boundary |
Parameter for simple model only
Name | Type | R/D | Example | Unit | Description |
---|---|---|---|---|---|
pipe_soil_thermal_resistance |
Float |
Y/Y | 0.1 | [(Km)/W] | thermal resistance from fluid to pipe (constant for simple model) |
Model detailed
:
The detailed model uses extended parameters to determine the thermal resistance from the fluid to the soil. For that, the Reynolds number is calculated in every timestep to determine the heat transmission from fluid to the pipe. The heat transmission from pipe to soil is neglected.
To perform this calculation in every timestep, the following input parameters are required, while the pipe_soil_thermal_resistance
is not needed anymore:
Name | Type | R/D | Example | Unit | Description |
---|---|---|---|---|---|
use_dynamic_fluid_properties |
Bool |
N/Y | false | [-] | flag if temperature dependent calculation of the fluid's Reynolds number for a 30 Vol-% ethylene glycol mix from TRNSYS Type 710 should be used (true), defaults to false |
nusselt_approach |
String |
N/Y | "Stephan" | [-] | approach used for the calculation of the Nußelt number, can be one of: Stephan, Ramming, defaults to "Stephan" |
pipe_thickness |
Float |
Y/Y | 0.003 | [m] | thickness of the pipe |
pipe_heat_conductivity |
Float |
Y/Y | 0.4 | [W/(Km)] | heat conductivity of pipe |
fluid_specific_heat_capacity |
Float |
Y/Y | 3800 | [J/(kgK)] | specific heat capacity of the fluid |
fluid_heat_conductivity |
Float |
Y/Y | 0.4 | [W/(Km)] | heat conductivity of the fluid |
fluid_density |
Float |
Y/Y | 1045 | [kg/m^3] | density of the fluid |
fluid_kinematic_viscosity |
Float |
Y/Y | 3.9e-6 | [m^2/s] | kinematic viscosity of the fluid |
fluid_prandtl_number |
Float |
Y/Y | 30 | [-] | Prandtl-number of the fluid |
Examplary input file definition for geothermal collector:
"TST_GTC_01": {
"type": "GeothermalHeatCollector",
"m_heat_out": "m_h_w_lt1",
"output_refs": ["TST_DEM_01"],
"model_type": "detailed",
"___GENERAL PARAMETER___": "",
"temperature_from_global_file": "temp_ambient_air",
"global_solar_radiation_from_global_file": "globHorIrr",
"infrared_sky_radiation_from_global_file": "longWaveIrr",
"accuracy_mode": "rough",
"regeneration": false,
"max_output_power": 25,
"max_input_power": 25,
"phase_change_upper_boundary_temperature": -0.25,
"phase_change_lower_boundary_temperature": -1.0,
"number_of_pipes": 47,
"pipe_length": 93,
"pipe_spacing": 1.0,
"pipe_laying_depth": 2.0,
"pipe_radius_outer": 0.02,
"considered_soil_depth": 10.0,
"soil_specific_heat_capacity": 850,
"soil_specific_heat_capacity_frozen": 850,
"soil_density": 1900,
"soil_heat_conductivity": 2.4,
"soil_heat_conductivity_frozen": 2.9,
"soil_specific_enthalpy_of_fusion": 90000,
"surface_convective_heat_transfer_coefficient": 14.7,
"surface_reflection_factor": 0.25,
"surface_emissivity": 0.9,
"unloading_temperature_spread": 3.0,
"loading_temperature_spread": 3.0,
"start_temperature_fluid_and_pipe": 12.5,
"undisturbed_ground_temperature": 9.0,
"___SIMPLIFIED MODEL___": "",
"pipe_soil_thermal_resistance": 0.1,
"___DETAILED MODEL___": "",
"pipe_thickness": 0.0037,
"pipe_heat_conductivity": 0.4,
"fluid_specific_heat_capacity": 3944,
"fluid_heat_conductivity": 0.499,
"fluid_density": 1025,
"fluid_kinematic_viscosity": 3.6e-6,
"fluid_prantl_number": 30
}