Co-Simulation and Linked Software¶
The modelling of multi-domain, multi-physics, and multi-time scale systems such as buildings is a challenge for building energy modelling and simulation tools. In certain circumstances, it may be better for modelling such systems to split the systems into multiple sub-systems, model the individual sub-systems in the language or tool which is best suited for the system's domain, and use a master algorithm to link the sub-systems for a so called "co-simulation." In a nutshell, co-simulation consists of the theory and techniques that enable the simulation of a coupled system through the composition of simulators. Each simulator is an input-output mock-up of a constituent system, developed and provided by the team that is responsible for the sub-system. The coupling of the sub-systems is performed by a master algorithm which is responsible for linking the sub-systems at run-time for data-exchange. EnergyPlus implements three mechanisms to support co-simulation.
- EnergyPlus implements the Building Controls Virtual Test Bed ( BCVTB) API. This API leverages the BCVTB to enable the co-simulation of EnergyPlus with various simulation programs such as TRNSYS, ESP-r, Radiance, or DYMOLA.
- EnergyPlus provides an interface which allows it to import, link, and exchange data with simulation models which implement the Functional Mock-up Interface (FMI) for co-simulation. Such models are called Functional Mock-up Units (FMUs). This feature allows for instance the integration and testing of Simulink or Modelica-based control algorithms which may not exist in EnergyPlus.
- EnergyPlus itself can be exported as an FMU which implements the FMI for co-simulation. Such FMU can then be imported into any simulation engine which implements the FMI import interface for co-simulation. This feature is relevant for applications such as the development of building controls. For example, the building envelope of EnergyPlus may be exported as an FMU which in turn will be imported in a tool which is best suited for control development. In this use case, the FMU will be used as a boundary condition for control's development.