diff --git a/doc/sphinx/source/performance.rst b/doc/sphinx/source/performance.rst index 6152555..de515d6 100644 --- a/doc/sphinx/source/performance.rst +++ b/doc/sphinx/source/performance.rst @@ -1,82 +1,80 @@ Performance =========== Parallelism ----------- Tamaas implements shared-memory parallelism using `thrust `_ and `OpenMP `_ [1]_. The number of threads can be controlled with the ``OMP_NUM_THREADS`` environment variable, or alternatively to call the :func:`initialize ` function with the desired number of threads. The default behavior is to use as many threads as available cores on the system. Computational methods --------------------- Tamaas uses specialized numerical methods to efficiently solve elastic and elastoplastic periodic contact problems. Using a boundary integral formulation and a half-space geometry for the former allow (a) the focus of computational power to the contact interface since the bulk response can be represented exactly, (b) the use of the fast-Fourier transform for the computation of convolution integrals. In conjunction with a boundary integral formulation of the bulk state equations, a conjugate gradient approach is used to solve the contact problem. .. note:: The above methods are state-of-the-art in the domain of rough surface contact. Below are selected publications detailing the methods used in elastic contact with and without adhesion: - Boundary integral formulation: - Stanley and Kato (`J. of Tribology, 1997 `_) - - Conjugate Gradient: - Polonsky and Keer (`Wear, 1999 `_) - Rey, Anciaux and Molinari (`Computational Mechanics, 2017 `_) - - Frictional contact: - Condat (`J. of Optimization Theory and Applications, 2012 `_) For elastic-plastic contact, Tamaas uses a similar approach by implementing a *volume* integral formulation of the bulk equilibrium equations. Thanks to kernel expressions that are directly formulated in the Fourier domain, the method reduces the algorithmic complexity, memory requirements and sampling errors compared to traditional volume integral methods (Frérot, Bonnet, Anciaux and Molinari, `Computer Methods in Applied Mechanics and Engineering, 2019 `_, `arXiv:1811.11558 `_). The figure below shows a comparison of run times for an elasticity problem (only a single solve step) between Tamaas and `Akantu `_, a high-performance FEM code using the direct solver `MUMPS `_. .. figure:: figures/complexity.svg :align: center :width: 75% Comparison of run times between the volume integral implementation of Tamaas and an FEM solve step with a Cholesky factorization performed by Akantu+MUMPS. :math:`N` is the total number of points. Further discussion about the elastic-plastic solver implemented in Tamaas can be found in Frérot, Bonnet, Anciaux and Molinari, (`Computer Methods in Applied Mechanics and Engineering, 2019 `_, `arXiv:1811.11558 `_). .. [1] Thrust uses a backend system for thread-level parallelism, which can be changed to use `TBB `_ in the build options (``build-setup.conf``). You can experiment with it, but we do not formally support this backend. Note that this does not affect FFTW, which always uses OpenMP.