https://github.com/llnl/tribol
Modular interface physics library featuring state-of-the-art contact physics methods.
https://github.com/llnl/tribol
math-physics
Last synced: about 1 year ago
JSON representation
Modular interface physics library featuring state-of-the-art contact physics methods.
- Host: GitHub
- URL: https://github.com/llnl/tribol
- Owner: LLNL
- License: mit
- Created: 2023-04-26T17:10:21.000Z (about 3 years ago)
- Default Branch: develop
- Last Pushed: 2025-04-25T16:31:06.000Z (about 1 year ago)
- Last Synced: 2025-04-25T17:45:15.101Z (about 1 year ago)
- Topics: math-physics
- Language: C++
- Homepage:
- Size: 2.97 MB
- Stars: 28
- Watchers: 8
- Forks: 7
- Open Issues: 28
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE-OF-CONDUCT.md
Awesome Lists containing this project
README
# Tribol: Contact Interface Physics Library
High fidelity simulations modeling complex interactions of moving bodies require specialized contact algorithms to
enforce zero-interpenetration constraints between surfaces. Tribol provides a unified interface for various
contact algorithms, including contact search, detection and enforcement, thereby enabling the research and development
of advanced contact algorithms.
## Quick Start Guide
### Clone the repository
```
git clone --recursive git@github.com:LLNL/Tribol.git
```
### Setup for development
Development tools can optionally be installed through the Spack package manager. Development tools are typically not
needed when using Tribol. The command to install development tools is
```
python3 scripts/uberenv/uberenv.py --project-json=scripts/spack/devtools.json --spack-env-file=scripts/spack/configs//spack.yaml --prefix=../tribol_devtools
```
where `` is one of `blueos_3_ppc64le_ib_p9`, `linux_ubuntu_20`, `linux_ubuntu_22`, `toss_4_x86_64_ib`, or
`toss_4_x86_64_ib_cray`. Please verify `scripts/spack/configs//spack.yaml` matches your system configuration.
### Installing dependencies
Tribol dependency installation is managed through uberenv, which invokes a local instance of the spack package manager
to install and manage dependencies. To install dependencies, run
```
python3 scripts/uberenv/uberenv.py --spack-env-file=scripts/spack/configs//spack.yaml --prefix=../tribol_libs
```
See additional options by running
```
python3 scripts/uberenv/uberenv.py --help
```
Tribol is tested on three platforms:
- Ubuntu 22.04 LTS (via Windows WSL 2)
- TOSS 4
- BlueOS
See `scripts/spack/packages/tribol/package.py` for possible variants in the spack spec. The file
`scripts/spack/specs.json` lists spack specs which are known to build successfully on different platforms. Note the
development tools can be built with dependencies using the `+devtools` variant.
### Build the code
After running uberenv, a host config file is created in the tribol repo root directory. Use the `config-build.py`
script to create build and install directories and invoke CMake.
```
python3 ./config-build.py -hc
```
Enter the build directory and run
```
make -j
```
to build Tribol.
## Dependencies
The Tribol contact physics library requires:
- CMake 3.14 or higher
- C++14 compiler
- MPI
- mfem
- axom
Tribol has optional dependencies on:
- CUDA
- HIP
- RAJA
- Umpire
## License
Tribol is distributed under the terms of the MIT license. All new contributions must be
made under this license.
See [LICENSE](LICENSE) and [NOTICE](NOTICE) for details.
SPDX-License-Identifier: MIT
LLNL-CODE-846697
## SPDX usage
Individual files contain SPDX tags instead of the full license text.
This enables machine processing of license information based on the SPDX
License Identifiers that are available here: https://spdx.org/licenses/
Files that are licensed as MIT contain the following
text in the license header:
SPDX-License-Identifier: (MIT)
## External Packages
Tribol bundles some of its external dependencies in its repository. These
packages are covered by various permissive licenses. A summary listing
follows. See the license included with each package for full details.
[//]: # (Note: The spaces at the end of each line below add line breaks)
PackageName: BLT
PackageHomePage: https://github.com/LLNL/blt
PackageLicenseDeclared: BSD-3-Clause
PackageName: uberenv
PackageHomePage: https://github.com/LLNL/uberenv
PackageLicenseDeclared: BSD-3-Clause