Skip to content

Releases: dss-extensions/dss_capi

AltDSS/DSS C-API 0.14.0b2

16 Jan 03:42
Compare
Choose a tag to compare
Pre-release

For testing downstream projects. If no surprises, final 0.14.0 coming soon, after some tickets are closed. Note: some commits will be omitted or squashed before merging the 0.14.x branch, do not base anything on the commit hash of this release.

Changelog at https://github.com/dss-extensions/dss_capi/blob/0.14.0b2/docs/changelog.md#version-0140

Full Git Changelog: 0.13.4...0.14.0b2

AltDSS/DSS C-API 0.14.0b1

13 Dec 06:12
Compare
Choose a tag to compare
Pre-release

For testing downstream projects. If no surprises, final 0.14.0 coming soon.

Changelog at https://github.com/dss-extensions/dss_capi/blob/0.14.0b1/docs/changelog.md#version-0140

Full Git Changelog: 0.13.4...0.14.0b1

DSS C-API 0.13.4

27 Jun 23:15
Compare
Choose a tag to compare

This is primarily a bugfix release for CapControl.

DSS C-API is a library that exposes a plain C API for an unofficial/alternative implementation/port of OpenDSS, the Distribution System Simulator from EPRI (the Electric Power Research Institute), aiming for full COM compatibility and beyond. It allows using most of the OpenDSS features on Windows, Linux and macOS with compatible behavior across multiple processor architectures. It is the lower level API used by the other projects in DSS-Extensions: DSS-Python, OpenDSSDirect.py, OpenDSSDirect.jl (Julia language), DSS# (.NET/C# bindings), DSS MATLAB, and the dss.hpp C++ header-only library, besides third-party projects.

All derived/downstream projects, including the documentation sites and dss.hpp headers, will be updated in the next hours/days to use this new engine.

See the changelog for a complete list of changes.
See also the updated "Known Differences" document, which lists the main differences between the DSS C-API codebase and the main/official OpenDSS.

For a growing general repository about the projects, see https://github.com/dss-extensions/dss-extensions

Besides the changes listed below, the plotting backend in DSS-Python was updated to fix and complement compatibility with the official OpenDSS plots.

Changes since 0.13.3

Bugfix release for CapControl, couple with some incremental improvements.

This version should match OpenDSS v9.6.1.3 (SVN r3623).

  • Ported from the official OpenDSS SVN code:

    • CapControl, port SVN 3622: "Solves a bug introduced in version 9.6.1.2 when using CapControl in time or follow control modes." (by davismont).
  • Added DSSEvents: Implement an initial set of functions analog to the COM interface. This was added for historical compatibility since use of DSSEvents is rarely seen. This document from EPRI (2011) presents the equivalent in the COM interface. Examples will be added in our downstream projects when time allows (feel free to request one to signal interest in this feature).

  • Handle better how the internal SolutionAbort is used. Some invalid states where not being handled on absence of float-point exceptions, leading to potential useless results (NaN) and even crashes.

  • VSource: Abort the solution if Z1 is zero.

  • API/ArrayDimensions: fix CktElement_Get_NodeOrder; add to CktElement_Get_Powers.

Full Git Changelog: 0.13.3...0.13.4

Precompiled binaries

Most of the binaries available here are built through GitHub Actions, as are most of the development builds (you need to be logged in to be able to download dev builds). Linux ARM32 binaries will be added manually as time permits (please feel free to create a new issue if we delay it too much).

Users rarely need to build the Pascal binaries themselves, since there aren't many Free Pascal compiler flags that affect them. We do recommend building KLUSolveX optimized for your machines, especially for HPC clusters (since it's built as a shared library, you don't need to worry about Free Pascal).

Checksums

SHA256

ace14f6dd1a06dfa5db8d87453a0ed5028cff316b478f43d19298cebe0bec47c  dss_capi_0.13.4_darwin_arm64.tar.gz
e96b41e02c02a37e6d436f4f7d9af2663be37aeb2748f0cfbad9cb77925ea79f  dss_capi_0.13.4_darwin_x64.tar.gz
78c89ea3407e545771b10532bef5fc5c70cfcb37617e0fad92653ff7921554f3  dss_capi_0.13.4_linux_arm64.tar.gz
e2bf0fb1c7db3e45640a64583655c278420ca5302270ea669cb067848822e61f  dss_capi_0.13.4_linux_x64.tar.gz
c6fc494ac913f5f13c6f8a3608eb3030b857322ee1539572e644a3deb77ef1c3  dss_capi_0.13.4_linux_x86.tar.gz
a3f7b0f99e0e97eb8a5818975cfe1649999f99d6fe5de790a0e991677357c589  dss_capi-0.13.4.tar.gz
1a25ab913cae1458899fe6f6686b14a48bdb49503aedd8594c7c65c7f099ced5  dss_capi_0.13.4_win_x64.zip
e48a4436c95275ed5e53c2f837e1166ce7f80f61e238c39edc5ffd9860121242  dss_capi_0.13.4_win_x86.zip
ceac21dc05d6a9934b57ee84d685baf6b711331e82a38d4bc0ace3a52611df41  dss_capi-0.13.4.zip
6a3168dcd029558684eccd706f96349e35e80538097d5135c1e39759a81c6373  messages.tar.gz
7992bbb161df4421f0966e42bcbec454d8e1d069cec88408346766cd18eda71a  messages.zip

SHA512

b1c3735a3b4e3fb819df5d90d2f22020ecdb361a1769204673e353a147cf97aa97ff3b299599e46fa2fd14167d012d3299f33a52ab3f5ff42ca2c5e2bd1aa6db  dss_capi_0.13.4_darwin_arm64.tar.gz
faee5394eaf7e66f35d803735b6e62861b37621d64a99b3d98c75fb5de74192482c7dc8904d0ea48aefef4b247c175a2ca222f761247f73548e207ad2f304b81  dss_capi_0.13.4_darwin_x64.tar.gz
ab71b5e313dbf6406a91278f163edd6eb6e88a925251dc21a2cde05da50334a2df8911f363fb14c5f211b539180caaec12dbdc2a5ae6ce1cbb0378bea53006b7  dss_capi_0.13.4_linux_arm64.tar.gz
06d633995234a9e1519d18a1602626f682731d7f76268fc925682b94d93961329d6d719a1139a932ccb1fad529aaa296642427b908275b75c9b457c46d6c7a93  dss_capi_0.13.4_linux_x64.tar.gz
96fc789ee0233d743455b2a7d3f80bfa886688a3b91dde73d67ea634e5d9cd40a40ce5b13c934da2e3ac16ceff85c4ffd937acbbb4ed3b3d5e533279d921ce80  dss_capi_0.13.4_linux_x86.tar.gz
718b0c663d12334f5484cbf1824d17cd8b8d2ace5f41f5e1dad41635157befb3e573841dd9c987321f560feea2dd1fc2015230a634761c6ba3440a4affb4c26a  dss_capi-0.13.4.tar.gz
ef43f81b3409a42ed11edefc20b2172698db4f3ec231f77c1336d3679a386e2b00c035832a0baa77fe9a0fa01c43ad51e32318fd58ef5ccd66fc70a1e903dddf  dss_capi_0.13.4_win_x64.zip
5a55ac77658565786464f102067bd0636172a86b7bfd03bdfb45cf1db217349b9dd3db8bc6c79fab23fa1dc02f3c44c534b61ee97b590837b55387323b3e0eb8  dss_capi_0.13.4_win_x86.zip
743fc38da46a938ea91f6bb5a731cb8f149a1c90932fd4e4d462677df0da11959f178bf53186a947231ec173bbca3984dc378c0f3d08ab75d36f2dd13fd729fe  dss_capi-0.13.4.zip
a4fe88fe7f898da0967afebfa118745b8318a59f2b37b12f242d644cc3c5833b63fdeb31005eea7313bfed3fcb7c3b6cc303f61e627fe83c44305d9b621c79a1  messages.tar.gz
4d22bc080846385db0f2b56da6c3610865a218acd9464a7f6a46a5c2a17c10925b9281a6a289fe61e9a461afdf4d32ef01d9f48f6833432bcfb84e6c9957ddaa  messages.zip

