{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Cosimulation Introduction" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Simulation Models (1/3)\n", "\n", "\n", "- Markets\n", "- Transmission\n", "- Distribution\n", "- Devices\n", "- Communication\n", "- Controls\n", "- Loads" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Simulation Models (2/3)\n", "\n", "- Transient\n", "- Dynamic\n", "- Steady-State\n", "- Planning" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Simulation Models (3/3)\n", "\n", "- Technical\n", "- Economic\n", "- Techno-economic" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "\n", "\n", "![image.png](../data/img/advanced-tools-for-resource-planning.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Solutions\n", "\n", "- Simplify models\n", "- Bigger Computer\n", "- Co-simulation" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## What is co-simulation?\n", "\n", "- Execution of multiple distinct simulation objects together in coherent fashion\n", "- Co-simulation is used whenever a single simulator is insufficient to answer the relevant questions" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2019-09-19T16:47:05.916134Z", "start_time": "2019-09-19T16:47:05.911027Z" }, "slideshow": { "slide_type": "slide" } }, "source": [ "## Why co-simulation?\n", "\n", "- Lots of effort has gone into (sub) domain-specific tools. (So use them)\n", " - Trusted by stakeholders\n", " - Continue to improve\n", "- Allows focus on the “glue-ware”\n", " - Faster prototyping for research\n", " - Many frameworks\n", "- Encourages Modularity\n", " - Swap models as needed" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## HELICS\n", "\n", "Capabilities:\n", "\n", "- **Scalable**: 2-100,000+ Federates\n", "- **Cross-platform**: HPC (Linux), Cloud, Workstations, Laptops (Windows/OSX)\n", "- **Modular**: mix and match tools\n", "- **Minimally invasive**: easy to use lab/commercial/open tools\n", "- **Open Source**: BSD-style.\n", "- **Many Simulation Types**:\n", " - Discrete Event\n", " - QSTS\n", " - Dynamics\n", "- **Co-iteration enabled**: “tight coupling”" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2019-09-16T19:45:16.963441Z", "start_time": "2019-09-16T19:45:16.834795Z" }, "slideshow": { "slide_type": "slide" } }, "source": [ "![](../data/img/gmlc-1.4.15.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## HELICS Interfaces to key domain simulators\n", "\n", "![](../data/img/interfaces.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Cosimulation of Electrical Grid, Thermodynamics of Houses, and Control Systems\n", "\n", "![](../data/img/architecture1.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Architecture of Cosimulation (1/2)\n", "\n", "![](../data/img/architecture2.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Architecture of Cosimulation (2/2)\n", "\n", "![](../data/img/architecture3.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Terminology\n", "\n", "\n", "- Federate - An individual simulator that is computing something interesting and communicating with other simulators\n", "- Core - An object managing the interactions of one or more federates\n", "- Broker - An object coordinating multiple cores or brokers:\n", " - There can be several layers of brokers\n", "- Root broker - The root broker in the hierarchy\n", " - Last chance router\n", " - Responsible for determining when to enter initialization mode for the federation\n", "- Federation - The set of all federates executing together in a single co-simulation\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Slideshow", "hide_input": false, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }