Transition to turbulence is a long-standing problem in fluid dynamics, pioneered by Osbourne Reynolds as early as 1883. Today, numerous tools from dynamical system theory can be used to improve our understanding of this process, yet, few libraries are available for generic CFD solvers. nekStab is one of them. Its aim is to extend the capabilities of Nek5000, a well established spectral element solver in the academic hydrodynamic and aerodynamic community. Leveraging Krylov-based techniques and Nek5000’s high-performance time-stepping capabilities, nekStab provides a set of algorithms to compute stable and unstable fixed points or periodic orbits of the Navier-Stokes equations as well as quantifying their stability properties through eigenvalue or singular value analysis.
News
- February 2022: The first release of
nekStab
is available online! Do not hesitate to get in touch with us or check the GitHub repo and documentation if you want to know more.
Getting started
nekStab is a toolbox written in Fortran 90
for the spectral element solver Nek500.
Both of them can be installed on Ubuntu/Debian distros using the following commands.
Prerequisites
sudo apt-get -y install libmpich-dev libopenblas-dev cmake m4
Cloning the repository
git clone --depth=50 --branch=master https://github.com/ricardofrantz/nekStab.git
cd nekStab
git submodule update --init --recursive
Run vim $HOME/.bashrc
and add the following :
export NEKSTAB_SOURCE_ROOT=$HOME/nekStab
export NEK_SOURCE_ROOT=$NEKSTAB_SOURCE_ROOT/Nek5000
export PATH=$NEK_SOURCE_ROOT/bin:$PATH
Computing the fixed point for the cylinder flow example using the Newton-Krylov solver on 4 processors is as simple as
cd ~/nekStab/examples/cylinder/1_2baseflow/newton
./cmpile.sh all
nekbmpi 1cyl 4
More information about compiling the code on Mac OS or optional packages is available in the Documentation.
Core components
- Time-stepping strategy : The aim of nekStab is to extend the capabilities of the Nek5000 solver to conduct large-scale bifurcation analysis. To do so, a time-stepping strategy is employed to massively reduce the memory footprint of such calculations at the expense of an increasing, yet affordable, computational cost. For more details about such a strategy, please refer to the original paper by Edwards et al. (1994) or the review by Loiseau et al. (2019).
- Krylov subspace methods : At its core nekStab relies on Krylov subspace methods for most large-scale linear algebra tasks. The most important one is the Arnoldi iteration on top of which are build a GMRES solver for linear systems of equations, a Krylov-Schur method for eigenvalue analysis and Lanczos algorithm for singular value decomposition of the linearized Navier-Stokes operator.
- Fixed points and periodic orbits : Several algorithms are included to compute stable and unstable fixed points or periodic orbits of the Navier-Stokes equations, the most efficient one being a Newton-Krylov solver. The selective frequency damping method proposed by Akervik et al. (2006) and BoostConv by Citro et al. (2017) are also proposed to compute fixed points. For periodic orbits, additional algorithms include Dynamic Mode Tracking by Queguineur et al. (2019) and Time-delayed Feedback by Shaabani-Ardali et al. (2017).
- Eigenvalue and singular value analysis : Asymptotic and short-time instabilities are governed by the eigenvalues and singular values, respectively, of the linearized Navier-Stokes operator. In nekStab, these are computed using a straightforward implementation of the Krylov-Schur solver originally proposed by Stewart (2002).
Showcase
TBA
Citation
If you use nekStab, please consider citing one of the following papers :
- Loiseau et al. (2019) presents most of the theoretical framework underlying nekStab.
@incollection{chapter:loiseau:2019, title={Time-stepping and Krylov methods for large-scale instability problems}, author={Loiseau, J.-Ch. and Bucci, M. A. and Cherubini, S. and Robinet, J.-Ch.}, booktitle={Computational Modelling of Bifurcations and Instabilities in Fluid Dynamics}, pages={33--73}, year={2019}, publisher={Springer} }
- Loiseau et al. (J. Fluid Mech., 2014) describes the first implementation of the Arnoldi solver in Nek5000.
@article{jfm:loiseau:2014, title={Investigation of the roughness-induced transition: global stability analyses and direct numerical simulations}, author={Loiseau, J.-Ch. and Robinet, J.-Ch. and Cherubini, S. and Leriche, E.}, journal={J. Fluid Mech.}, volume={760}, pages={175--211}, year={2014}, }