DSS C-API 0.13.4rc2

26 Jun 04:01
Compare
Choose a tag to compare
DSS C-API 0.13.4rc2 Pre-release
Pre-release

More tests for 0.13.4 (added new features)

DSS C-API 0.13.4rc1

25 Jun 05:01
Compare
Choose a tag to compare
DSS C-API 0.13.4rc1 Pre-release
Pre-release

For testing.

DSS C-API 0.13.3

12 Jun 03:03
Compare
Choose a tag to compare

This is a bugfix release. A few issues present in OpenDSS for several years have been fixed in UPFC, Capacitor and Reactor components. Read below for more.

DSS C-API is a library that exposes a plain C API for an unofficial/alternative implementation/port of OpenDSS, the Distribution System Simulator from EPRI (the Electric Power Research Institute), aiming for full COM compatibility and beyond. It allows using most of the OpenDSS features on Windows, Linux and macOS with compatible behavior across multiple processor architectures. It is the lower level API used by the other projects in DSS-Extensions: DSS-Python, OpenDSSDirect.py, OpenDSSDirect.jl (Julia language), DSS# (.NET/C# bindings), DSS MATLAB, and the dss.hpp C++ header-only library, besides third-party projects.

All derived/downstream projects, including the documentation sites and dss.hpp headers, will be updated in the next hours/days to use this new engine.

See the changelog for a complete list of changes.
See also the updated "Known Differences" document, which lists the main differences between the DSS C-API codebase and the main/official OpenDSS.

For a growing general repository about the projects, see https://github.com/dss-extensions/dss-extensions

Besides the changes listed below, the plotting backend in DSS-Python was updated to fix and complement compatibility with the official OpenDSS plots.

Changes since 0.13.2

Bugfix release for some components. No other major changes.

Fixes ported from the official OpenDSS v9.6.1.2 (SVN r3619) released on 2023-06-06, plus our custom changes (including new tests). Test circuits cross-validated as usual.

  • LoadShape: check if there's any allocated pointer before normalizing. Since we provide more ways to fill the LoadShape data besides the official alternatives, we needed to add a few more checks in case of misuse to avoid using invalid pointers. Includes a minor fix to how manual values (set by the user) for mean and stddev are handled.

  • show command: adjust formatting for show variables, show isolated, show loops, show faults.

  • GICTransformer: clean-up the code and add a minor fix for BusX.

  • Editor: tweak how the process is started; works better on Linux for terminal-based editors (GUI editors are recommended for a better experience though).

  • Obj/API and headers: new functions and add a few warnings in the docs.

  • New compatibility flag in DSSCompatFlags: add SaveCalcVoltageBases. On recent versions, running a save circuit doesn't include a CalcVoltageBases anymore since that causes issues for some users. We added the new flag SaveCalcVoltageBases to restore the old/original behavior. More options are planned for a future version in a dedicated function in the API.

  • Ported (and complemented) from the official OpenDSS SVN code:

    • UPFC, r3610: "Fixing losses in UPFC model, there was a bug introduced several years ago when trying to redefine losses based on residual currents (bad idea)." (by davismont)
    • CapControl, r3615: "Fixing property requirement (element) for capcontrol in Time and Follow control modes", by davismont
    • Capacitor/Reactor: fixes related to 1- or 2-phase LL objects and Yprim; NormAmps/EmergAmps.
      • r3613: "Fixing bug in Yprim formation for 1-ph and 2-ph delta-connected capacitors. Fix to user-specified NormAmps and EmergAmps for capacitors, which were always being overridden with default values. Pending to check for same issues on Reactors." (by celsorocha)
      • r3616: "Fixing bug in Yprim formation for 1-ph and 2-ph delta-connected reactors. Fix to user-specified NormAmps and EmergAmps for reactors, which were always being overridden with default values." (by celsorocha)
      • Also includes an extra fix for a corner-case issue detected with our tests on DSS-Extensions.
    • PVSystem/Storage/InvControl, r3597/r3598: "Adding current limiting capabilities to IBR in QSTS and dynamics modes. Examples also available." (by davismont). Also refactored more common code to InvBasedPCE on the DSS-Extensions version.

