🚨 THE TAMAAS REPOSITORY HAS MIGRATED TO GITLAB! THIS REPOSITORY IS NOW IN MIRROR MODE 🚨
Tamaas is high-performance library for the contact of periodic rough surfaces.
🚨 THE TAMAAS REPOSITORY HAS MIGRATED TO GITLAB! THIS REPOSITORY IS NOW IN MIRROR MODE 🚨
Tamaas is high-performance library for the contact of periodic rough surfaces.
Commit | Author | Details | Committed | ||||
---|---|---|---|---|---|---|---|
db751c61dfdc | Lucas Frérot | ignoring long line warning for material print | Oct 21 | ||||
0819656ed020 | Lucas Frérot | adding dependency of test target on python wrapper | Oct 21 | ||||
14df4c46b1a9 | Lucas Frérot | only setting mfront material property if it exists | Oct 21 | ||||
57e9c80c1f01 | Lucas Frérot | allowing setting material properties in mfront | Oct 18 | ||||
0101d22f127c | Lucas Frérot | flake8 linting | Oct 18 | ||||
70830659d951 | Lucas Frérot | added pretty print of mfront material properties | Oct 18 | ||||
9796cd5851b4 | Lucas Frérot | making MaxwellViscoelastic work on views | Oct 17 | ||||
2c5b373821ab | Lucas Frérot | added updateState function to MaxwellViscoelastic | Oct 17 | ||||
8d8c9b8ce568 | Lucas Frérot | using rpath to link mfront library | Oct 17 | ||||
7fa55d92fb08 | Lucas Frérot | silencing compiler warnings | Oct 17 | ||||
2ca3accae8a2 | Lucas Frérot | updated changelog | Sep 24 | ||||
9a732947a7b4 | Lucas Frérot | typo in manylinux tag | Sep 20 | ||||
deccf620c90a | Lucas Frérot | fixed remaining imtek emails | Sep 20 | ||||
ddd2347d384a | Lucas Frérot | fixed manylinux platform tag | Sep 20 | ||||
5c95bc7143ce | Lucas Frérot | added python 3.12 and 3.13 to wheels build | Sep 20 |
![JOSS](https://doi.org/10.21105/joss.02121) ![Documentation Status](https://tamaas.readthedocs.io/en/latest/?badge=latest) ![Binder](https://mybinder.org/v2/gl/tamaas%2Ftutorials/HEAD) ![DOI](https://doi.org/10.5281/zenodo.3479236)
Tamaas is a C++/Python library that implements a number of numerical methods based on integral equations to efficiently solve contact problems with rough surfaces. The word تماس (tamaas) means "contact" in Arabic and Farsi.
If you have a Linux system, you can simply run pip3 install tamaas. Note however that there due to compatibility reasons, this version of Tamaas is not built with parallel/multi-threading capabilities. So if you want parallelism, or encounter an issue with the PyPI package, please compile from source. This can be easily done with Spack using the command spack install tamaas. See `spack info tamaas` for build options.
We also provide up-to-date Docker images (to use on macOS for example):
docker pull registry.gitlab.com/tamaas/tamaas
To discover Tamaas' functionality, you can use explore of our interactive tutorial notebooks to get started.
Here is a list of dependencies to compile Tamaas:
Optional dependencies are:
Note that a Debian distribution should have the right packages for all these dependencies (they package the right version of thrust extracted from CUDA in stretch-backports non-free and buster non-free).
Here are the instructions to compile Tamaas. Note that we provide a [Docker image](#using-docker-image) and a PyPI package that do not require compiling.
On Debian-based systems, mandatory dependencies can be installed with the following command:
apt install \ g++ \ libboost-dev \ libthrust-dev \ libfftw3-dev \ pybind11-dev \ python3-dev \ python3-numpy \ scons
Additionally, to build and run tests, one needs to install:
apt install \ libgtest-dev \ python3-pytest
For documentation:
apt install \ doxygen \ python3-sphinx \ python3-breathe \ python3-sphinx-rtd-theme
The build system uses SCons. In order to compile Tamaas with the default options (i.e. optimized release build with python bindings):
scons
After compiling a first time (or running scons -h if you want to avoid compiling), you can edit the compilation options in the file build-setup.conf, or alternatively supply the options directly in the command line:
scons option=value [...]
To get a list of *all* build options and their possible values, you can run scons -h. You can run scons -H to see the SCons-specific options (among them -j n executes the build with n threads and -c cleans the build). Note that the build is aware of the CXX and CXXFLAGS environment variables.
Before you can import tamaas in python, you need to install the python package in some way.
Python best practices are to install modules in virtual environments so as to not interfere with system package managers.
python3 -m venv /path/to/tamaas_venv source /path/to/tamaas_venv/bin/activate scons install prefix=/path/to/tamaas_venv
You can check that everything is working fine with:
python3 -c 'import tamaas; print(tamaas)'
You can make an editable installation with:
source /path/to/tamaas_venv/bin/activate scons dev
Tamaas provides a Dockerfile you can use to compile and deploy Tamaas in a tested environment. Simply run docker build -t tamaas . in the root folder of the repository. Check the documentation to see which build options can be adjusted.
To run tests, make sure to have pytest installed and run scons test if you have compiled Tamaas with tests activated (scons build_tests=True).
The latest documentation is available on ReadTheDocs! It contains detailed guides on the different components of Tamaas as well as a combined C++ and Python API documentation.
You can also build the documentation locally: run scons doc. Make sure you have sphinx-rtd-theme and breathe installed. The compiled indexes for the doxygen C++ API and Sphinx documentation can be found in build-release/doc/{doxygen,sphinx}/html/index.html.
Example simulations can be found in the examples/ directory. These simulations can be run in MPI.
The Tamaas python module exposes a tamaas command with three subcommands:
See tamaas <cmd> --help for command line arguments.
Contributions to Tamaas are welcome! Please follow the guidelines below.
If you have an account on gitlab, you can submit an issue. The full list of issues is available here. Please read the FAQ before posting.
Follow this guide to create a merge request on GitLab. Please target the repository's master branch.
Tamaas is the result of a science research project. To give proper credit to Tamaas and the researchers who have developed the numerical methods that it implements, please cite Tamaas as:
Frérot , L., Anciaux, G., Rey, V., Pham-Ba, S., & Molinari, J.-F. Tamaas: a library for elastic-plastic contact of periodic rough surfaces. Journal of Open Source Software, 5(51), 2121 (2020). doi:10.21105/joss.02121
The paper above details relevant references for the different features of Tamaas. In particular, if you use the elastic-plastic contact capabilities of Tamaas, please cite:
Frérot, L., Bonnet, M., Molinari, J.-F. & Anciaux, G. A Fourier-accelerated volume integral method for elastoplastic contact. Computer Methods in Applied Mechanics and Engineering 351, 951–976 (2019) doi:10.1016/j.cma.2019.04.006.
If you use the adhesive contact capabilities of Tamaas, please cite:
Rey, V., Anciaux, G. & Molinari, J.-F. Normal adhesive contact on rough surfaces: efficient algorithm for FFT-based BEM resolution. Comput Mech 1–13 (2017) doi:10.1007/s00466-017-1392-5.
For an (almost) exhaustive list of publications, insert the following code snippet at the end of your python scripts:
python from tamaas.utils import publications publications()
The changelog can be consulted here.
Tamaas' development was funded by the Swiss National Science Foundation, grants 162569 ("Contact mechanics of rough surfaces") and 191720 ("Tribology of Polymers: from Atomistic to Continuum Scales"), and by Deutsche Forschungsgemeinschaft, grant 461911253 ("AWEARNESS").
Tamaas is distributed under the terms of the GNU Affero General Public License v3.0.