Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sbaldu/dynamicalsystemframework

Framework for modelling dynamical complex systems
https://github.com/sbaldu/dynamicalsystemframework

complex-systems cpp20 dynamics modelling-framework

Last synced: 3 months ago
JSON representation

Framework for modelling dynamical complex systems

Awesome Lists containing this project

README

        

# DynamicalSystemFramework
[![codecov](https://codecov.io/github/sbaldu/DynamicalSystemFramework/graph/badge.svg?token=JV53J6IUJ3)](https://codecov.io/github/sbaldu/DynamicalSystemFramework)

The aim of this project is to rework the original [Traffic Flow Dynamics Model](https://github.com/Grufoony/TrafficFlowDynamicsModel).
This rework consists of a full code rewriting, in order to implement more features (like *intersections*) and get advantage from the latest C++ updates.

## Requirements

The project only requires `C++20` and `cmake`.

## Installation
The library can be installed using CMake. To do this build it with the commands:
```shell
mkdir -p build && cd build
cmake ..
```
and then install it with:
```shell
sudo make install
```

## Testing
To compile tests one can run:
```shell
cd test
cmake -B build && make -C build
```
To run all the tests together use the command:
```shell
./dsm_tests.out
```

## Benchmarking
Some functionalities of the library have been benchmarked in order to assess their efficiency.
The benchmarks are performed using a small toolkit developed by @sbaldu, in order to keep them simple and
without needing to rely on large external libraries.
To compile the benchmarks use the commands:
```shell
cd benchmark
cmake -B build && make -C build
```
To run all the benchmarks together use the command:
```shell
for f in ./*.out ; do ./$f ; done
```

## Citing

```BibTex
@misc{DSM,
author = {Berselli, Gregorio and Balducci, Simone},
title = {Framework for modelling dynamical complex systems.},
year = {2023},
url = {https://github.com/sbaldu/DynamicalSystemFramework},
publisher = {GitHub},
howpublished = {\url{https://github.com/sbaldu/DynamicalSystemFramework}}
}
```