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.
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.
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:
$ mkdir build
$ cd build
$ CC=mpicc CXX=mpicxx FC=mpifort cmake -DNEK_DIST=nek5000 -DUSR_LOC=../tests/singlerod/short/nek5000 ..
$ CC=mpicc CXX=mpicxx FC=mpifort cmake -DNEK_DIST=nekrs ..
$ CC=mpicc CXX=mpicxx FC=mpifort cmake -DNEK_DIST=none ..
install
subdirectory of
the current build dir. You can specify another install location with the usual CMAKE_INSTALL_PREFIX
variable.
$ make -j4 enrico install
$ export PATH=$(realpath install/bin):$PATH
You must supply a nuclear data library to run OpenMC. See the OpenMC documentation for instructions.
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
)
$ 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`.)
$ cd tests/singlerod/short/openmc_nekrs
$ mpirun -np 32 enrico
$ cd tests/singlerod/short/openmc_heat_surrogate
$ mpirun -np 32 enrico