Full Git Changelog: 0.13.2...0.13.3

Precompiled binaries

Most of the binaries available here are built through GitHub Actions, as are most of the development builds (you need to be logged in to be able to download dev builds). Linux ARM32 binaries will be added manually as time permits (please feel free to create a new issue if we delay it too much).

Users rarely need to build the Pascal binaries themselves, since there aren't many Free Pascal compiler flags that affect them. We do recommend building KLUSolveX optimized for your machines, especially for HPC clusters (since it's built as a shared library, you don't need to worry about Free Pascal).

Checksums

SHA256

481132bf5f5db9a02a83ee17d41490fcca4e838c93a1b066676c0db66f2b4929  dss_capi_0.13.3_darwin_arm64.tar.gz
5083b81dfcd97688419931e7bb9404d98565d299c71d635bd23a26f0d19a3c6c  dss_capi_0.13.3_darwin_x64.tar.gz
8774861a44d5b3e949808893b16cf39d5c0fa7b9f67a9460da13dc23232f50bf  dss_capi_0.13.3_linux_arm64.tar.gz
f692d876401154b4a3abb0b3028b18ec4b0de2bff0e9768aba06268635a6fafb  dss_capi_0.13.3_linux_x64.tar.gz
1abe0f45fba69b28d847b77d3a023aa365adc7abb786045f8c9787e40e722451  dss_capi_0.13.3_linux_x86.tar.gz
1a4930ad2932c7209daf69e33e0040f5e8f846c004c76604ad33d60de8f8dff5  dss_capi-0.13.3.tar.gz
1e3f15ad74f3a01650cdad6ea1a2f39722ae20c19b3e41550b485125270f86ca  dss_capi_0.13.3_win_x64.zip
3e63ce26dd535b94ae7f25adfd27cb17bc330be0d6f85fa4958b6a4d0993303a  dss_capi_0.13.3_win_x86.zip
d3dc7161a4953efae365a309f7124c950772ff87a4477bafa26e0b794c09e537  dss_capi-0.13.3.zip
6a3168dcd029558684eccd706f96349e35e80538097d5135c1e39759a81c6373  messages.tar.gz
7992bbb161df4421f0966e42bcbec454d8e1d069cec88408346766cd18eda71a  messages.zip

SHA512

1db4a81d9ca18ab5f6932a14291f9130d004172195a6e30e64d8bfd27a9cfc6f85b8fa0f64d8275d816d366d29f195e4d34079dd542eb26c0aea3eda9a7f51e2  dss_capi_0.13.3_darwin_arm64.tar.gz
4bcc0ef07f4fccca192e485ca204816e4f51ddfd7a6fffb09d0a455595a920ff295a9d8c67a9903562c5d344214429dd741216a062f8d64fd7389e74469900d8  dss_capi_0.13.3_darwin_x64.tar.gz
e206c6687e77706071c9dc3a38790d9854195611539a66d22e6d0c6cecaf7d83b40d596ff1ae7d66f2dc7a2c334340642e980aa3bfcd8a06e54c2dedf706642a  dss_capi_0.13.3_linux_arm64.tar.gz
a0c058ad86ff44bf2e1ac776e357ff045dff6c39229a7867a8f890b31530e2629839fd2a772c508561519ed75f86bc594816ed45c60f4c3b73b38df941f4d0a7  dss_capi_0.13.3_linux_x64.tar.gz
488747f1e17676e417c83ae5c81dec706c515d264f5b728809c8b412a3ad6e676bf2b348c5ea3091fdc0fde2f97745ebab0cf1bb734646e5b4158aac878c77a9  dss_capi_0.13.3_linux_x86.tar.gz
fd215b641318ada3ea45c71eab51b327698f96b3a4480385fc2f169b569f02fa526a52fe95868a41f8c29ec1c8f643f60d1ec8afbbfb4d5fdcce9440bc3c4f78  dss_capi-0.13.3.tar.gz
2f9bc204193d506a4349748e766b9a024786ae60c172c3e5d2f9516a070e4058025c69629c8df26ce9a8a7ab0b742eedb6c7d1826fb08edf0a93f0a08710b003  dss_capi_0.13.3_win_x64.zip
c6af64cd6acba9b8cb05276050083842aeae7596c5311429e4b244fe1938958b68739fe889907f0dd8ae43793bfe7323bd7da607ed3d5c022b82b509236ad128  dss_capi_0.13.3_win_x86.zip
2385bcdbe07043ff79644d99dd2eea4f478b69a392f717e214b672dac6fda26777a9fed69464ce445c2d19f123814126701e5afeea56b8830d0f49cf6ae5306c  dss_capi-0.13.3.zip
a4fe88fe7f898da0967afebfa118745b8318a59f2b37b12f242d644cc3c5833b63fdeb31005eea7313bfed3fcb7c3b6cc303f61e627fe83c44305d9b621c79a1  messages.tar.gz
4d22bc080846385db0f2b56da6c3610865a218acd9464a7f6a46a5c2a17c10925b9281a6a289fe61e9a461afdf4d32ef01d9f48f6833432bcfb84e6c9957ddaa  messages.zip

