Developers documentation overview
Terminology
calculation service: a code repository containing simulation logic aimed at a specific energy (ESDL) object, for instance a PV installation, battery or heat pump. Alternatively there are general services, for instance a weather service or aggregator.
calculation model: a running instance of a calculation service, created from a docker image in the service repository. Multiple models can exist for a single service, set in the calculation service definition.
calculation service definition: describes which calculation service is used with which ESDL object type. And the calculation service docker image url (on dockerhub) and number of models (each model runs in a separate container).
The framework allows for independent development of calculation services for specific energy objects or services (e.g. PV panel, battery, EV, weather prediction, DSO). The simulations are run on a (cloud) cluster, the results are stored in an influxdb database which can be analyzed and viewed online using grafana, see the component diagram below.

Repositories
The following repositories are used:
Simulation Orchestrator: Start and manage simulations and calculation service models via a REST API (FastAPI, pyESDL)
Dots Infrastructure: python package that contains code to set up a calculation service and integrate into the Dots helics federation.
Calculation Service Template: Create calculation a calculation service by creating a new repository using this Github Template.
Dots Examples: A repository containing example ESDL files and example post requests to try out and see the full capabilities of DOTs.
Calculation service repositories: Calculation service repositories for different energy components (from ‘Calculation Service’ template). Each repository contains a README with more information.
Calculation flow
What happens when a simulation is started is described in a detailed the sequence diagram below:
