ENRICO: Exascale Nuclear Reactor Investigative COde
ENRICO is an application that automates the workflow for solving a coupled particle transport, heat transfer, and fluid dynamics problem. Individual-physics solvers for particle transport and thermal-fluids are chosen at runtime. Currently supported solvers include the OpenMC and Shift Monte Carlo particle transport codes and the Nek5000 and nekRS computational fluid dynamics codes. A simple surrogate thermal-fluids solver is also available for testing purposes.
Configuring
For the thermal-fluids solver, ENRICO can be compiled to use Nek5000, nekRS, or neither. This is controlled by the -DNEK_DIST
CMake option. The following values are allowed:
-DNEK_DIST=nek5000
: (Default) If compiling with Nek5000, you must also specify the location of the input deck using the-DUSR_LOC
option at configure time-DNEK_DIST=nekrs
-DNEK_DIST=none
With any of the these options, the heat surrogate will still be available.
Building and Installing
To obtain the necessary source files for building, first clone the repository:
$ git clone git@github.com:enrico-dev/enrico.git
Next, fetch and checkout the submodules containing the various single-physics applications:
$ cd enrico
$ git submodule update --init --recursive
Next, the general workflow is for building and installing is:
- Create a build directory in an arbitrary location and enter it:
$ mkdir build
$ cd build
- Run CMake using the desired Nek distribution
- For Nek5000:
$ CC=mpicc CXX=mpicxx FC=mpifort cmake -DNEK_DIST=nek5000 -DUSR_LOC=../tests/singlerod/short/nek5000 ..
- For nekRS:
$ CC=mpicc CXX=mpicxx FC=mpifort cmake -DNEK_DIST=nekrs ..
- Without Nek5000 or nekRS:
$ CC=mpicc CXX=mpicxx FC=mpifort cmake -DNEK_DIST=none ..
- Run make and install. By default, this will install ENRICO in the
install
subdirectory of the current build dir. You can specify another install location with the usualCMAKE_INSTALL_PREFIX
variable.$ make -j4 enrico install
- Optional: Add installation to $PATH
$ export PATH=$(realpath install/bin):$PATH
Other Dependencies
- For OpenMC:
You must supply a nuclear data library to run OpenMC. See the OpenMC documentation for instructions.
Running a Case
ENRICO must be run from the directory containing the case's input files. This includes the input
files for the physics applications; and the ENRICO-specific enrico.xml
input file. See the
documentation for a description of the
enrico.xml
file.
For the included short singlerod test case, you can run the simulations as follows. (These assume you
have added build/install
to your PATH
as described above; if not, you must use the full path
to enrico
)
- For OpenMC + Nek5000:
$ cd tests/singlerod/short/openmc_nek5000
$ gunzip -f ../nek5000/rodcht.run01.gz
$ mpirun -np 32 enrico
(This particular example requires a restart file, `rodcht.run01`.)
- For OpenMC + nekRS
$ cd tests/singlerod/short/openmc_nekrs
$ mpirun -np 32 enrico
- For OpenMC + heat surrogate
$ cd tests/singlerod/short/openmc_heat_surrogate
$ mpirun -np 32 enrico