DSS C-API v0.13.3rc2

11 Jun 23:14
Compare
Choose a tag to compare
DSS C-API v0.13.3rc2 Pre-release
Pre-release

Builds for one more round of tests.

DSS C-API 0.13.2

25 May 03:54
Compare
Choose a tag to compare

DSS C-API is a library that exposes a plain C API for an unofficial/alternative implementation/port of OpenDSS, the Distribution System Simulator from EPRI (the Electric Power Research Institute), aiming for full COM compatibility and beyond. It allows using most of the OpenDSS features on Windows, Linux and macOS with compatible behavior across multiple processor architectures. It is the lower level API used by the other projects in DSS-Extensions: DSS-Python, OpenDSSDirect.py, OpenDSSDirect.jl (Julia language), DSS# (.NET/C# bindings), DSS MATLAB, and the dss.hpp C++ header-only library.

All derived/downstream projects, including the documentation sites and dss.hpp headers, will be updated in the next hours/days to use this new engine.

See the changelog for a complete list of changes since 0.12.1, initially listed below.
See also the updated "Known Differences" document, which lists the main differences between the DSS C-API codebase and the main/official OpenDSS.

For a growing general repository about the projects, see https://github.com/dss-extensions/dss-extensions

Besides the changes listed below, the plotting backend in DSS-Python was updated to fix and complement compatibility with the official OpenDSS plots.

Changes since 0.13.1

This is a minor release.

  • Integrate some of the code ports from the official OpenDSS. A few changes were left in the next_svn_merge branch to be integrated after there is a new OpenDSS release.
  • Fix and complement some header code and comments.
  • Refactor more of the internal code (huge merge still pending).
  • Plotting: callback messages now include bus marker information.
  • Add more error-checking to avoid accidental crashes in case of unexpected calls by the user code.
  • Text_CommandBlock: rewritten, now reuses the internal DoRedirect function, which allows block comments and also complements the error backtrace, when necessary.
  • Obj_GetClassIdx: fixed both header and implementation.
  • Build scripts updated. The version in the header is automatically updated on release.
  • JSON exports: new flags implemented, and whole behavior adjusted to better exporting all classes, including some problematic cases See DSS-Extensions — JSON exports for notes and examples.

Full Git Changelog: 0.13.1...0.13.2

Precompiled binaries

Most of the binaries available here are built through GitHub Actions, as are most of the development builds (you need to be logged in to be able to download dev builds). Linux ARM32 binaries will be added manually as time permits (please feel free to create a new issue if we delay it too much).

Users rarely need to build the Pascal binaries themselves, since there aren't many Free Pascal compiler flags that affect them. We do recommend building KLUSolveX optimized for your machines, especially for HPC clusters (since it's built as a shared library, you don't need to worry about Free Pascal).

Checksums

SHA256

