This page describes how NekRS is executed within MOOSE. The externalSolve() function runs a single NekRS time step. This involves:

  • Advance one CFD time step by calling nekrs::runStep. This will print out something showing the results of the NekRS solve, like


  P        : iter 200  resNorm0 7.13e-04  resNorm 7.21e-05
  UVW      : iter 019  resNorm0 2.19e-02  resNorm 9.08e-07  divErrNorms 6.29e-03 6.60e-01
  S00      : iter 184  resNorm0 9.98e+01  resNorm 8.73e-04
step= 6  t= 3.0e-02  dt=5.0e-03  C= 0.31  UVW: 19  P: 20  S: 184  elapsedStep= 2.21e+00s  elapsedStepSum= 1.33800e+01s
  • Optionally limit the temperature on the host. This will print out something like the following, after which we copy from the host to the device.


Limiting nekRS temperature to within the range 0.0, 1.0
  • Copy the NekRS solution to the Nek5000 backend so that it is accessible for writing field files, interacting with via the legacy .usr-style approach, etc. At this point, the NekRS solution has been copied from device to host, so you can access it host-side.

  • Write field files.