Commit 6abc567b authored by Cristian Lalescu's avatar Cristian Lalescu
Browse files

tweak README

parent 5156a042
Pipeline #63972 passed with stage
in 4 minutes and 16 seconds
......@@ -7,34 +7,35 @@
Turbulence Tools: Lagrangian and Eulerian
=========================================
In brief, this code runs pseudospectral direct numerical simulations
(DNS) of the incompressible Navier-Stokes equations, using FFTW 3, and
it can integrate particle trajectories in the resulting fields.
The Navier-Stokes solver has been extensively tested (tests are included
in the repository), and it is working as expected.
Parameters and statistics are stored in HDF5 format, together with code
information, so simulation data should be "future proof" --- suggestions
of possible improvements to the current approach are always welcome.
The primary aim of TurTLE is to reduce the time spent on setting up and
baby sitting DNS, as well as simplify the analysis of the generated
data.
The wish is that this Python package provides an easy and general way
of constructing efficient specialized DNS C++ codes for different
turbulence problems encountered in research.
At the same time, the package should provide a unified way of
postprocessing, and accessing the postprocessing results.
The code therefore consists of two main parts: the pure C++ code, a set
of loosely related "building blocks", and the Python code, which can
generate C++ code using the pure classes, but with a significant degree
of flexibility.
The code user is expected to write a small python script that will
properly define the DNS they are interested in running.
That code will generate an executable that can then be run directly on
the user's machine, or submitted to a queue on a cluster.
.. _sec-introduction:
------------
Introduction
------------
TurTLE implements a number of standard functionality of Fourier-based
pseudo-spectral numerical simulations, as well as the corresponding
numerical particle-tracking functionality.
The package also contains a Navier-Stokes solver, as well as a small
number of post-processing tools.
The solver is production-ready, having already been used for a number of
publications.
TurTLE is written in C++ and it uses a hybrid MPI/OpenMP programming
paradigm, relying on FFTW3 for an efficient Fourier transform
implementation.
HDF5 is used for I/O, including for parameter input and output of
statistics.
CMake is used for compilation and installation.
A Python 3 wrapper is used to prepare parameters and initial conditions,
as well as to generate job submission scripts for clusters and to
perform basic post-processing of simulation results.
The primary aim of TurTLE is to provide optimal performance, while
reducing the time spent on setting up and supervising DNS, with the
added benefit of a unified launch-postprocess approach through the use
of the Python wrapper.
.. _sec-installation:
......@@ -42,31 +43,29 @@ the user's machine, or submitted to a queue on a cluster.
Installation
------------
So far, the code has been run on laptops, desktops, and a couple of
clusters (biggest run so far was 1536^3 on 16 nodes of 32 cores each,
with about 11 seconds per time step, for a simple incompressible
Navier-Stokes problem).
Postprocessing data may not be very computationally intensive, depending
on the amount of data involved.
TurTLE can be used on various machines, with laptops routinely being
used for development and testing, but large production runs using tens
of thousands of CPU cores on large computing clusters.
**Postprocessing only**
Use a console; navigate to the ``turtle`` folder, and type:
The Python 3 package may be installed directly if only post-processing
of existing data is desired:
.. code:: bash
python setup.py install
(add `--user` or `sudo` as appropriate).
`setup.py` should tell you about the various packages you need.
`setup.py` uses the `setuptools` package for dependency resolution.
**Full installation**
If you want to run simulations on the machine where you're installing,
you will need to use `cmake` to compile and install the full library.
Your machine needs to have an MPI compiler installed, the HDF5 C library
and FFTW >= 3.4 --- detailed instructions are
included at the end of this document.
The C++ library requires a number of dependencies, that `CMake` will
search for before compilation and installation.
In brief, an MPI compiler is required, the HDF5 C library compiled with
parallel support and FFTW >= 3.4.
Detailed instructions are provided at the end of this document.
-------------
Documentation
......@@ -106,9 +105,9 @@ Comments
* code is used mainly with Python 3.5 and later, and it is not tested at
all with Python 2.x
-------------------------------
Installation with prerequisites
-------------------------------
-----------------
Full installation
-----------------
These installation steps assume that you have a working MPI compiler,
properly configured on your system (i.e. the various configure scripts
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment