diff --git a/.gitignore b/.gitignore index ccab7c9..c6173ed 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,12 @@ *~ +.dir-locals.el .sconf_temp .sconsign.dblite *.log build* +__pycache__ *.pyc src/tamaas_info.cpp site_scons/site_tools/doxygen .*cache +compile_commands*.json diff --git a/AUTHORS b/AUTHORS index 756dc5d..28d39fc 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,4 +1,4 @@ - Guillaume Anciaux - Lucas Frérot - Son Pham-Ba -- Valentine Rey +- Valentine Rey diff --git a/README.md b/README.md index fa409d4..49d38c1 100644 --- a/README.md +++ b/README.md @@ -1,70 +1,85 @@ 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 + git submodule update --init --recursive The build system uses SCons. In order to compile Tamaas with the default options: - scons + 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 [...] + 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 + pip install -e build-release/python Check that everything is working fine with: - python3 -c 'import tamaas; print(tamaas)' + python3 -c 'import tamaas; print(tamaas)' ## Tests To run tests, execute `pytest build-` 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., (2019). Tamaas, a high-performance library for periodic rough surface contact. https://doi.org/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). https://doi.org/10.1016/j.cma.2019.04.006 + + +## License + +Tamaas is distributed under the terms of the [GNU Affero General Public License v3.0](https://www.gnu.org/licenses/agpl.html).