07c16d8a56410df433294fdcaa72adc5e0203bc8b70219645ed54080d0d51afb  dss_capi_0.13.2_darwin_arm64.tar.gz
bd7eeb899149a13a4d6a1ba3e246fca1bb091d95f2fe79835f533b28ae5eb5ad  dss_capi_0.13.2_darwin_x64.tar.gz
d980b3dc121db180ced6e917ae66da1126d7bb8c0d8197354247edc0f22718f0  dss_capi_0.13.2_linux_arm64.tar.gz
10c0bc36c2781d92f440711c50b6bad69e07083dc574d516c62080d02c529303  dss_capi_0.13.2_linux_x64.tar.gz
7c4d95a1501668cb48845c2effcffba6794d83094c936e2aa12db211526e2678  dss_capi_0.13.2_linux_x86.tar.gz
181d79e7ce4c2c6ad646270fd57035e44b2c22302248be2872a347b4a9dc82cd  dss_capi_0.13.2_win_x64.zip
9dec6da750bd81ffe73c428cc0b83e945a6e425e1c6443c3b49ea0cc24a30b4e  dss_capi_0.13.2_win_x86.zip
3f798332df443b45736c4528ec7702ab3d00b4b624388ba0e0b47862426e5cd7  messages.tar.gz
7ac3034141e42c3b102cb1ac55155a3b7a08858d5c265dc2bb0b5461d25994e7  messages.zip
10abbe49722316357397a57a452308c5df2e0c11d9dd5dfa5d2826dabb343891  dss_capi-0.13.2.tar.gz
ea59634c6614cf36dd55cdde262c1dc05fda6870f69bb5849b8218852dea0c37  dss_capi-0.13.2.zip

SHA512

72af57297388d93ab78c8dfee5220bdc5e412fab061bf84cdf43784a150005d737f8252ae1ed42e647dd145dcf06fff6a55ddbaf02742fbe1d4c0c3da9853582  dss_capi_0.13.2_darwin_arm64.tar.gz
13368d43fe33d5c732aacd9b846cea922bab32584831c875d904570efbdb74a1dca363b1cdd97c793efbbb6c089fb1eda991c958d48c41ca4fc41f5bc51adb79  dss_capi_0.13.2_darwin_x64.tar.gz
838621fc6b3639f5115926b52dc7d3ff8e6bfa39bb0571057148a7bff70da7c90b6a476897f7089be237939487caa808a35e8e54a241bc97739bf2a172717747  dss_capi_0.13.2_linux_arm64.tar.gz
2335439506c6d94cda37dcc1c3cf2d9ae423ca1c0d0068921d41e6362af8a1535ba655d620243cae6c6c63e6e84430ec32511e6d96e909b5f4d6fd8856458968  dss_capi_0.13.2_linux_x64.tar.gz
f65b3b98f8a3120b6978763f752ea1c8d90c651ed5a4f675c832c1c79b8ecb5aa08cbd0a96147f609932f4a0158e434c02f727b5c69d4f8a33de3d9bf98dc73f  dss_capi_0.13.2_linux_x86.tar.gz
f883cb31c810d62bef58026292930e1372a88c3e2ac01da105c2e085c0e00acb2e60ee023c519b26e2b06ccecd701e0118bc866af380f77ddee00e1d4d3105cc  dss_capi_0.13.2_win_x64.zip
4e7b05e1cb02ca0b39124a391dc05c0d78c071d28bde0d87988c61c5b8f157cb3a5e173ce8a69c549fca551fbf8ccca1dae00f959c7ac24c3383139cab19b2df  dss_capi_0.13.2_win_x86.zip
1fb51e488df5c0959a02609222ed7edfd4acb05bab1bc653996af837ef30a7fe4fe4571c4be00817297ee34c7fad91d318663a791e491481b107566589e2b0b6  messages.tar.gz
f0e74ca5257d25c5dfc247ef2d6936c69a62702cad7318218a754a89e8b1e189b454f95b5fcc475dfdc31408b5c2bb74199a2508de5a6aa5fd9d939e61729896  messages.zip
2724f28801a634bd78c637e960bc7adc136d21ae0c1fe158903c3bbd3229baf5b1101eab3655bab6ca4d030023c1239925bf6d46ed1248f8f00d21da2be8b6eb  dss_capi-0.13.2.tar.gz
aab13a2993939c23b97a0c19ac88cc8a363b09114b5db8d417f4cdd13ae1e9f8e6a86038c86dcbe6dc84ae2c31fd1a88de396ae8536db1cee6897cd6de5865a7  dss_capi-0.13.2.zip

