Simulation of a Simplified Ecosystem to Study the Influence of Environmental Factors on Bee Populations
Project for the Practical Course on High-Performance Computing at the Georg-August-Universität Göttingen, summer term 2023.
The main idea of the project is to implement a simulation for studying bee behavior in a simplified ecosystem. Our motivation is the bee mortality observed over the last decades.
- A C++14 compatible C++ compiler like GCC [packages]
- Meson or CMake (build system) [packages]
- Ninja (build system backend, others possible) [packages]
- Cairo/cairomm (graphics library used in world generation steps) [packages]
- spdlog (logging) [packages]
- cxxopts (command line arguments parsing) [[packages][https://repology.org/project/cxxopts/versions]]
- Benchmark (benchmarking) [packages]
- GoogleTest (testing) [packages]
Some simple libraries or implementations have been transferred directly into this repository and can be found under src/extern/
:
- jc_voronoi (Fortune's sweep algorithm implementation used in world generation steps)
- Perlin Simplex Noise C++ Implementation (Perlin's Simplex noise implementation used in world generation steps)
Building the application uses Meson (or CMake) and is therefore very simple. The process consists of two steps.
First, configure a building directory builddir
:
meson setup builddir
Note that builddir
may be any name you want.
Then, compile the application:
meson compile -C builddir
The binary can then be found under builddir/bee_simulation
.
To compile the application again after some changes have been made, only the second step is necessary. Meson/Ninja will only recompile necessary components of the application.
Tests can be compiled and run using:
meson test -C builddir --verbose bee-simulation:
(The bee-simulation:
arguments tells Meson to only run our own tests instead of the third-party libraries' tests.)
To get an overview of the performance of some application components like custom data structures, some benchmarks have been created using Google's Benchmark library. These benchmarks are not supposed to enable a precise performance analysis.
They can be compiled and run using:
meson test -C builddir --verbose --benchmark