Skip to content

vanheckelab/jambashbulk-analysis

Repository files navigation

jambashbulk-analysis

(formerly known as phd-library).

DOI

This is a set of data analysis scripts to work with the output of the jambashbulk simulation, plus some general tools to aid in plotting.

The general overview of this repository is as follows:

  • packing_tools contains code to load the output of jambashbulk and to calculate static properties (contact network, etc) and elastic response,
  • hdf_tools contains code to write and read simulations in the hdf5 (.h5) storage format, which is much more efficient in terms of i/o.
  • upar_uperp contains code to calculate the full u_\perp and u_\parallel elastic response to a deformation
  • the root directory contains some general tools.

Context

For background and the physics behind the simulation, please see:

  • Simon Dagois-Bohy, Brian P. Tighe, Johannes Simon, Silke Henkes, and Martin van Hecke. Soft-Sphere Packings at Finite Pressure but Unstable to Shear. Phys. Rev. Lett. 109, 095703, arXiv:1203.3364.

  • Merlijn S. van Deen, Johannes Simon, Zorana Zeravcic, Simon Dagois-Bohy, Brian P. Tighe, and Martin van Hecke. Contact changes near jamming. Phys. Rev. E 90 020202(R), arXiv:1404.3156.

  • Merlijn S. van Deen, Brian P. Tighe, and Martin van Hecke. Contact Changes of Sheared Systems: Scaling, Correlations, and Mechanisms. arXiv:1606.04799

  • Merlijn S. van Deen. Mechanical Response of Foams: Elasticity, Plasticity, and Rearrangements. PhD Thesis, Leiden University, 2016. hdl:1887/40902

Several data sets created using the simulation code are available via Zenodo:

Contents

General tools

  • cdf.py contains tooling to plot CDFs,
  • smart_annotate.py contains code to click-and-mark data points in matplotlib graphs,
  • util.py contains helper functions to find external hard drives and to consistently use the same markers/colors for plotting.

Packing tools

  • load_packing.py contains logic to parse the jambashbulk packing data format (N16~P1e-3~0001.txt, particlesN16~P1e-3~SR003~step007~0001.txt)
    • parser is a C-based parser to speed up this process.
  • load_log.py parses logN16~P1e-3~0001.txt.
  • make_shear_graphs.py plots packings,
  • V_harm.py calculates the contact network, Hessian, elastic moduli, etc.

HDF tools

  • pytables_test.py loads static packings into N16~P1e-3_tables.h5 files
  • pytables_import_shear.py loads contact change data into N16~P1e-3_shear.h5 files
  • generate_cache.py generates an hdf5 file with information on the first contact change in each simulation
  • dodo.py (in the root) automates these three steps for a large number of packings.
  • pytables_tools.py has the read_packing function to read packings from the HDF format
  • getcc.py contains code to parse individual contact changes from the shear simulation data

upar/uperp

  • hpc.py contains the HessianPackingCalculator calculates upar and uperp from linear response, and calculates the strain at which the first contact change happens from this information.