Seismo-VLAB  1.3
An Open-Source Finite Element Software for Meso-Scale Simulations
Libraries

Exernal libraries are only used in the Run-Analysis. In order to obtain good-performance at the Element level, specifically in tasks involving numerical integration, the well-developed and optimize free-libraries Eigen C++ Template Library is employed throughout the Run-Analysis in Seismo-VLAB. The advantage of using Eigen C++ is two-fold:

  • It minimizes the debugging process since the structure of matrices and vector operations are similar to those in Matlab and Python.
  • It is already optimize – comparison against the Intel Math Kernel Library (MKL) are simply outstanding – specially in ranges where matrices and vectors are not to large. This is indeed the main usage of Eigen C++ in Seismo-VLAB.

In addition, scalability of parallel implementation for large simulations is usually subjected to the solver–i.e., solving the linear system, which in general is performed using direct solver that exploit LDL decomposition. A very optimize library that solves linear system using LDL-decomposition is the MUltifrontal Massively Parallel Sparse direct solver (MUMPS). The structure in which MUMPS solves a linear system is well-suited with the domain decomposition structure presented in Run-Analysis. Thus, if parallel simulation are run in Seismo-VLAB, the MUMPS solver is chosen to deal with this task. Unfortunately, MUMPS is optimal for medium to large problems, since very large problems will not only require a large number of processors, but also a long time of execution.

Nevertheless, very large problem can be approached using iterative solvers. The Krylov space methods for solving linear systems turn out to be very efficient at the expense of lost of accuracy. In particular, a conjugate gradient method is the best option when using symmetric and positive definite matrices. In this regard, a very optimize library that solves linear system using Krylov space methods is the Portable and Extensible Toolkit for Scientific Computation (PETSc). Once again, the structure in which PETSc solves a linear system is well-suited with the domain decomposition structure presented in Run-Analysis. Thus, the PETCc solver for parallel simulation in Seismo-VLAB is ideal to deal with this task. Therefore, the preconditioned conjugate gradient (PCG), stabilized version of Bi-Conjugate gradient (BiCGStab), conjugate Gradient Squared (CGS), and Bi-conjugate gradient iterative method (BiCG) are available in Seismo-VLAB. These versions are very optimized, and it provides good-agreement and speedups for a given tolerance.

Please check linkPerformance for scalability and performance of Seismo-VLAB.

Note
MUMPS can be downloaded for free at http://mumps.enseeiht.fr/.
PETSc can be downloaded for free at https://www.mcs.anl.gov/petsc/.
Eigen C++ Template Library can be downloaded for free at http://eigen.tuxfamily.org/index.php?title=Main_Page.
Attention
Both libraries MUMPS and PETSc requires to be compiled, this may require to install another dependencies. On the other hand, Eigen C++ requires the path to be included.