This page talks about how to get the source of VerHem as well as the other necessary sources of third party library dependencies, and how to properly compile and link different parts of source codes and dependencies. VerHem is designed for and has been implemented on memory distributed system, good understanding of Message Passing Interface (MPI) is suggested. There are two major frameworks, which VerHem depends on, deal.ii and Trilinos. Except these two major libraries, p4est, LAPCK, ScaLAPACK, METIS and MPI are also necessary. The building configuration system of VerHem is cmake, so do deal.ii and Trilinos.
From GitLab
$ git clone https://gitlab.com/verhem/verkko-hem-repo.git
or from GitHub
$ git clone https://github.com/VerHem/verkko-Hem-repo.git
then run cmake to configure the build system
$ cd verkko-Hem-repo
$ mkdir build && cd build
$ cmake ..
after then, build the binary executable
$ cmake --build . -j N
The built executable locates in ./build/sol
with file name VerHem
.
In most case, this work just fine. However, compiling error may still happens here or there.
For sake of debugging, one may add --verbose
or -v
in building step i.e.,
$ cmake --build . -j N --verbose
to checkout object files building and libraries linking. Depending on the system you are working with, the building tool under management of CMake
may be different.
On most GNU/Linux
platforms, GNU Make
a.k.a gmake
is used. another building tool which VerHem could use is ninja
.
To successfully compile, link and run VerHem application, few significant third party libraries have to be built or installed.
For most of HPC cluster platforms, many of listed above are available by default. Frequently, users may notice that what they have to install manually are deal.ii and Trilinos, which both are cmake-configured libraries. On platform with Spack, these dependencies will be more easy to handle. If user wish to run VerHem applications on their UNIX-BSD/GNU+Linux desktop or laptop, these dependencies may be installed from ports or package management systems.