- 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 bug fixes
- [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)
- [nrsconfig] Ensure env-vars
CC
,CXX
andFC
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 ofpMultigridCoarsening
(see help for more details) - [par] Rename writeControl value
runTime
=>simulationTime
- [par] Remove multigrid qualifier
coarse
- [par] Remove SEMFEM solver specification from key
preconditioner
, usesemfemSolver
instead - [par] Replace
stressFormulation = true
byequation = navierStokes+variableViscosity
- [par] Replace bcType
fixedValue
bycodedFixedValue
- [par] Replace
elasticity
bypcg+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 inboundaryTypeMap
(usenone
for an internal boundary)
@neil-lindquist, @kris-rowe, @pwang234, @nandu90, @yhaomin2007
We are grateful to all who added new features, filed issues or helped resolve them, asked and answered questions, and were part of inspiring discussions.
- Multi-session (uncoupled) support
- Support unaligned symmetry boundary condition
- Support (unaligned) traction boundary condition
- Better performance on AMD MI-GPUs
- FLOP counters
- Various bug fixes
- OpenCL support is now disabled by default
- [udf] Rename
udfBuildKernel
=>oudfBuildKernel
- [par] Separate details of coarse grid discretization from coarse grid solver
e.g.,
coarseSolver = SEMFEM+AmgX
is replaced bycoarseSolver = AmgX
andcoarseGridDiscretization = SEMFEM
- [par] Remove
preconditioner=semg
andpreconditioner=semg_amg
- [udf] Rename plug-in name
avg
=>tavg
- [udf] Rename
udf.converged
=>udf.timeStepConverged
- [nrsconfig] Rename env-var
AMGX_ENABLE
=>ENABLE_AMGX
@tcew, @kris-rowe, @aprilnovak
We are grateful to all who added new features, filed issues or helped resolve them, asked and answered questions, and were part of inspiring discussions.
A special shout out to Tim Warburton at VT for tuning some critical kernels.
- Flexible GMRES
- Constant flow rate
- Time step controller for targetCFL
- Improved runtime statistics
- Support for ROCm version > v4.0
- AVM for scalars
- FEMSEM preconditioner
- Update file (nekrs.upd) for runtime modifications
- Validate key/value input in par
- Various bug fixes
- [par]
preconditioner = multigrid
was replaced bypreconditioner = multigrid+coarse
- [par] Only valid
key/value
pairs will be accepted - [par] Default smootherType is
ASM+Chebyshev+degree=2
(instead of degree=1) - [fld] Only first checkpoint will contain mesh coordinates
- GMRES is now the default linear solver for pressure (higher memory usage)
- [udf] Use std namespace qualifier e.g.
std::cout
instead ofcout
- [udf] Rename
UDF_LoadKernels(nrs_t *nrs)
=>UDF_LoadKernels(occa::properties& kernelInfo)
- [udf] Replace argument
nrs_t *nrs
byocca::properties& kernelInfo
inudfBuildKernel()
,(plugin)::buildKernel()
- [udf]
UDF_LoadKernels(occa::properties& kernelInfo)
is no longer optional - Code crashes (Segmentation fault: invalid permissions) if MPI installation is not GPU aware unless you specify
NEKRS_GPU_MPI=0
in$NEKRS_HOME/nekrs.conf
@RonRahaman, @aprilnovak, @yslan
We are grateful to all who added new features, filed issues or helped resolve them, asked and answered questions, and were part of inspiring discussions.
- Update to latest parRSB version
- Fix restart issue if restart time is non-zero
- Fix io-frequency issue
- Fix JIT issue for lowMach
- Disable gs-timers to prevent performance regression
- ASM and RAS smoother + Chebyshev acceleration
- Improved gs performance
- Initial guess projection
- Runtime averages
- Stress formulation
- ALE formulation to support moving meshes
- Linear algebra helpers
- Various bug fixes
- common block SCRNS was replaced by pointer array NRSSCPTR (see ethier example)
- boundary device functions and bc struct members in oudf were renamed
- manually copying nek's IC in UDF_Setup() is no longer required
- nrs->Nlocal was replaced by mesh->Nlocal
- nrs->options was replaced by platform->options
- nrs->linAlg was replaced by platform->linAlg
- nek_copyFrom() was renamed to nek::copyToNek()
- nek_copyTo() was renamed to nek::copyFromNek()
- cds->fieldOffset was replaced by cds->fieldOffset[i]
- nrs->mesh was replaced by nrs->meshV
- cds->mesh was replaced by cds->mesh[i]
- nrs->meshT was replaced by cds->mesh[0]
- mesh->rank was replaced by platform->comm.mpiRank
- mesh->comm was replaced by platform->comm.mpiComm
- mesh->device was replaced by platform->device
@RonRahaman, @aprilnovak, @roystgnr, @yslan, @pwang234
We are grateful to all who added new features, filed issues or helped resolve them, asked and answered questions, and were part of inspiring discussions.
A special thanks goes to the CAPS Lab at ETHZ who helped to develop the moving mesh support.
- Initial release
- n/a
@AliKarakus, @thilinarmtb, @noelchalmers and @tcew for helping
We are grateful to all who added new features, filed issues or helped resolve them, asked and answered questions, and were part of inspiring discussions.