HELICS is domain-agnostic: any simulation tool can participate in a HELICS federation as long as it can exchange values and synchronize time through the HELICS API. A growing list of tools across electric power, communications, buildings, natural gas, and other domains already have integration support — either built into the tool itself, provided through an actively maintained wrapper, or made possible through the Functional Mock-up Interface (FMI). The table below describes the current state of integration for commonly-used tools.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/GMLC-TDC/HELICS/llms.txt
Use this file to discover all available pages before exploring further.
Integration status and development activity vary across tools. Check the linked repositories for the most current build instructions and API compatibility.
Electric distribution
GridLAB-D
GridLAB-D
GridLAB-D is an open-source distribution power-flow simulator with models for distributed energy resources (DERs), residential thermal loads, and end-use appliances. HELICS support is available in the
develop branch of the upstream repository and also in a CMake-based fork maintained by the GMLC-TDC organization.Integration method: Native — HELICS calls are compiled directly into GridLAB-D.OpenDSS
OpenDSS
OpenDSS is an open-source distribution power-flow tool with support for harmonics, DER models, and protection coordination. Two Python interfaces provide HELICS integration:
- OpenDSSDirect.py: A direct engine interface that enables Linux and macOS use in addition to Windows.
- PyDSS: Builds on OpenDSSDirect to add enhanced advanced inverter models, improved convergence for high-penetration DER scenarios, and flexible user-defined controls.
CYME
CYME
CYME is a commercial distribution analysis tool. It has been used with HELICS through a Python wrapper interface and through an FMI wrapper.Integration method: Python wrapper or FMI.
Electric transmission
GridDyn
GridDyn
GridDyn is an open-source transmission power flow and dynamics simulator developed at Lawrence Livermore National Laboratory. HELICS support is provided through the
cmake_updates branch.Integration method: Native.MATPOWER
MATPOWER
MATPOWER is an open-source MATLAB-based tool for power flow and optimal power flow. HELICS support is under active development. MATPOWER also provides basic optimal power flow capability usable as a market simulator.Integration method: MATLAB/Python wrapper (under development).
PSS/E
PSS/E
PowerWorld
PowerWorld
PowerWorld Simulator is a commercial interactive power system simulation package suited for analyzing high-voltage system operation over timescales from minutes to days.Integration method: Python/COM interface.
InterPSS
InterPSS
InterPSS is a Java-based power systems simulator. HELICS support is under development. A use case walkthrough is available at the HELICS Use Cases site.Integration method: Java wrapper (under development).
PSST
PSST
PSST is an open-source Python-based unit commitment and economic dispatch simulator. HELICS examples are included in the HELICS Tutorial repository.Integration method: Python (native API).
SAInt
SAInt
SAInt is a commercial multi-energy system planning tool covering electric production cost, power flow, dynamics, natural gas, and district heating. A HELICS interface implementation is available in the SAInt HELICS interface repository.Integration method: C#/.NET wrapper.
Real-time simulators
OPAL-RT
OPAL-RT
OPAL-RT hardware-in-the-loop platforms have been connected to other simulations via HELICS on several projects.Integration method: Custom wrapper.
RTDS
RTDS
RTDS Technologies real-time digital simulators are targeted for HELICS integration on known upcoming projects.Integration method: Planned/in progress.
Power markets and economics
FESTIV
FESTIV
FESTIV (Flexible Energy Scheduling Tool for Integrating Variable Generation) is an open-source tool for multi-timescale steady-state power system operations simulations covering unit commitment, economic dispatch, and simplified AGC.Integration method: Python (native API).
PLEXOS
PLEXOS
PLEXOS is a commercial production cost simulator widely used for electricity market modeling. Support via OpenPLEXOS is under development.Integration method: Wrapper (under development).
PyPower
PyPower
PyPower is a Python port of MATPOWER providing DC and AC power flow and optimal power flow solvers. It does not have a standard HELICS integration package but has been used on several projects via the Python HELICS bindings.Integration method: Python (ad hoc, via helics Python bindings).
Communications
ns-3
ns-3
ns-3 is a discrete-event network simulator widely used for research in wireless, wired, and hybrid communication networks. The HELICS ns-3 module provides a full integration that lets ns-3 participate as a HELICS federate, enabling power-communication co-simulations where packet delays and losses are modeled realistically.Integration method: Native C++ ns-3 module.
OMNeT++
OMNeT++
OMNeT++ is a component-based, open-architecture simulation environment primarily used for communication network simulation. Early-stage HELICS integration is available as a prototype in helics-omnetpp.Integration method: C++ module (prototype/early stage).
Buildings and energy efficiency
EnergyPlus
EnergyPlus
EnergyPlus is the U.S. Department of Energy’s open-source whole-building energy simulation engine, widely used for modeling heating, cooling, lighting, and plug loads. EnergyPlus can be coupled to HELICS through its ExternalInterface or via the OpenStudio SDK.Integration method: ExternalInterface / OpenStudio SDK.
OpenStudio
OpenStudio
OpenStudio is an SDK and application suite built on EnergyPlus that provides a higher-level API for building energy simulation, including scripting and measure-based workflows. OpenStudio federates can connect to HELICS to participate in grid-building co-simulations.Integration method: Ruby/Python API wrapper.
Natural gas and multi-energy
NGFAST
NGFAST
NGFAST is a natural gas pipeline network simulator that has been used in HELICS co-simulations for gas-electric interdependency studies.Integration method: Custom wrapper.
GasModels.jl
GasModels.jl
GasModels.jl is a Julia-based natural gas network optimization package. It can participate in HELICS federations via the HELICS Julia bindings.Integration method: Julia (HELICS Julia bindings).
SAInt (multi-energy)
SAInt (multi-energy)
SAInt (described under Electric Transmission above) also models natural gas pipelines, district heating networks, and joint gas-electric systems. The same SAInt HELICS interface supports multi-energy scenarios.Integration method: C#/.NET wrapper.
Optimization and analysis
GAMS
GAMS
GAMS (General Algebraic Modeling System) is a high-level optimization platform. It has been used in HELICS federations to solve dispatch or planning problems within a co-simulation loop.Integration method: Python/GAMS API wrapper.
JuMP
JuMP
JuMP is a Julia-based mathematical optimization modeling language. HELICS support is provided through the HELICS Julia bindings.Integration method: Julia (HELICS Julia bindings).
Transportation
BEAM
BEAM
BEAM (Behavior, Energy, Autonomy, and Mobility) is a transportation simulation platform developed at Lawrence Berkeley National Laboratory for modeling electric vehicle charging and mobility.Integration method: Scala/JVM wrapper.
POLARIS
POLARIS
POLARIS is Argonne National Laboratory’s transportation system simulation tool for large-scale metropolitan travel demand modeling.Integration method: C++ wrapper.
Integration methods explained
- Native integration
- Python wrapper
- FMI wrapper
The simulation tool calls HELICS API functions directly in its own source code. This is the tightest coupling: the tool registers publications and subscriptions, advances time through HELICS, and reads or writes values through HELICS handles. Examples: GridLAB-D, GridDyn, ns-3.
Adding HELICS support to a new tool
Any tool that can call a shared library or a subprocess can integrate with HELICS. The general process is:Install HELICS
Install HELICS via conda, pip, or a pre-built package for your platform. See Installation.
Choose a language binding
HELICS provides bindings for C++, C, Python, Java, MATLAB, Julia, and Octave. Choose the binding that matches your tool’s scripting or extension language.
Register interfaces
In your tool’s initialization code, create a federate, then register the publications (outputs) and subscriptions (inputs) that represent the data your tool sends and receives.
Integrate the time loop
Replace your tool’s internal time loop with HELICS time requests. Call
helicsFederateRequestTime() at each step; HELICS returns the granted time and you can then read updated inputs and publish your outputs.Test with the Player and Recorder
Use the Player app to supply synthetic inputs and the Recorder app to capture outputs. This lets you validate the integration without running other simulators.