Changelog

Planned features in Backlog.

* breaking change.

0.21.0 (2026.03.24)

Breaking changes

  • Updated stubs and docstrings for Python API object and attributes. Some Python objects have changes in name and what namespace they belongs to.

  • Updated stubs and docstrings for methods on Python API objects.
    • Attribute HydraulicCoupling::is_station_joined has been renamed to HydraulicCoupling::station_joined

    • Attribute HydraulicCoupling::have_hydraulic_flow_results has been changed into a method have_hydraulic_flow_results()

    • Reservoir result method discharge() has an alias, drawdown(). The alias has been removed.

    • busbar.reservoirs() does not include station joined hydraulic couplings anymore. Use busbar.hydraulic_couplings().

Non-breaking changes

0.20.3 (2026.03.06)

Non-breaking changes

  • Keys ltm_core_linear_interpolation and is_periodic are allowed when importing Txy from JSON.

  • Removed attributes periodic_lower_bound and periodic_upper_bound from pyltm.util. They were causing problems on Windows.

0.20.2 (2026.03.03)

Breaking changes

  • Changed base year for cyclic curves from year 0000 to year 1703. Added is_periodic to TxyLin.

  • Added support for cyclic PQ-curves. From JSON use weeks-notation (ie: W01 up to W52), for Python use DateTime with 1703 as year.

Non-breaking changes

  • Relaxed requirements for TxyLin curves. Invalid curves will not result in a hard stop, but a validation discrepancy. Validation discrepancies can be ignore by setting allow_validation_failures to true.

0.20.1 (2026.02.02)

Non-breaking changes

  • Attributes is now a compile time tuple/list for each object.

  • Added support for cyclic TxyLin curves that will automatically repeat for each year in the data period.

  • Import: Do not print ‘Hydraulic coupling 0 not handled for reservoir [reservoir name]’ when hydraulic coupling code is 0.

0.20.0 (2026.01.21) *

Breaking changes

  • Added energy equivalent validation checks. Validation will fail if those two energy equivalents are not approximately the same, +-5% range is allowed.

  • Extra TxyLin checks for curves that will be linearized in LTM Core.

  • Extra TxyLin checks for curves that will be linearized in LTM Core. Time dependent constraints for minimum and maximum discharge, bypass and reservoir volume are checked for invalid data, the minimum values are not allowed to be higher than maximum values at any point

  • Validation of correctly specified pump_capacity for pumping head and pumped discharge

Non-breaking changes

  • Improved error messages.

0.19.5 (2026.01.12)

Non-breaking changes

  • metadata attribute is working as expected again.

0.19.4 (2026.01.12)

Internal release.

0.19.3 (2026.01.12)

Non-breaking changes

  • DETD modules with no production will no longer have any PQ-curves

  • added txylin datatype for time dependent reservoir reference curve, min/max reservoir volume curve, min/max bypass curve and min/max discharge where the name of the datatype “txylin” reflects to the users that the values are linearisation in the LTM-core.

  • added control of concurrent presence of min/max constraints and tests

Bugfixes

  • fix for letter casing in method getting area results from detsimres.h5

  • DETD-writer with no PQ-curves will write a correctly formatted entry. It was -1, 0.00, now it is 0, 0.00.

  • DETD-parser will correctly parse modules with 0 PQ-curves.

  • When shutting down pyltm, it will no longer give an error.

  • DETD-writer: Will throw an error if FALLHOYDE/gross_head is 0.0.

  • DETD import: Will set gross_head and tailrace_elevation on Plant and not Reservoir if Plant exists in the same system.

0.19.2 (2025.11.27)

Changes:

  • ENMD parser will complain with filename if trying to import a dataset with manually adjusted water value weights.

  • Fixed bug when getting hydraulic couplings for a busbar, saying dataset HydUtveksling is not available.

  • Added hc.production() and hc.discharge() for station joined hydraulic connections.

  • Fixed hydraulic exchange flow results.

  • Updated pyltm.pyi stub file

0.19.1 (2025.11.20)

Added:

  • LTM files written by the API will be encoded in ISO-8859-1. Using nordic characters for area/busbar names is highly discouraged.

  • import_directory will import DCLines from MASKENETT.DATA. Variable capacity is read from Cap_file.h5 and constant capacity is read from MASKENETT.DATA. Variable capacity on MASKENETT.DATA is not, and will not be supported.

  • Import will not output both mutually exclusive attributes max_volume and volume_curve Reservoirs.

  • Strings written to DETD and ENMD files is consistently in ISO-8859-1.

  • Bug with calculating time periods when importing data is fixed.

0.19.0 (2025.11.14)

Added:

  • First prototype for EMPS import directory functionality, with focus on DETD-topology and LtmApi model dump. session.import_directory and session.dump_model.

  • Updated DETD topology plots.

  • Added: Make missing return statements in non-void methods a compiler error with compiler flags “-Wreturn-type -Werror=return-type”

0.18.3 (2025.11.11)

  • Fixed: Station joined hydraulic connections did not connect to downstream reservoirs.

  • Bugfix: Detailed hydro results - reservoir volume unit

