The source code, which can be found at https://github.com/usnistgov/ZENO,
is written in
C++ and requires a compiler that supports
C++11 standard; recent versions of
g++ have been found to
The only essential external library is the SPRNG  random number library. This requires compilation, which is described in the next section.
Other required libraries are zlib and a threading library. These should be provided by your Operating System distribution.
SPRNG can be obtained from http://sprng.org. The required version is 5.0.
When configuring the SPRNG library, you will have the option to include support for Fortran and MPI. Neither of these are required for ZENO (even if you plan to use MPI with ZENO), so you may build SPRNG without these.
Since the core ZENO functionality is built as a shared library, SPRNG must be
configured to be compiled with the
These example commands should build and install SPRNG in your home directory:
tar xjf sprng5.tar.bz2 mkdir sprng5-build && cd sprng5-build CXXFLAGS=-fPIC ../sprng5/configure --with-fortran=no --with-mpi=no --prefix=$HOME/sprng5-install make && make install
Compiling the code requires cmake version 3.1 or greater.
To compile, you should first make a build directory. Then change to the
build directory and run
cmake on the
ZENO/cpp directory. You will
need to set the
SPRNG_LIBRARY variables based
on where you installed SPRNG.
You should then be able to build the executable
zeno by simply
make. Optionally, you may also install the executable into
the directory specified in cmake by typing
MPI support is included, but is optional. If MPI libraries are installed
on your system, you may be able to build zeno with MPI support by running
Cmake will attempt to automatically find the MPI libraries on your system. If this does not work, you will need to manually set the various cmake MPI variables to the values appropriate for your installation.
Once the code has been compiled, you can perform a quick self-test by
make check. This will run
on various test cases and compare the output against the
output from a correctly built version. Floating-point values will be
allowed some tolerance to account for differences in compilers, machine
These example commands should build and install ZENO in your home directory (without MPI support), assuming SPRNG has also been installed in your home directory:
git clone https://github.com/usnistgov/ZENO.git mkdir zeno-build && cd zeno-build cmake -DSPRNG_INCLUDE_DIR=$HOME/sprng5-install/include -DSPRNG_LIBRARY=$HOME/sprng5-install/lib/libsprng.a -DCMAKE_INSTALL_PREFIX=$HOME/zeno-install ../ZENO/cpp make && make install make check
Modifying the code¶
If you modify the source code, some external utilities may be required.
Gengetopt is required to modify command-line parameters, while
Flexc++ are required to modify the input-file
format. These can be obtained from the sources:
You will then need to enable regeneration of the comand-line parser and
input-file parser with the cmake options