This repository contains the source code for the diploma thesis "Implementation of data structure for adaptive hierarchical meshes in the TNL library".
# Abstract
This thesis deals with the implementation of the adaptive octree data structure for the TNL library in the C++ programming language. This structure is used for efficient work with three-dimensional objects in fields such as computer graphics and scientific computing. A parallel version of the octree was also implemented using the MPI interface. The thesis explores various methods of implementing octrees, which are then compared. According to the results of the study, the classic octree and the linear octree using a hopscotch hash table show the best efficiency.
# How to run
First, you need to clone dependencies:
```bash
git submodule update --init
```
## Tests
All tests are located in the "Tests" directory. To run the tests, you need to execute the following commands from this directory. Theese tests are available:
1. Run tests for the sequental octree with STD C++ hash table:
```bash
make run
```
2. Run tests for the sequental octree with hopscotch hash table:
```bash
make run-hopscotch
```
3. Run tests for the sequental octree with cuckoo hash table:
```bash
make run-cuckoo
```
4. Run differential tests for comparing linear and classic octrees:
```bash
make run-similar
```
5. Run tests for the parallel octree:
```bash
make run-mpi
```
## Benchmarks
All benchmarks are located in the "Benchmark" directory. To run the benchmarks, you need to execute the following commands from this directory. Theese benchmarks are available:
1. Build benchmark for the sequental octree with STD C++ hash table:
```bash
make build
```
2. Build benchmark for the sequental octree with hopscotch hash table:
```bash
make hopscotch
```
3. Build benchmark for the sequental octree with cuckoo hash table:
```bash
make cuckoo
```
4. Build benchmark for the parallel octree:
```bash
make mpi
```
To get instructions for the benchmark binary, is enough to run it without any arguments.
Benchmark directory contains the "gen_seq_instance.py" and "gen_mpi_instance.py" scripts for generating instances for the sequental and parallel octrees, respectively. You can use them to generate instances for your own tests. To get help, run the script without any arguments.