Releases: QuaSi-Software/resie
v0.10.0
Key Features:
-
Datetime Indexes for Profiles and Simulations: Introduced datetime handling for profiles and internal processes. Simulation start and end times are now datetime-based, and time steps can be provided in seconds, minutes, or hours. Profiles must cover the full simulation period and can be defined with various formats (start date & timestep, start date & timestamp or custom date format). Multi-year weather data is now supported. Added extensive/intensive data types in profiles, replacing "is_power." Improved segmentation and aggregation algorithms with support for linear or stepwise interpolation.
-
Temperature Layer Integration: Temperature layers are now handled in input/output interfaces for correct calculation of COP. Enhanced the heat pump component to manage temperature layers, and implemented a method to handle unknown energies during the potential step to avoid balance errors.
Additional Improvements:
- Improved Time Definition: Data is now defined as the mean/sum of the following time step. Weather data is converted accordingly were required. Internally, local standard time is used. Profiles with daylight saving time (DST) are converted. Leap days are omitted in both input and output.
- Coordinate Support: Added input for coordinates and automatic conversion for coordinates provided in weather data files.
- New Parameters: Introduced "time_shift_seconds" to manually shift profile data and "use_linear_segmentation" for linear interpolation. Simulation parameters are defined completely new. Added long-wave irradiation from weather files to be used by components.
Other Changes:
- Removed deprecated internal parameters like "is_first_timestep."
- Improved geothermal probe interpolation and added custom g-function import, temperature limits, and bypass functionality in the heat pump for temperature management.
- Enhanced tests to cover profile conversions and added default simulation parameters for tests.
- Introduced support for timezones beyond 2038.
Code and Documentation:
- Applied autoformat to non-formatted files, added YAS code style configuration using JuliaFormatter, and introduced pre-commit hooks for automatic formatting. Extended README to cover code style guidelines.
Scenarios:
- Added new scenarios: "transformer_chain" and "hp_temperature_layer," along with new scenario references due to heat pump bypass, correct COP calculation for multiple heat layers and for line plots using dates as x-axis.
v0.9.0
- Implement functionality of control modules, that can be added to components and that control the operation of the components via defined callback functions. This replaces the previous implementation of "strategies", as this was too limiting. The currently implemented control module types are:
- 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.
- 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 lower values (e.g. the produced energy could not be used up completely).
- storage_driven: Controls a component to only operate when the charge of a linked storage component falls below a certain threshold and keep operation until a certain higher threshold is reached. This is often used to avoid components switching on and off rapdily to keep a storage topped up, as realised systems often operate with this kind of hysteresis behaviour.
- Restructure how the operational strategy is defined in the input file. In particular:
- Remove entry "strategy"
- Remove entry "control_refs"
- Add entry "control_modules" that holds the definitions of control modules active for this component
- Add entry "control_parameters" as container for miscellaneous parameters of the control behaviour as well as parameters to configure the storage un-/loading flags and special flags to modify the potential step of transformers to not consider given interfaces in during calculation.
- Add scenario "chpp_two_hyst" to highlight the operation of a transformer with two storage_driven control modules
v0.8.0
- Standardise storage un-/loading control parameters for all components and make them customisable to the input/output media
- Remove operational strategy extended_storage_loading_control
- Update line plot & sankey outputs to better show missing demands
- Rework internal energy distribution calculations on busses:
- If two or more busses are connected in a chain (necessarily of the same medium), a so-called proxy bus is created, which handles the calculations for any energy transfer from components on any of the principal/original busses
- Remove the distinction of maximum potential energy utilisation () and storage un-/loading potential, as the calculation on a bus considers storages according to the energy flow matrix as well as storage loading flags and thus does not require a distinction anymore. Direct 1-to-1 connections do not require this either, hence the removal.
- Add automatically generated output channels for busses in a chain, where each bus tracks how much energy is transfered to other busses in the input->output direction
- Some slight changes the generated order of operations, as this now makes use of the input and output order on proxy busses. This should not have an impact on results, but might change the order of operations compared to versions before v0.8.0.
v0.7.0
Input and output
- Rename parameters and output variables across several components:
- Load --> Demand in output channel of FixedSink
- static_load --> constant_demand for parameters of sinks
- static_* --> constant_* for parameters where * in (power, temperature, demand, supply)
- fixed_cop --> constant_cop for HeatPump
- draw sum --> output_sum in output channel of GridConnection
- load sum --> input_sum in output channel of GridConnection
- power --> power_* for parameters of all transformers, where * in (el, th)
- medium --> consider_medium for control strategy parameters of all transformers
- Add output channel "Losses" to all components and to Sankey output. "Losses" are total losses, while "Losses_XX" are medium-wise break downs
- Constant values for fixed sources and sinks are now given as power instead of work/energy to be consistent with bounded sources and sinks
- Add global logging functionalities with the following categories: Debug, Info, BalanceWarn, Warn, Error and redirected all println() to logger (console and/or logging files, separately for general logs and Balancewarn)
- Update configuration options for busses:
- Rename "connection_matrix" to "connections"
- Rename "storage_loading" to "energy_flow"
- Make "connections" a required part of the config for a bus, including items "input_order" and "output_order", however "energy_flow" remains optional
- Remove "output_refs" item as "output_order" contains the same information and is now required
Functionality
- Sankey diagrams now display the difference of requested and delivered energy in fixed sinks and sources
- Remove condition "would overfill thermal buffer" in storage_driven strategy as this is now handled implicitly
- Add profile aggregation and segmentation with testcases
- Add import of weather files in EPW format and .dat format (DWD)
- Add functionality to map profiles from weather file to component profiles, like ambient temperature from the weather file to a geothermal collector
Fixes
- Fix generic storage implementation not being available due to the module not being included
- Fix the profile scaling factor of some components being required despite profiles being optional
- Add missing output channels to Electrolyser
Refactorings
- Change the input and output interfaces of busses such that the order matches the input and output priorities
- Rename helper function highest_temperature to highest and add types to inputs
- Provide docstrings for some structs and functions that were missing them
- Rename internal variables to match changes in the input and output variables mentioned above
- Remove last potential() step of transformer chains as this is not needed
- Add required Julia packages: Colors, Interpolations, Dates, Logging
- Rename argument "parameters" for simulation parameters to "sim_params" and add them to all components and profiles
- Rework communication of balances, energy/storage potentials and temperatures via busses. This is an extensive rework that touches almost all components and how the
process
andpotential
simulation steps work. Please note that the rework is not finished with v0.7.0 and will continue to support more energy systems and component configurations that might be of interest to users. However no compatability is knowingly broken with examples that worked in previous versions.