Source code

The source code, which can be found at https://github.com/usnistgov/ZENO, is written in C++ and requires a compiler that supports the C++11 standard; recent versions of g++ have been found to work.

Dependencies

The only essential external library is the SPRNG [10] 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.

Building SPRNG

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 -fPIC flag.

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

Building ZENO

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_INCLUDE_DIR and SPRNG_LIBRARY variables based on where you installed SPRNG.

You should then be able to build the executable zeno by simply typing make. Optionally, you may also install the executable into the directory specified in cmake by typing make install.

MPI support

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 with -DUSE_MPI=ON.

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.

Simple check

Once the code has been compiled, you can perform a quick self-test by typing make check. This will run zeno 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 precision, etc.

Example

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 Bisonc++ and 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 -DGEN_CMD_PARSER=ON and -DGEN_BOD_PARSER=ON.