nekRS 23.0

High-order methods have the potential to overcome the current limitations of standard CFD solvers. For this reason, we have been developing and improving our spectral element code for more than 35 years now. It features state-of-the-art, scalable algorithms that are fast and efficient on platforms ranging from laptops to the world’s fastest computers. Applications span a wide range of fields, including fluid flow, thermal convection, combustion and magnetohydrodynamics. Our user community includes 500+ scientists and engineers in academia, laboratories and industry. Features Incompressible and low Mach-number Navier-Stokes Spectral element disrectization High-order conformal curved quadrilateral/hexahedral meshes Semi-implicit 2nd/3rd order adaptive timestepping Conjugate fluid-solid heat transfer Efficient preconditioners Parallel I/O Lagrangian phase model Moving and deforming meshes Overlapping overset grids Basic meshing tools including 3rd-party converters LES and RANS turbulence models VisIt & Paraview support for data analysis and visualization

Tags hpc gpu cfd finite-element-analysis turbulence high-order exascale cpp c fortran
License Other
State stable

Recent Releases

23.026 Jan 2025 19:48 major bugfix: What is new?. Lagrangian phase model (one-way coupling). Overset grids (neknek). Particle tracking. Single source udf+oudf. Device support BoomerAMG. Improved runtime statistics. 4th-kind Chebyshev smoothers. Configureable time averaging. Extrapolation initialGuess method. Scaleable JIT compilation. Real gas support for lowMach. More examples. Various. Good to know: udf Changes in include files do not trigger a rebuild automatically. udf Plugins kernels will be loaded automatically (call in `UDF_LoadKernels` no longer required). Breaking Changes: nrsconfig Ensure env-vars `CC`, `CXX` and `FC` point to the correct MPI compiler wrappers (see README.md for an example). udf Plugin header files need to be included explicitly. udf Rename `bc- wrk` = `bc- usrwrk`. udf Update to new API of lowMach plugin (see lowMach example). Time step was added to `nekRS::outfld(..., int step...)`. par Use `pMGSchedule` instead of `pMultigridCoarsening` (see help for more details). par Rename writeControl value `runTime` = `simulationTime`. par Remove multigrid qualifier `coarse`. par Remove SEMFEM solver specification from key `preconditioner`, use `semfemSolver` instead. par Replace `stressFormulation = true` by `equation = navierStokes+variableViscosity`. par Replace bcType `Value` by `codedValue`. par Replace `elasticity` by `pcg+block` for mesh solver. Use occa::memory mesh_t objects for vgeo, cubvgeo, ggeom, sgeom, LMM, invLMM (no longer mirrored on host). All `boundaryIDs` need to be assigned in `boundaryTypeMap` (use `none` for an internal boundary). ## Known / Restrictions. Code is not fully optimized on CPUs in general and Intel GPUs. 485. 729. 258. Thanks to our Contributors: @neil-lindquist, @kris-rowe, @pwang234, @nandu90, @yhaomin2007. We are grateful to all who added new features, filed or helped resolve them. asked and answered questions, and were part of inspiring discussions.