VerHem
v0.0.2
A FEM solver for 18 components Ginzburg-Landau partial differential equations

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.

Install and Compile

Getting source tree, configure and build

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.


About dependencies

To successfully compile, link and run VerHem application, few significant third party libraries have to be built or installed.

These dependencies are:

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.