mosaik as a co-simulation tool organizes the data exchange between simulators and coordinates the execution of the connected simulators.
This part is called the mosaik core.
To become useful, other components need to be connected to it; these other components form the mosaik ecosystem.
mosaik is a co-simulation library. The components and tools
form the mosaik ecosystem.¶
The ecosystem consists of pre-made bindings to programming languages that make connecting your own simulators easier, see List of high-level APIs, and of pre-made bindings to simulation tools, which are listed below.
While not strictly part of the ecosystem, we also list some example scenarios below to show how these tools can be coupled, and some tools which help with the building of scenarios and the visualization and analysis of results.
Here is a list of simulators that are already connected to mosaik.
Most of them are available on PyPI and may therefore be installed using pip or your favorite Python package manager.
For simulators that are not available there, we link to their repositories, instead.
The couplings (though usually not the underlying simulation tools) marked with are developed by us; the others are developed elsewhere.
If you have a mosaik simulator that is publically available and might be of use to others, feel free to contact us (mosaik@offis.de) so we can add it to this list. Please provide a short summary (3 to 5 lines) of your simulator’s capabilities (similar to the ones below) when you do.
InputSimulator.
Provide constant values or values calculated by a simple Python function to the rest of the simulation.
This is mostly intended for test purposes.
In real simulations, this will often be replaced by one of the input simulators.
OutputSimulator.
Collect values in Python dicts and access them in your scenario script after the simulation is over.
This is mostly intended for test purposes; in real simulations you would usually employ one of the output simulators, instead.
mosaik-pandapower-2.
Load a pandapower electrical grid and simulate its load flows after connecting mosaik components representing loads and generators to its buses.
The state of the buses and lines can be read.
If SimBench is installed, its grids with included time series for their loads and generators may also be used.
mosaik-pandapipes.
Load a pandapipes fluid network, connect sources and sinks represented by other simulators to it, calculate its pipeflow and then pass on the state of the pipes and junctions to other parts of your simulation.
mosaik-pv.
Simulate PV active power from direct normal irradiance (DNI) and time alone, in hourly resolution.
(Based on PyPVSim.)
mosaik-pvlib.
Simulate PV systems using PVLib, which requires detailed weather data: global irradiance, wind speed, air temparature, and air pressure, which you will need to provide.
This adapter computes both active and reactive power.
Three predefined PV configurations are included: house, building, and simple.
mosaik-pvgis.
Simulate PV systems using historical data from PVGIS, which means that no weather data is required.
Instead, you specify the system’s configuration, geographic location, and a reference year.
The default resolution is hourly, but intermediate values can be interpolated.
mosaik-demod.
Model domestic energy demand based on Demod, a modular, customizable tool designed for the simulation of domestic energy demand, specifically generating high-resolution electrical and thermal profiles based on human behavior.
It allows users to simulate diverse household scenarios through flexible, interchangeable modules that account for occupant activity and household characteristics.
mosaik-csv.
Read (and write) CSV files following a slightly adapted format.
This is generally useful if you want to inject existing time-series into your simulation, for example historic price or weather data.
mosaik-web.
Visualize (parts of) your simulation as an automatically laid-out grid and show live data for one attribute per node.
This is mostly useful if the main component in your simulation is a simulator for electrical grids.
mosaik-csv.
Write data from your simulation to a CSV file.
Timestamps based on the current simulated time will be added automatically.
mosaik-hdf5.
Write results from your simulation to an HDF5 file.
InfluxDB 2.
Write data from your simulation into an InfluxDB 2 database, with timestamps based on the simulated time.
You can add a measurement name to identify the simulation run, and the data’s source entity information will be stored in tags.
mosaik-timescaledb.
Store your simulation outputs in a PostgreSQL database, potentially with TimescaleDB integrated.
The adapter can use your existing database structure or create it for you based on the connected attributes.
You can also specify run IDs to store data for multiple runs in the same database.
ZeroMQ.
Read and write data from a ZeroMQ connection.
mosaik-104. Connect mosaik to something via the IEC 60870-5-104 protocol.
This adapter is relatively limited in the amount of data that can be transmitted.
There’s also a draft for an adapter written directly in Python here.
mosaik-omnet.
Connect the discrete event simulator OMNeT++ (or its commercial cousin OMNEST) to mosaik.
In OMNeT++, you use a special scheduler and write modules that can be called with data from mosaik and send data back to mosaik.
For the common case that OMNeT++ is used to simulate a communication infrastructure with the INET framework, special apps are provided as a further simplification.
mosaik-mango.
Connect a multi-agent simulation written in the framework mango to mosaik.
Special mosaik agents in the agent simulation will appear as entities in the mosaik simulation.
Input from mosaik will result in these agents being called, and they can also send data back to mosaik.
For this, time between both frameworks is synchronized.
FMI adapter.
Use Functional Mockup Units (FMU) (based on the FMI standard) as simulators in mosaik.
Illuminator.
An easy-to-use Energy System Integration Development kit to demystify energy system operation, illustrate challenges that arise due to the energy transition and test state-of-the-art energy management concepts.
The following simulators still exist, but are not actively maintained.
We recommend that you do not use them for new mosaik simulations.
InfluxDB adapter.
Store data from your simulation in an InfluxDB 1 time series database.
mosaik-sql adapter.
Store simulation results into SQL database.
If you are using a PostgreSQL database, we recommend that you use the mosaik-timescaledb adapter, instead.
mosaik-pypower.
Simulate load flows using the PYPOWER library.
This adapter is not actively maintained anymore.
We recommend that you use mosaik-pandapower-2, mentioned above, instead.
mosaik-householdsim.
Simulate households based on residual load profiles.
This simulator is tightly integrated with the mosaik-PYPOWER adapter.
The following repositories contain scenarios using mosaik, which might be helpful to learn from.
Scenarios marked with are developed by us; the others are developed elsewhere.
If you have a publically accessible scenario, feel free to reach out to us to have it included in this list.
Ideally, you provide a short description with it.
The mosaik-demo contains a simple demo scenario for mosaik.
The DES demo is a simple example scenario showing the new mosaik 3.0 DES features
Benchmark Model Multi-Energy Networks STL is based on the multi-energy networks benchmark and contains a same time loop for improved initialization of the simulators.
ZDIN-ZLE scenarios contains the research and development of digitalized energy systems from the project ZLE using mosaik (collection of simulation scenarios).
nestli (Neighborhood Energy System Testing towards Large-scale Integration) is a co-simulation environment for benchmarking the performance of BACS (building automation and control systems).
Is uses EnergyPlus and FMUs with mosaik.