nekRS is an open-source Navier Stokes solver based on the spectral element method targeting classical processors and accelerators like GPUs. The code started as an fork of libParanumal in 2019. For API portable programming OCCA is used.
Capabilities:
- Incompressible and low Mach-number Navier-Stokes + scalar transport
- CG-SEM using curvilinear conformal hexaheadral elements
- Variable time step 2nd/3rd order semi-implicit time integration
- MPI+X hybrid parallelism supporting CPU, CUDA, HIP, and OPENCL
- Various boundary conditions
- Conjugate fluid-solid heat transfer
- LES and RANS turbulence models
- Arbitrary-Lagrangian-Eulerian moving mesh
- VisIt & Paraview support for data analysis and visualization
- Interface to Nek5000
Requirements:
- Linux, Mac OS X (Microsoft Windows is not supported)
- C++14/C99 compatible compilers + GNU Fortran
- MPI-3.1 or later
- CMake version 3.13 (AMGx requires >=3.18) or later
Download the latest release available under
https://github.com/Nek5000/nekRS/archive/refs/tags/v22.0.tar.gz
or clone our GitHub repository:
https://github.com/Nek5000/nekRS.git
The master
branch always points to the latest stable release while next
provides an early preview of the next upcoming release (do not use in a production environment).
To build and install the code run:
./nrsconfig
cmake --build ./build --target install -j8
Please delete instead of overwriting your old build and install directory before updating.
Build settings can be customized by environment variables.
After installation you may want to adjust $NEKRS_HOME/nekrs.conf
to your environment.
Assuming you run bash
and your install directory is $HOME/.local/nekrs,
add the following line to your $HOME/.bash_profile:
export NEKRS_HOME=$HOME/.local/nekrs
export PATH=$NEKRS_HOME/bin:$PATH
then type source $HOME/.bash_profile
in the current terminal window.
We try hard not to break userland but the code is evolving quickly so things might change from one version to another without being backward compatible. Please consult RELEASE.md
before using the code.
cd $NEKRS_HOME/examples/turbPipePeriodic
mpirun -np 2 nekrs --setup turbPipe.par
For convenience we provide various launch scripts in the bin
directory.
For documentation, see our readthedocs page. For now it's just a dummy. We hope to improve documentation to make it more useable for new users.
Please visit GitHub Discussions. Here we help, find solutions, share ideas, and follow discussions.
Our project is hosted on GitHub. To learn how to contribute, see CONTRIBUTING.md
.
All bugs are reported and tracked through Issues. If you are having trouble installing the code or getting your model to run properly, you should first vist our discussion group.
nekRS is released under the BSD 3-clause license (see LICENSE
file).
All new contributions must be made under the BSD 3-clause license.
This research was supported by the Exascale Computing Project (17-SC-20-SC), a joint project of the U.S. Department of Energy's Office of Science and National Nuclear Security Administration, responsible for delivering a capable exascale ecosystem, including software, applications, and hardware technology, to support the nation's exascale computing imperative.