Skip to main content

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.

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.
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 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 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.
Integration method: Python wrapper.
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 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 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 is Siemens’ commercial transmission stability and power flow simulator. HELICS integration is provided through PyPSSE, available on PyPI as NREL-pypsse.Integration method: Python wrapper (PyPSSE).
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 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 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 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 hardware-in-the-loop platforms have been connected to other simulations via HELICS on several projects.Integration method: Custom wrapper.
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 (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 is a commercial production cost simulator widely used for electricity market modeling. Support via OpenPLEXOS is under development.Integration method: Wrapper (under development).
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 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++ 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).
HELICS includes built-in support for simple communication effects — delays, lossy channels, cloning, and filtering — through its filter system, without requiring an external network simulator. Use ns-3 or OMNeT++ when you need packet-level fidelity.

Buildings and energy efficiency

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 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 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 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 (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 (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 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 (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 is Argonne National Laboratory’s transportation system simulation tool for large-scale metropolitan travel demand modeling.Integration method: C++ wrapper.

Integration methods explained

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:
1

Install HELICS

Install HELICS via conda, pip, or a pre-built package for your platform. See Installation.
2

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.
3

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.
4

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.
5

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.
The HELICS Examples repository contains working integration examples in multiple languages and domains, including complete federations you can adapt as starting points.

Build docs developers (and LLMs) love