Feel free to get in touch.
Benjamin Herdeanu
Benjamin Herdeanu
Yunus Sevinchan
Yunus Sevinchan
Julian Weninger
Julian Weninger
Prof. Kurt Roth
Prof. Kurt Roth
Further contributors
2016: The idea of the Utopia framework emerged among members of the TS-CCEES research group at the Institute of Environmental Physics at the University of Heidelberg, Germany. To quote Kurt Roth, the group supervisor:
We embark on creating a C++ framework for simulating the coupled dynamics of geomorphology, diverse vegetation, and interacting, developing, and evolving populations of different species. The focus is on fundamental studies of such coupled complex and evolving systems.
The framework is to consist of coupled CA and ABMs (cellular automata and agent-based models) that operate on flexible discretizations in order to optimally represent the various process chains.
Design goals are (i) versatility and expandability of the framework, (ii) computational efficiency, and (iii) usability by non-experts, in this order. It is first developed and demonstrated for a minimally complete set of species and processes.
At the same time, Lukas Riedel created citcat
, a generic C++ template library for the efficient simulation of cellular automata, based on DUNE. Later on, citcat
became the basis for the Utopia framework.
2017: Development on citcat
continued and first experiences were gained in collaboratively working on software projects.
During this time, many of the first Utopia contributors built their own domain-specific simulation frameworks as part of their MSc or BSc projects. The experience gained and ideas developed during that time had a big influence on the philosophy and goals of Utopia. For instance, it was observed that re-implementing models over and over again was not only inefficient, but also error-prone. On the other hand, by collaboratively working on a framework, these difficulties could be circumvented and synergies could develop.
2018: The structure and scope of Utopia was planned in more detail: It was to consist of a C++ backend (for computationally efficient model implementations, based on citcat) and a Python frontend (for model configuration, simulation management, and evaluation). In a group effort, the foundations of Utopia were laid in a week-long hackathon. Similar events were organized a few more times to boost development of the framework. Henceforth, new projects in the research group preferentially used Utopia for model implementations and evaluations. Alongside these developments, the feature set of Utopia evolved further.
2019: To gain flexibility and control, the DUNE framework was removed as a dependency of Utopia. This entailed a restructuring of the build system and a custom implementation for cellular automata. In the summer of 2019, Utopia was first used in postgraduate teaching as part of the Chaotic, Complex, and Evolving Environmental Systems lecture by Prof. Kurt Roth. In the accompanying exercises, students used Utopia to run simulations of different models and understand the effect of the chosen parameters on the system dynamics. Furthermore, Utopia was used in a postgraduate physics seminar, where groups of students implemented models using Utopia and investigated their behavior. In August 2019, Utopia went public under the LGPLv3+ open-source license.
2020: Three research articles about Utopia, its data processing pipeline dantro
, and collaboratively developing and working with this modeling framework were published.
Building on the experience from previous teaching events, Utopia was used in two further postgraduate courses: the next iteration of the aforementioned lecture, as well as another seminar on complex and evolving systems.
Furthermore, 2020 was the year in which the number of total projects carried out using Utopia surpassed 25. As part of these projects, more than 45 models have been implemented (mostly in private repositories).
2021: The Utopia website is published (👋).
2022: Development on and use of Utopia continues.
The Utopia frontend package, utopya
, is outsourced from Utopia and becomes a standalone package, further widening the range of applications.