MIRCO is a Boundary element algorithm for simulating linear elastic frictionless normal contact between a rigid rough indentor and an elastic half-space.
The research code uses the Kokkos programming model (https://kokkos.org) for on-node parallelism. To this end, it has been tested for Kokkos' OpenMP backend.
MIRCO requires
- C++ compiler
- CMake (version: >= 3.28)
- Kokkos (version >= 3.7)
- Kokkos-Kernels (version >= 3.7) with BLAS and LAPACK enabled (additional APIs need to be enabled when using a GPU backend, depending on the vendor)
The repository can be cloned along with its submodules using:
cd <someBaseDir>
mkdir <sourceDir>
git clone --recursive https://github.com/imcs-compsim/MIRCO.git <sourceDir>where <someBaseDir> is some directory in your machine and <sourceDir> will contain the MIRCO source code.
If you have already cloned the repository using:
git clone https://github.com/imcs-compsim/MIRCO.git <sourceDir>you can pull the submodules using:
cd <sourceDir>
git submodule update --init --recursiveTo update the submodules, you can use the following command from your source directory:
git submodule update --recursive --remoteTo create an out-of-source build, first create a build directory using:
cd <someBaseDir>
mkdir <buildDir>where <buildDir> is the build directory.
Note: The exact location of
<buildDir>is arbitrary, as long as it is not the same directory than<sourceDir>.
Now, you have to navigate to the build directory and invoke CMake. We use CMake Presets for defining build configurations.
cd <buildDir>
cmake --preset=<name_of_your_preset> <sourceDir>IMPORTANT Make sure to set
Trilinos_DIRto point to you Trilinos installation.
Build the mirco executable in the build directory using:
cd <buildDir>
ninja -j <numProc>with <numProc> specifying the number of processes used for compilation.
The mirco executable will be created in the build directory.
You can run the tests from the build directory using:
ctestTo run the code with an input file, use the following command in your build directory:
./mirco <sourceDir>/Input/<someInputFile.xml>where <someInputFile.xml> is any input file in the prescribed format.
To develop MIRCO, make sure to setup a proper development environment by running
./create-mirco-python-venv.sh
in the . This will install all required packages such as a code formatter and commit hooks.
If you are using this code, please cite the following paper:
-
J. Bonari, M. R. Marulli, N. Hagmeyer, M. Mayr, A. Popp, M. Paggi: A multi-scale FEM-BEM formulation for contact mechanics between rough surfaces, Computational Mechanics, 65(3):731-749, 2020, DOI: 10.1007/s00466-019-01791-3
@article{Bonari2020a, author = {Bonari, Jacopo and Marulli, Maria Rosaria and Hagmeyer, Nora and Mayr, Matthias and Popp, Alexander and Paggi, Marco}, doi = {10.1007/s00466-019-01791-3}, issue = {3}, journal = {Computational Mechanics}, pages = {731--749}, title = {{A multi-scale FEM-BEM formulation for contact mechanics between rough surfaces}}, url = {https://doi.org/10.1007/s00466-019-01791-3}, volume = {65}, year = {2020}}