A scalable discontinuous Galerkin code on unstructured curvilinear grids for linear elasticity problems and sequences of earthquakes and aseismic slip
Features • Dependencies • Installation • Documentation • Citing tandem • License
- High-order discontinuous Galerkin finite element method
- Solver for elastostatic problems and SEAS problems
- Unstructured triangle and tetrahedral meshes
- Curvilinear representation of boundary
- Native support for Gmsh's MSH file format version 2 (including high-order meshes)
- Sub-element material parameter resolution
- Efficient matrix-free and assembly kernels for many CPU architectures (using YATeTo)
- Scalable on distributed memory architectures; access to many linear solvers via PETSc
- Supports discrete Green's function for SEAS
For a general overview of the project check out our presentation at virtual EGU 21.
tandem relies on the following open-source projects:
- zlib
- Eigen
- Python with NumPy
- Lua
- CMake
- METIS and ParMETIS
- MPI (e.g. OpenMPI)
- PETSc
- libxsmm (optional)
You need a recent C++17 compiler (GCC ≥ 8.0 or clang ≥ 8)) and you need to install the dependencies. Then install using the following commands:
$ git clone https://github.com/TEAR-ERC/tandem
$ cd tandem
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DARCH=hsw -DPOLYNOMIAL_DEGREE=4 -DDOMAIN_DIMENSION=2
Here the following options were used:
- CMAKE_C_COMPILER and CMAKE_CXX_COMPILER: Select MPI compiler wrappers
- ARCH: Optimize for Intel Haswell (see cpu_arch_flags.cmake for more options)
- POLYNOMIAL_DEGREE: The polynomial degree of the finite element spaces
- DOMAIN_DIMENSION: Set 2 for triangle meshes and 3 for tetrahedral meshes
Check out the detailed installation guide.
A journal article is under preparation.