A code that enables complex active particle advection in flows. The code is still in active developpement, feel free to ask for features.
This code enables to compute active particle trajectories inside flows. It enables the user to specify a complex behaviour of particles. It can be used with external flow data, thus enabling to use data from flow simulations or experiments. Moreover, provided an internet connection, the software enables to use flows of the Johns Hopkins Turbulence Database. Please keep in mind that this is a work in progress, all may not work out of the box yet. This software should be usable on any operating system but only have been tested on recent Linux distributions (Ubuntu 20, Archlinux).
This repository contains:
- Lagrangian active particles advection software that binds low-level c++ modules into a high-level command line tool.
- A few low-level c++ modules that can be used independently.
This software has been produced during my PhD thesis and as part as the European Research Council project: C0PEP0D
The dependencies are standard softwares that may already be installed on your system. If not, you should be able to install these dependencies with your package manager.
- Python must be installed
- CMake
v?
or higher must be installed - a c++17 compliant compiler, such as gcc
v9
or higher must be installed - the Threading Building Block Library
v2018
or higher must be installed (this version that enables is installing it using CMake is advised)
Start by cloning this repository with its submodules.
$ git clone --recurse-submodules https://github.com/C0PEP0D/sheld0n.git
And that's it! The executables are in the cases directory.
A simple pull should be enough.
$ git pull --recurse-submodules
The following covers basic usage of the code, while the documentation is improving, feel free to contact me if you have any questions regarding using this software.
Most scripts provided by this software contain their description, explaining how to use them. One can access this description using the following:
$ script -h
or
$ script --help
Go to the cases folder and a choose a case:
$ cd cases
$ ls
adaptative_surfers spherical_surfers comparison surfers tracers
Then navigate in the case you choose, surfers for example, and run the case.
$ cd surfers
$ ./run
Once the simulation has started or finished, one can run some post processing:
$ ./post
Final data should be in the post_process
directory. Further post processing can be done using various scripts in that directory. Post processing will generated CSV files that can then be processed thirdparty softwares to plot curves.
Go to the cases folder and run the new_case script
$ cd cases
$ ./new_case new_case_name
All parameters are included in the param
.
One can edit any parameters.h
file in this subtree.
Furthermore can choose between different simulation parameters using the choose
scripts.
The print_param
is a helper script to print all parameters that can be used to check all simulation parameters before running a simulation.
There is a memory leak somewhere. I am pretty sure it comes from the turblib library but I have not got the time to investigate it more. You should be fine if you do not use the jhtdb flow. If you do, just kill the process when too much memory is used and rerun it.
Rémi Monthiller - @rmonthil - remi.monthiller@gmail.com
Feel free to dive in! Open an issue or submit PRs. Or just propose features you would like to have implemented in the code.
MIT © Centrale Marseille, Rémi Monthiller