0.18.3-rc1 (2025.10.17)

  • Added:

    • Experimental methods import_directory and dump_model.

0.18.2 (2025.09.29) *

  • Added:

    • Support for outage/breakdown period (HAVARI.STAS) with attribute breakdown_unavailable_capacity on Plants and Pumps.

    • Results from hydraulic couplings type 200 and 300 if they are available through EMPS/EOPS license.

0.18.0 (2025.09.18) *

  • Change: Renamed some attributes to make them more consistent.

    • aggregated_hydro_mdule.regulated_energy_inflow -> aggregated_hydro_mdule.regulated_power_inflow

    • aggregated_hydro_mdule.unregulated_energy_inflow -> aggregated_hydro_mdule.unregulated_power_inflow

  • Change: Renamed some result series.

    • aggregated_hydro_module.sum_hydro_energy_production -> aggregated_hydro_module.sum_hydro_power_production

    • battery_module.sum_energy_production -> battery_module.sum_power_production

    • busbar.sum_pumped_energy -> busbar.sum_pumped_power

    • busbar.sum_energy_used_for_pumping -> busbar.sum_power_used_for_pumping

Unit for sum_pumped_power and sum_power_used_for_pumping is changed to MW from GWh.

Change:

  • Simplified the use of Txy timeseries.

Added:
  • Added reservoir.reservoir_type. Valid values are buffer and regulation.

Removed:

  • Txy attribute values in timeseries is removed and the API will generate an error if that key is used.

0.17.0 (2025.09.01) *

Warning

  • It is highly recommended to avoid using the attribute busbar.water_value_weights unless you know how to use it.

Warning

  • Energy inflow series for aggregated hydro modules has been changed from MWh to MW.

Warning

  • Attributes spill_cost and load_penalty have been changed to scalars. If they are omitted, default price for spill cost is 0.01 and default price for load penalty is 3000.0.

  • Change: Renamed some attributes in the JSON model and Python interface.

    • Result attribute busbar.water_value -> busbar.water_value_results

    • Input attribute busbar.water_value -> busbar.water_value_weights

    • busbar.reservoir -> busbar.sum_reservoir

  • Added result series:

    • aggregated_hydro_module.sum_hydro_energy_production

    • aggregated_hydro_module.sum_hydro_energy

    • battery_module.sum_energy_production

    • battery_module.sum_energy

    • busbar.sum_pumped_energy

    • busbar.sum_energy_used_for_pumping

  • Removed:

    • global_settings.reservoir_pts

  • Added: Default currency unit/energy unit is EUR/MWh.

  • Change: Regulated and unregulated energy inflow for aggregated hydro modules and batteries have changed unit from MWh to MW. In the the same change, the API will now correctly sum up any variations within the week in case of hourly resolutions. The requirements for input series has been relaxed. It no longer strictly necessary to have the input series as a 2D matrix where the extra dimension is number of scenarios (historical years). When the input series is a 1D vector, the API will build a 2D series from the 1D input vector.

  • Added: Environment variable LTM_ARCHIVE is always set to API.

  • Added: global_settings.default_spill_cost and global_settings.default_load_penalty price series. If no spill cost/load penalty are defined on a busbar, they will use the default from global settings.

  • Change: spill_cost, load_penalty, default_spill_cost and default_load_penalty have been changed to a scalar data type (double).

  • Change: If water_value_weights is specified, number of weights must be exactly 7.

0.16.3 (2025.08.07)

  • Added: session.build_busbar_graph() for drawing dot graphs with busbars and connected DCLines

0.16.2 (2025.07.31)

  • Bugfix: Performance problem when fetching detailed hydro results with large result sets fixed.

0.16.1 (2025.07.29)

  • Bugfix: Disallow reassigning market steps, loads, +++, to other busbars if they already has been connected to a busbar.

0.16.0 (2025.07.28)

  • Added: Results from FBMC

  • Bugfix: Inflow series for hydraulic couplings

0.15.0 (2025.06.25)

  • Bugfix: Reservoir reference curve week bugfix. Week was offset by 1 week.

  • Added: Forecast and forecast period. Forecast.

  • Added: global_settings/historical_type.

0.14.2 (2025.06.04)

  • Bugfix: Some features were wrongly disabled when using license file. Some features are always on and will not be disabled when running with license file or enviroment passwords.

0.14.1 (2025.06.04)

  • Added: Support for EMPS/serial simulation.

  • Added: Support for specifying timestamps in ISO-week notation, ie. 2024-W01. iso-week-time-label

  • Bugfix: Aggregated hydro modules no longer requires upper/lower production/reservoir limits. Improved error message.

