tamaas/6de98daa963eci-fix-static-checks
ci-fix-static-checks vs master
Commit | Author | Details | Committed | ||||
---|---|---|---|---|---|---|---|
04c23013552d | Lucas Frérot | allow import of tamaas | Oct 26 2023 | ||||
cee303c36400 | Lucas Frérot | html as root of pages | Oct 26 2023 | ||||
903a42f41c46 | Lucas Frérot | within repository | Oct 26 2023 | ||||
41701c4b5e0e | Lucas Frérot | added public folder as artifact | Oct 26 2023 | ||||
ef17b380b1ce | Lucas Frérot | renamed build step | Oct 26 2023 | ||||
9c8231b4f143 | Lucas Frérot | renaming doc push job | Oct 26 2023 | ||||
4c74be160ed0 | Lucas Frérot | fixing pipeline | Oct 26 2023 | ||||
0f119a0aa07a | Lucas Frérot | pushing doc to gitlab pages | Oct 26 2023 | ||||
e16815234513 | Lucas Frérot | added build matrix | Oct 26 2023 | ||||
45fe7b6db00e | Lucas Frérot | added documentation ci build | Oct 26 2023 |
/
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)