tamaas/fa16f5a64b1fmaster
/
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 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* (the version shipped with CUDA, not the GitHub version; tested with 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 *Mercurial* (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.
Tests
To run tests, execute pytest build-<build_type> if you have compiled Tamaas with tests activated (scons build_tests=True use_googletest=True).
Examples
Example simulations can be found in the examples/ directory. There is however no guarantee they all work. Looking at tests may be a better source of info.