0.14.0 (2025.05.21)

  • Major: Flow based market coupling

  • Added: Generate LtmSystem.XML / EmpsSystem.XML

  • Major: Arbitrary start and end week for simulation. calc_water_value_flag is now simulation_period. *

  • Bugfix: Aggregated hydro modules used wrong unit in results. Correct units are MW and MWh, where GW and GWh was used previously. *

  • Added: More unit testing

  • Added: Fetching results from EOPS simulations

  • Added: Secondary price series

  • Added: Sum load and sum production from market steps aggregate results. *

  • Added: Results with time axis. *

  • Bugfix: Battery time series with relaxed requirements for time series. *

  • Added: Simplified price segment requirements and use.

  • Added: More detailed errors from H5.

  • Added: Interest rate

  • Bugfix: Aggregated hydro modules energy inflow used wrong unit when writing LTM data files. Energy inflow is correctly converting from MWh to GWh. *

  • Added: Market steps with exogenous prices.

  • Cosmetic: Attribute table displays the default value.

  • Added: Separate default precision and iterations for busbars with batteries.

  • Added: Specify precision and iterations per busbar.

  • Added: Specify feedback factors per busbar.

  • Bugfix: Interpolate volume restrictions (min/max volume) for all reservoirs for every week in the data period.

0.13.0 (2025.02.07)

  • Minimal EOPS simulation.

  • Revisions/unavailable capacity on pumps. *

  • Batteries included (again). *

  • V10Converter for exogenous prices

  • nt_inflow removed from water value result matrix. *

0.12.3 (2025.01.17)

  • Bugfix: Spot price market step

0.12.1 (2025.01.14)

  • Bugfix: Spot price market step

0.12.0 (2025.01.10)

  • Spot price market step

0.11.0 (2024.12.19)

  • Exogenous price writer, but not usable from the API.

  • Added 2 attributes to global settings, model_type and simulation_type.

  • Hydraulic couplings. Hydraulic Couplings

  • Live LTM.

0.10.5 (2024.12.12)

  • Bugfix: Wind can be unlocked with password.

0.10.4 (2024.12.09)

  • Bugfix: Multiple DCLines between busbar is supported, while using Cap_file.

0.10.3 (2024.12.06)

  • Bugfix: Id and TS_name added to TidsserieData.h5 file when using loads with hourly resolution.

0.10.2 (2024.12.05)

  • Bugfix: Detailed hydro module, spill.

  • Added scenario dependent loads (TidsserieData.h5).

0.10.1 (2024.12.02)

  • Bugfix: Fetching detsimres results from the API is not slow anymore.

0.10.0 (2024.11.29)

Known issues:

  • Batteries does not work.

0.9.1 (2024.11.20)

  • Major: Pumps. Pumps in the LtmApi.

  • Added: Restriction 9 on plants, gross head max discharge.

  • Minor: Bugfixes on pumps.

  • Minor: Bugfixes when using external timeseries for some timeseries.

0.9.0 (2024.11.13)

  • Major: Detailed hydro modules has been reworked and previous models will not work. Detailed hydro modules.

  • Added: Utility-method for converting Historical.h5 series to LTM-API data series. V10 Dataset Converter.

  • Added: Writer for reservoir.star. Initial reservoir volumes for detailed and aggregated hydro modules.

  • Added: Writer for revisjonsplan.stas. This file contains planned station outages.

0.8.1 (2024.10.25)

  • Fixed some bugs with TidsserieData.h5 and ENMD.

  • Added “stop words”. LTM-API will scan the contents of the produced log files and stop execution if any of the defined “stop words” are present. Ignore by setting global_settings.ignore_stopwords to true.

  • More properties and attributes on API objects in Python are defined and exposed.

0.8.0 (2024.10.24)

  • Dynamic attributes for Python API objects.

  • Loads are using a local index per busbar, allowing for more than 100 total loads in the simulation. Each busbar is still limited up to 100 loads.

  • The way the LTM core applications are launched have been changed.

  • Batteries included. Documentation: Battery functionality.

  • Reader for price segments.

  • Reader/writer for LASTPROFIL.ARCH and EFFEKTPROFIL.ARCH.

  • External timeseries for CSV and SQLite. External data.

  • DCLines with hourly resolution. Constant capacity is written to MASKENETT.DATA, any varying values goes to Cap_file.h5.

  • Very early prototypes of next iteration of DETD object included, not usable in this version.

  • Loads and market steps with hourly resolution is written to TidsserieData.h5. Constant values goes to {BUSBAR}.ENMD.

0.7.0 (2024.08.08)

  • Added the use of license file. License.

  • Reworked how attributes are defined for the API model.

  • Bugfix: Use globally unique names for solar and wind series.

  • Bugfix: Suppressed some H5-warnings.

0.6.1 (2024.06.25)

  • Bugfix: Expanded data buffer when writing string data to historical and wind/solar H5 data files.

0.6 (2024.06.17)

  • Residual loads and negative residual loads check. Residual loads.

  • Ability to set User-callback for all LTM Core application invokations. set_execute_callback.

  • Bugfix where some LTM Core option environment variables had wrong value.

0.5.2 (2024.06.07)

  • Export of results. Exporting of results.

  • Implemented Wind and Solar. Wind and Solar.

  • Explicit handling of environment variables for LTM Core.

  • Sequence numbers for market steps in busbar is incremented per busbar, and not globally.

0.5.1 (2024.05.22)

  • Bugfix when having multiple DCLines (maskenett) fixed.

  • More lenient requirements with energy inflow series.

0.5 (2024.05.22)