DSS C-API 0.13.2rc1

24 May 23:03
Compare
Choose a tag to compare
DSS C-API 0.13.2rc1 Pre-release
Pre-release

Testing before the release. Local tests OK.

DSS C-API 0.13.1

02 Apr 01:16
Compare
Choose a tag to compare

Version 0.13.1 is a minor release to address a minor concern related to a potential issue with three of the PVSystem properties. Version 0.13.0 release notes follow.

DSS C-API is a library that exposes a plain C API for an unofficial implementation/port of OpenDSS, the Distribution System Simulator from EPRI (the Electric Power Research Institute), aiming for full COM compatibility and beyond. It allows using most of the OpenDSS features on Windows, Linux and macOS with compatible behavior across multiple processor architectures. It is the lower level API used by the other projects in DSS Extensions: DSS Python, OpenDSSDirect.py, OpenDSSDirect.jl (Julia language), DSS# (.NET/C# bindings), DSS MATLAB, and the dss.hpp C++ header-only library.

All derived/downstream projects, including the documentation sites and dss.hpp headers, will be updated in the next hours/days to use this new engine.

See the changelog for a complete list of changes since 0.12.1, initially listed below.
See also the updated "Known Differences" document, which lists the main differences between the DSS C-API codebase and the main/official OpenDSS.

For a growing general repository about the projects, see https://github.com/dss-extensions/dss-extensions

Besides the changes listed below, a lot of effort went into DSS-Python to complement our testsuite. More about that on upcoming DSS-Python release.

Changes since 0.12.1

Includes porting of most official OpenDSS features up to revision 3595. Check the OpenDSS SVN commits for details. Some of the changes are kept behind the new CompatFlags (see below).

