DOI: 10.5281/zenodo.3477937
title: Supporting data: "How collective asperity detachments nucleate slip at frictional interfaces"

description: This repository supports: <strong>T.W.J. de Geus, M. Popović, W. Ji, A, Rosso, M. Wyart. How collective asperity detachments nucleate slip at frictional interfaces. Proc. Natl. Acad. Sci. U.S.A. 2019. doi: 10.1073/pnas.1906551116, arXiv: 1904.07635</strong> In particular, it provides all used data, all codes used to produce this data (including clones to all the used open-source libraries), and simple functions to plot the data. All data and code is free to use under the CC-BY-4 license, but: <em>Please cite the above research article</em> when using code or data (inspired) from this repository (or the open-source projects GooseFEM and GMatElastoPlasticQPot), in addition to this dataset (doi: 10.5281/zenodo.3477938). (c) T.W.J. de Geus | 2019 | contact: tom@geus.me, www.geus.me This work is licensed under a Creative Commons Attribution 4.0 International License. <strong>Contents</strong> In brief Data files Code Plots <strong>1. In brief</strong> All codes (<code>codes/</code>) are written in C++ using a number of open-source libraries (<code>libraries/</code>). All data (<code>data/</code>) is stored in the HDF5 format. All plots (<code>data/</code>) are generated using Python and a number of open-source libraries. All codes are developed and tested on macOS and Linux. The notation used here is consistent with these Unix-based platforms. Windows based compilation and use might differ from the description here. <strong>2. Data files ("data/")</strong> The different ensembles (datasets) are included in different directories in <code>data/</code>. They are distinguished through their directory name that comprises the system size (denoted <code>nx=...</code>) and the shape factor of the Weibull distribution from which the yield strains are drawn (denoted <code>weibull=...</code>). Each ensemble consists of a number of realisations of the random yield strains at the frictional interface. Each realisation is stored in a separate file (<code>id=xxx.hdf5</code>). This file serves as input for the event-driven code (<code>code/Run/main.cpp</code>). This code stores the displacement field at the end of each event-driven step (for which it may take significant time for energy to be minimised). With these displacement fields, all other quantities (stress, strain, plastic strain, ...) can be reconstructed. The relevant reconstructed data for the entire ensemble is collected in <code>EnsembleInfo.hdf5</code>. For the manually triggered avalanches at different stresses (and fixed relative strain increment w.r.t. the last system spanning event) only selected output is stored to limit storage usage (<code>code/AvalancheAfterPush...</code>). Please note that the simulations are stopped when an event becomes system spanning to save on computation time, for this case the output thus does not correspond to a state of mechanical equilibrium. By contrast, any simulation that was not system-spanning does correspond to a state of mechanical equilibrium. <strong>2a. Realisation ("data/.../id=xxx.hdf5")</strong> See code <code>code/Run/main.cpp</code> and generation <code>code/Generate/generate.py</code> Mesh (input)<br> <code>/coor</code>: Nodal coordinates <code>[nnode, ndim]</code> (<code>ndim == 2</code>) <code>/conn</code>: Connectivity <code>[nelem, nne]</code> (<code>nne = 4</code>) <code>/dofs</code>: Degrees-of-freedom (DOF) per node <code>[nnode, ndim]</code> <code>/iip</code>: Prescribed DOFs <code>[n_iip]</code><br> Material model (input)<br> <code>/elastic/elem</code>: Elastic elements <code>[n_elasic]</code> <code>/elastic/G</code>: Shear modulus <code>[n_elasic]</code> <code>/elastic/K</code>: Bulk modulus <code>[n_elasic]</code> <code>/cusp/elem</code>: Elasto-plastic elements <code>[n_cusp]</code> <code>/cusp/G</code>: Shear modulus <code>[n_cusp]</code> <code>/cusp/K</code>: Bulk modulus <code>[n_cusp]</code> <code>/cusp/epsy</code>: Yield strains <code>[n_cusp, n_potentials]</code> <code>/uuid</code>: Unique identifier for the realisation<br> <br> Note that <code>n_elasic + n_cusp == nelem</code><br> Simulation (input)<br> <code>/alpha</code>: Background damping coefficient <code>[nelem]</code> (homogeneous) <code>/rho</code>: Mass density <code>[nelem]</code> (homogeneous) <code>/run/dt</code>: Time-step <code>/run/epsd/kick</code>: Size of the strain kick <code>/run/epsd/max</code>: Local strain at which to stop<br> Output<br> <code>/completed</code>: Completion signal, emitted when <code>/run/epsd/max</code> was reached locally <code>/stored</code>: Stored event-driven step numbers <code>[n_event]</code> <code>/t</code>: Time at the end of each event-driven step <code>[n_event]</code> <code>/kick</code>: Strain kick (yes/no) per event-driven step <code>[n_event]</code> <code>/disp/...</code>: Nodal displacements per event-driven step <code>[nnode, ndim]</code> <strong>2b. Simulation output ("data/.../EnsembleInfo.hdf5")</strong> See code and help <code>code/EnsembleInfo/main.cpp</code>. <strong>2c. Distribution P(x) ("data/.../EnsembleYieldDistance*.hdf5")</strong> See code and help <code>code/EnsembleYieldDistance_stressControl/main.cpp</code> and <code>EnsembleYieldDistance_strainControl/main.cpp</code>. <strong>2d. Manual triggering of events ("data/.../AvalancheAfterPush*.hdf5")</strong> See code and help <code>code/AvalancheAfterPush_stressControl/main.cpp</code> and <code>code/AvalancheAfterPush_strainControl/main.cpp</code>. <strong>3. Code ("code/")</strong> The relevant codes to generate the datasets are referenced above. All non-standard libraries have been cloned under <code>libraries/</code>. Please note that they are subject to evolution: their cloned versions allow one to rerun the code in this dataset, however, for further development one is strongly encouraged to use the latest version. Please check out the development of: GooseFEM (v0.2.3) GMatElastoPlasticQPot (v0.2.1) cpppath (v0.0.7) xtensor (v0.20.8) xtensor-blas (v0.16.1) xtl (v0.6.5) xsimd (v7.2.5) highfive (master) docopt (master) fmt (master) pyxtensor (v0.0.5) GooseMPL (v0.2.24) GooseEYE (v0.2.0) h5py (master) To compile code, follow the following structure: <pre>cd code/... mkdir build cmake .. make</pre> Then to run use: <pre>./Run ...</pre> (use <code>./Run --help</code> for help, and/or read the code). For some codes a support function generates commands. They can be generated and run as follows: <pre>python makeJob.py source commands.txt</pre> <strong>4. Plots ("data/.../*.py")</strong> Basic plot functions are included with the datasets. Note that all scripts require <code>numpy</code>, <code>matplotlib</code>, <code>h5py</code>, and <code>GooseMPL</code> to be installed. The latter two are included here, the other two are considered standard.
description: T.W.J. de Geus was partly financially supported by The Netherlands Organisation for Scientific Research (NWO) by a NWO Rubicon grant number 680-50-1520.
description: {"references": ["T.W.J. de Geus, M. Popovi\u0107, W. Ji, A, Rosso, M. Wyart. How collective asperity detachments nucleate slip at frictional interfaces. Proc. Natl. Acad. Sci. U.S.A. 2019. doi: 10.1073/pnas.1906551116, arXiv: 1904.07635"]}