tamaas/e042846d8524features/materials
/
README.md
Tamaas --- A blazingly fast rough contact library
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.
Dependencies
Here is a list of dependencies for Tamaas:
- a C++ compiler with full C++14 and OpenMP support
- SCons (python build system)
- FFTW3 compiled with OpenMP support
- boost (preprocessor)
- thrust (1.9.2+)
- python 3+ (probably works with python 2, but it is not tested) with numpy
- pybind11 (included as submodule)
- expolit (included as submodule)
Optional dependencies are:
- scipy (for nonlinear solvers)
- uvw (for dumpers)
- googletest and pytest (for tests)
- Doxygen and Sphinx (for documentation)
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).
Compiling
You should first clone the git submodules that are dependencies to tamaas (expolit, pybind11 and googletest):
git submodule update --init --recursive
The build system uses SCons. In order to compile Tamaas with the default options:
scons
After compiling a first time, 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.
Installing
Once compiled, you can install the python module with pip (preferably in a virtual environment):
pip install -e build-release/python
Check that everything is working fine with:
python3 -c 'import tamaas; print(tamaas)'
Tests
To run tests, execute pytest build-<build_type> if you have compiled Tamaas with tests activated (scons build_tests=True use_googletest=True).
Documentation
To build the documentation, activate the build_doc option. The compiled indexes for the doxygen C++ API and Sphinx documentation can be found in doc/build/{doxygen,sphinx}/html/index.html.
Examples
Example simulations can be found in the examples/ directory. There is no guarantee that the examples in examples/legacy/ all work however.
- rough_contact.py shows a typical normal rough contact simulation
- adhesion.py shows how you can derive some classes from Tamaas in python, here to implement a custom adhesion potential
- plasticity.py computes an elastoplastic Hertz simulation and dumps the result in examples/paraview/ in VTK format
- stresses.py shows how you can compute stresses from a boundary traction distribution
- the scripts in pipe_tools allow to execute elastic contact simulations without the need to code a custom script (see documentation for more details)
Citing
Please cite Tamaas as:
Frérot, L., Anciaux, G., Rey, V., Pham-Ba, S., J.-F., Molinari (2019). Tamaas, a high-performance library for periodic rough surface contact, doi:10.5281/zenodo.3479237.
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.
License
Tamaas is distributed under the terms of the GNU Affero General Public License v3.0.