/tandem

Primary LanguageC++BSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

tandem

A scalable discontinuous Galerkin code on unstructured curvilinear grids for linear elasticity problems and sequences of earthquakes and aseismic slip

License Stars Forks

FeaturesDependenciesInstallationDocumentationCiting tandemLicense

examples

Features

  • 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.

Dependencies

tandem relies on the following open-source projects:

Installation

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.

Documentation

Read the docs.

Citing tandem

A journal article is under preparation.

License

BSD 3-Clause License