--- title: 'Tamaas: a library for elastic-plastic contact of rough surfaces' tags: - C++ - Python - contact - rough surface - plasticity authors: - name: Lucas Frérot orcid: 0000-0002-4138-1052 affiliation: 1 - name: Guillaume Anciaux orcid: 0000-0002-9624-5621 affiliation: 1 - name: Jean-François Molinari orcid: 0000-0002-1728-1844 affiliation: 1 affiliations: - name: Civil Engineering Institute, École Polytechnique Fédérale de Lausanne, Switzerland index: 1 date: 13 December 2019 bibliography: paper.bib --- # Summary Physical phenomena that happen at solid contact interfaces, such as friction and wear, are largely entwined with the roughness of the surfaces in contact. For example, the fact that the friction force between two solids in contact is independent of their apparent contact area is due to roughness, as the solids are only in contact over a smaller "true contact area" which only depends on the normal force. Roughness occurs on most man-made and natural surfaces alike [@persson_nature_2005] and can span many orders of magnitude, from the nanometer scale to the kilometer scale [@renard_constant_2013]. This poses a serious challenge to conventional solid mechanics numerical approaches such as the finite-element method. ``Tamaas`` is a C++ library with a Python interface, developed in the [Solid Mechanics Simulation Lab](https://www.epfl.ch/labs/lsms) at EPFL, that implements a unique Fourier-accelerated volume integral formulation of equilibrium [@frerot_fourieraccelerated_2019] for the solution of elastic-plastic rough contact problems. The use of C++ allows for a particular focus on performance: most loops are paralelized using ``Thrust/OpenMP`` and the fast-Fourier transforms are computed with ``FFTW3/OpenMP``. # Use and examples ``Tamaas`` provides access in its Python API to random rough surface generation procedures (e.g. @hu_simulation_1992), statistical tools (e.g. autocorrelation and power spectrum computations) and a variety of contact algorithms: - Normal and adhesive contact schemes based on the conjugate gradient [@polonsky_numerical_1999], [@rey_normal_2017]; - Frictional contact; - Elastic-plastic contact [@frerot_fourieraccelerated_2019]. ``Tamaas`` also exposes in its Python API the accelerated linear operators it uses to compute equilibrium solutions, making prototyping new algorithms convenient. The following publications have been made possible with ``Tamaas``: - @yastrebov_contact_2012 - @yastrebov_contact_2014 - @yastrebov_infinitesimal_2015 - @yastrebov_accurate_2017 - @yastrebov_role_2017 - @rey_normal_2017 - @rey_stability_2018 - @rey_quantifying_2019 - @frerot_mechanistic_2018 - @frerot_fourieraccelerated_2019 - @frerot_crack_2019 # Acknowledgements We acknowledge the financial support of the Swiss National Science Foundation (grant #162569 "Contact mechanics of rough surfaces"). # References