OpenDSSDirect.jl is a cross-platform Julia package implements a "direct" library interface to OpenDSS using DSS C-API, an alternative implementation.
OpenDSS is an open-source distribution system simulator.
Originally, the package used the OpenDSSDirect library from the official OpenDSS repository. Since OpenDSS is officially Windows-only, this package was migrated to use DSS C-API in 2019. The DSS C-API library is a community implementation of the OpenDSS engine built with the Free Pascal compiler, targeting cross-platform compatibility and an extended API. See its repository here for the full Pascal/Delphi code, or https://dss-extensions.org/ for an overview of the projects around it.
For a general FAQ and many other links, see https://github.com/dss-extensions/dss-extensions#readme
See also OpenDSSDirect.py for a package in Python with similar calling style, or DSS-Python, DSS_MATLAB and dss_sharp for packages that mimic the OpenDSS COM API organization and style.
This package is available for Windows, macOS (x86 and ARM processors), and Linux (x86 and ARM processors).
The documentation for the development version of this package is here.
We also recommend reading the known differences document from DSS C-API, which lists the notable behavior differences versus the official OpenDSS engine.
An up-to-date reference of the properties on the level of the DSS language is also available.
Use the Julia package manager to install OpenDSSDirect
julia> ]
(v1.1)> add OpenDSSDirect
This package interfaces with the OpenDSS engine using a library interface, so a good understanding of OpenDSS will help troubleshooting. There are plenty of useful resources located here. If you have experience with the official OpenDSS COM implementation, the following document compares our two Python modules, DSS-Python (same structure as the OpenDSS COM module) and OpenDSSDirect.py (similar structure to OpenDSSDirect.jl): DSS-Extensions — OpenDSS: Overview of Python APIs.
If you are having issues using this Julia interface, feel free to open an Issue on GitHub here or post at our general Discussions page.
Thanks to @tshort for the original package.
Thanks to @kdheepak, @PMeira and @GordStephen for their contributions.