Coder Social home page Coder Social logo

dnadeau4 / helics-src Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gmlc-tdc/helics

0.0 0.0 0.0 22.22 MB

Hierarchical Engine for Large-scale Infrastructure Co-Simulation (HELICS)

Home Page: https://helics.readthedocs.io/en/latest/

License: BSD 3-Clause "New" or "Revised" License

CMake 4.20% C++ 71.18% Shell 0.67% Makefile 0.03% Java 2.75% MATLAB 2.61% Objective-C 0.92% Python 2.50% CSS 0.01% C 15.06% C# 0.09%

helics-src's Introduction

Releases

Build Status

Service Master Develop
Travis CI Build Status Build Status
Appveyor Build Status Build Status
Codacy codacy codacy
Coverage codecov codecov

Introduction

Welcome to the repository for the Hierarchical Engine for Large-scale Infrastructure Co-Simulation (HELICS). HELICS provides a general-purpose, modular, highly-scalable co-simulation framework that runs cross-platform (Linux, Windows, and Mac OS X). It provides users a high-performance way to have multiple individual simulation model "federates" from various domains interact during execution to create a larger co-simulation "federation" able to capture rich interactions. Written in modern C++ (C++14), HELICS provides a rich set of APIs for other languages including Python, C, Java, Octave, and MATLAB. Julia and nim APIs are available on an experimental basis. HELICS also has native support within a growing number of simulation tools.

Brief History: HELICS began as the core software development of the Grid Modernization Laboratory Consortium (GMLC) project on integrated Transmission-Distribution-Communication simulation (TDC, GMLC project 1.4.15) supported by the U.S. Department of Energy's Offices of Electricity Delivery and Energy Reliability (OE) and Energy Efficiency and Renewable Energy (EERE). As such, its first use cases center around modern electric power systems, though it can be used for co-simulation in other domains. HELICS's layered, high-performance, co-simulation framework builds on the collective experience of multiple national labs.

Motivation: Energy systems and their associated information and communication technology systems are becoming increasingly intertwined. As a result, effectively designing, analyzing, and implementing modern energy systems increasingly relies on advanced modeling that simultaneously captures both the cyber and physical domains in combined simulations. It is designed to increase scalability and portability in modeling advanced features of highly integrated power system and cyber-physical energy systems.

Installers

Windows

Each release generally comes with a Windows installer and a zip file. The current version is the release with Visual Studio 2017 x64 and includes the binaries for matlab, python and Java. For building with Debug support it is generally recommended to build from Source or use HELICS as a subproject. We hope to automate this in the future to be able to automatically generate other installers with different visual studio versions

Conda

Some support to Conda is provided see conda install for the Instructions. It is supported through a separate repo.

Brew

On MacOS there is a brew package for HELICS supported in a separate repository.

Build From Source Instructions

Windows

Mac

Ubuntu

Getting Started

We've created a series of roughly 10-minute mini-tutorial videos that discuss various design topics, concepts, and interfaces, including how to use the tool. They can be found on our YouTube channel.

The Introduction to the HELICS documentation goes through a series of examples that step through the basic usage and concepts of HELICS.

Several examples of HELICS federates and projects are located in HELICS-Examples. This repo provides a number of examples using the different libraries and interfaces.

The HELICS-Tutorial repository provides a series of tutorials using HELICS to build a co-simulation using domain-specific external modeling tools that is built around an electric power system use case with integrated transmission-distribution-market-communication quasi-steady-state-timeseries (QSTS) simulation.

The HELICS-Use-Cases repository includes examples for a growing range of research use cases for inspiration.

A Users guide for getting started

Documentation

Our ReadTheDocs site provides a set of documentation including a set of introductory examples, a developers guide, complete Doxygen generated API documentation, and more. A few more questions and answers are available on the Wiki.

Additionally, our initial requirements document can be found here, which describes a number of our early design considerations.

Tools with HELICS support

As a co-simulation framework, HELICS is designed to bring together domain-specific modeling tools so they interact during run time. It effectively tries to build on the shoulders of giants by not reinventing trusted simulation tools, but instead, merely acting as a mediator to coordinate such interactions. HELICS's full power is only apparent when you use it to combine these domain-specific tools.

Thankfully the HELICS API is designed to be minimally invasive and make it straightforward to connect most any tool that provides either a scripting interface or access to source code. As listed below, a growing set of energy domain tools have HELICS support either natively or through an external interface. We also provide a set of helper apps for various utility and testing purposes.

We are always looking for help adding support for more tools, so please contact us if you have any additions.

Power systems Tools

  • GridLAB-D, an open-source tool for distribution power-flow, DER models, basic house thermal and end-use load models, and more. HELICS support currently (8/15/2018) provided in the develop branch which you have to build yourself as described here.
  • GridDyn, an open-source transmission power flow and dynamics simulator. HELICS support currently (4/14/2018) provided through the cmake_updates branch.
  • PSST, an open-source python-based unit-commitment and dispatch market simulator. HELICS examples are included in the HELICS-Tutorial
  • MATPOWER, an open-source Matlab based power flow and optimal power flow tool. HELICS support currently (4/14/2018) under development.
  • InterPSS, a Java-based power systems simulator. HELICS support currently (4/14/2018) under development.

Communication Tools

  • ns-3, a discrete-event communication network simulator. Supported via the HELICS ns-3 module
  • HELICS also includes built-in support for simple communications manipulations such as delays, lossy channels, etc. through its built-in filters.

HELICS helper Apps

  • HELICS CLI provides a simple way to automate configuring, starting, and stopping HELICS co-simulations.
  • Player, which acts as a simple send-only federate that simply publishes a stream of timed HELICS messages from a user-defined file. HELICS Player is included in the HELICS distribution.
  • Recorder, which acts as a simple receive-only federate that prints out or saves messages from one or more subscribed streams. HELICS Recorder is included in the HELICS distribution.

Contributing

Contributors are welcome see the Contributing guidelines for me details on the process of contributing. And the Code of Conduct for guidelines on the community expectations. All prior contributors can be found here

Optional components

A list of optional component that are not included in HELICS but are optionally used by the library

ZeroMQ message passing is used in the ZMQ core networking. The automatic download currently uses version 4.3.1. No ZMQ library code is included in the HELICS source. HELICS installers include ZeroMQ binary libraries. ZeroMQ is licensed under LGPL with a modification to allow for linking and in various forms and distribution of the binary under different terms if the library was not modified. No modification of the ZMQ library or any of the ZeroMQ source files is included in the HELICS source code. It is an optional component and can be excluded by setting ENABLE_ZMQ_CORE to OFF

Publications

General HELICS

[1] B. Palmintier, D. Krishnamurthy, P. Top, S. Smith, J. Daily, and J. Fuller, “Design of the HELICS High-Performance Transmission-Distribution-Communication-Market Co-Simulation Framework,” in Proc. of the 2017 Workshop on Modeling and Simulation of Cyber-Physical Energy Systems, Pittsburgh, PA, 2017. pre-print published

Source Repo

The HELICS source code is hosted on GitHub: https://github.com/GMLC-TDC/HELICS

Release

HELICS is distributed under the terms of the BSD-3 clause license. All new contributions must be made under this license. LICENSE

SPDX-License-Identifier: BSD-3-Clause

portions of the code written by LLNL with release number LLNL-CODE-739319

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.