Version 0.13.0 was expected to be version 0.12.2. Due to some more large changes from the upstream/official OpenDSS, we decided to increment to 0.13 instead.
Although only officially released on March 2023, most of the changes below were already available in an alpha version release on December 2022.

  • Clean-up several files to ease the transition from Pascal to C++; more enum usage, remove redundant internal properties, rename some class members, etc. Some final steps still remain (that work is done in private branches).
  • Fixes a couple of minor memory leaks.
  • Removed our old Legacy Models mechanism. Right now, the API functions still exist, but will have no effect when setting and will throw an error. For a future version, the functions will be removed. This toggle was introduced in 2020, some time after the removal of the legacy models in the official OpenDSS. We believe users had enough time to fully migrate and the extra maintenance burden is not justified anymore.
  • Transition some deprecated and buggy properties to throw specific errors, instead of generic messages. Issue: #118
  • Export command: When the user provides a filename, use it as-is, otherwise could be an invalid path in case-sensitive file systems (e.g. Linux, most likely).
  • Dump and Save commands: in some cases, our internal "hybrid enums" were not being converted correctly for dumps. A few classes had incomplete dump implementations since v0.12.0; some strings needed to be escaped for correct output.
  • CtrlQueue: adjust string formatting of items; although this doesn't affect the numeric results, the strings from the queue had some truncated numbers.
  • Property system: For compatibility with the official version, allow autoresizing some arrays when given conflicting number of elements through the text interface or scripts.
  • Like property: Although not recommended and deprecated in the official OpenDSS, the sequence of properties filled in the original copy is also copied. If you use Like, remember to check if the copy actually worked since some classes are known to not copy every property correctly.
  • Plotting and UI: The engine side plotting callback system is now complete. There are fixes for DaisyPlot and GeneralDataPlot, especially multi-platform handling. Changed how some properties are exposed in the JSON interchange to the callbacks. Implement argument handling and callback dispatch for DI_Plot, CompareCases and YearlyCurves.
  • New commands: Fix potential issue with null pointers and duplicate names when DuplicatesAllowed=False.
  • EnergyMeter: Fix error message when the metered element is not a PDElement.
  • CIMXML export: Fix issues present since v0.12.0; reported in dss-extensions/OpenDSSDirect.py#121
  • Parser: properly error out when given excessive number of elements for matrices; implemented due to the report in dss-extensions/OpenDSSDirect.py#122
  • Port most changes from the official OpenDSS up to SVN revision 3595 (OpenDSS v9.6.1.1 + a couple of CIMXML updates); check OpenDSS v9.6.1.1 README.txt for some complementary info to the list below.
    • Relay, UPFC, UPFCControl changes ported.
    • CIMXML exports: Various updates.
    • RegControl: More log and debug trace entries.
    • LoadMult: Set SystemYChanged when changing LoadMult through a DSS script or DSS command (doesn't affect Solution_Set_LoadMult)
    • Port PVSystem, Storage, InvControl, and StorageController changes, including the new grid-forming mode (GFM). For DSS Extensions, we added a new class InvBasedPCE to avoid some redundancy and make things clearer.
    • Port DynamicExp and related functionality. In our implementation, we also add a new class DynEqPCE to avoid some redundant code (could still be improved). the Generator and the new InvBasePCE derive from this new DynEqPCE. Note: the DynamicEq functionality from the upstream still seems incomplete and some things are not fully implemented or maybe buggy, so we only ported now to remove the burden of porting this down the line. If you find issues, feel free to report here on DSS Extensions, but we recommended checking first with the official OpenDSS -- if the issue is also found in the official version, prefer to report in the official OpenDSS forum first so everyone gets the fixes and our implementation doesn't diverge too much.
    • CktElement/API: add a few new functions related to state variables.
    • Circuit, Line: port the LongLineCorrection flag now that it seems to be fixed upstream. Note that we didn't publish releases with the previous buggy version from the upstream OpenDSS (that applied the long-line correction for everything).
    • LineSpacing: port side-effect from upstream; changing nconds now reallocates and doesn't leak previously allocated memory. Not a common operation, so it's not very relevant.
    • CktElement: port code for handling losses in AutoTrans
  • Other API updates:
    • DSSContext API: allow null pointer for the prime/default instance. This should ease the transition. Issue: #119
    • Error API: add Error_Set_Description to allow easier setting an error message from callbacks (this is for advanced usage)
    • Batch and Obj API:
      • For a couple of fast-path operations, add checks for edit state, automatically issuing BeginEdit and EndEdit for the objects in the batch.
      • Allow passing strings (object names) instead of pointers for object references
      • Automatically add new elements to the current DSSContext (since we have not yet published a manipulation API)
      • For symmetric matrices, if the user passes only the triangle, follow the same convention as the Text interface. Includes specific fix for (parts of) complex matrices (like the R or X matrices when internally Z is stored). If the user provides full matrices, the previous behavior was correct, no changes required.
    • Fuses_Reset: fix C header (remove extra/unused parameter)
    • Fuses_Get_State and Fuses_Get_NormalState: add missing string copy. Sometimes this could cause memory corruption.
    • Bus_Get_ZSC012Matrix: check for nulls
    • Bus_Get_AllPCEatBus, Bus_Get_AllPDEatBus: faster implementations
    • Meters_Get_CountBranches: reimplemented
    • Monitors_Get_dblHour: For harmonics solution, return empty array. Previously, it was returning a large array instead of a single element ([0]) array. A small issue adjusted for compatibility with the official COM API results.
    • Reactors_Set_Bus1: Match the side-effects of the property API for two-terminal reactors.
    • New DSS_Set_CompatFlags/DSS_Get_CompatFlags function pair: introduced to address some current and potential future concerns about compatibility of results with the official OpenDSS. See the API docs for more info.
    • New DSS_Set_EnableArrayDimensions/DSS_Get_EnableArrayDimensions: for Array results in the API, implement optional matrix sizes; when setting DSS_Set_EnableArrayDimensions(true), the array size pointer will be filled with two extra elements to represent the matrix size (if the data is a matrix instead of a plain vector). For complex number, the dimensions are filled in relation to complex elements instead of double/float64 elements even though we currently reuse the double/float64 array interface. Issue: #113

Note that a couple of SVN changes were ignored on purpose since they introduced potential issues, while many other changes and bug-fixes did not affect the DSS C-API version since our implementation is quite different in some places.

Full Git Changelog: 0.12.1...0.13.1

Precompiled binaries

Most of the binaries available here are built throu...

Read more