-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update of description of heat pumps #44
base: main
Are you sure you want to change the base?
Conversation
…ious fixes and adjustments.
…ikely not be implemented despite the note in the beginning.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What a complicated beast this heat pump has developed into... oO
|
||
* `const`: Takes one number and uses it as a constant COP. E.g. `const:3.1`. | ||
* `carnot`: Calculates the COP as fraction of the Carnot-COP. E.g. `carnot:0.4`. | ||
* `field`: Two-dimensional field values with bi-linear interpolation between the support values. See explanation below for how the definition should be given. The minimal and maximal variables values are interpreted as the inclusive boundaries of the field. Variables values outside of the boundaries lead to errors and are not extrapolated. The support values should be equally spaced along the dimensions for numerical stability, although the interpolation algorithm does not check and works with varying spacing too. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"variables values" --> "variable values"? Or just "values"? Occurs twice, not sure how it is meant.
These refer to the temperature-dependent part. | ||
|
||
* `const`: Takes one number and uses it as a constant COP. E.g. `const:3.1`. | ||
* `carnot`: Calculates the COP as fraction of the Carnot-COP. E.g. `carnot:0.4`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Description of the second part of the function definition is missing:
...with the reduction factor of the calculated Carnot COP, which is indicated after the :
.
10,15,15,10, 7; | ||
20,15,15,15,11" | ||
``` | ||
The first row are the grid points along the \(T_{sink,out}\) dimension, with the first value being ignored. The points cover a range from 0 °C to 30 °C with a spacing of 10 K. The first column are the grid points along the \(T_{source,in}\) dimension, with the first value being ignored. The points cover a range from 0 °C to 20 °C with a spacing of 10 K. The support values are the COP (at \(\kappa = 1\)), for example a value of 10 for \(T_{source,in} = 10, \ T_{sink,out} = 20\). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is kappa at this point?
@@ -118,6 +150,18 @@ This module is implemented for the following component types: `CHPP`, `Electroly | |||
| **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. | |||
|
|||
#### Temperature sorting | |||
Controls a component so that the availabe energies of the inputs/outputs during calculation of the `potential` and `process` steps are sorted by the temperatures they provide/request. This is useful for components where the temperature differences matter for the calculation. For example a heat pump can use the heat source with the highest temperature first for improved efficiency. | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we should add a warning that this will override the order specified in the bus?
| **input_temps** | Sets if the inputs are sorted by minimum or maximum temperature. Should be `max` (default) or `min`. | ||
| **input_order** | Sets the direction in which the inputs are sorted. Should be `asc` or `desc` (default). | ||
| **output_temps** | Sets if the outputs are sorted by minimum or maximum temperature. Should be `max` or `min` (default). | ||
| **output_order** | Sets the direction in which the outputs are sorted. Should be `asc` (default) or `desc`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we should add an example for how to use the control modules? From the explanation here, I don't know how I can use the features (applies for the control modules in general).
|
||
[^Socal2021]: Socal, Laurent (2021): Heat pumps: lost in standards, *REHVA Journal August 2021*. | ||
[^Filliard2009]: Filliard, Bruno; Guiavarch, Alain; Peuportier, Bruno (2009): Performance evaluation of an air-to-air heat pump coupled with temperate air-sources integrated into a dwelling. *Eleventh International Building Simulation Conference 2009*, S. 2266–73, Glasgow. | ||
[^Lachance2021]:Lachance, Alex; Tamasauskas, Justin; Breton, Stéphanie; Prud’homme, Solange (2021): Simulation based assessment on representativeness of a new performance rating procedure for cold climate air source heat pumps. *E3S Web Conf. 246, S. 6004.* doi: [10.1051/e3sconf/202124606004](https://doi.org/10.1051/e3sconf/202124606004). | ||
|
||
##### Cycling losses, start-up ramps and cooldown | ||
The general effect of energy system components experiencing reduced output power and/or efficiency during a starting phase of operation is described in [this section](resie_transient_effects.md#part-load-ratio-dependent-efficiency). This effect is also observed for heat pumps and described in the literature. At the moment this effect is not included in the model and not implemented. This will be included in a future update as it is a vital part of a detailed operational simulation. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cycling losses are represented by the PLF curves, no?
This function is not concerned with the power at which the heat pump can operate for the given slice and does not decide the PLR. The inputs to the function are available energies (or to be supplied for the heat output), temperatures and the PLR. They are specific to the slice in question. | ||
|
||
#### Part load operation and optimisation of PLR | ||
Given the slicing algorithm and the function `energies_for_one_slice` as described above, it is then the question of how much power is available for each slice and at which PLR each slice is performed. The minimum and maximum power for each slice depends only temperatures, however the PLR does affect the COP. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo: The minimum and maximum power for each slice depends only on temperatures,
|
||
Because the first pass is calculated with full power for each slice and the algorithm stops if the maximum power fraction has been reached, it is guaranteed that the heat pump can fulfill the slices as they have been calculated within the frame of the timestep. However if there is time "left over", it could be the case that recalculating the slices with lower \(\kappa\) for some or all slices leads to an improvement in the efficiency while still observing the power limitations. This leads to an optimisation problem if \(\kappa_{opt} < 1\), for example for inverter heat pumps (see [this section](resie_energy_system_components.md#part-load-efficiency)). | ||
|
||
**Note:** At time of writing a proof-of-concept optimisation option has been implemented, however it leads to a hefty step down in performance and does not work very well in approaching the global optimum. It is recommended to only use it for detailed simulations of a heat pump when poor performance is not an issue. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do I understand correctly that currently inverter heat pumps cannot be modelled with high efficiency, even if there is only one heat layer in the input and output?
\(T_{source,in}\) | evaporator inlet temperature | [°C] | ||
\(COP\) | calculated COP | [-] | ||
\(T_{in,mixed}\) | weighted-mean of chosen input temperatures | [°C] | ||
\(T_{out,mixed}\) | weighted-mean of chosen output temperatures | [°C] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
T_in,mixed and T_out,mixed are not used above. How are they calculated?
|
||
|
||
**State Variables of Heat Pump:** | ||
\(\dot{Q}_{nominal}\) | nominal thermal energy output of heat pump | [W] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That is actually the maximum and not the nominal energy, isn't it?
| **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` | | ||
| **Tracked values** | `IN`, `OUT`, `COP`, `MixingTemperature_Input`, `MixingTemperature_Output` | | ||
|
||
Elevates supplied low temperature heat to a higher temperature with input electricity. | ||
|
||
| Name | Type | R/D | Example | Description | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Units are missing!
| **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` | | ||
| **Tracked values** | `IN`, `OUT`, `COP`, `MixingTemperature_Input`, `MixingTemperature_Output` | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there an easy way to track the total PLR in the current time step? That would be interesting for cross-checking the results...
model
from all component parameters (it was never implemented)temperature_sorting